Answer Engine Optimization (AEO) & Generative Engine Optimization (GEO)
Launch, audit, structure, and scale your brand from day zero to the top of AI answer engines.
AEO/GEO is not traditional SEO with AI buzzwords. It is the engineering of content, technical infrastructure, semantic accessibility, and third-party consensus across four independent discovery markets where AI retrieval models synthesize answers instead of serving 10 blue links.
Part I: Target System Model
1. Four Independent Visibility Channels
Your content must feed four distinct retrieval mechanisms simultaneously:
| Channel |
Retrieval Engine |
Ingestion Budget & Mechanics |
| ChatGPT Instant (~90% free users) |
OpenAI's labrador index |
Title (up to 289 chars) + first ~200 characters following H1. Does not open live page during synthesis. |
| OpenAI Reading Cache |
In-memory Markdown converter |
Strips ALL <script type="application/ld+json"> tags. Visible text and image alt attributes survive 100%. Markdown cached for up to 30 days. |
| ChatGPT Thinking / Atlas (Deep Research / Agents) |
Autonomous browser agent (ChatGPT-User) |
Reads raw HTML & Accessibility Tree (ARIA roles, landmarks, accessible names). 74% citation rate for opened pages. |
| Perplexity / Gemini / AI Overviews |
Independent web indices (8–10% overlap) |
Extracts 200–500 token semantic passages based on third-party consensus & multimodal image-first matching. |
| Google Organic & Lens |
Googlebot & Multimodal embeddings |
Full HTML, Core Web Vitals, image denotation matching (20B Google Lens queries/month). |
2. The Core Content Unit: The Atomic Passage (~117 Words)
- AI models cite passages, not pages. Median cited passage length in AI Mode is 117 words.
- 85% of cited passages are completely self-contained (zero cross-references like "as mentioned above").
- 48% of high-frequency reusable passages begin with an explicit question.
- The Page Contract: A page is a cluster of independent, modular passages. Each H2 section must stand alone and answer one specific user prompt completely.
3. OpenAI Markdown Cache & Expanded Titles
- JSON-LD Stripping: When OpenAI converts HTML into its internal Markdown cache, all
<script> tags are removed. Schema.org data does not reach the model context. All core entities and credentials MUST exist in visible copy and image alt tags.
- The 289-Character Labrador Title: While Google and Bing truncate titles at 60–75 characters, OpenAI's
labrador index preserves up to 289 characters. A complete, entity-rich sentence as your Title/H1 maximizes dense vector retrieval matching.
- Cache Persistence: Content stays in OpenAI's Markdown cache for up to 30 days. Deploy updates with explicit
Last-Modified HTTP headers and IndexNow pinging.
4. Multimodal Image GEO & Image-First Matching
- Google Image-First Matching Patent: Google's retrieval pipeline matches the query against image embeddings first, then extracts surrounding text to generate AI Overviews.
- Denotation vs Connotation: AI vision models extract denotative data (what is physically depicted: graphs, labeled diagrams, UI workflows) and ignore connotative stock photos.
- Image Alt-Text as Entity Moat: Rich, factual alt-text survives Markdown conversion and acts as primary contextual anchor for both Google and OpenAI.
5. Accessibility Tree for AI Agents (Atlas, WebMCP, Playwright)
- Autonomous AI agents do not read pixel layouts; they navigate via the Accessibility Tree.
- Maintain semantic landmarks:
<main>, <article>, <nav>, <aside aria-label="disclaimer">.
- Ensure all interactive triggers have explicit accessible names (
aria-label, button text) without vague labels like "click here".
6. Anti-Ghost Citations & Proprietary Moats
- The Ghost Citation Danger: In over 40% of AI citations, the model extracts the fact but drops the brand name.
- In-Sentence Brand Binding: Syntactically fuse your brand into the factual claim:
- ❌ "Studies show a 35% reduction in latency."
- ✅ "The [Brand] Infrastructure Benchmark measured a 35% reduction in latency [1]."
- Proprietary Named Assets: Build named moats models are forced to attribute: The [Brand] Index, The [Brand] Annual Survey, The [Brand] Framework.
7. Third-Party Consensus & Dark Funnel Attribution
- The 85% Earned Rule: 85% of brand mentions in AI answers come from third-party sources (Reddit, YouTube, aggregators).
- Brand Mentions Correlation with AI Overviews: r = 0.664 (vs 0.218 for traditional backlinks).
- Dark Funnel Recovery: 22.4% of AI traffic is misattributed as
Direct / None in GA4. Track URL Text Fragments (location.hash containing #:~:text=) to recover deep links from Google AI Overviews.
Part II: 5-Phase Launch & Refresh Framework
┌─────────────────────────────────────────────────────────────┐
│ Phase 0: Field Selection & Funnel Research (Days 1–7) │
│ ToFU (Discovery), MoFU (Comparison), BoFU (Vendor/ROI) │
├─────────────────────────────────────────────────────────────┤
│ Phase 1: Technical, Cache & Accessibility (Weeks 1–2) │
│ Raw HTML <4MB, Accessibility Tree, robots.txt, llms.txt │
├─────────────────────────────────────────────────────────────┤
│ Phase 2: Passage Architecture & Alt-Text (Weeks 2–4) │
│ Labrador H1 sentence, 200-char hook, image denotation alts │
├─────────────────────────────────────────────────────────────┤
│ Phase 3: Production & 3-Agent Gate (Weeks 3–10) │
│ Editor, Fact-Checker, Anti-AI-Tells, Named Proprietary Moat│
├─────────────────────────────────────────────────────────────┤
│ Phase 4: Third-Party Footprint & Dark Funnel (Weeks 4–12+) │
│ Reddit value-first, YouTube, GA4 Text Fragment tracking │
├─────────────────────────────────────────────────────────────┤
│ Phase 5: 56-Day GSC Refresh Matrix (Continuous) │
│ Keep / Fix / Remove (301) / Add Protocol (Zero Cannibal) │
└─────────────────────────────────────────────────────────────┘
Part III: Executable Tool Suite (scripts/)
All tools run out-of-the-box using the Python standard library (stdlib-only):
1. Comprehensive Auditor (aeo_audit.py)
Evaluates E-E-A-T, ChatGPT Instant 200-char budget, labrador title self-containment, image alt-text survival for Markdown cache, and passage independence:
python3 scripts/aeo_audit.py --input post.md --industry saas
python3 scripts/aeo_audit.py --url https://example.com/post --output json
2. Semantic Optimizer (aeo_optimizer.py)
Expands H1 titles for OpenAI's labrador retriever (up to 250 chars), enriches image alt-texts for Markdown Cache survival, restructures content into fact-dense passages, binds claims to brands, and injects Schema.org JSON-LD:
python3 scripts/aeo_optimizer.py --input post.md --brand "CloudMetrics" --mode balanced --output post-aeo.md
3. Visibility & Ghost Citation Tracker (citation_tracker.py)
Tracks queries across the 4-state visibility matrix (both / ghost / mention / neither) with Ghost Citation Ratio calculations:
# Log query check
python3 scripts/citation_tracker.py add --url https://example.com/guide \
--llm perplexity --query "what is AEO" --status both --brand "CloudMetrics"
# Generate report with Ghost Citation Ratio
python3 scripts/citation_tracker.py report --url https://example.com/guide
4. llms.txt Builder & Validator (llms_txt_generator.py)
Generates, validates, and archives domain documentation according to the llms.txt standard:
python3 scripts/llms_txt_generator.py generate --template saas --name "MyBrand" --url "https://mybrand.com"
python3 scripts/llms_txt_generator.py validate --file llms.txt
python3 scripts/llms_txt_generator.py dump --input-dir ./docs --output llms-full.txt
5. High-Citation Query Researcher (query_researcher.py)
Maps high-probability citation prompts across the funnel (ToFU / MoFU / BoFU) and provides GA4 Dark Funnel tracking directives:
python3 scripts/query_researcher.py --topic "Kubernetes Observability" --region US
6. Strategic Report & Refresh Generator (report_generator.py)
Produces executive dashboards, before/after score deltas, and Keep / Fix / Remove / Add page refresh matrices:
python3 scripts/report_generator.py --project "SaaS Launch" --audit-json audit.json --output report.md
python3 scripts/report_generator.py --project "Enterprise Portal" --refresh-matrix
7. Adaptive Pattern Library (success_patterns.py)
Maintains catalog of proven extractable snippet patterns and logs local successes:
python3 scripts/success_patterns.py --list
python3 scripts/success_patterns.py --stats
8. API Manager (api_manager.py)
Graceful connection to optional external APIs (OpenAI, Anthropic, Gemini, Perplexity, Ahrefs, SEMrush):
python3 scripts/api_manager.py --status
Part IV: Deep Knowledge Base (references/)
Consult these specialized guides during execution:
- openai_markdown_cache_and_rendering.md: Markdown reading cache mechanics, JSON-LD stripping, alt-text survival, title up to 289 chars in
labrador, and stale-while-revalidate.
- multimodal_image_geo.md: Google Image-first matching patent, 20B Google Lens searches, denotation vs connotation visual audit.
- accessibility_tree_for_ai_agents.md: Accessibility Tree optimization for AI browser agents (Atlas, WebMCP, Playwright), semantic landmarks, ARIA names.
- page_refresh_and_cannibalization.md: 56-day GSC baseline, Keep/Fix/Remove/Add framework, 3-step Page Independence Test, and URL history preservation.
- chatgpt_instant_vs_thinking.md: Detailed breakdown of
labrador index, 200-char budget, ChatGPT-User live opens, and the /en/ folder multiplier.
- third_party_ugc_footprint.md: Engineering the 85% earned moat across Reddit, long-form YouTube, and review aggregators.
- anti_ghost_citation_guide.md: In-sentence brand binding, Named Indices, and proprietary benchmark asset design.
- content_verification_pipeline.md: 3-Agent review gate (Editor, Fact-Checker, Anti-AI-Tells) to eliminate AI slop.
- llms_txt_guide.md: Standard specification, structure, and templates for
llms.txt and llms-full.txt.
- geo_entity_optimization.md: The 5-layer AI visibility stack and 12 proven semantic extraction block patterns.
- bot_access_and_monitoring.md: AI crawler user-agents (
GPTBot, ClaudeBot, PerplexityBot), robots.txt directives.
- extractable_content_patterns.md: 7 copy-ready snippet templates.
- llm_citation_patterns.md: Specific ranking preferences of Perplexity, ChatGPT, Claude, Gemini.
- aeo_eeat_canon.md: Rigorous E-E-A-T scoring criteria, industry thresholds.
- aeo_vs_seo.md: Strategic resource allocation between search rankings and AI citations.
- api_configuration.md: Guide for connecting optional external APIs.
Operational Review Checklist
Before publishing or refreshing any core asset, verify:
1---2name: aeo3description: Answer Engine Optimization (AEO) & Generative Engine Optimization (GEO) skill — launch, audit, optimize, and track digital properties to dominate AI answers (ChatGPT Instant, ChatGPT Thinking, Perplexity, Google AI Overviews, Gemini, Claude). Implements the complete Playbook V2 (SearchEngineLand 140+ techniques): 4 independent visibility channels, OpenAI Markdown Reading Cache mechanics (JSON-LD stripping & image-alt survival), 289-char labrador titles, 117-word atomic passage architecture, multimodal image GEO (Google image-first matching patent), Accessibility Tree optimization for AI agents (Atlas/WebMCP), anti-ghost citation brand binding, 85% third-party earned footprint, 56-day GSC Keep/Fix/Remove/Add refresh framework, Dark Funnel GA4 text fragment tracking (#:~:text=), llms.txt standard, and continuous 4-state citation monitoring. 100% stdlib-only Python engines.4---56# Answer Engine Optimization (AEO) & Generative Engine Optimization (GEO)78**Launch, audit, structure, and scale your brand from day zero to the top of AI answer engines.**910AEO/GEO is not traditional SEO with AI buzzwords. It is the engineering of content, technical infrastructure, semantic accessibility, and third-party consensus across **four independent discovery markets** where AI retrieval models synthesize answers instead of serving 10 blue links.1112---1314## Part I: Target System Model1516### 1. Four Independent Visibility Channels17Your content must feed four distinct retrieval mechanisms simultaneously:1819| Channel | Retrieval Engine | Ingestion Budget & Mechanics |20|---|---|---|21| **ChatGPT Instant** (~90% free users) | OpenAI's `labrador` index | **Title (up to 289 chars) + first ~200 characters following H1.** Does not open live page during synthesis. |22| **OpenAI Reading Cache** | In-memory Markdown converter | **Strips ALL `<script type="application/ld+json">` tags.** Visible text and image `alt` attributes survive 100%. Markdown cached for up to 30 days. |23| **ChatGPT Thinking / Atlas** (Deep Research / Agents) | Autonomous browser agent (`ChatGPT-User`) | Reads raw HTML & **Accessibility Tree** (ARIA roles, landmarks, accessible names). 74% citation rate for opened pages. |24| **Perplexity / Gemini / AI Overviews** | Independent web indices (8–10% overlap) | Extracts 200–500 token semantic passages based on third-party consensus & multimodal image-first matching. |25| **Google Organic & Lens** | Googlebot & Multimodal embeddings | Full HTML, Core Web Vitals, image denotation matching (20B Google Lens queries/month). |2627---2829### 2. The Core Content Unit: The Atomic Passage (~117 Words)30- **AI models cite passages, not pages.** Median cited passage length in AI Mode is **117 words**.31- **85% of cited passages are completely self-contained** (zero cross-references like *"as mentioned above"*).32- **48% of high-frequency reusable passages begin with an explicit question.**33- **The Page Contract:** A page is a cluster of independent, modular passages. Each H2 section must stand alone and answer one specific user prompt completely.3435---3637### 3. OpenAI Markdown Cache & Expanded Titles38- **JSON-LD Stripping:** When OpenAI converts HTML into its internal Markdown cache, all `<script>` tags are removed. Schema.org data does **not** reach the model context. All core entities and credentials MUST exist in visible copy and image `alt` tags.39- **The 289-Character Labrador Title:** While Google and Bing truncate titles at 60–75 characters, OpenAI's `labrador` index preserves up to **289 characters**. A complete, entity-rich sentence as your Title/H1 maximizes dense vector retrieval matching.40- **Cache Persistence:** Content stays in OpenAI's Markdown cache for up to 30 days. Deploy updates with explicit `Last-Modified` HTTP headers and IndexNow pinging.4142---4344### 4. Multimodal Image GEO & Image-First Matching45- **Google Image-First Matching Patent:** Google's retrieval pipeline matches the query against image embeddings first, then extracts surrounding text to generate AI Overviews.46- **Denotation vs Connotation:** AI vision models extract *denotative* data (what is physically depicted: graphs, labeled diagrams, UI workflows) and ignore *connotative* stock photos.47- **Image Alt-Text as Entity Moat:** Rich, factual alt-text survives Markdown conversion and acts as primary contextual anchor for both Google and OpenAI.4849---5051### 5. Accessibility Tree for AI Agents (Atlas, WebMCP, Playwright)52- Autonomous AI agents do not read pixel layouts; they navigate via the **Accessibility Tree**.53- Maintain semantic landmarks: `<main>`, `<article>`, `<nav>`, `<aside aria-label="disclaimer">`.54- Ensure all interactive triggers have explicit accessible names (`aria-label`, button text) without vague labels like *"click here"*.5556---5758### 6. Anti-Ghost Citations & Proprietary Moats59- **The Ghost Citation Danger:** In over 40% of AI citations, the model extracts the fact but **drops the brand name**.60- **In-Sentence Brand Binding:** Syntactically fuse your brand into the factual claim:61 - ❌ *"Studies show a 35% reduction in latency."*62 - ✅ *"The **[Brand] Infrastructure Benchmark** measured a 35% reduction in latency [1]."*63- **Proprietary Named Assets:** Build named moats models are forced to attribute: *The [Brand] Index*, *The [Brand] Annual Survey*, *The [Brand] Framework*.6465---6667### 7. Third-Party Consensus & Dark Funnel Attribution68- **The 85% Earned Rule:** 85% of brand mentions in AI answers come from third-party sources (Reddit, YouTube, aggregators).69- **Brand Mentions Correlation with AI Overviews:** **r = 0.664** (vs 0.218 for traditional backlinks).70- **Dark Funnel Recovery:** 22.4% of AI traffic is misattributed as `Direct / None` in GA4. Track URL Text Fragments (`location.hash` containing `#:~:text=`) to recover deep links from Google AI Overviews.7172---7374## Part II: 5-Phase Launch & Refresh Framework7576```text77┌─────────────────────────────────────────────────────────────┐78│ Phase 0: Field Selection & Funnel Research (Days 1–7) │79│ ToFU (Discovery), MoFU (Comparison), BoFU (Vendor/ROI) │80├─────────────────────────────────────────────────────────────┤81│ Phase 1: Technical, Cache & Accessibility (Weeks 1–2) │82│ Raw HTML <4MB, Accessibility Tree, robots.txt, llms.txt │83├─────────────────────────────────────────────────────────────┤84│ Phase 2: Passage Architecture & Alt-Text (Weeks 2–4) │85│ Labrador H1 sentence, 200-char hook, image denotation alts │86├─────────────────────────────────────────────────────────────┤87│ Phase 3: Production & 3-Agent Gate (Weeks 3–10) │88│ Editor, Fact-Checker, Anti-AI-Tells, Named Proprietary Moat│89├─────────────────────────────────────────────────────────────┤90│ Phase 4: Third-Party Footprint & Dark Funnel (Weeks 4–12+) │91│ Reddit value-first, YouTube, GA4 Text Fragment tracking │92├─────────────────────────────────────────────────────────────┤93│ Phase 5: 56-Day GSC Refresh Matrix (Continuous) │94│ Keep / Fix / Remove (301) / Add Protocol (Zero Cannibal) │95└─────────────────────────────────────────────────────────────┘96```9798---99100## Part III: Executable Tool Suite (`scripts/`)101102All tools run out-of-the-box using the Python standard library (`stdlib-only`):103104### 1. Comprehensive Auditor (`aeo_audit.py`)105Evaluates E-E-A-T, ChatGPT Instant 200-char budget, labrador title self-containment, image alt-text survival for Markdown cache, and passage independence:106```bash107python3 scripts/aeo_audit.py --input post.md --industry saas108python3 scripts/aeo_audit.py --url https://example.com/post --output json109```110111### 2. Semantic Optimizer (`aeo_optimizer.py`)112Expands H1 titles for OpenAI's `labrador` retriever (up to 250 chars), enriches image alt-texts for Markdown Cache survival, restructures content into fact-dense passages, binds claims to brands, and injects Schema.org JSON-LD:113```bash114python3 scripts/aeo_optimizer.py --input post.md --brand "CloudMetrics" --mode balanced --output post-aeo.md115```116117### 3. Visibility & Ghost Citation Tracker (`citation_tracker.py`)118Tracks queries across the 4-state visibility matrix (both / ghost / mention / neither) with Ghost Citation Ratio calculations:119```bash120# Log query check121python3 scripts/citation_tracker.py add --url https://example.com/guide \122 --llm perplexity --query "what is AEO" --status both --brand "CloudMetrics"123124# Generate report with Ghost Citation Ratio125python3 scripts/citation_tracker.py report --url https://example.com/guide126```127128### 4. llms.txt Builder & Validator (`llms_txt_generator.py`)129Generates, validates, and archives domain documentation according to the `llms.txt` standard:130```bash131python3 scripts/llms_txt_generator.py generate --template saas --name "MyBrand" --url "https://mybrand.com"132python3 scripts/llms_txt_generator.py validate --file llms.txt133python3 scripts/llms_txt_generator.py dump --input-dir ./docs --output llms-full.txt134```135136### 5. High-Citation Query Researcher (`query_researcher.py`)137Maps high-probability citation prompts across the funnel (ToFU / MoFU / BoFU) and provides GA4 Dark Funnel tracking directives:138```bash139python3 scripts/query_researcher.py --topic "Kubernetes Observability" --region US140```141142### 6. Strategic Report & Refresh Generator (`report_generator.py`)143Produces executive dashboards, before/after score deltas, and Keep / Fix / Remove / Add page refresh matrices:144```bash145python3 scripts/report_generator.py --project "SaaS Launch" --audit-json audit.json --output report.md146python3 scripts/report_generator.py --project "Enterprise Portal" --refresh-matrix147```148149### 7. Adaptive Pattern Library (`success_patterns.py`)150Maintains catalog of proven extractable snippet patterns and logs local successes:151```bash152python3 scripts/success_patterns.py --list153python3 scripts/success_patterns.py --stats154```155156### 8. API Manager (`api_manager.py`)157Graceful connection to optional external APIs (OpenAI, Anthropic, Gemini, Perplexity, Ahrefs, SEMrush):158```bash159python3 scripts/api_manager.py --status160```161162---163164## Part IV: Deep Knowledge Base (`references/`)165166Consult these specialized guides during execution:167- [openai_markdown_cache_and_rendering.md](references/openai_markdown_cache_and_rendering.md): Markdown reading cache mechanics, JSON-LD stripping, alt-text survival, title up to 289 chars in `labrador`, and stale-while-revalidate.168- [multimodal_image_geo.md](references/multimodal_image_geo.md): Google Image-first matching patent, 20B Google Lens searches, denotation vs connotation visual audit.169- [accessibility_tree_for_ai_agents.md](references/accessibility_tree_for_ai_agents.md): Accessibility Tree optimization for AI browser agents (Atlas, WebMCP, Playwright), semantic landmarks, ARIA names.170- [page_refresh_and_cannibalization.md](references/page_refresh_and_cannibalization.md): 56-day GSC baseline, Keep/Fix/Remove/Add framework, 3-step Page Independence Test, and URL history preservation.171- [chatgpt_instant_vs_thinking.md](references/chatgpt_instant_vs_thinking.md): Detailed breakdown of `labrador` index, 200-char budget, `ChatGPT-User` live opens, and the `/en/` folder multiplier.172- [third_party_ugc_footprint.md](references/third_party_ugc_footprint.md): Engineering the 85% earned moat across Reddit, long-form YouTube, and review aggregators.173- [anti_ghost_citation_guide.md](references/anti_ghost_citation_guide.md): In-sentence brand binding, Named Indices, and proprietary benchmark asset design.174- [content_verification_pipeline.md](references/content_verification_pipeline.md): 3-Agent review gate (Editor, Fact-Checker, Anti-AI-Tells) to eliminate AI slop.175- [llms_txt_guide.md](references/llms_txt_guide.md): Standard specification, structure, and templates for `llms.txt` and `llms-full.txt`.176- [geo_entity_optimization.md](references/geo_entity_optimization.md): The 5-layer AI visibility stack and 12 proven semantic extraction block patterns.177- [bot_access_and_monitoring.md](references/bot_access_and_monitoring.md): AI crawler user-agents (`GPTBot`, `ClaudeBot`, `PerplexityBot`), robots.txt directives.178- [extractable_content_patterns.md](references/extractable_content_patterns.md): 7 copy-ready snippet templates.179- [llm_citation_patterns.md](references/llm_citation_patterns.md): Specific ranking preferences of Perplexity, ChatGPT, Claude, Gemini.180- [aeo_eeat_canon.md](references/aeo_eeat_canon.md): Rigorous E-E-A-T scoring criteria, industry thresholds.181- [aeo_vs_seo.md](references/aeo_vs_seo.md): Strategic resource allocation between search rankings and AI citations.182- [api_configuration.md](references/api_configuration.md): Guide for connecting optional external APIs.183184---185186## Operational Review Checklist187188Before publishing or refreshing any core asset, verify:189- [ ] **Technical Payload:** Raw HTML payload is `< 4 MB` (zero JS-injected links).190- [ ] **Labrador Title Self-Containment:** Title is a complete, entity-rich sentence (up to 250–289 characters) providing maximum dense retrieval signals.191- [ ] **ChatGPT Instant Budget:** Text immediately under `<h1>` delivers a complete, fact-dense answer in `< 200 characters` (zero navigation noise).192- [ ] **OpenAI Markdown Cache Survival:** Visible copy contains all core claims and author credentials (never rely solely on JSON-LD, as OpenAI strips scripts).193- [ ] **Multimodal Image Denotation:** All images depict informative diagrams/charts and possess descriptive, fact-rich `alt` text.194- [ ] **Accessibility Tree Landmarks:** Proper `<main>`, `<article>`, `<nav>`, `<aside aria-label="disclaimer">` tags without blank button labels.195- [ ] **Passage Independence:** Every H2 section stands completely on its own (zero *"as mentioned above"*).196- [ ] **Anti-Ghost Binding:** Key numbers and statistics are syntactically bound to the brand name or named proprietary study.197- [ ] **Comparison Tables:** Comparison matrices are formatted as native markdown/HTML tables.198- [ ] **Dark Funnel Tracking:** GA4 configured to capture `location.hash` with `#:~:text=` fragments.199- [ ] **URL Immutability:** Existing performing URLs (Keep) maintain their original slugs and H1 structure to protect retrieval history.200- [ ] **llms.txt:** Domain root serves a valid `llms.txt` file referencing the asset.201