DispatchSEO

Self-hostable AGPL SEO manager backend with an MCP server for keyword research, content queue, and SERP tracking, built for Claude Code.

Documentation

DispatchSEO logo

DispatchSEO

License: AGPL-3.0 Built for Claude Code Self-host in one command Join the Discord

Turn Claude Code into your SEO manager


DispatchSEO: an open-source alternative to SEObot and Outrank.

Other SEO tools learn about your product by crawling your homepage. Your agent already knows it,
so DispatchSEO gives that agent the missing half: keyword research, content that ships as pull requests, and rank tracking.

Claude Code   MCP   GitHub   Google Search Console   Google   Docker


Install in one command   Read the docs   Watch the demo

Website  ·  Self-host on your computer  ·  Self-host on a VPS  ·  Discord  ·  Discussions  ·  Hosted version

Self-hosted has zero feature limitations. Everything the paid
cloud does, this repo does today, in your own accounts, at $0.

DispatchSEO preview video - the dashboard, the queue, and a pipeline-built pull request, walked through end to end
▶ Watch the preview


⚡ How it works

  1. Your agent researches. Claude Code connects to DispatchSEO over MCP, reads the served playbook, and mines keywords from your Search Console data, Google Autocomplete, and what it already knows about your product. Ideas land in a queue with the reasoning attached.
  2. You approve, or don't. Each idea is a card on the dashboard: the keyword, why it's winnable, the angle. Approve, reject, or reorder. Prefer full autopilot? Flip on auto mode and skip the queue entirely.
  3. The pipeline builds. Every morning a scheduled job picks the oldest approved idea and builds it into a real pull request against your site's repo: a guide or a small free tool, checked against the live SERP and run through a sameness reviewer so page twelve doesn't read like page three.
  4. It tracks what happened. Daily rank checks, hourly Search Console snapshots, index verification, and a journey view that tells you which SEO stage you're actually in. When a scheduled job breaks, you get a red banner and an email instead of silence.

The backend is deliberately boring: state, scheduling, and an approval gate. The thinking happens in your agent, where your product knowledge already lives.

The dashboard Home: journey stage, publishing pace, and live Search Console stats for a connected site
The queue: keyword ideas with volume and difficulty, each waiting for approval or set to autoA pull request the pipeline built: target keyword, SERP gate verdict, archetype, and information-gain asset, all named in the description
Search traffic: clicks and impressions from Google Search Console, snapshotted hourlyKeyword rankings: daily position checks with 30-day trend sparklines

✅ What you need before you start

  • Your site's source in a GitHub repo. The pipeline ships content as pull requests, so git-based sites only - WordPress won't work.
  • A Claude subscription with Claude Code. Your agent is the engine and it runs on your existing plan.
  • A machine with Docker (~1 GB RAM). A laptop works for a test drive, but a machine that stays on is much better for daily use - a $5 VPS, a Raspberry Pi, a desktop that never sleeps. Schedules only run while the machine is awake.
  • Google Search Console access to your site.

That's the whole list. No API keys to buy, and no account on our side.

🚀 Quick start

