Skip to content
MrKeyword
Technical SEO

SEO audit with Claude: find technical issues with a real crawl, then fix them

Claude is good at explaining SEO problems and at editing code, but it cannot crawl your whole site on its own. This guide shows how to run a technical SEO audit with Claude using a crawler's results over MCP: start the crawl, read the health score and issues, decide what to fix first, and, if you are a developer, fix the issues in the codebase with Claude Code or Cursor and check that the next crawl marks them fixed.

A site audit summary card showing a health score and issue counts
The short version
  • Asking Claude to “audit my site” with no tools gets you a guess: it cannot fetch every page, so it cannot know which pages have broken links or missing tags.
  • A useful SEO audit with Claude has two parts: a crawler decides what is wrong with deterministic checks, and Claude reads the results, explains them and plans the fixes.
  • MrKeyword's crawl runs 68 checks (6 critical, 26 warnings, 36 notices) in 7 categories, including AI discoverability, and Claude reads them through get_site_audit and get_audit_issues.
  • Developers can open Claude Code or Cursor in the site's repository, have it read the affected pages, fix the template, deploy, re-crawl and filter for diff: "fixed".
  • Prioritise with get_opportunity_inbox, which ranks fixes by clicks at stake, so the audit does not turn into a list of 400 notices.

Can Claude do an SEO audit on its own?

Not reliably. Without a crawler, Claude cannot fetch every page of your site, so an “audit my site” answer is a list of common SEO problems, not a list of your problems. At best it reads the few pages you paste or that a web tool fetches; at worst it describes issues your site does not have and misses the ones it does.

A technical audit is a counting job: which of your 3,000 URLs return a 404, which pages share a title, which ones nothing links to. That needs every URL fetched, its HTML parsed and the links between pages mapped. Language models are not built for that, and they should not be the ones deciding whether a page fails a check.

The approach that works splits the job:

  • A crawler finds the issues. Fixed rules, such as “title longer than 60 characters” or “internal link returns 4xx”, run on every crawled page. The same site gives the same result.
  • Claude reads the results. Through an MCP server it can pull the health score, the issues and the affected URLs, explain them in plain English, group them and plan the work.
  • Claude Code or Cursor fixes the code. If you own the site's code, the same assistant can open the template that causes an issue and change it.

What you need: a crawler Claude can read

You need Claude (Claude Code, Claude Desktop, claude.ai or Cursor) connected to an SEO MCP server that crawls your site, and a token that may start crawls. In MrKeyword, create a token in Settings → Connections → API & MCP Tokens; tick “Allow this token to make changes” if you want Claude to start crawls itself, because start_site_audit is one of the five action tools. In Claude Code the connection is one claude mcp add --transport http command. The full setup for each client is in how to connect Claude to an SEO MCP server, and other options are compared in SEO MCP servers.

The site must already be in your MrKeyword workspace. The crawler only crawls sites that belong to a workspace, so it cannot be pointed at somebody else's server. Connecting Google Search Console as well lets the audit rank issues by the traffic on the affected pages; the Search Console MCP guide covers what that adds.

How to run an SEO audit with Claude, step by step

Start a crawl, wait for it to finish, read the summary, drill into the issues, then decide what to fix first. Each step below names the MrKeyword MCP tool Claude calls.

  1. Start the crawl

    Ask “Run a site audit for example.com”. Claude calls start_site_audit, which queues a full-site crawl and returns immediately with the crawl id and the pages left in your monthly allowance. The crawl itself takes minutes to hours, depending on the site's size and the page limit. It is refused while another crawl of the same site is running, and when the month's pages are used up. You can also start it from the Site Audit page in the app, which also offers weekly or monthly re-crawls.

  2. Read the summary

    Ask “What did the last crawl find?”. get_site_audit returns the health score with the formula behind it, issue counts by severity, the seven categories (checks run, checks failing, top issues), and what changed since the previous crawl: new, fixed and persisting. If the two crawls covered different pages, the diff is marked partial, so “new” may only mean “checked for the first time”.

  3. Drill into the issues

    get_audit_issues returns the affected pages for each issue type, with a plain-English fix. Narrow it with type (one exact issue type such as broken_internal_link), category (one of the seven), severity (critical, warning or notice) or diff (new, persisting or fixed). limit (up to 100) and offset page through the URLs within each type, so a problem on thousands of pages stays readable.

  4. Check programmatic pages

    If the site has pages built from one template (locations, products, comparisons), ask for get_page_templates. It groups pages by URL template and reports how many pages each covers, how similar they are and a risk rating, so mass-produced near-duplicates show up before they become a quality problem.

  5. Decide what to fix first

    Ask “What should I fix first this week?”. get_opportunity_inbox ranks fixes by clicks at stake, mixing Search Console problems with high-severity technical issues on pages that have traffic, and says whether each click figure is observed or estimated from your own click rates. A broken template on your top landing pages beats 200 images missing alt text on pages nobody visits.

