Install the Claude SEO plugin and connect seodraft

Three commands put claude-seo on your machine and one more signs you in to seodraft. This lesson runs them in order and shows what each one answers on a machine where everything worked.

Module 1 · 2 of 13 · 15 min

This course is independent. It has no affiliation with Anthropic or with AgriciDaniel, who writes claude-seo, and nobody on their side reviewed it. Run with claude-seo v2.4.1 on 2026-10-03.

What you will be able to do

  • Install the claude-seo plugin into Claude Code, or load a clone for a single session.
  • Build the plugin's runtime with `/seo setup` and keep what `/seo doctor` reports.
  • Sign in to the seodraft MCP server and see its tools in your session.

Installing the Claude SEO plugin is three commands and one browser sign-in, and every one of them answers something you can check. The plugin arrives from a marketplace, builds a Python environment of its own, downloads a browser into it and then reports on itself. seodraft arrives as a URL you register once and a token your Claude Code session keeps. This lesson runs them in that order, shows what each one said on the machine the course ran it on, and ends with a baseline worth writing down. By the end both tools answer inside a single Claude Code session, which is all lesson 3 needs to point an audit at your own site.

Two ways in: the marketplace and a folder

The marketplace path is the one the project documents, and it is two commands inside Claude Code:

/plugin marketplace add AgriciDaniel/claude-seo
/plugin install claude-seo@agricidaniel-claude-seo

The first one you already ran in lesson 1. A marketplace is a list Claude Code can read; the install is what writes the plugin's skills, sub-agents and scripts into Claude Code.

The second path loads a clone for one session and leaves your plugin list exactly as it was:

git clone --branch v2.4.1 https://github.com/AgriciDaniel/claude-seo.git
claude --plugin-dir claude-seo

That is useful for a plugin like this one, because what you are installing is 26 sub-skills of instructions that will steer an agent with access to your terminal. Cloning a tag lets you read them first, at github.com/AgriciDaniel/claude-seo, and the project is MIT-licensed so reading is allowed and encouraged. The commands behave the same either way once the session is open.

What /seo setup builds and how long it takes

/seo setup creates an isolated Python environment for the plugin and downloads Playwright Chromium into it. Your system interpreter is the base it builds on, and your system packages stay where they are. The browser is the part that makes the download big, and it is the reason a plugin that reads HTML needs a few minutes of disk and bandwidth before its first useful answer.

On the course's machine, a Linux box with Python 3.14 already installed, setup answered Claude SEO runtime is ready. in 69 seconds. A slower connection spends most of its time on Chromium, so a first run that takes several minutes is still a normal first run.

Setup happens once per machine. A plugin update that changes the runtime is the other moment it matters, and /seo doctor is what tells you whether that moment has arrived.

Read the doctor while nothing is wrong

/seo doctor reports the state of the runtime, and the time to read it is now, before anything has broken. Ours answered in JSON, from the doctor script with --json: ready: true, browser_ready: true, plugin version 2.4.1 and Python 3.14, with no reasons at all.

That last part is the useful part. The doctor names what is missing in a reasons field, so an empty one means every check passed. Keep the version number somewhere: a lesson in this course that stops matching your output is a lesson written against a different version, and the same is true of an audit that starts behaving differently after an update.

Two failures cover most of what goes wrong here. A Python older than the plugin asks for means the environment was built on the wrong interpreter, which happens when Claude Code opens from a shell with a different PATH than the one you tested in. A browser_ready: false means Chromium did not finish downloading. Both are fixed the same way: run /seo setup again from the terminal where the right Python answers.

seodraft is one URL and one sign-in

seodraft connects as a remote MCP server, which takes two moves and no key:

claude mcp add --transport http seodraft https://seodraft.app/mcp
/mcp

The first command records the address in your Claude Code configuration, and you ran it in lesson 1. The second opens the OAuth sign-in in your browser; once you approve it, the session keeps the token and the server's tools become available to your agent.

A server that shows up as registered and never connects is almost always a sign-in that was closed before it finished. Run /mcp again and watch the browser tab through to the end.

What the course actually ran

The run behind this lesson used the folder path. We cloned the v2.4.1 tag, loaded it with claude --plugin-dir, and called the setup and doctor scripts that the slash commands wrap, with the plugin's data directory pointed at a folder of its own so the whole thing could be deleted afterwards. The 69 seconds, the ready: true and the Python 3.14 all come from that run.

We did not run /plugin marketplace add or /plugin install, so this lesson quotes no output for them. They are the documented path and they are what the steps send you down; what they print on your machine is the one thing here you will see before we do.

What to have ready before lesson 3

Three answers make the next lesson a single command: the /seo commands responding inside Claude Code, /seo doctor reporting ready: true and browser_ready: true, and seodraft listed as connected in /mcp. All three are in the checklist below.

Lesson 3 points /seo audit at a site and reads what comes back. Ours took 446 seconds, ran 11 sub-agents and returned a score with a table behind it, and the most useful section of the report turned out to be the one where the orchestrator threw out three of its own agents' findings.

