← Blog

Guides

How to Run an SEO Audit with Claude or Codex

· by Sean Ryan

A website crawl flowing through an MCP hub into Claude and Codex workspaces and a prioritised SEO audit

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

  1. Connect Claude or Codex to https://app.spronta.com/mcp.
  2. Sign in with Spronta OAuth, or use an API key for automation.
  3. Give the agent the complete audit prompt below.
  4. Let Spronta crawl the site and save the report.
  5. Require the agent to use top_fixes, affected_urls and explain_issue before proposing changes.
  6. 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 measuresClaude or Codex reasons about
Status codes, canonicals, robots directives and metadataWhich template or component probably creates the pattern
Internal links, crawl depth, hubs, dead ends and orphan candidatesWhich internal-link changes are useful and editorially sensible
Issue groups and every affected URLImpact, effort, sequencing and ownership
Search clicks and impressions from connected Google and Bing accountsWhich ranking opportunities deserve work first
Old and new saved reportsWhether 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 MCPLocal open-source MCP
Serverhttps://app.spronta.com/mcpcrawlie-mcp on your machine
SetupOAuth; no package installInstall the Spronta npm package
ReportsSaved in Spronta CloudRemain in the local session
Google/Bing dataAvailable when the site plugins are connectedNot included in the local crawl
Comparisons and schedulesSaved report comparisons and cloud monitoringManual local runs
Best forOngoing audits and team workflowsPrivate, 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

  1. Open Customize → Connectors in Claude.
  2. Choose Add custom connector.
  3. Enter https://app.spronta.com/mcp as the remote MCP URL.
  4. Complete the Spronta sign-in and approve access.
  5. 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:

  1. crawl_site creates the crawl and saved report.
  2. crawl_status waits for larger asynchronous crawls without starting duplicates.
  3. top_fixes ranks repeated issue groups.
  4. explain_issue supplies the meaning and remediation for a specific rule.
  5. affected_urls proves where the problem occurs.
  6. link_graph adds 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.

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.

Start a free Spronta audit →

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.