Sample report - a fictional store, not a real site
SEO audit of example-shop.test
- Pages scanned
- 25
- Issues found
- 312
- Fix cards
- 8
- Scanned
- 2026-09-08
- Expires in
- 14d
14 days from the scan
Issues by severity
- CRITICAL2
- HIGH24
- MEDIUM61
- LOW187
- INFO38
The crawl was capped, so these counts describe the pages we reached, not the whole site.
Top 3 fixes
1. Product pages ship without a meta description
Fix the templateNineteen of the twenty-five pages we read are product pages built from one template, and that template emits no meta description. Google writes its own snippet from whatever text it finds, which on these pages is the shipping notice.
Evidence and affected URLs
How to fix
- Next.js Return a description from the route segment generateMetadata, composed from the same product record the page renders. A missing description is a data gap, not a copy task.
Evidence
All nineteen pages return an empty <meta name="description">; the tag is present, so the template renders it unconditionally from a field that is never set.
Examples
- /p/brass-kettle-1l
- /p/enamel-mug-navy
- /p/cast-iron-skillet-26cm
Affected URLs
/p/*
- https://example-shop.test/p/brass-kettle-1l
- https://example-shop.test/p/enamel-mug-navy
- https://example-shop.test/p/cast-iron-skillet-26cm
- https://example-shop.test/p/linen-apron-sand
- https://example-shop.test/p/copper-measuring-set
2. Paginated category pages all share one title
Fix the templateSix category pages carry the identical title "Kitchen - Example Shop", because the template ignores the page number. Google picks one of them to show and treats the rest as near-duplicates of it.
Evidence and affected URLs
How to fix
- Next.js Read the page parameter in generateMetadata and suffix the title with " - page N" when it is greater than one. The same value should drive the self-canonical.
Evidence
Six URLs, one title string, one meta description. The only difference between the documents is the product grid.
Examples
- /c/kitchen
- /c/kitchen?page=2
- /c/kitchen?page=3
Affected URLs
/c/kitchen*
- https://example-shop.test/c/kitchen
- https://example-shop.test/c/kitchen?page=2
- https://example-shop.test/c/kitchen?page=3
- https://example-shop.test/c/kitchen?page=4
3. Product photography carries no alt text
Fix the contentOne hundred and forty-eight images across the pages we read have an empty alt attribute. That costs you image search, and it is the single most common accessibility complaint a shop gets. The gallery component sets alt="" on every slide.
Evidence and affected URLs
How to fix
- Next.js The alt prop on next/image is required but accepts an empty string, which is why this passed review. Pass the product title from the same record that supplies the src.
Evidence
Of 161 images seen, 148 have alt="". The 13 that do not are the site logo and the payment icons in the footer.
Affected URLs
/p/*
- https://example-shop.test/p/brass-kettle-1l
- https://example-shop.test/p/enamel-mug-navy
5 more fixes this scan found
- 4. Filtered category URLs canonicalise to themselves9 pages
- 5. Journal posts have no internal links pointing at them4 pages
- 6. The sitemap lists URLs that redirect7 pages
- 7. No Product structured data on product pages19 pages
- 8. Category pages carry under 40 words of their own copy5 pages
Ranked by the same score as the cards above. They open when this audit moves into a workspace.
Hand the whole audit to your agent
One prompt with the site facts, the 3 fixes above, the order to do them in and how to verify. It carries no credential, so it is safe to paste anywhere.
Point your agent at this audit
The prompts above are self-contained: an agent can do the work with no account and no credential. The MCP server adds the other half of the loop, so the agent re-reads the audit and re-checks a page itself after it edits one. 11 tools over the same read-only API, documented on the API page.
{
"mcpServers": {
"crawlspec": {
"command": "npx",
"args": [
"-y",
"@crawlspec/mcp"
],
"env": {
"CRAWLSPEC_API_KEY": "<your CrawlSpec token>",
"CRAWLSPEC_API_URL": "https://crawlspec.dev"
}
}
}
}The token goes in that placeholder. Tokens come by email, never on this page, and a workspace mints its own from project settings once this audit is claimed.
Not in a free scan
- Fixes still locked
- 5
- Pages per crawl on Pro
- 2,000
- Re-crawls
- 0
- Content briefs
- 0
- Search Console days
- 0
- Agent tools on a workspace
- 11
Ranked by the same score, hidden on the free scan
25 in a free scan
A free scan runs once and never again
Written from the audit plus real search demand
Clicks and positions joined onto every page
Briefs, topics, keywords and the consolidated audit