The server also has a ready-made prompt for this, fix_my_top_issues. It tells Claude to report the health score and its formula, summarise the categories, pull critical then warning issues (or one category you name), check the template report and order everything by impact, reporting only issues the crawl actually found. In Claude Code, with the server named mrkeyword, it runs as /mcp__mrkeyword__fix_my_top_issues.

How to audit or rewrite a single page with Claude

For one URL, use get_latest_page_audit for its saved technical audit and get_page_brief for an evidence-only brief built from its Search Console queries. The page audit covers the title, meta tags, headings, links, structured data and issues with fixes; it returns nothing if that page has never been audited, rather than inventing one. The brief fails if the page has no Search Console row in the latest data, rather than guess. Together they tell Claude what the page already ranks for, so a rewrite keeps those queries.

For links, get_internal_link_suggestions uses the latest crawl to find pages whose text already contains a query the target page is trying to rank for but that do not link to it yet. Each suggestion gives the source page, the exact anchor words and the sentence they sit in, which is enough for Claude to draft the edit. That pairs well with the crawl's “Orphan pages” and “Pages with only one internal link” checks.

What does the crawl check? The 7 categories

MrKeyword's Site Audit runs 68 checks: 6 critical, 26 warnings and 36 notices, filed into seven categories. The titles below are the check names the crawler uses and the ones Claude sees in get_audit_issues.

Site Audit categories with example checks

CategoryChecksExamples
Indexing & crawling18Critical Broken pages (4xx); Warning Redirect chains; Warning Non-indexable URLs in the sitemap; Notice Missing canonical tag
Content16Critical Missing title tag; Warning Duplicate titles; Warning Missing meta description; Warning Near-duplicate template pages
Internal links5Critical Broken internal links; Warning Orphan pages; Notice Pages buried deep in the site
Performance8Warning Slow responses; Notice Render-blocking scripts in the head; Notice Images without width and height
Markup & mobile6Warning Invalid structured data (JSON-LD); Warning Missing mobile viewport; Notice Missing social sharing tags
Accessibility & security7Critical Forms that submit over HTTP; Warning Mixed content; Notice Images missing alt text
AI discoverability8Warning AI crawlers blocked in robots.txt; Warning Content needs JavaScript to appear; Notice No llms.txt
Counts from MrKeyword's crawler on 29 October 2026. The other critical checks are Server errors (5xx) and Redirect loops.

Health score. The score is 100 minus the sum, over every failing check, of its weight × √(share of crawled pages affected), clamped to 0–100. The weights are 25 for a critical issue, 8 for a warning and 2 for a notice. The square root means a problem on a few pages already costs points, while one check cannot sink the score alone unless it is critical and site-wide. get_site_audit returns the formula and weights with the score, and the fix_my_top_issues prompt tells Claude to quote the formula rather than call the score a grade.

How the crawler behaves. It identifies itself as MrKeywordBot/1.0, makes at most two requests a second to a host, and obeys robots.txt, including a Crawl-delay (honoured up to 10 seconds between requests). It reads the HTML your server returns, which is why “Content needs JavaScript to appear” is a check: if the text only appears after JavaScript runs, many AI crawlers will not see it either.

Try the crawl first.The free site audit runs the same 68 checks on up to 100 pages a month, with no card.

Run a free site audit

Fixing SEO issues with Claude Code or Cursor

Open Claude Code or Cursor in the site's repository with the MCP server connected, ask it to read the issues, find the template that produces them and fix that, then deploy, re-crawl and check that the issues come back as fixed. Most technical SEO issues come from a handful of layouts or components, so one template change often clears hundreds of URLs.

  1. Pull one issue type

    Ask for a single type at a time, for example missing_meta_description, images_missing_dimensions or missing_canonical. The affected URLs show which routes or templates are involved.

  2. Let it find the source

    Claude Code or Cursor maps the URLs to the files that render them: the layout's <head>, the image component, the CMS template. Ask it to explain the cause before it edits anything.

  3. Fix the template, not the page

    A shared head component that outputs a self-referencing canonical, an image component that always sets width and height, a description field with a sensible fallback. Review the diff as you would any other change.

  4. Deploy, re-crawl, check the diff

    After the change is live, start a new crawl and ask for get_audit_issues with diff: "fixed". Issues that moved to fixed are done; anything still under persisting needs another look.

