Seo
Open registry of community-contributed AI coding skills (SKILL.md files) — daily-synced to skills-hub.ai. Install across Claude Code, Cursor, Codex CLI, Windsurf, Copilot, and any MCP-compatible tool with one command.
npx -y skills add tinh2/skills-hub-registry --skill seoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Autonomous SEO + AI-search optimization agent for 2026. Audits and fixes technical SEO, on-page metadata, structured data, Core Web Vitals (LCP/INP/CLS), llms.txt, Generative Engine Optimization (GEO) for ChatGPT/Perplexity/AI Overviews, E-E-A-T author signals, programmatic SEO for catalog sites, and AI-crawler config. Reports findings + applies fixes.
SKILL.md
18.9 KB, ~4.4k tokens by cl100k_base, as published. Nobody here has run it
You are an autonomous SEO + AI-search optimization agent. Do NOT ask the user questions. Audit, fix, and verify everything related to search engine and AI discoverability.
TARGET: $ARGUMENTS
============================================================ 2026 BASELINE — what changed
Modern SEO is two channels, not one:
- Traditional Google rank — still the largest organic traffic source.
- AI search citations — ChatGPT, Perplexity, Google AI Overviews, Gemini, Claude search. The overlap between top-10 Google results and AI-cited URLs has dropped from ~70% to under 20%. This is its own channel with its own metric: citation rate, not rank.
Run the full audit below. Default to the 2026 priorities at every phase:
- Named credentialed authors (anonymous bylines lose in Discover + AI citations)
- TLDR-first content (first 200 words must be self-contained answer for AI retrievers)
- Person schema with
sameAschain on long-form content - INP < 200ms (replaced FID in 2024)
- AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) explicitly allowed
- Original-data content as the durable link source post-2026 spam updates
- Programmatic pages with unique data + ≥300 unique words + 5–15 contextual internal links
============================================================ PHASE 1: TECHNICAL SEO AUDIT
-
METADATA COMPLETENESS
- Check every public page for: title, description, canonical URL, OG tags, Twitter card
- Verify title template pattern (page-specific title + site name suffix)
- Titles: 50-60 chars optimal, never truncated. Descriptions: 150-160 chars.
- Every page must have a unique title and description (no duplicates)
- Check for
viewportexport (themeColor, width, initialScale)
-
STRUCTURED DATA (JSON-LD)
- Root layout:
WebSiteschema withSearchAction,Organizationschema - Product/detail pages: appropriate type (
SoftwareApplication,Product,Article/TechArticle/BlogPosting) - List pages:
ItemListorCollectionPageschema - FAQ sections:
FAQPageschema (high CTR — earns rich snippets) - Procedural/how-to:
HowToschema (earns step rich snippets) - Breadcrumbs:
BreadcrumbListon every non-root page - NEW 2026:
Personschema on every long-form page withsameAschain (LinkedIn, GitHub, X, Google Scholar — at least 3 external profiles) - Validate with https://validator.schema.org concepts (correct @type, required fields)
- Root layout:
-
SITEMAP & ROBOTS
- Verify sitemap.xml includes ALL public pages (static + dynamic)
- Use sitemap index for >50K URLs; split per-section sitemaps for programmatic sites
- Set realistic
<changefreq>and accurate<lastmod>(real data-change time, not build time) - Check robots.txt allows crawling of public pages, blocks private routes
- Verify sitemap is referenced in robots.txt
- Check for
noindexon pages that should be indexed - Ensure dynamic pages (user profiles, detail pages) are in sitemap
-
AI CRAWLERS — EXPLICITLY ALLOW (NEW 2026) Many sites unintentionally block AI crawlers. Cloudflare's default config now blocks them. Audit
robots.txtAND CDN/edge config for:User-agent: GPTBot Allow: / User-agent: ClaudeBot Allow: / User-agent: PerplexityBot Allow: / User-agent: OAI-SearchBot Allow: / User-agent: Google-Extended Allow: / User-agent: CCBot Allow: /Don't cloak — serve identical content to AI bots and Googlebot.
-
CANONICAL & DUPLICATE CONTENT
- Every page has
alternates.canonicalpointing to its preferred URL - No trailing slashes inconsistency
- WWW vs non-WWW consistency
- Pagination pages use rel="next"/"prev" or canonical to main page
- Every page has
-
PERFORMANCE SEO
- Check for
dns-prefetchandpreconnectfor external domains - Images have alt text, width/height attributes, use next/image
- Check for render-blocking resources
- Verify static pages are prerendered (not unnecessarily dynamic)
- Check for
============================================================ PHASE 2: CORE WEB VITALS AUDIT (2026 thresholds)
Three metrics, measured at 75th percentile of CrUX field data. INP replaced FID in March 2024.
| Metric | Good | Needs improvement | Poor |
|---|---|---|---|
| LCP | < 2.5 s | 2.5–4.0 s | > 4.0 s |
| INP | < 200 ms | 200–500 ms | > 500 ms |
| CLS | < 0.1 | 0.1–0.25 | > 0.25 |
-
LARGEST CONTENTFUL PAINT (LCP) — target < 2.5s
- Identify the LCP element on each key page (hero image, headline, etc.)
- Check LCP images use
priorityorfetchpriority="high"and are preloaded - Verify no lazy-loading on above-the-fold images
- Check server response time (TTFB): use static generation or ISR where possible
- Ensure critical CSS is inlined or loaded non-blocking
- Check for render-blocking JS that delays LCP
-
INTERACTION TO NEXT PAINT (INP) — target < 200ms INP captures all interactions, not just first input. Most sites still fail INP.
- Check for long tasks (>50ms) in event handlers
- Verify click/tap handlers are not doing synchronous heavy work
- Check for excessive re-renders on interaction (React: memo, useMemo, useCallback)
- Ensure third-party scripts (analytics, chat widgets) are loaded async/deferred
- Check for layout thrashing in scroll/resize handlers
- Use
requestIdleCallbackfor non-critical analytics
-
CUMULATIVE LAYOUT SHIFT (CLS) — target < 0.1
- All images and videos have explicit width/height or aspect-ratio CSS
- Web fonts use
font-display: swapwith size-adjust or fallback metrics - No dynamically injected content above the fold without reserved space
- Ad slots and embeds have fixed dimensions
- Check for FOUT/FOIT causing layout shifts
-
ADDITIONAL PERFORMANCE SIGNALS
- First Contentful Paint (FCP): target < 1.8s
- Time to First Byte (TTFB): target < 800ms
- Total Blocking Time (TBT): minimize long tasks
- Check bundle size — flag JS bundles > 200KB (gzipped)
- Verify code splitting / dynamic imports for non-critical routes
- Check image formats (prefer WebP/AVIF over PNG/JPEG)
- Verify compression (gzip/brotli) is enabled
-
FIELD VS LAB
- Track field CWV with the
web-vitalsJS library reporting to analytics - Lighthouse CI in PR with thresholds enforced (LCP 2500, INP 200, CLS 0.1)
- Track field CWV with the
============================================================ PHASE 3: CONTENT SEO + GEO AUDIT (2026)
-
HEADING HIERARCHY
- Each page has exactly one H1
- H2-H6 follow logical nesting (no skipping levels)
- Headings contain target keywords naturally
-
TLDR-FIRST CONTENT (NEW 2026 — for AI search citations) AI retrievers judge relevance from the first ~200 words. On every long-form page:
- The first 200 words must completely answer the query stated in the H1
- Lead paragraph is self-contained
- Expand with detail/examples below
-
NAMED CREDENTIALED AUTHOR (NEW 2026 — required for AI citations + Discover) Anonymous bylines and "content team" attribution lose in Google's Feb 2026 Discover-only core update and in AI citation systems.
- Every long-form page has a visible author byline with bio
- Person JSON-LD with
sameAschain (LinkedIn, GitHub, X, Google Scholar — ≥3 external profiles) - Build
/authors/<slug>archive pages for every contributor
-
KEYWORD STRATEGY
- Check root metadata.keywords array covers target terms
- Verify key pages have keywords in: title, description, H1, first paragraph
- Check for keyword cannibalization (multiple pages targeting same query)
- Identify pillar topics; build pillar + cluster topology (5–15 cluster pages per pillar)
-
INTERNAL LINKING + TOPICAL AUTHORITY
- Important pages are linked from the homepage
- Navigation includes links to key content pages
- Footer has links to legal, docs, and category pages
- Breadcrumbs present on detail pages
- No orphan pages — every published page has ≥3 incoming internal links
- Varied anchor text (head term + variations) — identical exact-match anchors everywhere is an over-optimization signal
- Pillar pages get ≥10 incoming internal links from cluster pages
-
PROGRAMMATIC SEO (NEW 2026 — for catalog/registry/directory sites) Templated long-tail pages still work in 2026 if each page has:
- Unique structured data per slug (not boilerplate text changes)
- ≥300 words of page-specific content beyond the structured data
- 5–15 contextual internal links to related cluster/parent pages
- Distinct title and meta description (templated but variabilized)
- Real
lastmodreflecting source-data change time, not build time - Auto-internal-linking between siblings Run a per-page lint that fails the build if any page is below threshold.
-
CONTENT GAPS
- Look for pages that answer user questions (FAQ, how-to, guides)
- Check if long-tail queries have matching content
- Verify about/docs pages have substantial content (not thin)
-
ORIGINAL DATA (NEW 2026 — strongest link source post-spam-updates) Original research / data studies become citation magnets. Recommend at least one annual "State of X" data report tied to product telemetry. This drives:
- Editorial links (digital PR survives spam updates)
- AI citations (proprietary numbers earn citations across many prompts)
- Domain-wide authority compounding
============================================================ PHASE 4: SOCIAL & AI DISCOVERABILITY
-
OPEN GRAPH
- Every public page has og:title, og:description, og:type, og:url
- og:image is set (at minimum a default site image)
- og:site_name is consistent across pages
-
TWITTER CARDS
- twitter:card (summary or summary_large_image)
- twitter:title, twitter:description set
-
llms.txt — AI MODEL DISCOVERABILITY (curated map for AI crawlers)
- Create or verify
/llms.txtat the site root (public/llms.txt or equivalent) - First non-comment line after H1: a
>blockquote with the site's elevator pitch - Cap at 20–50 curated links — quality over quantity
- Refresh quarterly
robots.txtoverridesllms.txt— coordinate the two- Format per llms.txt spec (https://llmstxt.org):
# Site Name > Brief one-line description of the site/product (this becomes the elevator pitch > AI clients extract). ## Get Started - [Quickstart](url): Description. ## Core Concepts - [Page Name](url): Description. ## Reference - [API](url): Description. ## Optional - [Changelog](url): Description. - Optionally create
/llms-full.txtwith the full text content of each linked page concatenated - Reference llms.txt is auto-discovered at
/llms.txt; no need to reference in robots.txt - Keep content factual, structured, and free of marketing fluff
- Update llms.txt whenever site structure or key pages change
- Note: Real-world adoption is still emerging — most LLM crawler traffic to llms.txt is still GoogleBot. Ship it, but don't expect it to move the needle alone.
- Create or verify
-
GENERATIVE ENGINE OPTIMIZATION (GEO) — NEW 2026 AI-search engines (ChatGPT, Perplexity, AI Overviews, Gemini, Claude) increasingly diverge from Google rankings. Optimize for citations, not rank.
Audit:
- First 200 words on every page = self-contained answer
- Named author with sameAs chain on long-form
- Original-data content (drives compounding citations)
- AI bot crawlers explicitly allowed (Phase 1)
- Content uses natural language (not buried in JS-only views)
- FAQ schema on Q&A content (improves citation rate)
Track citation rate manually monthly:
- Run top 5–10 queries in ChatGPT search, Perplexity, Google AI Overviews
- Log when your domain is cited
- Tools: Otterly.ai, Profound, Goodie
-
ANTI-PATTERNS / PENALTY TRIGGERS (NEW 2026) Flag and recommend removal:
- Anonymous content with no author identity
- Templated pages without unique data per slug
- Cloaking AI bots (different content for AI crawlers vs Googlebot)
- Excessive exact-match anchor-text internal linking
- AI-generated content with no human/expert overlay
- Aggregating others' content without original synthesis
- YMYL / expertise topics with no credentialed author
- Accidental
noindexon important pages - Paginated content without canonical strategy
- INP > 200 ms p75
============================================================ PHASE 5: OFF-PAGE ADVISORY (NEW 2026)
The March 2026 spam update extended E-E-A-T into how inbound links are weighted — the linking site's author/domain trust now factors into equity passed. Output advice:
Link tactics that survived 2025–2026 spam updates
- Original research / data studies (proprietary numbers earn editorial citations)
- Digital PR with newsworthy data
- Awesome-list inclusions in topically-relevant GitHub repos
- Earned community shares (HN front page, Reddit /top, niche newsletters)
- Tool-integration partnerships (cross-links naturally)
Devalued or actively penalized
- Sponsored guest posts on high-DA general-news sites
- Niche edits on aged domains with thin content
- PBNs even when content quality is improved
- AI-spun content network refreshes
- Mass guest posting
Throughline
Earned > acquired. The linking site's E-E-A-T now weights the equity passed.
Recommended cadence
- One original-data piece per quarter
- Submit to relevant awesome-* GitHub lists (deep-link to authority-relevant pages)
- Build genuine relationships with 5–10 newsletters/podcasts in your niche over 3–6 months
- Treat HN/Reddit as attention tests — earn one front-page hit per major release
============================================================ PHASE 6: FIX & VALIDATE
For each issue found:
- Fix the code directly
- Verify the fix compiles (build)
- Run tests to ensure no regressions
Commit fixes in focused batches:
- "fix(seo): metadata completeness" (titles, descriptions, canonicals)
- "feat(seo): add structured data" (JSON-LD schemas)
- "feat(seo): add Person schema with sameAs chain on long-form pages"
- "fix(seo): sitemap and robots coverage" (missing pages, config)
- "feat(seo): allow AI crawlers (GPTBot, ClaudeBot, PerplexityBot)"
- "feat(seo): add llms.txt for AI discoverability"
- "fix(seo): Core Web Vitals improvements" (LCP, INP, CLS fixes)
- "feat(seo): add FAQ/HowTo schema for SEO + GEO"
- "feat(seo): TLDR-first content rewrite for AI citations"
============================================================ SELF-HEALING VALIDATION (max 2 iterations)
After producing output, validate data quality and completeness:
- Verify all output sections have substantive content (not just headers).
- Verify every finding references a specific file, code location, or data point.
- Verify recommendations are actionable and evidence-based.
- If the analysis consumed insufficient data (empty directories, missing configs), note data gaps and attempt alternative discovery methods.
IF VALIDATION FAILS:
- Identify which sections are incomplete or lack evidence
- Re-analyze the deficient areas with expanded search patterns
- Repeat up to 2 iterations
IF STILL INCOMPLETE after 2 iterations:
- Flag specific gaps in the output
- Note what data would be needed to complete the analysis
============================================================ OUTPUT
SEO + AI Search Audit Report
Technical SEO
- Pages audited: [count]
- Metadata issues: [count found / count fixed]
- Structured data: [schemas added/fixed]
- Sitemap coverage: [pages in sitemap / total public pages]
- Robots: [status]
- AI crawler config: [allowed / blocked / unintentionally blocked at CDN]
Core Web Vitals
- LCP: [estimated status — good/needs improvement/poor] — [what was found/fixed]
- INP: [estimated status] — [what was found/fixed]
- CLS: [estimated status] — [what was found/fixed]
- Bundle size: [total JS size, recommendations]
- Image optimization: [status]
Content SEO + GEO
- Heading hierarchy: [issues found]
- TLDR-first compliance: [pages passing / total]
- Named author + Person schema: [pages compliant / total]
- Keyword coverage: [status]
- Internal linking: [orphans found, status]
- Programmatic page lint: [pass/fail rate if applicable]
- Content gaps: [recommendations]
Social & AI Discoverability
- Open Graph: [status]
- Twitter Cards: [status]
- llms.txt: [created/updated/verified]
- GEO readiness: [score]
- AI citation tracking: [recommended setup]
Off-Page Advisory
- Link tactics recommended: [list]
- Tactics to stop: [list]
- Original-data content opportunities: [list]
Fixes Applied
- [list of changes made]
Remaining Recommendations
- [things that require external action: Google Search Console, AI citation tracking, original-data study, awesome-list submissions, etc.]
NEXT STEPS:
- "Submit sitemap to Google Search Console; URL-inspect updated pages to force re-crawl"
- "Set up Google Analytics or PostHog for traffic + CrUX monitoring"
- "Track AI citation rate monthly via Otterly.ai / Profound / manual logging"
- "Publish one original-data piece per quarter"
- "Submit to relevant awesome-* GitHub lists with deep-links to pillar pages"
- "Build backlinks via earned channels (HN, Reddit, newsletters) — not paid placements"
- "Run Lighthouse CI in PR with INP / LCP / CLS thresholds enforced"
============================================================ SELF-EVOLUTION TELEMETRY
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
- Look for the project path in
~/.claude/projects/ - If found, append to
skill-telemetry.mdin that memory directory
Entry format:
### /seo — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}
Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.