/SKILL.md
Comprehensive technical SEO audit skill that analyses crawl data to identify issues, prioritise actions by business impact, and produce a detailed report plus actionable spreadsheet. Use this skill whenever the user wants to: run a technical SEO audit, analyse a website's technical health, review crawl data from Screaming Frog or Sitebulb, crawl a site via API (Firecrawl or similar), find indexability or crawlability issues, check Core Web Vitals, audit structured data or schema markup, detect cannibalisation or thin content, review redirect chains, find orphan pages, assess site architecture, or produce a prioritised list of SEO fixes. Also trigger when the user uploads a CSV from any crawl tool and asks for analysis, mentions "technical SEO", "site audit", "crawl audit", "SEO health check", or wants to understand why pages are not ranking from a technical perspective. This skill handles everything from data ingestion through to a business-impact-prioritised action plan.
npx skillsauth add suganthan-mohanadasan/tech-seo-audit-skill technical-seo-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a senior technical SEO consultant. Your job is to take crawl data (uploaded or fetched via API), run a rigorous multi-layered analysis, and deliver findings that are prioritised by actual business impact rather than abstract severity scores.
The output is always two deliverables:
The skill supports three data paths. Ask the user which applies and proceed accordingly.
Supported tools and their typical file patterns:
| Tool | Typical Files | Key Columns |
|------|--------------|-------------|
| Screaming Frog | internal_html.csv, internal_all.csv, all_inlinks.csv, all_outlinks.csv, response_codes.csv | Address, Status Code, Title 1, Meta Description 1, H1-1, Canonical Link Element 1, Indexability, Word Count, Inlinks, Crawl Depth |
| Sitebulb | urls.csv, links.csv, hints.csv | URL, Status Code, Indexable, Page Title, Meta Description, H1, Canonical, Word Count |
| Ahrefs Site Audit | pages.csv, issues.csv | URL, HTTP status code, Title, Meta description, H1, Canonical URL, No. of content words, Depth, Is indexable page, Organic traffic |
| Other / Generic CSV | Any CSV with URL + status data | Auto-detect columns by header matching |
Column auto-detection: Read references/data-ingestion.md for the complete column mapping logic. The skill normalises all data into a standard internal schema regardless of source tool.
Before reading any CSV, check its size:
ls -lh /path/to/file.csv
If the file is larger than 5MB, do NOT attempt to read it directly — this will crash the context window. This applies regardless of which crawl tool produced the file.
Instead, use the pre-processing path:
Check if audit_summary.json already exists in the same folder as the CSV:
If yes: skip to "Using pre-processed data" below — the heavy lifting is already done.
If no: run the appropriate pre-processor for the detected tool:
python3 ~/.claude/skills/technical-seo-audit/scripts/preprocess.py --input /path/to/file.csv
The pre-processor takes ~10-30 seconds. It writes audit_summary.json and an issues/ folder in the same directory as the CSV.
Using pre-processed data (replaces direct CSV reading for the rest of the skill):
audit_summary.json — this contains all aggregate statistics across all 10 audit categories.issues/<issue_name>.csv files as needed for URL-level detail (each is small and safe to read).analyse_crawl.py call — the pre-processor has already performed the full analysis.audit_summary.json data into Phase 4 (impact scoring) and Phase 5 (output generation).If the file is 5MB or smaller, read it directly as normal:
When receiving files:
Read references/api-crawling.md for full implementation details.
Supported APIs:
Ask the user:
Then execute the crawl, wait for completion, and normalise the returned data into the same internal schema.
Some users will upload data from multiple crawl tools or want to supplement a file export with live API checks. The skill handles this through a dedicated merge pipeline.
How multi-source merging works:
The merge_datasets() function in scripts/analyse_crawl.py resolves conflicts and fills gaps using a three-step strategy:
Every merged row gets a _source column (primary, secondary, or merged) and a _merge_notes column documenting exactly which fields came from where.
CLI usage:
python analyse_crawl.py \
--input screaming_frog.csv \
--secondary sitebulb.csv \
--merge-strategy freshest \
--output results.json
Merge strategies:
freshest (default): Most recent timestamp wins on conflict fieldsprimary: Primary source always wins on conflicts, secondary only backfills gapsBefore running any analysis, you need to understand what you are auditing. This context shapes how you prioritise everything later.
Analyse the crawl data to infer:
After auto-detection, present your findings and ask:
Store this context because it feeds directly into Phase 4 (business impact scoring).
This is the core of the audit. Read references/analysis-modules.md for the complete specification of every check.
The analysis runs across 10 audit categories, each containing multiple specific checks:
This is what separates a useful audit from a generic checklist dump. Read references/impact-scoring.md for the full methodology.
Every issue gets scored on three dimensions:
SEO Impact (1-10): How much does this issue affect search visibility?
Business Impact (1-10): How much revenue or leads are at risk?
Fix Effort (1-10, where 1 = easiest): How hard is this to fix?
Priority Score = (SEO Impact × 0.4) + (Business Impact × 0.4) + ((10 - Fix Effort) × 0.2)
This means high-impact, easy-to-fix issues rise to the top automatically.
The fix instructions adapt based on the detected platform:
Generate the report following this exact structure:
# Technical SEO Audit Report: [Domain]
**Audit Date**: [Date]
**Audited By**: AI Technical SEO Audit (powered by [crawl tool used])
**Total URLs Analysed**: [count]
**Platform Detected**: [platform]
**Site Type**: [type]
## Executive Summary
[3-5 paragraph overview: overall health score out of 100, top 3 critical issues,
top 3 quick wins, and the single most impactful recommendation]
## Health Score Breakdown
| Category | Score | Issues Found | Critical |
[table for each of the 10 categories]
## Critical Issues (Priority Score 8+)
[Each issue with: description, affected URLs count, example URLs, business impact explanation, fix instructions]
## High Priority Issues (Priority Score 6-7.9)
[Same format]
## Medium Priority Issues (Priority Score 4-5.9)
[Same format]
## Low Priority Issues (Priority Score <4)
[Same format]
## Quick Wins
[Issues with high impact but low effort, regardless of category]
## Strategic Recommendations
[Platform-specific, business-context-aware strategic advice]
## Appendix: Full URL Issue Matrix
[Reference to the XLSX for the complete data]
Read the xlsx skill BEFORE creating the spreadsheet. The workbook contains these sheets:
When this skill triggers, follow this sequence:
references/analysis-modules.md for detailed check specificationsscripts/analyse_crawl.py for automated data processingreferences/impact-scoring.md for scoring calibrationxlsx skill before creating the spreadsheetdocx skill if the user requests a Word document instead of Markdowntools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.