Full Website SEO Audit

Full website SEO audit with parallel subagent delegation.

How to use it

  1. Hit Copy SKILL.md — or use the Claude Code line below to get every file.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit AgriciDaniel/claude-seo/skills/seo-audit#main ~/.claude/skills/seo-audit-3

For one project only, change the path to .claude/skills/seo-audit-3. This skill also uses render_page.py, robots.txt, llms.txt, google_auth.py, backlinks_auth.py, drift_history.py — copying SKILL.md alone won't be enough. See the folder on GitHub.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text184 lines
seo-audit-3/SKILL.md184 lines8.5 KBpushed 11d agoRawView on GitHub

Full Website SEO Audit

Process

  1. Render homepage: use "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run render_page.py <url> --mode auto --json to capture raw HTML, rendered HTML, extracted text, SPA status, and accessibility data when needed
  2. Detect business type: analyze homepage signals per seo orchestrator
  3. Crawl site: follow internal links up to 500 pages, respect robots.txt
  4. Delegate to subagents (if available, otherwise run inline sequentially):
    • seo-technical -- robots.txt, sitemaps, canonicals, Core Web Vitals, security headers
    • seo-content -- E-E-A-T, readability, thin content, AI citation readiness
    • seo-schema -- detection, validation, generation recommendations
    • seo-sitemap -- structure analysis, quality gates, missing pages
    • seo-performance -- LCP, INP, CLS measurements
    • seo-visual -- screenshots, mobile testing, above-fold analysis
    • seo-geo -- AI crawler access, llms.txt, citability, brand mention signals
    • seo-local -- GBP signals, NAP consistency, reviews, local schema, industry-specific local factors (spawn when Local Service industry detected: brick-and-mortar, SAB, or hybrid business type)
    • seo-maps -- Geo-grid rank tracking, GBP audit, review intelligence, competitor radius mapping (spawn when Local Service detected AND DataForSEO MCP available)
    • seo-google -- CWV field data (CrUX), URL indexation (GSC), organic traffic (GA4) (spawn when Google API credentials detected via "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_auth.py --check)
    • seo-backlinks -- Backlink profile data: DA/PA, referring domains, anchor text, toxic links (spawn when Moz or Bing API credentials detected via "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run backlinks_auth.py --check, or always include Common Crawl domain-level metrics)
    • seo-cluster -- Semantic clustering analysis (spawn when content strategy signals detected: blog, pillar pages, topic clusters)
    • seo-sxo -- Search experience analysis: page-type mismatch, user stories, persona scoring (always include in full audits)
    • seo-drift -- Drift analysis: compare against stored baseline (spawn when drift baseline exists for the URL via "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_history.py <url>)
    • seo-ecommerce -- Product schema, marketplace intelligence (spawn when E-commerce industry detected)
  5. Score -- aggregate into SEO Health Score (0-100)
  6. Persist audit artifacts -- write all outputs under {domain}-audit/
  7. Report -- generate prioritized action plan and optional PDF/HTML report

Crawl Configuration

Max pages: 500
Respect robots.txt: Yes
Follow redirects: Yes (max 3 hops)
Timeout per page: 30 seconds
Concurrent requests: 5
Delay between requests: 1 second

Output Files

  • {domain}-audit/FULL-AUDIT-REPORT.md: Comprehensive findings
  • {domain}-audit/ACTION-PLAN.md: Prioritized recommendations (Critical > High > Medium > Low)
  • {domain}-audit/audit-data.json: Structured audit envelope for report generation
  • {domain}-audit/findings/*.md: Per-category specialist findings (technical.md, content.md, schema.md, performance.md, visual.md, etc.)
  • {domain}-audit/screenshots/: Desktop + mobile captures (if Playwright available)
  • PDF Report (recommended): Generate a professional A4 PDF using "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_report.py --type full --data {domain}-audit/audit-data.json --domain <domain> --output-dir {domain}-audit/. This produces a white-cover enterprise report with TOC, executive summary, charts (Lighthouse gauges, query bars, index donut), metric cards, threshold tables, prioritized recommendations with effort estimates, and implementation roadmap. Always offer PDF generation after completing an audit.

Structured Audit Data Envelope

Write {domain}-audit/audit-data.json with this shape so "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_report.py --type full --data {domain}-audit/audit-data.json --domain <domain> --output-dir {domain}-audit/ can generate a report even when Google API data is unavailable:

{
  "summary": {
    "health_score": 0,
    "business_type": "detected type",
    "top_findings": [],
    "quick_wins": []
  },
  "categories": [
    {
      "name": "Technical SEO",
      "score": 0,
      "what_works": [],
      "findings": [
        {
          "title": "Finding title",
          "severity": "Critical|High|Medium|Low|Info",
          "description": "Evidence-backed detail",
          "recommendation": "Specific fix"
        }
      ]
    }
  ],
  "action_plan": {
    "phases": [
      {"name": "Phase 1: Critical Fixes", "timeframe": "Week 1", "items": []},
      {"name": "Phase 2: High-Impact Improvements", "timeframe": "Weeks 2-3", "items": []},
      {"name": "Phase 3: Content & Authority", "timeframe": "Month 2", "items": []},
      {"name": "Phase 4: Monitoring & Iteration", "timeframe": "Ongoing", "items": []}
    ]
  },
  "artifacts": {
    "findings_dir": "findings/",
    "screenshots_dir": "screenshots/"
  }
}

Scoring Weights

Category Weight
Technical SEO 22%
Content Quality 23%
On-Page SEO 20%
Schema / Structured Data 10%
Performance (CWV) 10%
AI Search Readiness 10%
Images 5%

Report Structure

Executive Summary

  • Overall SEO Health Score (0-100)
  • Business type detected
  • Top 5 critical issues
  • Top 5 quick wins

Technical SEO

  • Crawlability issues
  • Indexability problems
  • Security concerns
  • Core Web Vitals status

Content Quality

  • E-E-A-T assessment
  • Thin content pages
  • Duplicate content issues
  • Readability scores

On-Page SEO

  • Title tag issues
  • Meta description problems
  • Heading structure
  • Internal linking gaps

Schema & Structured Data

  • Current implementation
  • Validation errors
  • Missing opportunities

Performance

  • LCP, INP, CLS scores
  • Resource optimization needs
  • Third-party script impact

Images

  • Missing alt text
  • Oversized images
  • Format recommendations

AI Search Readiness

  • Citability score
  • Structural improvements
  • Authority signals

Priority Definitions

  • Critical: Blocks indexing or causes penalties (fix immediately)
  • High: Significantly impacts rankings (fix within 1 week)
  • Medium: Optimization opportunity (fix within 1 month)
  • Low: Nice to have (backlog)

DataForSEO Integration (Optional)

If DataForSEO MCP tools are available, spawn the seo-dataforseo agent alongside existing subagents to enrich the audit with live data: real SERP positions, backlink profiles with spam scores, on-page analysis (Lighthouse), business listings, and AI visibility checks (ChatGPT scraper, LLM mentions).

Google API Integration (Optional)

If Google API credentials are configured ("${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_auth.py --check), spawn the seo-google agent to enrich the audit with real Google field data: CrUX Core Web Vitals (replaces lab-only estimates), GSC URL indexation status, search performance (clicks, impressions, CTR), and GA4 organic traffic trends. The Performance (CWV) category score benefits most from field data.

Error Handling

Scenario Action
URL unreachable (DNS failure, connection refused) Report the error clearly. Do not guess site content. Suggest the user verify the URL and try again.
robots.txt blocks crawling Report which paths are blocked. Analyze only accessible pages and note the limitation in the report.
Rate limiting (429 responses) Back off and reduce concurrent requests. Report partial results with a note on which sections could not be completed.
Timeout on large sites (500+ pages) Cap the crawl at the timeout limit. Report findings for pages crawled and estimate total site scope.
Subagent hits its maxTurns budget on a large site Findings are not lost: every audit subagent writes a partial output_dir/findings/*.md after its first analysis pass and overwrites it with the complete findings before finishing. Read whatever findings file exists and merge it into the report, noting it may be partial.
1---
2name: seo-audit
3description: "Full website SEO audit with parallel subagent delegation. Crawls up to 500 pages, detects business type, delegates to up to 15 specialists (8 always + 7 conditional), generates health score. Use when user says audit, full SEO check, analyze my site, or website health check."
4user-invocable: true
5argument-hint: "[url]"
6license: MIT
7metadata:
8 author: AgriciDaniel
9 version: "2.3.1"
10 category: seo
11---
12 
13# Full Website SEO Audit
14 
15## Process
16 
171. **Render homepage**: use `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run render_page.py <url> --mode auto --json` to capture raw HTML, rendered HTML, extracted text, SPA status, and accessibility data when needed
182. **Detect business type**: analyze homepage signals per seo orchestrator
193. **Crawl site**: follow internal links up to 500 pages, respect robots.txt
204. **Delegate to subagents** (if available, otherwise run inline sequentially):
21 - `seo-technical` -- robots.txt, sitemaps, canonicals, Core Web Vitals, security headers
22 - `seo-content` -- E-E-A-T, readability, thin content, AI citation readiness
23 - `seo-schema` -- detection, validation, generation recommendations
24 - `seo-sitemap` -- structure analysis, quality gates, missing pages
25 - `seo-performance` -- LCP, INP, CLS measurements
26 - `seo-visual` -- screenshots, mobile testing, above-fold analysis
27 - `seo-geo` -- AI crawler access, llms.txt, citability, brand mention signals
28 - `seo-local` -- GBP signals, NAP consistency, reviews, local schema, industry-specific local factors (spawn when Local Service industry detected: brick-and-mortar, SAB, or hybrid business type)
29 - `seo-maps` -- Geo-grid rank tracking, GBP audit, review intelligence, competitor radius mapping (spawn when Local Service detected AND DataForSEO MCP available)
30 - `seo-google` -- CWV field data (CrUX), URL indexation (GSC), organic traffic (GA4) (spawn when Google API credentials detected via `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_auth.py --check`)
31 - `seo-backlinks` -- Backlink profile data: DA/PA, referring domains, anchor text, toxic links (spawn when Moz or Bing API credentials detected via `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run backlinks_auth.py --check`, or always include Common Crawl domain-level metrics)
32 - `seo-cluster` -- Semantic clustering analysis (spawn when content strategy signals detected: blog, pillar pages, topic clusters)
33 - `seo-sxo` -- Search experience analysis: page-type mismatch, user stories, persona scoring (always include in full audits)
34 - `seo-drift` -- Drift analysis: compare against stored baseline (spawn when drift baseline exists for the URL via `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_history.py <url>`)
35 - `seo-ecommerce` -- Product schema, marketplace intelligence (spawn when E-commerce industry detected)
365. **Score** -- aggregate into SEO Health Score (0-100)
376. **Persist audit artifacts** -- write all outputs under `{domain}-audit/`
387. **Report** -- generate prioritized action plan and optional PDF/HTML report
39 
40## Crawl Configuration
41 
42```
43Max pages: 500
44Respect robots.txt: Yes
45Follow redirects: Yes (max 3 hops)
46Timeout per page: 30 seconds
47Concurrent requests: 5
48Delay between requests: 1 second
49```
50 
51## Output Files
52 
53- `{domain}-audit/FULL-AUDIT-REPORT.md`: Comprehensive findings
54- `{domain}-audit/ACTION-PLAN.md`: Prioritized recommendations (Critical > High > Medium > Low)
55- `{domain}-audit/audit-data.json`: Structured audit envelope for report generation
56- `{domain}-audit/findings/*.md`: Per-category specialist findings (`technical.md`, `content.md`, `schema.md`, `performance.md`, `visual.md`, etc.)
57- `{domain}-audit/screenshots/`: Desktop + mobile captures (if Playwright available)
58- **PDF Report** (recommended): Generate a professional A4 PDF using `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_report.py --type full --data {domain}-audit/audit-data.json --domain <domain> --output-dir {domain}-audit/`. This produces a white-cover enterprise report with TOC, executive summary, charts (Lighthouse gauges, query bars, index donut), metric cards, threshold tables, prioritized recommendations with effort estimates, and implementation roadmap. Always offer PDF generation after completing an audit.
59 
60## Structured Audit Data Envelope
61 
62Write `{domain}-audit/audit-data.json` with this shape so `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_report.py --type full --data {domain}-audit/audit-data.json --domain <domain> --output-dir {domain}-audit/` can generate a report even when Google API data is unavailable:
63 
64```json
65{
66 "summary": {
67 "health_score": 0,
68 "business_type": "detected type",
69 "top_findings": [],
70 "quick_wins": []
71 },
72 "categories": [
73 {
74 "name": "Technical SEO",
75 "score": 0,
76 "what_works": [],
77 "findings": [
78 {
79 "title": "Finding title",
80 "severity": "Critical|High|Medium|Low|Info",
81 "description": "Evidence-backed detail",
82 "recommendation": "Specific fix"
83 }
84 ]
85 }
86 ],
87 "action_plan": {
88 "phases": [
89 {"name": "Phase 1: Critical Fixes", "timeframe": "Week 1", "items": []},
90 {"name": "Phase 2: High-Impact Improvements", "timeframe": "Weeks 2-3", "items": []},
91 {"name": "Phase 3: Content & Authority", "timeframe": "Month 2", "items": []},
92 {"name": "Phase 4: Monitoring & Iteration", "timeframe": "Ongoing", "items": []}
93 ]
94 },
95 "artifacts": {
96 "findings_dir": "findings/",
97 "screenshots_dir": "screenshots/"
98 }
99}
100```
101 
102## Scoring Weights
103 
104| Category | Weight |
105|----------|--------|
106| Technical SEO | 22% |
107| Content Quality | 23% |
108| On-Page SEO | 20% |
109| Schema / Structured Data | 10% |
110| Performance (CWV) | 10% |
111| AI Search Readiness | 10% |
112| Images | 5% |
113 
114## Report Structure
115 
116### Executive Summary
117- Overall SEO Health Score (0-100)
118- Business type detected
119- Top 5 critical issues
120- Top 5 quick wins
121 
122### Technical SEO
123- Crawlability issues
124- Indexability problems
125- Security concerns
126- Core Web Vitals status
127 
128### Content Quality
129- E-E-A-T assessment
130- Thin content pages
131- Duplicate content issues
132- Readability scores
133 
134### On-Page SEO
135- Title tag issues
136- Meta description problems
137- Heading structure
138- Internal linking gaps
139 
140### Schema & Structured Data
141- Current implementation
142- Validation errors
143- Missing opportunities
144 
145### Performance
146- LCP, INP, CLS scores
147- Resource optimization needs
148- Third-party script impact
149 
150### Images
151- Missing alt text
152- Oversized images
153- Format recommendations
154 
155### AI Search Readiness
156- Citability score
157- Structural improvements
158- Authority signals
159 
160## Priority Definitions
161 
162- **Critical**: Blocks indexing or causes penalties (fix immediately)
163- **High**: Significantly impacts rankings (fix within 1 week)
164- **Medium**: Optimization opportunity (fix within 1 month)
165- **Low**: Nice to have (backlog)
166 
167## DataForSEO Integration (Optional)
168 
169If DataForSEO MCP tools are available, spawn the `seo-dataforseo` agent alongside existing subagents to enrich the audit with live data: real SERP positions, backlink profiles with spam scores, on-page analysis (Lighthouse), business listings, and AI visibility checks (ChatGPT scraper, LLM mentions).
170 
171## Google API Integration (Optional)
172 
173If Google API credentials are configured (`"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_auth.py --check`), spawn the `seo-google` agent to enrich the audit with real Google field data: CrUX Core Web Vitals (replaces lab-only estimates), GSC URL indexation status, search performance (clicks, impressions, CTR), and GA4 organic traffic trends. The Performance (CWV) category score benefits most from field data.
174 
175## Error Handling
176 
177| Scenario | Action |
178|----------|--------|
179| URL unreachable (DNS failure, connection refused) | Report the error clearly. Do not guess site content. Suggest the user verify the URL and try again. |
180| robots.txt blocks crawling | Report which paths are blocked. Analyze only accessible pages and note the limitation in the report. |
181| Rate limiting (429 responses) | Back off and reduce concurrent requests. Report partial results with a note on which sections could not be completed. |
182| Timeout on large sites (500+ pages) | Cap the crawl at the timeout limit. Report findings for pages crawled and estimate total site scope. |
183| Subagent hits its `maxTurns` budget on a large site | Findings are not lost: every audit subagent writes a partial `output_dir/findings/*.md` after its first analysis pass and overwrites it with the complete findings before finishing. Read whatever findings file exists and merge it into the report, noting it may be partial. |
184 

Discussion

Alternatives

Also in SEO & keywords