Run a Claude SEO audit on your own site

One command starts eleven sub-agents and returns a scored report with an action plan. The work of this lesson is reading it: deciding which findings are real, which are missing their data, and which one is worth your afternoon.

Module 2 · 3 of 13 · 20 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

  • Run a full audit on your own site and say what each sub-agent looked at.
  • Read the verification section and tell a confirmed finding from a discarded one.
  • Pick the first finding to act on, with the check that proves it is still broken.

A Claude SEO audit is one command that starts eleven sub-agents and ends with a scored report you have to argue with. The command is easy; the reading is the skill. Our run against this site took 446 seconds, returned 79/100, listed what it could not measure, and threw out three of its own agents' findings before writing the plan. This lesson walks through that report in the order it should be read: what each agent looked at, what the number means, which findings survived verification, and how to choose the one item to do today. The site it ran against is the one you are reading, so every figure below is from a report whose subject can be checked.

What eleven sub-agents actually check

The orchestrator starts one sub-agent per area and each of them fetches your pages itself. Ours ran these:

AgentWhat it reads
technicalstatus codes, canonicals, redirects, headers, robots
contentdepth, duplication, the words a page spends on its subject
schemathe JSON-LD a page ships and what it claims
sitemapthe sitemap's URLs, hreflang and lastmod dates
performancelab measurements of loading and layout shift
visualwhat the rendered page looks like, including on mobile
geowhether an answer engine can quote the page
agenticwhat an agent gets when it reads instead of a browser
sxowhether the page matches the intent of its SERP
backlinkslinks pointing at the domain, where data exists
clusterhow pages link to each other and which topics overlap

That spread is why the audit takes minutes rather than seconds: eleven agents fetching, rendering and judging is eleven conversations happening at once. It is also why the report is long enough to need a reading order.

The score is a weighted average of what it could measure

Ours came to 79/100, built from seven categories with weights:

CategoryWeightScore
Technical SEO22%78
Content Quality23%78
On-Page SEO20%85
Schema10%78
Performance (mobile lab, average of 3 pages)10%70
AI Search Readiness10%82
Images5%85

The backlinks row carries no score at all. The domain was absent from the link graph the agent reads, and absence from a graph is weak evidence about the web: the report says insufficient data and leaves the row out of the arithmetic. A tool that scored it zero would be making up a fact.

Know what your run could not read

Every audit has a "data not available" section, and reading it tells you which parts of the score to trust. Ours could not read Search Console, Analytics or field performance data, because the run had no Google credentials. Moz and Bing backlink data were absent for the same reason. The PageSpeed API was rate-limited, so the performance category rests on lab measurements of three pages.

That matters for how you use the number. A lab performance score of 70 describes what a measuring machine saw on a clean connection, and what your readers experience is a different measurement that needs field data. Treat the categories with missing inputs as directions, and close the gaps before you treat them as grades.

Read the verification section first

The orchestrator checks its agents against the live site before it writes the plan, and that pass is the most useful paragraph in the report. Ours confirmed three findings:

  • the Spanish pages shipped <html lang="en"> in the server's HTML, with the correct language applied only after JavaScript ran
  • one blog post declared datePublished: 2026-10-10, a date in the future, and four sitemap lastmod values carried the same date
  • www redirected to the apex domain with a 307

It discarded three more. One agent flagged AI-slop phrases on a page whose subject is AI slop, where the phrases appear as quoted examples of what the tool detects. Another reported missing JSON-LD on a page that ships it, a counting artifact rather than a fact about the HTML. A third suggested adding FAQPage markup, which Google retired as a rich result on 2026-05-07, so the change would have cost an afternoon and returned nothing.

Reading that section first saves the afternoon. An agent reports what it saw in its slice; the orchestrator is the only pass that compares the slice with the site. When you write your own prompts later in this course, that is the shape to copy: a reader whose job is to disagree with the writer.

What the action plan gives you per item

