Back to all resources
OpenSEO v0.1.7 MIT · pay per use Self-host or hosted LIVE

Stop paying a seat for SEO software.

Semrush and Ahrefs bill by the seat whether you run ten queries a month or ten thousand. OpenSEO does the same keyword research, rank tracking, backlink and site-audit work, but you bring your own DataForSEO API key and pay only for the data you pull. It exposes an MCP server too, so Claude Code can query your SEO data directly instead of you copying numbers into a prompt.

By Raj Singh · September 2026 · 18k stars · MCP for Claude Code, OpenClaw, Hermes · 6 min read

WHAT IT LOOKS LIKE

Keyword research, rank tracking, competitor insight, backlinks and site audits, in one focused UI instead of a bloated suite. The same data is reachable from Claude Code through the MCP server without opening the dashboard at all.

A screenshot of the OpenSEO dashboard showing keyword research and site audit panels
The dashboard, and the data behind itevery-app / open-seo
BEFORE YOU INSTALL IT

You need a DataForSEO key. OpenSEO has no SEO data of its own. Every keyword, backlink and rank number comes from your own DataForSEO account, billed to you directly at their rates.

Hosted adds a 28% markup. The $10 a month hosted version is not the real cost: the hosted service charges 28% extra on every DataForSEO request it makes on your behalf. Self-hosting skips that markup entirely.

Two self-host paths, one recommended. Docker is for testing on your own machine. Cloudflare is what the maintainers recommend for anything internet-facing or shared with a team, and it runs on Cloudflare's free plan.

MCP is the real feature. Claude Code, OpenClaw and Hermes can query your SEO data directly through it, with agent skills layered on top for the common workflows like keyword research and audits.

Licence, in plain English: MIT. Free to self-host and modify, no obligation beyond keeping the licence file. You still pay DataForSEO for the data itself.

Honest limitIt is a UI and an MCP layer over DataForSEO's data, not an independent crawler. Anything DataForSEO does not track, OpenSEO cannot show you either.
Read the whole setup

Get the setup that works.

Drop your email and unlock the rest: what you need, the Cloudflare self-host path, the DataForSEO key setup, and the MCP connection for Claude Code.

One email. No follow-up unless I ship something that fits.

WHAT YOU NEED
  • A DataForSEO account and API key, billed separately by them
  • A Cloudflare account on the free plan, for the recommended self-host path
  • Docker, only if you are testing locally instead of deploying to Cloudflare
INSTALL

Cloudflare for anything internet-facing

Docker is the fastest way to try it on your own machine. Cloudflare is the path worth setting up if more than one person, or more than one device, will use it.

The install

terminalcloned repo
$ git clone https://github.com/every-app/open-seo.git $ cp .env.selfhost.example .env.selfhost $ pnpm deploy:selfhost → deployed via alchemy to your Cloudflare account

The Docker path uses compose.yaml and Dockerfile.selfhost directly for a local-only instance, no Cloudflare account required.

Prove itRun one keyword-research query after setup. A real result with volume and difficulty numbers confirms the DataForSEO key is wired correctly.
CONFIGURE

The key and the auth mode

.env.selfhost is where the DataForSEO key and auth mode live. Auth mode decides who can reach the instance once it is deployed.

.env.selfhostmy values
DATAFORSEO_API_KEY= AUTH_MODE=cloudflare_access TEAM_DOMAIN=https://your-team.cloudflareaccess.com
SettingDefaultWhy I change it
AUTH_MODEcloudflare_accessRight for a team deploy behind Cloudflare Access. Switch to local_noauth only for a single-user local instance you fully trust.
DATAFORSEO_API_KEYunsetRequired before any SEO data loads. Get one from DataForSEO directly, not through OpenSEO.
Local testinglocal_noauth mode injects a trusted admin user automatically, fine for a laptop-only instance, wrong for anything reachable from outside your machine.
DAILY DRIVING

Dashboard for you, MCP for the agent

Use the dashboard for a workflow you are doing yourself. Use MCP when you want Claude Code to pull the same data into a task without you copying numbers over.

  • Set up MCP once. Point Claude Code at your OpenSEO instance's MCP endpoint following openseo.so/docs/mcp, then agent skills can call it directly.
  • Run audits from the agent. "Audit this URL for broken backlinks" reaches DataForSEO through your own instance, billed to your own key.
  • Track rank changes over time. Rank tracking runs on the schedule you set, not a fixed daily crawl you cannot adjust.

The MCP path is what makes this worth self-hosting over a free-tier SaaS tool: the data stays queryable by an agent, not locked in someone else's dashboard.

WHEN IT DRIFTS

Two failures, both configuration

No SEO data loads at all
DATAFORSEO_API_KEY is unset or invalid. Check docs/DATAFORSEO_API_KEY.md for how to generate and verify one.
Team members cannot reach the instance
AUTH_MODE is still local_noauth on a Cloudflare deploy. Switch to cloudflare_access and set TEAM_DOMAIN and POLICY_AUD.
Cost checkSelf-hosted costs track DataForSEO's own pricing directly, with no markup. If a bill looks high, the query volume is the thing to look at, not OpenSEO itself.
THE SHAPE OF IT

Where everything lives

.env.selfhostyour DataForSEO key and auth settings docs/SELF_HOSTING_CLOUDFLARE.mdthe recommended deploy path, step by step docs/SELF_HOSTING_DOCKER.mdthe local-only path .claude/skills/the pre-built agent skills for common SEO workflows drizzle/the database schema, SQLite or Postgres compatible

Everything your instance stores lives in your own database, either the SQLite default or a Postgres you point it at.

That is the whole setup

One DataForSEO key, one Cloudflare deploy, and the seat-based SEO subscription is gone. The MCP server is what turns it from a dashboard replacement into something your agent can use directly.

Open on GitHub →

↑ Unlocks the moment you submit the form above.

RS
WRITTEN BY

Raj Singh

I'm Raj Singh, founder of DebtOps.ai and a Claude certified partner. Over the last five years I've managed $25M in ads, built AI solutions for Fortune 100 companies, and installed AI operating systems and AI brains inside small businesses. Everything here is something I've shipped, debugged, or watched a client ship. My goal with AgileSingh is to make you irreplaceable in this AI age.

$25M
Ads managed · 5 yrs
F100
Enterprise AI builds
Claude
Certified partner
21
Guides shipped
More guides

Now put the agent between you and the data.

OpenSEO gives an agent one specific dataset to query. The claude-code-n8n-mcp-setup-guide covers the same MCP pattern applied to your own product workflows.