skills/seo-audit/SKILL.md
Use this skill when performing a comprehensive SEO audit - technical audit, on-page audit, content audit, off-page audit, and AEO/GEO readiness assessment. Provides a structured scorecard with 30-40 checks rated PASS/FAIL/WARN across all SEO categories, prioritized recommendations, and links to specialized skills for deep fixes. This is the master audit skill that orchestrates all other SEO skills.
npx skillsauth add absolutelyskilled/absolutelyskilled seo-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When this skill is activated, always start your first response with the 🧢 emoji.
The SEO audit skill provides a systematic methodology for evaluating a website's search optimization across all dimensions: technical infrastructure, on-page elements, content quality, off-page signals, and AI search readiness. It produces a structured scorecard with PASS/FAIL/WARN ratings and prioritized recommendations so every finding is actionable, not just observed. This is the orchestration layer that connects all 13 specialized SEO skills - use it to diagnose, then hand off to the right skill for each fix.
Trigger this skill when the task involves:
Do NOT trigger this skill for:
core-web-vitals, schema-markup, link-building) for the actual fix workkeyword-research skill instead| Category | Checks | Covers | |---|---|---| | Technical SEO | 10 | Crawlability, indexing, performance, rendering | | On-Page SEO | 8 | Titles, metas, headings, images, internal links, OG | | Content SEO | 7 | Thin pages, cannibalization, clusters, E-E-A-T, freshness | | Off-Page SEO | 5 | Backlinks, toxic links, anchor text, local, citations | | AEO & GEO Readiness | 5 | Featured snippets, schema, AI extraction, entities, LLMs.txt |
| Status | Meaning | |---|---| | PASS | Meets best practice - no action required | | WARN | Partially compliant, approaching a threshold, or inconsistently applied | | FAIL | Missing, broken, or clearly below best practice - fix required | | N/A | Check does not apply to this site type (mark explicitly, never skip silently) |
| Priority | Definition | Timeframe | |---|---|---| | Critical | Directly blocks indexing or causes major ranking loss | Fix immediately (this week) | | High | Measurable ranking/traffic impact, moderate effort | Fix this sprint | | Medium | Best practice gap, gradual compounding effect | Fix this quarter | | Low | Nice to have, marginal gain | Backlog |
Present the complete scorecard to the user. Fill in Status and Details as you analyze the site. Every row must have a status - never leave a row blank.
Section 1: Technical SEO
| # | Check | Status | Details | |---|---|---|---| | T1 | Robots.txt configured correctly | | | | T2 | XML sitemap valid and submitted | | | | T3 | Canonical URLs set on all pages | | | | T4 | No redirect chains (max 1 hop) | | | | T5 | HTTPS everywhere, no mixed content | | | | T6 | Mobile-friendly (responsive or adaptive) | | | | T7 | Core Web Vitals pass (LCP, CLS, INP) | | | | T8 | No orphan pages | | | | T9 | Clean URL structure (no parameters, lowercase) | | | | T10 | Rendering strategy appropriate (SSR/SSG/CSR) | | |
Section 2: On-Page SEO
| # | Check | Status | Details | |---|---|---|---| | O1 | Unique title tags (50-60 chars) | | | | O2 | Meta descriptions present (120-160 chars) | | | | O3 | Single H1 per page with target keyword | | | | O4 | Heading hierarchy correct (H1 > H2 > H3) | | | | O5 | Image alt text present on all images | | | | O6 | Internal linking structure is logical | | | | O7 | Open Graph tags complete (og:title, og:description, og:image) | | | | O8 | Semantic HTML used (article, nav, main, aside) | | |
Section 3: Content SEO
| # | Check | Status | Details | |---|---|---|---| | C1 | No thin content pages (< 300 words on indexable pages) | | | | C2 | No keyword cannibalization (one URL per keyword cluster) | | | | C3 | Topic clusters defined with pillar + supporting pages | | | | C4 | E-E-A-T signals present (author, credentials, date, sources) | | | | C5 | Content freshness maintained (no stale pages > 18 months) | | | | C6 | No duplicate content (internal or cross-domain) | | | | C7 | Search intent alignment (informational/commercial/transactional match) | | |
Section 4: Off-Page SEO
| # | Check | Status | Details | |---|---|---|---| | L1 | Backlink profile is healthy (quality > quantity) | | | | L2 | No toxic or spammy links pointing to the site | | | | L3 | Anchor text diversity (branded, generic, partial-match mix) | | | | L4 | Local SEO configured (if applicable: GMB, NAP consistency) | | | | L5 | Brand mentions and citations exist on authoritative sources | | |
Section 5: AEO & GEO Readiness
| # | Check | Status | Details | |---|---|---|---| | A1 | Content optimized for featured snippets (definitions, lists, tables) | | | | A2 | FAQ and HowTo schema implemented where applicable | | | | A3 | Content structured for AI extraction (clear Q&A, headers, summaries) | | | | A4 | Entity authority signals present (linked data, Wikidata, consistent mentions) | | | | A5 | LLMs.txt present (if applicable to the site's AI discoverability goals) | | |
Scorecard summary:
| Category | PASS | WARN | FAIL | N/A | Score | |---|---|---|---|---|---| | Technical SEO (10) | | | | | /10 | | On-Page SEO (8) | | | | | /8 | | Content SEO (7) | | | | | /7 | | Off-Page SEO (5) | | | | | /5 | | AEO & GEO (5) | | | | | /5 | | Total (35) | | | | | /35 |
Score interpretation:
After completing the scorecard, categorize every FAIL and WARN into the priority matrix:
Critical - fix immediately:
High - fix this sprint:
Medium - fix this quarter:
Low - backlog:
Present findings as a prioritized table:
| Priority | Check ID | Finding | Recommended action | Skill |
|---|---|---|---|---|
| Critical | T1 | Robots.txt disallowing /products/ | Update robots.txt to allow crawl | technical-seo |
| High | T7 | LCP > 4s on mobile (template-wide) | Optimize hero images, reduce TTFB | core-web-vitals |
| ... | | | | |
Use the full report template in references/audit-report-template.md. The report has
four sections:
Load references/audit-report-template.md to get the full report template with
placeholder text and formatting.
For a rapid 10-check assessment (15-20 minutes, not a full audit):
| # | Check | Status | |---|---|---| | Q1 | Site accessible and indexable (not blocked by robots.txt) | | | Q2 | HTTPS and no mixed content | | | Q3 | Sitemap present and submitted to GSC | | | Q4 | No redirect chains on homepage and top 5 pages | | | Q5 | Title tags unique and under 60 chars on top pages | | | Q6 | Mobile-friendly (Google Mobile-Friendly Test pass) | | | Q7 | Core Web Vitals: at least PASS on mobile for key templates | | | Q8 | No obvious cannibalization on primary keywords | | | Q9 | Backlink profile: no manual actions in GSC | | | Q10 | Structured data: at least one schema type implemented | |
A quick health check surfaces showstopper issues only. Any FAIL here is Critical priority. For a complete picture, run the full 35-check audit.
GSC data lags by 2-3 days - Google Search Console performance data has a processing delay. If you run an audit on Monday, the most recent data in GSC is from Thursday or Friday. Do not interpret the most recent 2-3 days as a traffic drop - it is always incomplete.
Robots.txt check T1 can return false PASS if crawled from the wrong user-agent - A robots.txt that disallows Googlebot but allows all other agents will pass generic crawl tests. Always test with User-agent: Googlebot specifically, or use the robots.txt tester in Google Search Console directly.
Canonical to a redirecting URL creates a canonical-redirect chain - If the canonical tag points to a URL that itself 301s to another URL, Google may choose to follow the redirect rather than the canonical, or may not honor either. Canonicals must point to the final destination URL, not an intermediate redirect.
Core Web Vitals field data vs lab data diverge - PageSpeed Insights lab data (Lighthouse) and the CrUX field data (real user measurements) frequently disagree. A page can show LCP < 2.5s in lab but fail in field data due to geography, network conditions, or device mix. Always treat field data as the ground truth for audit scoring.
Hreflang errors silently break international rankings - Invalid hreflang attributes (missing return links, wrong locale codes, self-referencing inconsistencies) are not reported as errors in GSC - they are silently ignored. International SEO issues must be audited with a dedicated hreflang validator tool.
| Anti-pattern | Problem | Fix | |---|---|---| | Cherry-picking only easy wins | Leaves Critical issues unresolved while the site hemorrhages traffic | Always start with the priority matrix - easy is not the same as important | | Auditing without GSC and Analytics access | You are guessing at traffic impact and missing crawl error data | Get read access before starting; a blind audit is decoration | | Treating all FAIL items as equal priority | Team burns time on alt text while a canonical loop causes deindexing | Use the priority matrix on every engagement, no exceptions | | Auditing once and never re-checking | Deployments break SEO silently; regressions are invisible without cadence | Schedule quarterly audits; automate continuous checks where possible | | Reporting findings without recommended fixes | Stakeholders don't know what to do; audit report sits unread | Every finding must link to a specific action and a responsible party | | Running only a technical audit and calling it done | Content and off-page issues often cause more ranking loss than technical issues | Always cover all 5 categories even at a surface level | | Confusing WARN with acceptable | WARNs compound - five WARNs in the same category indicate a systemic issue | Treat three or more WARNs in a category the same as a FAIL |
For detailed audit checklists with per-check verification methods and fix guidance, load:
references/audit-checklist-technical.md - Detailed technical SEO checks with
how-to-verify steps, tool recommendations, and PASS/FAIL/WARN criteriareferences/audit-checklist-content.md - On-page and content audit methodology
with verification methods for all 15 checksreferences/audit-checklist-offpage.md - Off-page and AEO/GEO audit methodology
for all 10 checksreferences/audit-report-template.md - Full audit report template with
executive summary, scorecard, findings, and action plan sectionsOnly load a reference file when actively working on that audit category - they are detailed and will consume context if loaded all at once.
For deep fixes on specific categories, load the specialized skill:
keyword-research - Search intent analysis and keyword opportunity mappingschema-markup - Structured data implementation (JSON-LD, FAQ, HowTo, Product)core-web-vitals - LCP, CLS, INP optimization and performance budgetstechnical-seo - Crawlability, indexing, rendering, redirect managementcontent-seo - Topic clusters, E-E-A-T, cannibalization resolutionlink-building - Backlink acquisition strategy and toxic link removallocal-seo - Google Business Profile, NAP consistency, local citationsinternational-seo - Hreflang, multi-language/region SEO architectureecommerce-seo - Product pages, faceted navigation, category SEOprogrammatic-seo - Page generation at scale, template optimizationaeo-optimization - Featured snippets, voice search, AI answer optimizationgeo-optimization - Generative engine optimization for ChatGPT, Perplexity, Geminion-site-seo - Framework-specific on-page fixes (Next.js, Nuxt, WordPress, etc.)On first activation of this skill in a conversation: check which companion skills are installed by running
ls ~/.claude/skills/ ~/.agent/skills/ ~/.agents/skills/ .claude/skills/ .agent/skills/ .agents/skills/ 2>/dev/null. Compare the results against therecommended_skillsfield in this file's frontmatter. For any that are missing, mention them once and offer to install:npx skills add AbsolutelySkilled/AbsolutelySkilled --skill <name>Skip entirely if
recommended_skillsis empty or all companions are already installed.
development
Use when the user wants to simplify, clean up, refactor, tidy, or refine code — their staged/unstaged git changes or a target file/path. Reduces complexity, flattens nesting, removes redundancy and dead code, scores each change by value (holding low-value churn), then runs tests to prove nothing broke. Invoke on: "simplify", "simplify this", "simplify my code/changes", "clean up", "clean this up", "clean up my changes", "refactor this", "make this cleaner", "tidy this up", "reduce complexity", "flatten this", "remove dead code", "make it more readable", "polish before commit", or "absolute simplify". Acts on your working diff; for repo-wide dead code use absolute-prune; for lint/type debt use absolute-debt.
testing
Dependency upgrades: outdated/vulnerable deps planned into semver waves (patch/minor batched, majors gated and changelog-read), applied incrementally with lockfiles regenerated and tests green after each. Runs on green main. Triggers on "absolute upgrade", "upgrade our dependencies", "bump deps", "update packages", "move off the deprecated X", "clear the Dependabot backlog".
development
Lightweight standalone design spec for AI coding agents: codebase scan → bounded clarify pass (3–5 questions, not a grill) → reviewed design doc written to docs/plans/ → independent scored review → stop. No task board, no build. Use when you want a spec to discuss, hand off, or review before committing to implementation. Chains into absolute-work when ready to build. Triggers on "absolute spec", "write a spec", "spec out this feature", "draft a design doc", "I want a spec to hand off / review, don't build it yet".
tools
Dead code and dependency cleanup, repo-wide: unused deps, unreferenced exports, unreachable code, orphaned files — removed only with tool evidence, in reversible waves. Runs on green main. For diff-scoped cleanup use absolute-simplify. Triggers on "absolute prune", "remove dead code", "find unused deps/exports", "what can we delete", "clean up orphaned files".