Guides
How to Run an SEO Audit with Claude or Codex
· by Sean Ryan
To run an SEO audit with Claude or Codex, connect your AI client to the Spronta MCP server at https://app.spronta.com/mcp, authenticate, and ask it to crawl your site. The useful bit comes next: make the agent query the saved report for the highest-impact fixes, affected URLs and supporting evidence before it recommends—or edits—anything.
That produces a much better AI SEO audit than pasting a giant CSV into a chat. Spronta does the deterministic crawling; Claude or Codex does the investigation, prioritisation and, if you give it repository access, the implementation.
This guide gives you the exact setup and prompts for a technical SEO audit, internal-link analysis, Google Search Console and Bing opportunity research, pre-launch checks, GEO auditing and post-fix verification.
The short version
- Connect Claude or Codex to
https://app.spronta.com/mcp. - Sign in with Spronta OAuth, or use an API key for automation.
- Give the agent the complete audit prompt below.
- Let Spronta crawl the site and save the report.
- Require the agent to use
top_fixes,affected_urlsandexplain_issuebefore proposing changes. - Fix one issue class at a time, deploy, re-crawl and compare the two reports with
diff_reports.
If you already have an MCP client configured, jump straight to the complete SEO audit prompt.
Why use MCP for an AI SEO audit?
Claude and Codex are good at reading code and reasoning about a problem. They are not web crawlers. If you simply ask, “audit my website”, the model may inspect a few pages, miss site-wide patterns and confidently generalise from incomplete evidence.
Model Context Protocol (MCP) gives the agent structured tools instead. Spronta can fetch the site, follow internal links, inspect metadata and directives, run SEO, accessibility and generative-engine optimisation checks, calculate link structure and save a report. The agent can then request only the slice it needs.
That split matters:
| Spronta measures | Claude or Codex reasons about |
|---|---|
| Status codes, canonicals, robots directives and metadata | Which template or component probably creates the pattern |
| Internal links, crawl depth, hubs, dead ends and orphan candidates | Which internal-link changes are useful and editorially sensible |
| Issue groups and every affected URL | Impact, effort, sequencing and ownership |
| Search clicks and impressions from connected Google and Bing accounts | Which ranking opportunities deserve work first |
| Old and new saved reports | Whether a deployed change actually fixed the issue without regressions |
The model gets compact, queryable evidence rather than thousands of page objects in its context window. That keeps the conversation faster, reduces memory use and makes the result easier to verify.
Choose hosted or local Spronta MCP
For most people, the hosted MCP server is the best starting point.
| Hosted Spronta MCP | Local open-source MCP | |
|---|---|---|
| Server | https://app.spronta.com/mcp | crawlie-mcp on your machine |
| Setup | OAuth; no package install | Install the Spronta npm package |
| Reports | Saved in Spronta Cloud | Remain in the local session |
| Google/Bing data | Available when the site plugins are connected | Not included in the local crawl |
| Comparisons and schedules | Saved report comparisons and cloud monitoring | Manual local runs |
| Best for | Ongoing audits and team workflows | Private, local or one-off checks |
This tutorial uses the hosted server. See the Spronta MCP reference for every client and the local MCP guide if you want the open-source route.
Set up Spronta MCP in Claude
Claude on the web or desktop
- Open Customize → Connectors in Claude.
- Choose Add custom connector.
- Enter
https://app.spronta.com/mcpas the remote MCP URL. - Complete the Spronta sign-in and approve access.
- In a new conversation, enable Spronta from + → Connectors.
Anthropic currently describes custom connectors as a beta feature and allows one custom connector on a Free account; workspace owners control availability on Team and Enterprise plans. Its official custom connector guide has the current client-specific screens.
Start with a harmless identity check:
Use Spronta's whoami tool. Tell me which account is connected and stop.
Claude Code
Add the hosted server for your user account:
claude mcp add --transport http --scope user crawlie https://app.spronta.com/mcp
Then open Claude Code, run /mcp, choose crawlie and complete the OAuth sign-in in your browser. Confirm it can see the tool:
Use Spronta to list my five most recent reports. Do not start a new crawl.
The --scope user flag makes the server available across your projects. Use project scope instead if you intentionally want to commit a shared MCP definition for one repository. Anthropic documents the available scopes and authentication flow in its Claude Code MCP guide.
Set up Spronta MCP in OpenAI Codex
Add the remote server from a terminal:
codex mcp add crawlie --url https://app.spronta.com/mcp
codex mcp login crawlie
codex mcp list
Codex desktop, Codex CLI and the IDE extension share the same MCP configuration on a machine. You can also configure it directly in ~/.codex/config.toml:
[mcp_servers.crawlie]
url = "https://app.spronta.com/mcp"
Restart the client if it was already open, then ask:
Use the Spronta MCP server to run whoami, then list my five latest SEO reports.
Do not crawl anything yet.
The current Codex MCP documentation covers shared configuration, OAuth and remote Streamable HTTP servers.
API-key setup for CI or headless jobs
Interactive OAuth is the safer default for your laptop. For CI, create a key under Spronta Settings → API keys, put it in your secret manager and expose only the environment variable name to Codex:
export CRAWLIE_API_KEY="crw_your_key"
codex mcp add crawlie \
--url https://app.spronta.com/mcp \
--bearer-token-env-var CRAWLIE_API_KEY
Never paste a production API key into a prompt, commit it to the repository or put it in a public MCP configuration. You can create and revoke keys from the API key settings guide.
The complete SEO audit prompt
This prompt works in Claude, Claude Code and Codex. Replace the URL and page limit. A 200-page first pass is usually enough to discover templates and repeated problems without spending time on every faceted URL.
Run an evidence-based technical SEO audit of https://example.com using the
Spronta MCP tools.
1. Call crawl_site with:
- url: https://example.com
- maxPages: 200
- maxDepth: 8
- checkExternal: true
- respectRobots: true
- useSitemap: true
- render: false
2. If the crawl is asynchronous and returns a jobId, poll crawl_status until it
reaches a terminal state. Keep the reportId for every later call.
3. Summarise the health, GEO and accessibility scores, crawl coverage and any
important limitations. Do not treat every warning as equally important.
4. Call top_fixes for the saved report. For the five highest-impact issue
groups, call explain_issue and affected_urls.
5. Use link_graph to identify deep pages, dead ends, weakly linked pages and
internal-link opportunities.
6. Group recommendations into:
- Critical: indexation, crawling, broken journeys or widespread failures
- High impact: template-level changes affecting many important pages
- Quick wins: safe, bounded improvements
- Investigate: findings that need human or business context
7. For every recommendation include the rule, evidence, affected URL count,
2–3 example URLs, likely root cause, exact fix and how to verify it.
8. Separate measured facts from your inferences. Do not invent traffic, ranking
impact or affected pages that are absent from the report.
Return a concise executive summary first, then a prioritised action table and a
30-day implementation plan. Do not dump raw JSON.
What happens under the hood
The prompt deliberately makes the agent use a sequence rather than one huge response:
crawl_sitecreates the crawl and saved report.crawl_statuswaits for larger asynchronous crawls without starting duplicates.top_fixesranks repeated issue groups.explain_issuesupplies the meaning and remediation for a specific rule.affected_urlsproves where the problem occurs.link_graphadds crawl-depth and internal-authority context.
Because the report is saved, you can ask follow-up questions without crawling the site again. Say “use report ID …” when you want to make absolutely sure the agent stays on the same dataset.
Prompt: audit the site and fix the repository
Claude Code and Codex can connect crawl evidence to the codebase they are working in. Keep the scope explicit and require a plan before edits—especially for canonicals, redirects, robots directives and structured data.
Use Spronta to audit the production URL https://example.com with a maximum of
200 pages. Poll the job if necessary, then inspect top_fixes, explain_issue and
affected_urls for the three highest-impact issue groups.
Now inspect this repository and trace each repeated finding to its most likely
shared template, component or content pipeline. Before editing, give me a table
with: finding, crawl evidence, likely source file, proposed change, risk and
verification command.
Implement only fixes that are supported by the crawl evidence and can be made
safely in this repo. Preserve unrelated work. Run the relevant tests and build.
Do not claim the live issue is fixed until the change is deployed and a fresh
Spronta report confirms it.
A crawler cannot know whether a page was intentionally noindexed, whether two products should be canonicalised together or whether a redirect is commercially safe. The prompt makes the coding agent stop and surface that uncertainty instead of turning a warning into an automatic production change.
Prompt: find Google and Bing SEO opportunities
If you have connected Google Search Console or Bing Webmaster Tools to the Spronta project, search_performance can join clicks and impressions to pages in the saved crawl. That lets the agent combine demand with technical evidence.
Use my latest Spronta report for https://example.com. Call search_performance
with a limit of 100, using both connected Google and Bing data.
Find:
1. High-impression pages with weak click-through rate
2. Pages receiving search demand that also have unresolved crawl findings
3. Google/Bing outliers that may reveal engine-specific opportunity
4. Important pages with poor internal authority or excessive crawl depth
For each opportunity, cite the URL and the measured clicks/impressions supplied
by the tool, then call the relevant report tools to inspect its crawl evidence.
Do not infer a keyword, ranking or conversion rate that the tools did not return.
Rank the final backlog by likely impact, confidence and effort.
The performance join requires a report attached to a Spronta project with the relevant search plugin connected. If the tool returns no data, ask the agent to check the project connection rather than fabricating a performance narrative.
Prompt: improve internal links
Use link_graph on report ID REPORT_ID. Identify:
- important pages with low internal PageRank
- pages deeper than three clicks from the start URL
- dead ends and orphan candidates
- hub pages that could distribute authority more effectively
Then inspect the report's affected URLs and propose ten contextually relevant
internal links. For each one give the source URL, destination URL, suggested
anchor concept and why the link helps a user. Do not propose sitewide footer
links or repetitive exact-match anchors unless the evidence clearly supports it.
This is more useful than asking a model to “add internal links” in the abstract. It starts with the actual graph, then adds editorial judgement.
Prompt: run an AI-search and GEO audit
GEO—generative engine optimisation—is about making content easy for answer engines to retrieve, interpret and cite. It does not replace technical SEO; crawlability, clear entities, good information architecture and original answers still do the heavy lifting.
Use Spronta to audit https://example.com, then call geo_gaps on the saved report.
For the most repeated GEO gaps, inspect affected URLs and explain the issue.
Prioritise changes that make the content more explicit, attributable and easy to
extract: clear answers, named entities, author or organisation evidence, useful
headings, source attribution and appropriate structured data. Distinguish
technical findings from subjective content recommendations. Show examples from
the audited URLs and do not promise inclusion or citations by any AI engine.
See the full check catalogue if you want to understand which signals are deterministic and which recommendations still need editorial review.
Prompt: pre-launch SEO audit
Use browser rendering when the preview relies on client-side JavaScript. Rendering is slower and more expensive, so leave it off for a conventional server-rendered site.
Run a pre-launch audit of https://preview.example.com with Spronta.
Use render: true, maxPages: 150 and checkExternal: true.
Block launch only for evidence-backed failures involving crawl access,
indexability, canonicals, redirects, broken internal journeys, missing primary
metadata, structured-data syntax or important rendered content. Put cosmetic,
content-quality and low-confidence warnings in a separate post-launch backlog.
For each blocker include affected URLs, the rule evidence, the likely shared
root cause and a concrete verification step. End with GO, GO WITH CONDITIONS or
NO-GO and explain the threshold you used.
Preview environments often intentionally use authentication or noindex. Tell the agent about those constraints so it does not mistake deliberate launch controls for defects.
Prompt: verify an SEO fix with two crawls
“The code looks right” is not verification. Deploy the change, create a new report, and compare the same site scope.
The baseline Spronta report is OLD_REPORT_ID. Crawl https://example.com again
with the same maxPages, depth, rendering and include/exclude scope. Wait for the
new report to complete, then call diff_reports with the old and new report IDs.
Confirm whether RULE_NAME decreased or disappeared. Report any new or worsening
issue groups and any meaningful change in crawl coverage. If the affected URLs
remain, inspect examples before suggesting another fix. Give me a PASS, PARTIAL
or FAIL verdict with evidence; do not use the code diff alone as proof.
Keeping crawl scope constant is important. A drop from 100 affected URLs to 20 is not a win if the second crawl only discovered 20 pages.
Prompt: create a weekly SEO monitoring loop
Cloud projects can retain the history and run scheduled crawls. Scheduling depends on your Spronta plan and consumes crawl allowance, so ask for the proposed configuration before the agent changes it.
First use list_projects and tell me whether https://example.com already has a
Spronta project. Do not create a duplicate.
If it exists, show its current schedule. If it does not, propose a weekly crawl
configuration for my approval: Monday at 08:00 Europe/London, maximum 500 pages,
email alerts for new errors and score regressions. Do not call create_project or
set_schedule until I approve the exact configuration.
After approval, configure it. For future weekly reviews, use project_trend and
diff_reports to summarise new, fixed and worsening issue groups, then use
search_performance to highlight pages where search demand and technical debt
overlap.
The approval step prevents a conversational experiment from quietly creating a recurring job.
How to get a better SEO audit from Claude or Codex
Start bounded, then expand
Run 100–300 pages first. If the findings are useful and coverage looks representative, increase the limit or use include/exclude patterns for a specific section. A focused crawl of /products/** is often more actionable than mixing product pages, documentation, account screens and faceted archives.
Keep JavaScript rendering intentional
Use render: false for normal HTML sites. Turn it on when important links, metadata or body content only appear after JavaScript runs. Rendering consumes more time and resources, so test a small sample before a large rendered crawl.
Require evidence at URL level
Scores are useful orientation, not the backlog. Ask for the rule, count, representative URLs and likely shared cause. affected_urls is the difference between “you have canonical problems” and a fix an engineer can reproduce.
Separate facts from hypotheses
An audit can measure that a title is duplicated. It cannot automatically know the correct search intent, the business priority of the page or the best replacement. Make the agent label inferences and ask for product context where it matters.
Re-crawl instead of declaring victory
Use the same settings, compare report IDs and look for regressions. This closes the loop that most one-shot AI SEO audit prompts leave open.
A real dogfood check
While writing this guide on July 16, 2026, we ran the current Spronta engine against 75 pages of spronta.com. All 75 responded with HTTP 200 and the crawl found no error-severity findings. It still surfaced a trailing-slash/canonical convention worth reviewing and site-wide security-header hardening notices.
That is exactly why a useful audit should not optimise for a flattering score. It should distinguish a genuine search blocker from a convention, a defence-in-depth improvement or an editorial choice—and give you enough evidence to decide.
Common setup and audit problems
“The Spronta tool is not available”
Check that the connector is enabled for the conversation. In Claude Code use /mcp; in Codex run codex mcp list. Restart a desktop or IDE client after changing shared configuration.
“Unauthorized” or an expired connection
Reconnect OAuth. In Codex, run codex mcp login crawlie again. If you use an API key, verify the environment variable exists in the process that launched the client—not just in another terminal—and rotate the key if it may have leaked.
The crawl returned a job ID, not a report
That is normal for a larger crawl. Tell the agent to poll crawl_status with the same job ID until it completes, then continue with the returned report ID. Do not start a fresh crawl every time it checks.
The crawl missed important content
Confirm that robots rules, authentication, include/exclude patterns and the page limit are not blocking discovery. If the missing content is client-rendered, retry a small crawl with render: true.
The response is huge and unfocused
Ask for ranked issue groups first, then drill into three to five rules. The saved-report tools exist so the agent does not have to put the entire crawl in one answer.
Run your first Claude or Codex SEO audit
Connect https://app.spronta.com/mcp, use the complete prompt, and keep the first crawl deliberately small. Once the report proves the scope is right, let the agent investigate the repeated patterns and connect them to your code or content workflow.
The winning loop is simple: crawl, inspect evidence, fix, deploy, re-crawl, compare.
Or read the MCP setup reference, explore saved SEO reports, or configure continuous monitoring.
Frequently asked questions
Can Claude run an SEO audit?
Yes. Connect Claude to an SEO crawler through MCP, then ask it to crawl the site, rank the findings, inspect affected URLs and explain each fix. Spronta gives Claude measured crawl data instead of asking the model to guess from a handful of pages.
Can Codex do an SEO audit?
Yes. Codex can call the Spronta MCP tools to audit a live site and, when it has access to the site's repository, trace findings to templates, make scoped code changes, run tests and re-crawl the deployment to verify the result.
What is an MCP SEO audit?
An MCP SEO audit lets an AI client call a crawler as a structured tool. The crawler collects HTTP, metadata, links, rendering and page-level evidence; the AI client then queries the saved report and turns that evidence into a prioritised plan.
Does the Spronta MCP server change my website?
No. Spronta crawls the public site and saves reports. Claude Code or Codex can edit code only when you separately give that client access to a local repository, and you should review and test every proposed change.
Should I use the hosted or local Spronta MCP server?
Use the hosted server for OAuth, saved cloud reports, Google and Bing search-performance joins, comparisons and scheduled monitoring. Use the open-source local server when you want an audit to stay on your machine or need a simple no-account workflow.