From seo-superpower
Use when running a technical SEO audit, debugging Core Web Vitals regressions, checking indexability, validating schema and sitemaps, diagnosing why a site isn't ranking, or preparing a site for AI-search visibility (GPTBot, ClaudeBot, PerplexityBot). Covers crawlability, indexability, rendering, Core Web Vitals, schema, AI-search readiness, mobile, security, and meta basics. Lifecycle-aware — pre-launch, growth, mature. Produces a prioritized SEO_AUDIT.md and a low-risk fix PR.
How this skill is triggered — by the user, by Claude, or both
Slash command
/seo-superpower:auditing-technical-seoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Technical SEO is the foundation. Content strategy, keyword work, and link building all assume that Google, Bing, and AI-search crawlers can actually fetch, render, and trust your pages. If any of those fail, nothing else compounds. In 2026 that surface is wider than it used to be: Core Web Vitals are still the user-experience signal Google measures at the **75th percentile** with thresholds **L...
Technical SEO is the foundation. Content strategy, keyword work, and link building all assume that Google, Bing, and AI-search crawlers can actually fetch, render, and trust your pages. If any of those fail, nothing else compounds. In 2026 that surface is wider than it used to be: Core Web Vitals are still the user-experience signal Google measures at the 75th percentile with thresholds LCP < 2.5s, INP < 200ms, CLS < 0.1 [1], and a new tier of AI crawlers — GPTBot, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended, Applebot-Extended — now decides whether your content shows up in ChatGPT, Claude, and Perplexity answers [2][3].
robots.txt parses cleanly, no accidental site-wide Disallow: /, sitemap referenced as absolute URL, sitemap reachable and valid, file under 500 KiB (Google's hard cap) [6][7].gsc-mcp, canonical tags consistent and self-referential where appropriate, hreflang correct on i18n sites, no duplicate content via tracking parameters, no noindex on pages that should rank [5].lighthouse-mcp (PageSpeed Insights / CrUX field data) [1].<head> or root layout, types valid against schema.org (Article, BlogPosting, Organization, FAQPage, BreadcrumbList, Product as appropriate), validates via validator.schema.org [4].robots.txt makes a deliberate choice on GPTBot, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended (allow or block — both are valid; absence is the bug) [2][3]. llms.txt presence noted but not required: adoption is ~10% of domains and effect on AI citations is unproven [8].<title> (50–60 chars) and meta description (150–160 chars) per page; Lighthouse SEO category flags these explicitly [5].1. Gather. Read repo files: package.json (framework detection), app/robots.ts or public/robots.txt, app/sitemap.ts or public/sitemap.xml, app/layout.tsx (or Astro Layout.astro / SvelteKit +layout.svelte) for <head> schema, next.config.js / astro.config.mjs / svelte.config.js for redirect/rewrite rules. Then fetch the live site's /robots.txt, /sitemap.xml, /llms.txt. Call lighthouse-mcp for PSI on the homepage and 2–3 representative inner pages (mobile + desktop). Call gsc-mcp if connected for index coverage and submitted-sitemap status.
2. Cross-reference. Does the deployed sitemap match what GSC has on file? Are CSR-only routes leaking into the sitemap? Does robots.txt block any URL that's also in the sitemap (the classic conflict) [7]? Are GSC-reported "Discovered – currently not indexed" URLs concentrated in one route group?
3. Write SEO_AUDIT.md to repo root. Findings ranked by traffic-impact × fix-effort in a quadrant — high-impact / low-effort first.
4. Open ONE PR with the highest-confidence, low-risk fixes only: adding viewport meta, adding missing meta descriptions, adding Sitemap: line to robots.txt, adding explicit GPTBot/ClaudeBot allow-or-block stanza, adding root Organization JSON-LD. Leave architectural calls (CSR → SSR migration, image pipeline rework) for human decision in the audit doc.
When lighthouse-mcp and gsc-mcp aren't configured (user hasn't run /seo-setup, or invoked via /seo audit <url>), run the no-OAuth quick path. This finishes in <60s and produces a partial audit that's still useful — Lighthouse/GSC sections are flagged as missing rather than fabricated.
What to do:
Fetch static resources via curl / HTTP GET (no auth):
GET /robots.txt — check 200, non-empty, Sitemap: line present, AI-bot stanza (GPTBot / ClaudeBot / Claude-SearchBot / PerplexityBot / Google-Extended named — allow or disallow, just named).GET /sitemap.xml — check 200, parses as XML, >0 URLs, file <500 KiB.GET / (homepage) plus 2 inner pages discovered from the sitemap (a content page + a category/listing page if present).Parse head tags on each fetched page:
<title> present, length 50–60 chars ideal.<meta name="description"> present, length 150–160 chars ideal.<link rel="canonical"> present, self-referential or sensible.<meta name="viewport"> present.<script type="application/ld+json"> count ≥ 1, JSON parses without error.<h1> per page.<meta name="robots"> not noindex on pages that should rank.AI-bot readiness check — robots.txt mentions at least three of: GPTBot, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended. Absence is the bug, not the directive — both Allow: and Disallow: are valid choices. If missing, reference templates/robots-ai-bots.txt as a paste-ready starting point.
Core Web Vitals — if PSI_API_KEY is set in env (or ~/.config/seo-superpower/.env), call scripts/psi-quick.py <url> (CrUX field data preferred, lab fallback flagged). If no key, skip CWV and note it in the output rather than guessing.
Emit a partial SEO_AUDIT.md with this banner at the top:
> **Partial audit — Lighthouse/GSC data missing.** Run `/seo-setup` to unlock CWV + GSC analysis. Static checks below were run without OAuth.
Everything else in SEO_AUDIT.md follows the normal output schema below. Findings that depended on Lighthouse or GSC become explicit gaps ("CWV not measured — gated on /seo-setup") rather than fake data.
SEO_AUDIT_OUTPUT env varBy default, SEO_AUDIT.md is written to the repo root (./SEO_AUDIT.md). When auditing a foreign repo (e.g., dogfooding against a user's site without committing the audit to their tree), set SEO_AUDIT_OUTPUT to redirect:
SEO_AUDIT_OUTPUT=~/audits/example-2026-05-12.md /seo audit https://example.com
Common patterns:
./SEO_AUDIT.md (default) — commit alongside the fix PR.~/audits/<domain>-<date>.md — keep audits in a personal archive, don't pollute the target repo./tmp/SEO_AUDIT.md — throwaway / demo runs.Add SEO_AUDIT.md to the target repo's .gitignore if the audit is meant to be ephemeral.
SEO_AUDIT.md shape# SEO Audit — example.com — 2026-04-26
## Quadrant
LOW EFFORT HIGH EFFORT
HIGH IMPACT | Add meta descriptions | Migrate /blog to SSR
LOW IMPACT | Tidy llms.txt | Refactor schema graph
## Findings
### [P0] Sitemap not referenced in robots.txt
Severity: high · Effort: 5 min · Confidence: 100%
Fix: Add `Sitemap: https://example.com/sitemap.xml` to `app/robots.ts`.
### [P0] LCP 4.1s on /pricing (p75 mobile)
Severity: high · Effort: medium · Confidence: 90%
Cause: hero image not preloaded, no priority hint.
Fix: <Image priority fetchPriority="high" /> on hero.
### [P1] No GPTBot/ClaudeBot stanza in robots.txt
Severity: medium · Effort: 2 min · Confidence: 100%
Decision required: allow or block? Both are valid choices.
Mirroring the lifecycle pattern in finding-underserved-keywords:
Disallow: / against User-agent: * blocks ClaudeBot too [3].llms.txt missing — flag as suggestion only; no measurable AI-citation effect yet [8].Citations and verification tags in SOURCES.md.
npx claudepluginhub benskamps/seo-superpower --plugin seo-superpowerSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.