Each item in the plan carries four parts, and they are what turn a finding into work:

  • Why it matters, stated as a principle rather than a rule of thumb
  • Depends on and unblocks, so the order is visible
  • Failure check: the command or query that still fails while the problem is there
  • Leading indicator: the measurement that should move first if the fix worked

The failure check is the part to copy into your own notes. A finding without one is an opinion you cannot close, and a fix without one is a change you merged and hoped about. The plan also ends with a dependency sequence, which is where you learn that two items worth doing are worth doing in a particular order.

Which finding to do first

Take the confirmed item whose failure check you can run yourself, in the category with the most weight, that unblocks something else. On this site that was the language tag: /es served <html lang="en">, the check was reading the <html> tag out of a curl of the page, and nothing about Spanish indexing could improve while it stayed wrong.

The future-dated post came second for a similar reason. Dates are a trust signal, and a sitemap whose lastmod points at tomorrow teaches a crawler to ignore the file. Fixing it unblocks the later work of publishing new articles and expecting them to be recrawled.

Items whose leading indicator needs data you do not have yet go last. The performance work on this site is real, and the measurement that would prove it fixed needs field data that the run could not read, so the honest order is to close the gap first and then the item.

Two things to hand seodraft while you are here

seodraft can take two facts about your site off this audit and keep them. import_sitemap reads your sitemap into its inventory, looking at the sitemap URL in your profile, then the Sitemap: lines in robots.txt, then /sitemap.xml and /sitemap_index.xml. It downloads no page, so titles are inferred from slugs and every screen that shows them says so. From then on, a topic that resembles something you already published comes back flagged.

check_ai_access reads your robots.txt the way RFC 9309 reads it and reports every documented AI crawler at your home page and at a content path, grouped by what blocking each one costs you: citations in search, fetches a person asked for, and training. There is no score. Your llms.txt is reported as a fact, and a Cloudflare edge raises a warning, because robots.txt cannot show you a firewall rule.

What to have ready before lesson 4

Keep three things from this audit: the confirmed findings with their failure checks, the list of data your run could not read, and the one item you chose to do first. The rest of the report keeps.

Lesson 4 goes deeper into the agentic and geo half of what you just read: which AI crawlers reach your pages, what an agent gets when it reads your HTML instead of rendering it, and what to change when the answer is less than you expected.

Steps

  1. Step 1

    claude-seo

    Audit your own site

    Run this inside Claude Code with the runtime from lesson 2 answering. The orchestrator starts a sub-agent per area, each one fetches your pages itself, and the results come back as one report plus a file per agent. Point it at a site you can change: a report about somebody else's HTML teaches you nothing you can act on.

    /seo audit https://your-site.com

    What you should see

    Eleven sub-agents in ours: technical, content, schema, sitemap, performance, visual, geo, agentic, sxo, backlinks and cluster. The run took 446 seconds end to end and returned a `FULL-AUDIT-REPORT.md` with a score of 79/100.

  2. Step 2

    claude-seo

    Separate the confirmed from the discarded

    Paste this as a prompt in the same session. The orchestrator checks its agents against the live site before it writes the plan, and that pass is the most valuable paragraph in the report. Read it before you open a single file.

    Read the audit's verification section and list only the findings the orchestrator confirmed, with the discarded ones and the reason each was dropped.

    What you should see

    A short list of confirmed findings and a shorter list of dropped ones. Ours confirmed three and discarded three, among them an agent that read quoted examples on a page about AI slop as if the page were written in it.

  3. Step 3

    claude-seo

    Pick one item and its failure check

    Every item in the plan carries why it matters, what it depends on, a failure check and a leading indicator. The failure check is the part that keeps you honest: a command or a query that still fails while the problem is there. Ask for one item, finish it, then come back.

    From the action plan, give me the first item to do, its failure check as a command I can run, and what it unblocks.

    What you should see

    One item with a check you can run today. Ours was the Spanish pages shipping `<html lang="en">` in server HTML, checked by reading the `<html>` tag out of a `curl` of the page.

  4. Step 4

    seodraft

    Give seodraft the pages you already published

    `import_sitemap` reads your sitemap into seodraft's inventory: it looks at the sitemap URL in your profile, then the `Sitemap:` lines in robots.txt, then `/sitemap.xml` and `/sitemap_index.xml`. No page is downloaded, so titles are inferred from slugs and every surface says so.

    Use seodraft's import_sitemap on my site and tell me how many pages it found.

    What you should see

    A count of the pages it recorded. From here on, a topic that resembles a page you already published comes back flagged, which is how the cannibalization lesson later stops you writing the same article twice.

  5. Step 5

    seodraft

    Check which AI crawlers your robots.txt lets in

    `check_ai_access` reads your robots.txt the way RFC 9309 reads it and reports every documented AI crawler at your home page and at a content path. The crawlers are grouped by what blocking one costs you: search citations, fetches a person asked for, and training.

    Run check_ai_access on my site and show what each crawler gets at the home page and at a blog URL.

    What you should see

    A per-crawler answer for both paths, with your `llms.txt` reported as a fact. A Cloudflare edge raises a warning, because robots.txt cannot show you a firewall rule.

