SEO + GEO substrate for solo founders and indie creators. Covers technical SEO, on-page optimization, schema markup, AI-search-optimization (GEO), Google Search Console + GA4 wiring, bilingual routing (hreflang), and per-post Substack optimization. Use when the user says /seo-audit, /seo-fix, /geo-audit, /substack-seo, or asks to audit, fix, or optimize SEO on a single page, blog post, or whole site. Scoped for two-site stacks (consulting site + creator/Substack), not enterprise e-commerce or programmatic SEO.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
SEO + GEO substrate for solo founders and indie creators. Covers technical SEO, on-page optimization, schema markup, AI-search-optimization (GEO), Google Search Console + GA4 wiring, bilingual routing (hreflang), and per-post Substack optimization. Use when the user says /seo-audit, /seo-fix, /geo-audit, /substack-seo, or asks to audit, fix, or optimize SEO on a single page, blog post, or whole site. Scoped for two-site stacks (consulting site + creator/Substack), not enterprise e-commerce or programmatic SEO.
/seo-substrate — focused SEO + GEO for solo operators
Lean SEO substrate for a solo founder running a consulting site, a Substack newsletter, and adjacent surfaces. Trades exhaustive enterprise tooling for the slice that actually moves the needle: surface coverage > tooling depth.
Cherry-picked from ~/.claude/skills/claude-seo/ (25 sub-skills + 18 sub-agents) — kept the substrate primitives, dropped enterprise + e-commerce + DataForSEO/Firecrawl-paid extensions. Source-of-truth for why this is leaner: solo operators do not need 43 sub-modules for two sites.
When to use
User says /seo-audit <url> — full audit on a single page
User says /seo-fix <file-or-url> — apply concrete fixes to a draft post or live page
User says /geo-audit <url> — GEO-only pass (AI search readiness)
User says /substack-seo <draft.md> — per-post Substack optimization before publish
User asks to optimize, audit, fix, or improve SEO on a specific surface
Do NOT use for:
Enterprise / e-commerce SEO with 10K+ SKU catalogs (use ~/.claude/skills/claude-seo/skills/seo-ecommerce/ instead)
Paid advertising (PPC, programmatic ads)
Programmatic SEO at scale (5K+ generated pages)
Backlink outreach campaigns (manual relationship work, not skill territory)
Capability surface
This substrate ships these audit + fix capabilities. Each is a self-contained section below.
Validate every schema block with https://validator.schema.org/ before publish.
GEO (AI search optimization)
GEO is what gets cited by AI search engines (ChatGPT browsing, Claude with web tool, Perplexity, Gemini, Grok). Different from classic SEO because the consumer is an LLM doing extractive QA, not a human running a query and clicking blue links.
Checklist for GEO readiness:
TL;DR or summary at the top in 2-4 sentences. LLMs grab this for the citation snippet.
Specific verifiable facts in the first 200 words: dates, named entities, numbers, exact quotes. Vague intro paragraphs lose to specific ones.
Last-updated date visible in the HTML (not just dateModified schema). LLMs prefer fresh content; a 2024 date hurts visibility against a 2026 page.
Author byline with link to author page (LLMs use author authority as a citation signal).
Citations to primary sources in-line where claims are made. LLMs follow the chain.
Q&A blocks where relevant (format: ## Question followed by direct answer). LLMs match on question structure.
No login walls or paywalls on cited content. Blocked content gets dropped from training and citation pools.
Brand consistency in entity names. Pick the canonical brand name and use it everywhere; do not paraphrase ("the consultancy", "my AI work", "our shop") in headings or schema. LLMs entity-link on exact strings.
llms.txt at root if you want to direct LLM crawlers (analogous to robots.txt for AI). Format: list of canonical content URLs the site owner wants LLMs to prioritize.
GEO does NOT replace SEO; it layers on top. Pages that pass classic SEO and add the GEO checklist tend to win both surfaces.
Bilingual routing
If the site publishes EN + ES (or any other language pair):
<html lang="en"> matches actual content language (not always "en" by default)
Language switcher visible above the fold; routes to /es/ or es.<domain> consistently
<link rel="alternate" hreflang="en" href="<en-url>" /> AND <link rel="alternate" hreflang="es" href="<es-url>" /> AND <link rel="alternate" hreflang="x-default" href="<default-url>" /> on every page
Hreflang pairs are reciprocal: EN page lists ES alternate, ES page lists EN alternate
Translation is FULL not auto-translated (Google Translate output kills SEO; counts as duplicate content)
Per-language sitemap (or one sitemap with hreflang annotations)
Search Console + GA4
Audit-only (these are configured in the platform UI, not by code):
Property verified in Google Search Console for both root and www versions, both http and https
Before running the audit checklist, gather context:
Site type — SaaS, e-commerce, blog, consulting, multi-tenant SaaS, creator newsletter, portfolio. Different types have different SEO priorities.
Primary business goal — conversions, organic traffic volume, AI citation, education, support deflection, brand awareness. Different goals weight different capabilities.
Priority keywords/topics — top 5-10 queries that matter for the business.
Current state — known issues, recent traffic changes, last audit date.
AI visibility — has the user checked ChatGPT, Perplexity, Google AI Overviews, or Claude with web for their priority queries? If not, run the AI Visibility Check first (below).
Context file — if .agents/product-marketing-context.md or .claude/product-marketing-context.md exists in the project, read it before asking questions. Use that context and only ask for what's not already covered.
(Pattern source: coreyhaines31/marketingskills/seo-audit. Their "Initial Assessment" framing prevents going straight to checklist when scope is unclear.)
AI visibility diagnostic
Before optimizing for AI search, MEASURE current state:
Search the user's priority queries in each surface:
Google AI Overviews (default top result on most queries in 2026)
ChatGPT browsing mode
Perplexity
Claude with web tool
Gemini
Grok (if relevant audience)
For each surface, capture:
Is the brand cited at all?
Is a competitor cited where the brand should be?
Is the citation in the answer, in the sources, both, or neither?
Does the AI's summary represent the brand accurately?
Compare against baseline — same queries 30-60 days later. Did interventions move the needle?
(Diagnostic source: coreyhaines31/marketingskills/ai-seo. Critical missing piece in v1 of this substrate — measurement-before-intervention is the right SEO sequence.)
Ranking-loss triage flow
When the user reports "my traffic dropped" / "my rankings fell" / "Google update hit me":
Establish the timeline. When did the drop start? Which queries lost the most?
Pull Search Console data. Compare last-28-days vs the prior period. Filter by query, page, country, device. Surface the top losers.
Check Google's algorithm update history for that date range (https://status.search.google.com/ plus community trackers). If a known update hit, the cause is usually content quality + topical relevance, not technical.
Check manual actions in Search Console > Security & Manual Actions. Manual actions are rare but explain the entire drop when present.
Crawl the top losers for new technical issues: 404s, redirect chains, canonical breakage, indexability changes. The technical-SEO checklist (above) becomes the punch list.
Compare on-page content of losers to the SERP winners. If competitors now rank with deeper content, fresher dates, more specific facts — content-quality intervention is the move, not technical.
AI Overviews check — many post-2024 traffic drops are because AI Overviews answers the question without a click, even though rankings are unchanged. The fix is "show up in the AI answer" (see GEO section), not "rank higher."
(Triage flow source: coreyhaines31/marketingskills/seo-audit. Substantial gap in v1 — solo operators need the triage when rankings fall, not just the proactive checklist.)
Programmatic SEO (revised: not excluded; included with constraints)
V1 of this substrate excluded programmatic SEO ("solo operators don't need it"). That was wrong. Programmatic SEO at solo-operator scale (5-50 pages, not 5,000) is a real capability:
Vertical-pack landing pages: one page per vertical (legal/finance/healthcare/influencer/operator/founder) with shared template + per-vertical data.
Case-study pages: one per public case study with consistent schema, internal linking, and structured data.
Comparison pages: <our-product> vs <competitor> for each meaningful competitor.
Integration pages: <our-tool> + <integration> when an integration is launched.
Constraints for solo operators:
No thin content: each page must have genuinely different value, not the same template with one variable swapped. Google penalizes duplicate-shaped pages.
Real data behind every page: actual case studies, actual competitor comparisons, not placeholder.
Source content lives in markdown (one file per page) so updates are git-tracked and the schema markup regenerates from frontmatter.
Schema rich-result coverage: each programmatic page type gets the right schema type (FAQ, Product, HowTo, Article, Event).
Internal linking: programmatic pages link to each other AND to cornerstone content so the site's link graph stays strong.
Out of scope (genuine over-reach for solo ops): 1,000+ programmatic page generation, SEO-API-based content sourcing, AI-generated content at scale.
(Source: coreyhaines31/marketingskills/programmatic-seo. v1 was wrong to exclude this entirely; corrected here.)
Schema markup (expanded)
V1 covered 4 schema types (BlogPosting, Person, Organization, BreadcrumbList). The full set worth covering for solo + creator surfaces:
BlogPosting (kept from v1) — for blog posts, Substack articles
Person (kept) — for about pages, author pages
Organization (kept) — for company / consultancy pages
BreadcrumbList (kept) — for any page below root
FAQPage — for pages with Q&A content; eligible for Google rich-result FAQ accordion
HowTo — for step-by-step guides; eligible for HowTo rich result with image carousel
Product — for any paid product, course, coaching offer, digital download
Event — for ticketed events, webinars, cohort launches
Course — for courses/cohorts (different schema than Product; specifically for educational offerings)
Review + AggregateRating — for testimonials and review aggregations on landing pages
WebSite with SearchAction — for sites with on-site search; lets Google show a search box in the sitelinks
For new sites OR site restructures (NOT covered in v1):
Page-hierarchy planning. What pages must exist? What's at root level vs nested?
URL pattern. Hyphen-separated, lowercase, descriptive but short. Avoid stop words. Stable over years.
Internal linking strategy. Cornerstone content (3-5 pillar pages per topic cluster) gets the most internal links from all related pages. Topic clusters: pillar → sub-topic pages → leaf content.
Navigation design. Primary nav stays under 7 items. Secondary nav (footer, sidebar) handles depth. No multi-level dropdowns.
Breadcrumb strategy. Every page below root gets a breadcrumb (also schema-marked).
Orphan-page check. Every content page must be reachable from at least one other content page (not just from the sitemap). Orphan pages do not rank.
For existing site restructures, the migration plan needs:
301-map every old URL to its new home
Submit updated sitemap to Google + Bing
Monitor 30-day post-migration coverage report for indexability regressions
(IA source: coreyhaines31/marketingskills/site-architecture. Substantial gap in v1.)
Cross-skill references (delegate when scope expands)
This substrate covers the substrate primitives. Delegate to specialist skills for deeper work:
AI SEO deep-dive (citation chasing, LLM-specific tactics) → marketing-skills:ai-seo (coreyhaines)
Programmatic SEO at >50 pages or with paid APIs → marketing-skills:programmatic-seo (coreyhaines)
Site architecture mapping for new sites → marketing-skills:site-architecture (coreyhaines)
Full claude-seo (25 sub-skills + 18 sub-agents) for deep niches → claude-seo:* (AgriciDaniel)
Conversion rate optimization on the resulting traffic → marketing-skills:cro, marketing-skills:onboarding, marketing-skills:cro (coreyhaines)
Pricing page work → marketing-skills:pricing (coreyhaines)
The substrate primitives stay opinionated and lean. The full SEO/marketing surface is plugin-installed and discoverable when the user's prompt drifts beyond substrate scope.
Audit gap closed 2026-05-10. v1 of this substrate (initial build) cited only AgriciDaniel/claude-seo as the source. The everything-comparison rule required cross-checking the broader marketing-skill landscape, which surfaced the coreyhaines marketingskills bundle. v2 (this revision) incorporates the missing capabilities with proper attribution.
Substrate primitives stay opinionated, full domain surface stays in plugin-installed bundles, cross-skill references make the delegation explicit.