- 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_auditandget_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.
-
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. -
Read the summary
Ask “What did the last crawl find?”.
get_site_auditreturns 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”. -
Drill into the issues
get_audit_issuesreturns the affected pages for each issue type, with a plain-English fix. Narrow it withtype(one exact issue type such asbroken_internal_link),category(one of the seven),severity(critical,warningornotice) ordiff(new,persistingorfixed).limit(up to 100) andoffsetpage through the URLs within each type, so a problem on thousands of pages stays readable. -
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. -
Decide what to fix first
Ask “What should I fix first this week?”.
get_opportunity_inboxranks 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 missingalttext 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
| Category | Checks | Examples |
|---|---|---|
| Indexing & crawling | 18 | Critical Broken pages (4xx); Warning Redirect chains; Warning Non-indexable URLs in the sitemap; Notice Missing canonical tag |
| Content | 16 | Critical Missing title tag; Warning Duplicate titles; Warning Missing meta description; Warning Near-duplicate template pages |
| Internal links | 5 | Critical Broken internal links; Warning Orphan pages; Notice Pages buried deep in the site |
| Performance | 8 | Warning Slow responses; Notice Render-blocking scripts in the head; Notice Images without width and height |
| Markup & mobile | 6 | Warning Invalid structured data (JSON-LD); Warning Missing mobile viewport; Notice Missing social sharing tags |
| Accessibility & security | 7 | Critical Forms that submit over HTTP; Warning Mixed content; Notice Images missing alt text |
| AI discoverability | 8 | Warning AI crawlers blocked in robots.txt; Warning Content needs JavaScript to appear; Notice No llms.txt |
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 auditFixing 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.
-
Pull one issue type
Ask for a single type at a time, for example
missing_meta_description,images_missing_dimensionsormissing_canonical. The affected URLs show which routes or templates are involved. -
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. -
Fix the template, not the page
A shared head component that outputs a self-referencing canonical, an image component that always sets
widthandheight, a description field with a sensible fallback. Review the diff as you would any other change. -
Deploy, re-crawl, check the diff
After the change is live, start a new crawl and ask for
get_audit_issueswithdiff: "fixed". Issues that moved to fixed are done; anything still underpersistingneeds 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.
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.
Sources
- Connect Claude Code to tools via MCP — MCP prompts as commands (/mcp__servername__promptname), checked 29 October 2026
- MrKeyword MCP developer reference — endpoint, tokens, tool list, scopes and limits
- MrKeyword Site Audit — the 68 checks, health score, scheduled re-crawls