Installing is one command on any machine with Docker. On a VPS, ssh in first and run it there instead of on your own computer. Run it from any plain folder (not inside your website's repo - it creates its own dispatchseo folder):

git clone https://github.com/NeoZi12/dispatchseo &&
  cd dispatchseo &&
  sh start.sh

On Windows, paste this version instead. It works in plain PowerShell (Git must be installed) and installs into your user folder no matter where the window opened:

cd ~; git clone https://github.com/NeoZi12/dispatchseo; cd dispatchseo; .\start.cmd

That one command really is the whole install: database, migrations, schedules, and a headless Claude Code builder all come up together. Nothing on the internet needs to reach your machine, so there is no domain or port forwarding to set up.

When it finishes it prints your dashboard URL. Open it and the setup wizard takes over: name your site, connect Search Console, point it at your GitHub repo.

The last step is pasting one command into Claude Code inside your site's repo. Your agent does the rest of the install itself, including writing its own workflow files and setting its own secrets.

Step-by-step walkthroughs, with screenshots: install on your computer · install on a VPS. The VPS guide also covers your own domain with automatic HTTPS.

Stuck? The troubleshooting page covers the errors people actually hit. If yours isn't there, ask in the Discord or in Discussions - questions get answered and usually turn into a docs fix.

📖 Documentation

Everything is at dispatchseo.com/docs - every page, every setting, every tool.

New hereWhat DispatchSEO is · How it works · Cloud or self-hosted
InstallYour own computer · A VPS · From source
Set upInstall Claude Code · The setup wizard · Search Console · Keyword data · Publishing · Connect your site
Use itDay to day · The dashboard · Automations · Agent commands
ReferenceConcepts · MCP tools · Environment variables · Schedules · Architecture
HelpTroubleshooting · Common questions · Security · Upgrading

Pointing an agent at this? Add .md to any docs URL for clean markdown, or fetch the entire documentation set in one request: llms-full.txt. There's an index at llms.txt and a SKILL.md that walks an agent through connecting a site.

🗓️ Using it day to day

Once the wizard is done, the loop is small on purpose:

WhenYou doIt does
Once a week, 5 minutesOpen the dashboard, work through the queue - approve, reject, reorderRefills the queue with researched ideas and the reasoning behind each one
Every morningNothingBuilds the oldest approved idea into a pull request on your repo
When a PR landsReview and merge (or let auto-merge do it)Logs the page, requests indexing, starts tracking its keyword
Whenever you wantAsk Claude Code: "research keywords for me", "what should I write next?", "how are we ranking?"Answers from live data over MCP - same state the dashboard shows

The dashboard's Home page always names the next action, so you don't have to work out what to do when you open it.

🧰 What's in the box

  • MCP server with 52 tools: the queue, keywords, rankings, pages, GSC stats, backlink prospects, trend topics, site profile. Anything the dashboard can do, your agent can do over MCP; parity between the two is a hard rule in this codebase.
  • Trend radar: scan for rising topics in your niche, expand a topic into concrete guide angles, and queue the good ones.
  • Guide and tool builders: guides publish at most one per day, flat and permanent (so a queue of thirty approved ideas doesn't become thirty posts in a week); free-tool ideas build on approval.
  • Backlink playbook: a prospect list prefilled with your product's copy, tracked per submission.
  • Multi-site: one deployment manages any number of sites. Each project gets its own MCP token, its own data, its own settings.
  • A password-gated dashboard for the one human in the loop.

💵 What it costs to run

Nothing, unless you want paid data. The tiers stack:

TierPriceWhat you get
Search Console only$0Rankings from GSC, keyword ideas from Autocomplete plus your own impression data
+ SerpApi free key$0Live SERP checks, real positions weekly (250 free searches/month)
+ DataForSEOpay per callSearch volume, keyword difficulty, domain rating

Free mode finds keywords you can win. Paid mode also knows which ones are worth winning.

☁️ Cloud version

There's a hosted version for people who'd rather not run a machine: we host it, bundle the SERP + volume data into one bill, and replace the Google service-account ritual with one click. It's at dispatchseo.com. Self-hosting stays feature-complete either way - the cloud sells convenience, not capability.

🧑‍💻 Developing from source

git clone https://github.com/NeoZi12/dispatchseo
cd dispatchseo
pnpm install
cp .env.local.example .env.local
pnpm dev

This is the contributor path, not the way to self-host (that's the Docker command above). Fill in .env.local (Supabase + the three secrets) before starting, then open the dashboard on localhost:3000.

pnpm build is the typecheck - run it before opening a PR. There is no separate lint or test setup.

🏗️ Architecture, briefly

Next.js App Router, Postgres for state (a bundled container when self-hosted, Supabase in the cloud version), mcp-handler for the MCP server at /api/mcp. Schedules and builds run in-stack (cron + builder containers) or on GitHub Actions. One deployment is multi-tenant: the MCP bearer token selects the project, crons loop over all projects, the dashboard switches with a cookie.

Architecture covers this properly. CLAUDE.md has the full conventions; it's written for agents, which turns out to make it decent documentation for people.

🤝 Contributing

Issues before PRs, and you must understand every line you submit, including the AI-assisted ones. Details in CONTRIBUTING.md. Questions go to Discussions or the Discord; vulnerabilities go through private reporting.

📄 License

AGPL-3.0. Use it, self-host it, fork it. If you run a modified version as a service, share the source. That's the whole deal.


Built by NeoZi12 · If DispatchSEO is useful to you, a ⭐ helps other people find it.