Checklist

Tick every line and the lesson marks itself as completed.

Checkpoint

The report names a problem you are fairly sure your site does not have. Where do you look before you fix it?Show the answer

The orchestrator's verification section, which says which agent findings survived a check against the live site. Ours discarded three: AI-slop phrases that were quoted examples on a page about AI slop, missing JSON-LD that was a counting artifact in a fetched page that had it, and a suggestion to add FAQPage markup for a rich result Google retired on 2026-05-07. A sub-agent reports what it saw; the orchestrator is the pass that argues with it.

Your report says 79/100 and the backlinks row says insufficient data. What is that number telling you?Show the answer

A weighted average of the categories the run could measure. Ours weighted technical 22%, content 23%, on-page 20%, schema 10%, performance 10%, AI search readiness 10% and images 5%, with the backlinks row left out of the score because the domain was absent from the graph the agent reads. Absence from that graph is not evidence of zero links, and a category with no data is honest only while it stays out of the arithmetic.

What this lesson said

  • `/seo audit <url>` starts one sub-agent per area. Ours ran eleven of them in 446 seconds and returned one report plus a file per agent.
  • The score is a weighted average of what the run could measure. Ours came to 79/100, with backlinks left out for want of data.
  • The verification section is where the orchestrator checks its own agents. Ours confirmed three findings and discarded three, including a page quoting the very phrases an agent flagged it for.
  • Every action item carries why it matters, what it unblocks, a failure check and a leading indicator. The failure check is what tells you the work is finished.
  • Our run cost the equivalent of USD 4.25 at API prices across three orchestrator turns. On a Claude subscription that comes out of the plan's usage limit.

Questions

What does a full audit cost?
Ours was three orchestrator turns, equivalent to USD 4.25 at API prices: 1.34 on Opus, 2.72 on Sonnet and 0.19 on Haiku. On a Claude subscription nothing is charged in dollars and the work comes out of the plan's usage limit, which is the budget to watch before you audit several sites in one sitting.
Do I need Google credentials to run the audit?
The audit runs without them and says what it could not read. Ours had no Google credentials, so Search Console, Analytics and field performance data were absent, Moz and Bing backlink data were absent, and the PageSpeed API was rate-limited down to lab data. Every one of those gaps is listed at the top of the report.
How often should I run it?
Rerun it when something structural changes: a new template, a migration, a redesign, a batch of pages. An audit of a site nobody touched since the last one returns the same list, and the items you already closed are better verified by their own failure checks than by another 446 seconds of agents.

Next lesson

AI crawlers and agent readiness

Which AI crawlers your robots.txt lets in, what blocking each kind costs, and what claude-seo's agentic and geo agents find when they read your site.

The same lesson, as plain Markdown: /learn/claude-seo/seo-audit-with-claude.md

Back to the course