Steps

  1. Step 1

    claude-seo

    Install the plugin

    Run this inside Claude Code, with the marketplace from lesson 1 already on the list. It writes the plugin's skills, sub-agents and scripts into Claude Code. This is the install the project documents in its README, and it is the one to use unless you want to read the source first.

    /plugin install claude-seo@agricidaniel-claude-seo

    What you should see

    Claude Code reports claude-seo as installed and the `/seo` commands start answering. No Python environment exists yet, so an audit at this point would fail.

  2. Step 2

    claude-seo

    Build the runtime

    `/seo setup` creates an isolated Python environment for the plugin and downloads Playwright Chromium into it, which is how claude-seo opens a page and reads what a browser renders. It runs once per machine, and most of its time goes to the browser download.

    /seo setup

    What you should see

    `Claude SEO runtime is ready.` Our run took 69 seconds on Linux with Python 3.14 already installed. We called the setup script the slash command wraps, with the plugin's data directory pointed at a folder of its own.

  3. Step 3

    claude-seo

    Keep the baseline while everything works

    `/seo doctor` reports whether the runtime answers. Read it now, while nothing is broken, so the day a command fails you have a working answer to compare against instead of a guess about what changed.

    /seo doctor

    What you should see

    `ready: true` and `browser_ready: true`. We read ours as JSON, from the doctor script with `--json`: plugin version 2.4.1 on Python 3.14, with no reasons listed, which is the field that fills up when a piece is missing.

  4. Step 4

    seodraft

    Sign in to seodraft

    Run `/mcp` inside Claude Code with the server from lesson 1 registered. Claude Code opens your browser for the OAuth sign-in, and the session keeps the token afterwards, so this is a one-time move per machine.

    /mcp

    What you should see

    seodraft listed as connected, with its tools available to your agent. A server that stays registered and disconnected is a sign-in that never finished in the browser.

  5. Step 5

    claude-seo

    Or load it for one session, without installing

    This clones a pinned version from GitHub and starts Claude Code with the plugin loaded for that session alone. Your plugin list stays as it was, so it is the way to read 26 sub-skills of instructions before you trust them. The course took this path for its own run.

    git clone --branch v2.4.1 https://github.com/AgriciDaniel/claude-seo.git && claude --plugin-dir claude-seo

    What you should see

    The `/seo` commands answer inside that session and are gone from the next one. The runtime still has to be built once, and `/seo doctor` is still what says it worked.

Checklist

Tick every line and the lesson marks itself as completed.

Checkpoint

`/seo doctor` answers `ready: false`. What do you read first?Show the answer

The reasons it lists. The doctor names what is missing instead of failing bare, which is why our healthy run listed no reasons at all. The two usual answers are a Python older than the plugin asks for and a Playwright Chromium that never finished downloading, and both are repaired by running `/seo setup` again in the terminal where that Python answers.

Why does a plugin that reads HTML download a browser?Show the answer

Because what a browser renders and what the server sends are two different documents. claude-seo installs Playwright Chromium during `/seo setup` and opens your pages in it, which is how the audit in lesson 3 can report on layout and on what survives with JavaScript switched off. `browser_ready: true` in `/seo doctor` is the field that says that browser works.

What this lesson said

  • `/plugin install claude-seo@agricidaniel-claude-seo` is the documented install. `claude --plugin-dir <folder>` loads a clone for one session and leaves your plugin list alone, which is the path this course took.
  • `/seo setup` builds an isolated Python environment and downloads Playwright Chromium into it. Ours answered `Claude SEO runtime is ready.` in 69 seconds.
  • `/seo doctor` is the baseline worth keeping: our run reported `ready: true`, `browser_ready: true`, plugin version 2.4.1 and Python 3.14, with no reasons listed.
  • seodraft takes two moves: `claude mcp add` records the URL, and `/mcp` signs you in over OAuth in your browser.
  • Both tools now answer in one session, which is what lesson 3 points at your own site.

Questions

Do I have to install the plugin to try it?
You can clone the repository at github.com/AgriciDaniel/claude-seo and start Claude Code with `claude --plugin-dir <folder>`. The plugin loads for that session and your plugin list stays untouched, which is how the course ran it. Pin a tag when you clone, so the version you read is the version you run.
Does `/seo setup` touch my system Python?
It builds on your interpreter and installs into an environment of its own, so your system packages stay where they are. The plugin also keeps its data in its own directory, which our run pointed at a folder we could delete afterwards. `/seo doctor` reports the Python it found: ours said 3.14.
Does seodraft need an API key?
The sign-in is OAuth from `/mcp`, so there is no key to paste or rotate. Keyword data comes from your own DataForSEO credentials when you connect them, and the cost of a paid call appears before the call happens.

Next lesson

Run an SEO audit with Claude

A Claude SEO audit runs eleven sub-agents over your site and returns a scored report. What it checks, how to read the verification section, and which finding to do first.

The same lesson, as plain Markdown: /learn/claude-seo/install-claude-seo-and-seodraft.md

Back to the course