Example prompt in Claude Code or Cursor

Use the mrkeyword MCP server. Call get_audit_issues for site_id <id>
with type "missing_canonical" and limit 50. Work out which templates in this
repository render those URLs, explain why the canonical tag is missing, and
propose one change to the shared template. Do not edit content files.
Show me the diff before applying it.
Replace <id> with a site id from list_sites. One issue type per request keeps the change small and easy to review.

Two cautions. Some checks are judgement calls: “Titles that are too long” or “Multiple H1 tags” may be intentional, and the fix text says so where it applies. And a notice is not a ranking emergency; ask Claude to start with critical issues and with pages that get traffic.

What MrKeyword does not do

It finds issues with fixed checks and shows them to Claude; it does not let the AI decide what is broken, and it does not change your site.

  • The AI does not decide what is wrong. Every issue comes from a deterministic check in the crawler. Claude explains and prioritises the findings; it does not add new ones.
  • No changes to your site. No MCP tool edits pages or deploys code. In the developer workflow, the edits happen in your repository, in your own Claude Code or Cursor session, under your review.
  • Only sites in your workspace. You cannot crawl a competitor's site, and a token sees one workspace only.
  • No lab speed test on every page. The crawl runs Google PageSpeed Insights on the homepage and the top pages only: 5 URLs on Free, 10 on paid plans. Core Web Vitals over time come from Google's Chrome UX Report on the Core Web Vitals page, and small sites without enough Chrome traffic have no field data.
  • No JavaScript rendering. The crawler checks the HTML your server sends, and flags pages whose content needs JavaScript instead of rendering them.
  • Crawls have a monthly page allowance. Free 100 pages a month, Starter 2,000, Growth 10,000, Agency 40,000.

Doing the audit by hand? The SEO audit checklist covers the same ground in priority order, with Search Console steps. For the rest of the Claude workflow, see keyword research with Claude and rank tracking with Claude.

Review before you approve. start_site_audit spends crawl pages from your allowance. Keep MCP tool approvals on, and use a read-only token if you only want Claude to read audits that already ran.

Questions and answers

SEO audit with Claude questions

Can Claude audit my website for SEO?

Not reliably on its own, because it cannot crawl every page. Connected to a crawler through an MCP server, it can read a real audit: the health score, the issues by category and the affected URLs, and then explain and prioritise them.

How many checks does MrKeyword's site audit run?

68 checks: 6 critical, 26 warnings and 36 notices, in seven categories: Indexing and crawling, Content, Internal links, Performance, Markup and mobile, Accessibility and security, and AI discoverability.

How is the health score calculated?

Health score = 100 minus the sum of weight times the square root of the share of pages affected, for every failing check, clamped to 0 to 100. Weights are 25 for critical issues, 8 for warnings and 2 for notices.

Can Claude Code fix SEO issues in my site?

Yes, if the site's code is in a repository you open in Claude Code or Cursor. It can read the issues from the MCP server, find the template that causes them and propose a change for you to review. MrKeyword itself never edits your site.

How do I check that a fix worked?

Deploy the change, start a new crawl, and ask Claude for get_audit_issues with diff set to fixed. Issues that are still listed as persisting were not fixed.

Is the crawler polite to my server?

It identifies itself as MrKeywordBot/1.0, makes at most two requests a second to a host, and follows robots.txt, including Crawl-delay.

About this article

Written by the MrKeyword team, who build an SEO workspace on first-party Search Console and Bing data. Outside facts link to their original source below. We update this page when the product or the sources change.

Sources

  1. Connect Claude Code to tools via MCP — MCP prompts as commands (/mcp__servername__promptname), checked 29 October 2026
  2. MrKeyword MCP developer reference — endpoint, tokens, tool list, scopes and limits
  3. MrKeyword Site Audit — the 68 checks, health score, scheduled re-crawls
Keep reading

Put this into practice.

Related guides and tools for the same job.

Give Claude a real crawl to work from.

Add your site to MrKeyword, run the free 68-check audit, and let Claude read the results over MCP. Free plan for one website, no card; paid plans from $10 a month.