taketomarket 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/README.md +34 -11
  4. package/bin/lib/campaign.cjs +12 -8
  5. package/bin/lib/codebase-scan.cjs +86 -0
  6. package/bin/lib/config.cjs +129 -0
  7. package/bin/lib/deploy.cjs +36 -0
  8. package/bin/lib/deviation.cjs +1 -1
  9. package/bin/lib/drift-log.cjs +4 -4
  10. package/bin/lib/health.cjs +32 -31
  11. package/bin/lib/install-detect.cjs +62 -0
  12. package/bin/lib/legacy-folder.cjs +100 -0
  13. package/bin/lib/playwright-check.cjs +26 -0
  14. package/bin/lib/site-location.cjs +22 -0
  15. package/bin/lib/state.cjs +3 -3
  16. package/bin/lib/svg-render.cjs +42 -0
  17. package/bin/ttm-tools.cjs +136 -4
  18. package/gates/base-gates.md +8 -8
  19. package/gates/gate-evaluation.md +8 -8
  20. package/install.js +37 -3
  21. package/package.json +10 -6
  22. package/playbooks/aeo.md +218 -114
  23. package/playbooks/affiliate.md +225 -160
  24. package/playbooks/email.md +236 -174
  25. package/playbooks/events.md +303 -213
  26. package/playbooks/landing-pages.md +305 -0
  27. package/playbooks/linkedin.md +264 -142
  28. package/playbooks/manifesto.md +322 -0
  29. package/playbooks/paid-ads.md +240 -189
  30. package/playbooks/positioning.md +340 -0
  31. package/playbooks/pr-media.md +308 -168
  32. package/playbooks/pseo.md +426 -0
  33. package/playbooks/seo.md +251 -158
  34. package/playbooks/social.md +253 -182
  35. package/playbooks/youtube.md +286 -181
  36. package/references/brand-color-theory.md +48 -0
  37. package/references/codex-image-gen-research.md +58 -0
  38. package/references/context-loading.md +6 -6
  39. package/references/humanizer-patterns.md +433 -0
  40. package/references/inline-education-blurbs.md +461 -0
  41. package/references/landing-page-anatomy.md +64 -0
  42. package/references/linkedin-post-patterns.md +174 -0
  43. package/references/logo-design-principles.md +55 -0
  44. package/references/meta-gate-evaluation.md +3 -3
  45. package/references/obra-superpowers-conventions.md +170 -0
  46. package/references/playbook-leaders.md +472 -0
  47. package/references/playwright-mcp-setup.md +164 -0
  48. package/references/positioning-check-report.md +2 -2
  49. package/references/pseo-page-anatomy.md +56 -0
  50. package/references/pseo-templates/alternative-anatomy.md +31 -0
  51. package/references/pseo-templates/alternative-content-playbook.md +32 -0
  52. package/references/pseo-templates/blog-anatomy.md +28 -0
  53. package/references/pseo-templates/blog-content-playbook.md +36 -0
  54. package/references/pseo-templates/comparison-anatomy.md +29 -0
  55. package/references/pseo-templates/comparison-content-playbook.md +35 -0
  56. package/references/pseo-templates/use-case-anatomy.md +28 -0
  57. package/references/pseo-templates/use-case-content-playbook.md +30 -0
  58. package/skills/ttm-101/SKILL.md +25 -0
  59. package/skills/ttm-aeo-check/SKILL.md +17 -12
  60. package/skills/ttm-affiliate-kit/SKILL.md +5 -0
  61. package/skills/ttm-archive/SKILL.md +5 -0
  62. package/skills/ttm-brand-refresh/SKILL.md +5 -0
  63. package/skills/ttm-brief/SKILL.md +5 -0
  64. package/skills/ttm-competitor-scan/SKILL.md +5 -0
  65. package/skills/ttm-deploy/SKILL.md +22 -0
  66. package/skills/ttm-discover/SKILL.md +17 -0
  67. package/skills/ttm-email-check/SKILL.md +17 -0
  68. package/skills/ttm-email-preflight/SKILL.md +17 -11
  69. package/skills/ttm-fix/SKILL.md +5 -0
  70. package/skills/ttm-health/SKILL.md +6 -1
  71. package/skills/ttm-humanize/SKILL.md +33 -0
  72. package/skills/ttm-icp-refresh/SKILL.md +5 -0
  73. package/skills/ttm-improve-skill/SKILL.md +18 -0
  74. package/skills/ttm-init/SKILL.md +10 -3
  75. package/skills/ttm-keyword-map/SKILL.md +17 -11
  76. package/skills/ttm-landing/SKILL.md +19 -0
  77. package/skills/ttm-learn/SKILL.md +5 -0
  78. package/skills/ttm-linkedin-post/SKILL.md +26 -0
  79. package/skills/ttm-measure/SKILL.md +5 -0
  80. package/skills/ttm-new-campaign/SKILL.md +5 -0
  81. package/skills/ttm-next/SKILL.md +5 -0
  82. package/skills/ttm-playwright-setup/SKILL.md +18 -0
  83. package/skills/ttm-positioning-check/SKILL.md +5 -0
  84. package/skills/ttm-positioning-shift/SKILL.md +5 -0
  85. package/skills/ttm-produce/SKILL.md +5 -0
  86. package/skills/ttm-pseo/SKILL.md +26 -0
  87. package/skills/ttm-repurpose/SKILL.md +5 -0
  88. package/skills/ttm-request-skill/SKILL.md +18 -0
  89. package/skills/ttm-research/SKILL.md +18 -6
  90. package/skills/ttm-resume/SKILL.md +5 -0
  91. package/skills/ttm-review/SKILL.md +5 -0
  92. package/skills/ttm-seo/SKILL.md +64 -0
  93. package/skills/ttm-seo-audit/SKILL.md +17 -12
  94. package/skills/ttm-ship/SKILL.md +5 -0
  95. package/skills/ttm-state/SKILL.md +5 -0
  96. package/skills/ttm-update/SKILL.md +152 -4
  97. package/skills/ttm-verify/SKILL.md +5 -0
  98. package/templates/agents-md.md +14 -4
  99. package/templates/campaign-research.md +6 -6
  100. package/templates/campaign-state.md +1 -1
  101. package/templates/claude-md.md +14 -4
  102. package/templates/linkedin-base-template.md +48 -0
  103. package/templates/next-step-footer.md +13 -0
  104. package/templates/production-manifest.json +4 -4
  105. package/templates/pseo/alternative-cms-schema.json +65 -0
  106. package/templates/pseo/blog-cms-schema.json +55 -0
  107. package/templates/pseo/comparison-cms-schema.json +56 -0
  108. package/templates/pseo/use-case-cms-schema.json +62 -0
  109. package/templates/reference-files/brand.md +51 -0
  110. package/templates/reference-files/product-dna.md +73 -0
  111. package/templates/site-scaffold/app/globals.css +2 -0
  112. package/templates/site-scaffold/app/layout.tsx +17 -0
  113. package/templates/site-scaffold/app/page.tsx +33 -0
  114. package/templates/site-scaffold/app/robots.ts +8 -0
  115. package/templates/site-scaffold/app/sitemap.ts +10 -0
  116. package/templates/site-scaffold/app/tokens.css +21 -0
  117. package/templates/site-scaffold/components/Comparison.tsx +14 -0
  118. package/templates/site-scaffold/components/Faq.tsx +14 -0
  119. package/templates/site-scaffold/components/Features.tsx +14 -0
  120. package/templates/site-scaffold/components/FinalCta.tsx +17 -0
  121. package/templates/site-scaffold/components/Footer.tsx +12 -0
  122. package/templates/site-scaffold/components/Hero.tsx +22 -0
  123. package/templates/site-scaffold/components/HowItWorks.tsx +14 -0
  124. package/templates/site-scaffold/components/PricingTeaser.tsx +14 -0
  125. package/templates/site-scaffold/components/Problem.tsx +14 -0
  126. package/templates/site-scaffold/components/SocialProof.tsx +14 -0
  127. package/templates/site-scaffold/components/Solution.tsx +14 -0
  128. package/templates/site-scaffold/components/Testimonials.tsx +14 -0
  129. package/templates/site-scaffold/components/UseCases.tsx +14 -0
  130. package/templates/site-scaffold/content/.gitkeep +0 -0
  131. package/templates/site-scaffold/lib/.gitkeep +0 -0
  132. package/templates/site-scaffold/next.config.mjs +10 -0
  133. package/templates/site-scaffold/package.json +25 -0
  134. package/templates/site-scaffold/postcss.config.mjs +3 -0
  135. package/templates/site-scaffold/public/llms.txt +9 -0
  136. package/templates/site-scaffold/tsconfig.json +21 -0
  137. package/templates/verification-report.md +1 -1
  138. package/workflows/channel/linkedin-post.md +178 -0
  139. package/workflows/discipline/affiliate-kit.md +65 -6
  140. package/workflows/discipline/{email-preflight.md → email-check.md} +39 -4
  141. package/workflows/discipline/repurpose.md +82 -31
  142. package/workflows/discipline/{aeo-check.md → seo/aeo.md} +13 -6
  143. package/workflows/discipline/{seo-audit.md → seo/audit.md} +13 -6
  144. package/workflows/discipline/{keyword-map.md → seo/keyword-map.md} +13 -6
  145. package/workflows/education/ttm-101.md +114 -0
  146. package/workflows/lifecycle/brief-positioning-check.md +1 -1
  147. package/workflows/lifecycle/brief.md +64 -28
  148. package/workflows/lifecycle/{research.md → discover.md} +61 -19
  149. package/workflows/lifecycle/fix.md +72 -37
  150. package/workflows/lifecycle/humanize.md +280 -0
  151. package/workflows/lifecycle/learn.md +72 -35
  152. package/workflows/lifecycle/measure.md +54 -18
  153. package/workflows/lifecycle/produce.md +88 -37
  154. package/workflows/lifecycle/review.md +71 -25
  155. package/workflows/lifecycle/ship.md +62 -18
  156. package/workflows/lifecycle/verify.md +72 -26
  157. package/workflows/reference-mgmt/brand-refresh.md +50 -13
  158. package/workflows/reference-mgmt/competitor-scan.md +51 -15
  159. package/workflows/reference-mgmt/icp-refresh.md +48 -12
  160. package/workflows/reference-mgmt/positioning-check.md +55 -20
  161. package/workflows/reference-mgmt/positioning-shift.md +53 -17
  162. package/workflows/setup/init-brand-colors.md +75 -0
  163. package/workflows/setup/init-logo.md +113 -0
  164. package/workflows/setup/init-product-dna.md +83 -0
  165. package/workflows/setup/init-questions.md +166 -30
  166. package/workflows/setup/init-validation.md +22 -0
  167. package/workflows/setup/init.md +144 -39
  168. package/workflows/setup/new-campaign.md +48 -12
  169. package/workflows/site/deploy.md +98 -0
  170. package/workflows/site/landing.md +156 -0
  171. package/workflows/site/pseo.md +96 -0
  172. package/workflows/site/quality-gates.md +88 -0
  173. package/workflows/utility/archive.md +45 -9
  174. package/workflows/utility/health.md +77 -3
  175. package/workflows/utility/improve-skill.md +233 -0
  176. package/workflows/utility/next.md +38 -2
  177. package/workflows/utility/playwright-setup.md +128 -0
  178. package/workflows/utility/request-skill.md +218 -0
  179. package/workflows/utility/resume.md +40 -3
  180. package/workflows/utility/state.md +42 -7
package/playbooks/aeo.md CHANGED
@@ -1,223 +1,327 @@
1
1
  ---
2
2
  discipline: aeo
3
- asset_types: [blog-post, pillar-page, knowledge-base, faq-page]
4
- version: "1.0"
3
+ asset_types: [answer-block, faq-schema, definition-section, llms-txt]
4
+ version: "2.0"
5
5
  ---
6
6
 
7
- # AEO Discipline Playbook
7
+ # AEO Discipline Playbook — Relevance Engineering
8
8
 
9
- This playbook extends the base playbook contract (`base.md`) with AEO-specific (Answer Engine Optimization) production guidance, discipline gates, and format rules. AEO optimizes content for AI-powered answer engines (ChatGPT, Perplexity, Gemini, Copilot) that extract and cite web content in their responses.
9
+ This playbook extends the base playbook contract (`base.md`) with AEO-specific production guidance, discipline gates, and format rules. It is loaded by ttm-producer during content generation and parsed by ttm-verify for gate evaluation.
10
10
 
11
- > If this asset also targets organic search, ensure SEO playbook gates are also satisfied. AEO and SEO are complementary -- AEO builds on SEO foundations.
11
+ The opinion that drives every section below comes from Mike King (iPullRank) and his **Relevance Engineering** framework. King's premise: classic SEO assumed deterministic ranking (write a page, it ranks). AI Mode is probabilistic — your content is decomposed into passages, recomposed by an LLM, scored against embedding-similarity to a fan-out of synthetic queries, and may never appear as a blue-link page. AEO is not a separate discipline you bolt onto SEO; it is the passage-level, entity-first, citation-aware engineering practice that subsumes SEO for AI-mediated retrieval.
12
+
13
+ If you are new to AEO operationally, also read `references/pseo-page-anatomy.md` — the "Above the fold" and "AI citability signals" sections are the operational counterpart to the King-flavored opinion in this playbook.
14
+
15
+ > If this asset also targets organic search, ensure SEO playbook gates are satisfied alongside these AEO gates. Relevance Engineering subsumes SEO — it does not exempt you from it.
12
16
 
13
17
  ---
14
18
 
15
19
  ## Production Guidance
16
20
 
17
- ### SEO Cross-Reference
21
+ ### Engineer the Passage, Not the Page
18
22
 
19
- AEO does not replace SEO -- it extends it. If the asset targets organic search in addition to AI engine citations, apply the SEO playbook gates alongside these AEO gates. Well-structured SEO content (clear headings, schema markup, keyword-aligned structure) forms the foundation that AI engines parse when extracting answers.
23
+ The unit of optimization in Relevance Engineering is the **passage**, not the page. An AI Mode system runs a user query through a **query fan-out** — that single query expands into 8–30 synthetic sub-queries inside the model. Each synthetic query retrieves passages from across the index, scores them by **embedding similarity**, and stitches the winners into a synthesized answer. Your page does not "rank." Individual paragraphs from your page either survive the embedding sort and get composed into the answer, or they don't.
20
24
 
21
- ### Citation-Worthiness
25
+ The engineering implication: every paragraph must be **semantically complete in isolation**. A paragraph that requires the paragraph above it to make sense will lose to a competitor paragraph that doesn't. Think of each H2 block as a public API endpoint — it must return a useful response without context-of-call. If you would not paste a paragraph into a Slack reply and have it stand on its own, an LLM will not lift it into an AI Overview.
22
26
 
23
- Write sentences that can be quoted verbatim by AI engines. Use definitive, concise statements that stand alone as complete answers:
27
+ Practical rule: open every H2 with a **citation-worthy definitional sentence** of the form `<Entity> is <Class> that <distinguishing claim>.` This is what King calls "fitting the reasoning target." The LLM is looking for a passage that can answer one of the synthetic sub-queries in its fan-out. Give it one.
24
28
 
25
- - **Do:** "Core Web Vitals consist of three metrics: LCP, CLS, and INP."
26
- - **Do not:** "It might be said that Core Web Vitals could potentially include several metrics."
29
+ ### Query Fan-Out Replaces the Keyword
27
30
 
28
- Avoid hedging language ("it might be", "some believe", "arguably", "it could be said"). AI engines skip uncertain statements in favor of definitive ones.
31
+ The old SEO mental model pick a head keyword, write one page, measure rank is dead. Relevance Engineering replaces the keyword with the **query fan-out cluster**: the set of synthetic queries an AI Mode system will generate from a single user prompt.
29
32
 
30
- ### Structure for AI Extraction
33
+ Before producing an AEO asset, enumerate the fan-out:
31
34
 
32
- Use clear H2 headings phrased as questions. Follow each H2 with a 1-2 sentence definitive answer, then elaborate. This maps to how AI engines extract answers:
35
+ 1. Start with the user-facing query (e.g., "how does Postgres handle replication").
36
+ 2. List the synthetic sub-queries an LLM is likely to spawn from it: definitional ("what is Postgres replication"), procedural ("how to configure streaming replication in Postgres"), comparative ("Postgres replication vs MySQL replication"), troubleshooting ("Postgres replication lag"), entity-disambiguating ("Postgres logical vs physical replication"). Aim for 8–15.
37
+ 3. Audit your draft against the fan-out. Every synthetic query should map to at least one passage in your asset that could be lifted verbatim to answer it.
33
38
 
34
- ```
35
- ## What Are Core Web Vitals?
39
+ Coverage of the fan-out — not keyword density — is the new ranking proxy. A page with one head keyword but zero passages answering the fan-out is invisible to AI Mode.
36
40
 
37
- Core Web Vitals are three performance metrics that Google uses to measure user experience: Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), and Interaction to Next Paint (INP). [Elaboration follows...]
38
- ```
41
+ ### Entity-First, Terms Second
42
+
43
+ AI Mode resolves **entities** before it resolves terms. When a user asks "compare Stripe and Adyen," the model first grounds "Stripe" and "Adyen" as Knowledge Graph entities (company nodes with type, founding date, product surface, geography) and only then retrieves passages about them. If your content mentions "Stripe" without disambiguating which Stripe (the payments company, not the journalist, not the typeface), you are losing the entity grounding step and your passages will be retrieved less.
44
+
45
+ Engineering rules for entity disambiguation:
46
+
47
+ - **Name entities precisely on first mention.** Use the full proper name plus class: "Stripe (the payments infrastructure company)", "Postgres (the open-source relational database)", "INP (Interaction to Next Paint, a Core Web Vital)."
48
+ - **Mark relationships explicitly.** "Stripe acquired Paystack in 2020" beats "they acquired Paystack" because the LLM doesn't have to resolve a pronoun against an embedding window.
49
+ - **Use canonical identifiers.** Where a Wikipedia / Wikidata page exists for the entity, link to it. This is the cheapest way to anchor your content to the model's entity graph.
50
+ - **Repeat entities by name, not by pronoun**, far more than feels natural in prose. LLMs do not penalize repetition the way human readers do; they reward it as a disambiguation signal.
51
+
52
+ ### Citation-Worthiness Is a Two-Way Street
53
+
54
+ LLMs preferentially cite **content that itself cites**. King's observation: a passage that names a source, an author, and a number is far more likely to survive the embedding sort than a passage that asserts the same fact without provenance. Citation-worthiness is not just "be quotable" — it is "demonstrate that you are downstream of verifiable evidence."
55
+
56
+ Every substantive claim in an AEO asset must include at least one of: a named source (with link), a named author (with credential), or a concrete number (with unit and date). "Most teams use Kubernetes" is unciteable. "65% of CNCF survey respondents reported Kubernetes in production in 2024 ([CNCF Annual Survey 2024](https://cncf.io/...))" is composition-bait — the LLM can lift this passage with attribution and the attribution itself buys you the citation.
39
57
 
40
- ### FAQ Patterns
58
+ ### Composition-Friendly Structure (NLU-Readable Markup)
41
59
 
42
- Include explicit question-answer pairs using natural language question formats:
60
+ LLMs synthesize **structured** content more reliably than flowing prose. The reason is mechanical: passage extractors run on structural boundaries — H2 blocks, list items, table rows, `<dfn>` tags. Prose that flows across these boundaries gets chopped mid-thought and loses the embedding match.
43
61
 
44
- - "What is [X]?"
45
- - "How does [X] work?"
46
- - "Why is [X] important?"
62
+ Make your markup NLU-readable:
47
63
 
48
- These match the query patterns users submit to AI engines and increase the likelihood of citation.
64
+ - **One question per H2.** Phrase H2s as the question a user would type. "How does Postgres streaming replication work?" beats "Streaming replication."
65
+ - **One claim per list item.** Bullets are passage units. A bullet with three claims will retrieve worse than three bullets with one claim each.
66
+ - **Definitions get `<dfn>` or bold + `is`.** First mention of any term that could be the subject of a synthetic query must be marked structurally — either via `<dfn>X</dfn> is Y` or via `**X** is Y`.
67
+ - **Tables for comparative content.** "X vs Y" queries retrieve from tables before they retrieve from prose. A 3-column table (feature, X, Y) outperforms two paragraphs.
68
+ - **FAQ schema for explicit Q&A pairs.** Schema.org FAQPage is not decorative — it is the only structural signal that a passage is intended as a question-answer unit.
49
69
 
50
- ### Fact Density
70
+ ### Multimodal Is Mandatory
51
71
 
52
- Concentrate verifiable facts in the first paragraph and at the start of each section. AI engines prioritize high-fact-density passages over opinion or narrative. Lead with data, statistics, and concrete claims.
72
+ AI Mode retrieves from text, image, audio, video, and transcript indexes simultaneously. A page with only prose is competing with one hand tied. For any AEO asset:
53
73
 
54
- ### Multi-Source Corroboration
74
+ - Include at least one **labeled diagram or chart** with a `<figcaption>` that itself is a citation-worthy sentence. The figcaption is what the multimodal retriever indexes.
75
+ - For procedural content, include a **transcript-style numbered HowTo** with named action verbs (so video and how-to retrievers both have a target).
76
+ - For comparative content, the table above is also the image — render it as an HTML table, not a screenshot of one. HTML tables are passage-extractable; image-of-table is not.
55
77
 
56
- Ensure claims made in the asset can be verified against multiple authoritative sources. AI engines prefer claims that appear consistently across the web. Avoid making claims that only appear in your content -- they are less likely to be cited.
78
+ ### llms.txt Is the Site-Level Equivalent of a Citation
79
+
80
+ At the site root, publish `/llms.txt` listing your AEO-eligible routes with one-sentence descriptions. This file is the site-level analogue of a per-page citation: it tells AI crawlers which URLs to prioritize and what each URL is *about* in your own words. See the "llms.txt" section of `references/pseo-page-anatomy.md` for the format.
81
+
82
+ ### Cross-References
83
+
84
+ - For per-page structural anatomy: `references/pseo-page-anatomy.md` (sections: "Above the fold", "AI citability signals", "llms.txt").
85
+ - For SEO foundations Relevance Engineering builds on: `playbooks/seo.md`.
57
86
 
58
87
  ---
59
88
 
60
89
  ## Discipline Gates
61
90
 
62
- ### DISC-AEO-01: Quote-Worthy Sentences -- Tier 1
91
+ ### DISC-AEO-01: Citation-Worthy Definitional Sentence -- Tier 1
92
+
93
+ **Checks:** Each major section opens with a passage that can be lifted verbatim to answer one synthetic query from the fan-out.
94
+ **Against:** Asset content (H2 section openers).
95
+
96
+ #### Evaluation Criteria
97
+
98
+ 1. **Definitional opener present**
99
+ - PASS: Every H2 section opens with a sentence of the form `<Entity> is <Class> that <claim>` or `<Procedure> involves <N> steps: <enumeration>` within the first 1–2 sentences after the heading, with the entity named precisely (no pronouns, no "it", no "this").
100
+ - WARN: Most H2s open with definitional sentences but 1–2 sections open with context, history, or preamble before the definition.
101
+ - FAIL: Sections consistently open with narrative context, hedging, or backstory ("The history of X dates back to...") instead of a passage-extractable definition.
102
+
103
+ 2. **Standalone citability**
104
+ - PASS: 3+ sentences in the asset can be quoted verbatim by an LLM as a complete answer — they contain the named entity, the claim, and no unresolved pronouns or anaphora.
105
+ - WARN: 1–2 standalone citable sentences exist; the rest require surrounding sentences to make sense.
106
+ - FAIL: Zero sentences are independently citable — every claim requires reading neighboring sentences for entity resolution or context.
107
+
108
+ ### DISC-AEO-02: Query Fan-Out Coverage -- Tier 1
63
109
 
64
- **Checks:** Presence of verbatim-quotable standalone answer sentences
65
- **Against:** Asset content
110
+ **Checks:** The asset covers the synthetic query fan-out, not just the head query.
111
+ **Against:** Brief's target query plus the enumerated fan-out (definitional, procedural, comparative, troubleshooting, entity-disambiguating sub-queries).
66
112
 
67
113
  #### Evaluation Criteria
68
114
 
69
- 1. **Quote count**
70
- - PASS: 3+ sentences that could be quoted verbatim as standalone answers by an AI engine (complete, factual, no surrounding context needed)
71
- - WARN: 1-2 quotable sentences in the asset
72
- - FAIL: 0 quotable sentences -- all sentences require surrounding context to make sense
115
+ 1. **Fan-out enumeration**
116
+ - PASS: The brief or asset front-matter enumerates 8+ synthetic sub-queries spanning at least 4 of the 5 fan-out categories (definitional, procedural, comparative, troubleshooting, disambiguating).
117
+ - WARN: 4–7 sub-queries listed, or fan-out covers only 2–3 categories.
118
+ - FAIL: No fan-out enumerated, or only the head query targeted.
73
119
 
74
- 2. **Quote placement**
75
- - PASS: Quotable sentences appear in section openers (immediately after H2 headings) and first paragraphs
76
- - WARN: Quotable sentences exist but are buried in mid-body paragraphs rather than section openers
77
- - FAIL: N/A -- linked to quote count result
120
+ 2. **Passage coverage of fan-out**
121
+ - PASS: Every enumerated sub-query maps to at least one passage (paragraph, list, or table row) in the asset that could be lifted as a verbatim answer to it.
122
+ - WARN: 70–99% of sub-queries have a mapped passage; 1–2 sub-queries have no passage answering them.
123
+ - FAIL: Under 70% of enumerated sub-queries have a passage answer in the asset.
78
124
 
79
- ### DISC-AEO-02: FAQ/HowTo Schema -- Tier 1
125
+ ### DISC-AEO-03: Entity Disambiguation and Linking -- Tier 1
80
126
 
81
- **Checks:** Structured data for AI engine consumption
82
- **Against:** schema.org FAQPage or HowTo specification
127
+ **Checks:** Named entities are disambiguated structurally so AI Mode can ground them against the Knowledge Graph.
128
+ **Against:** Asset content; Wikidata / Wikipedia entity database for canonical identifiers.
83
129
 
84
130
  #### Evaluation Criteria
85
131
 
86
- 1. **Schema presence**
87
- - PASS: FAQPage or HowTo schema is specified with well-formed Q&A pairs or numbered steps
88
- - WARN: Schema type is specified but incomplete -- missing answers, missing step descriptions, or fewer than 3 Q&A pairs
89
- - FAIL: No FAQ/HowTo schema on content that contains question-answer pairs or step-by-step instructions
132
+ 1. **First-mention disambiguation**
133
+ - PASS: Every proper noun on first mention is named with full proper name + class qualifier ("Stripe (the payments infrastructure company)", "INP (Interaction to Next Paint)"), and every entity that has a Wikipedia/Wikidata page is linked on first mention.
134
+ - WARN: Most first mentions are disambiguated but 1–2 entities are introduced bare (no class qualifier and no canonical link).
135
+ - FAIL: Entities are introduced without class qualifiers or canonical links; ambiguity remains (e.g., "Stripe" with no qualifier in a payments article that competes with non-payments senses).
90
136
 
91
- 2. **Q&A completeness**
92
- - PASS: Every FAQ pair has a substantive answer of 2+ sentences; every HowTo step has a clear action description
93
- - WARN: Some answers are single-sentence or thin (under 20 words); some steps lack detail
94
- - FAIL: FAQ has questions without answers, placeholder text in answers, or HowTo steps with no description
137
+ 2. **Pronoun and anaphora load**
138
+ - PASS: In each H2 section, named entities are referred to by name (not by pronoun) at least 60% of the time; key claims contain the entity name explicitly.
139
+ - WARN: 40–59% by-name reference rate; some passages rely on "it" or "they" where the entity name would improve passage independence.
140
+ - FAIL: Sections rely heavily on pronouns ("it", "they", "this") to refer to entities, breaking passage-level independence.
95
141
 
96
- ### DISC-AEO-03: Author/Expert Markup -- Tier 2
142
+ ### DISC-AEO-04: Citation Provenance Density -- Tier 1
97
143
 
98
- **Checks:** Author attribution and expertise signals
99
- **Against:** Asset content and metadata
144
+ **Checks:** Substantive claims demonstrate downstream-of-evidence status via sources, authors, or numbers.
145
+ **Against:** Asset content; external sources cited.
100
146
 
101
147
  #### Evaluation Criteria
102
148
 
103
- 1. **Author schema**
104
- - PASS: Author name and credentials (title, organization, relevant expertise area) specified in asset metadata or byline
105
- - WARN: Author name is present but no credentials, bio, or expertise indicators
106
- - FAIL: No author attribution -- content has no byline or author metadata
149
+ 1. **Provenance per claim**
150
+ - PASS: Every quantitative claim (percentages, counts, dates, dollar amounts) names a source (with link) or an author (with credential), and at least 3 distinct external sources are cited in the asset.
151
+ - WARN: Some quantitative claims have provenance, but 1–2 numeric claims appear without a named source or author.
152
+ - FAIL: Numeric claims appear unsourced, or fewer than 2 distinct external sources are cited in the entire asset.
107
153
 
108
- 2. **Expertise signals**
109
- - PASS: Content references the author's specific experience, proprietary data, original research, or direct domain expertise
110
- - WARN: Generic expertise claim ("written by an expert") without specific supporting details
111
- - FAIL: No expertise signals present -- content could have been written by anyone without domain knowledge
154
+ 2. **Author and expertise signals**
155
+ - PASS: Author name and a credential or expertise indicator (title, organization, relevant first-party experience) are present in asset metadata or byline; the content references at least one piece of first-party experience, proprietary data, or original analysis.
156
+ - WARN: Author name present but no credential, or credential present but content makes no first-party claim.
157
+ - FAIL: No author attribution and no first-party signal — content could have been written by anyone.
112
158
 
113
- ### DISC-AEO-04: Cross-Domain Fact Consistency -- Tier 1
159
+ ### DISC-AEO-05: Composition-Friendly Structural Markup -- Tier 1
114
160
 
115
- **Checks:** Claims do not contradict other campaign assets
116
- **Against:** Other assets in the same campaign (via MANIFEST.json cross-reference)
161
+ **Checks:** Markup is NLU-readable: structural boundaries align with passage boundaries, schema is present for Q&A and definitional content.
162
+ **Against:** Asset HTML / Markdown structure and schema.org markup.
117
163
 
118
164
  #### Evaluation Criteria
119
165
 
120
- 1. **Number consistency**
121
- - PASS: All numeric claims (percentages, counts, dates, prices) in this asset match the same claims in other campaign assets
122
- - WARN: Numeric claims use different rounding or timeframes but are directionally consistent (e.g., "over 50%" vs "53%")
123
- - FAIL: Numeric claims directly contradict claims in other campaign assets (e.g., "30% improvement" here vs "50% improvement" elsewhere)
166
+ 1. **H2-as-question and one-claim-per-bullet**
167
+ - PASS: H2 headings are phrased as questions matching likely user queries; bullet lists contain one claim per item; comparative content uses HTML tables, not prose paragraphs.
168
+ - WARN: Most H2s are question-phrased but 1–2 are noun-phrase ("About X"); some bullets contain multiple claims; comparative content uses prose where a table would retrieve better.
169
+ - FAIL: H2s are noun-phrase labels ("Overview", "Background", "About"); bullets contain paragraph-length multi-claim content; comparative content is delivered entirely in prose.
124
170
 
125
- 2. **Positioning consistency**
126
- - PASS: Key product/service claims and positioning statements are consistent across all campaign assets
127
- - WARN: Minor phrasing differences that could be interpreted differently by AI engines citing different assets
128
- - FAIL: Direct contradictions in product claims, feature descriptions, or positioning across campaign assets
171
+ 2. **Schema markup for definitional and Q&A content**
172
+ - PASS: Definitional content uses `<dfn>` or `**term** is` patterns on first mention; FAQ content has schema.org `FAQPage` with 3+ well-formed Q&A pairs (every answer 2+ sentences); HowTo content has schema.org `HowTo` with named steps and action-verb openers.
173
+ - WARN: Some structural markup present but incomplete FAQPage with under 3 pairs, or HowTo with steps missing descriptions, or definitions present but not marked structurally.
174
+ - FAIL: No schema markup on content that contains explicit Q&A or step-by-step procedures; no `<dfn>` or equivalent on definitional content.
129
175
 
130
- ### DISC-AEO-05: Direct Answer Format -- Tier 2
176
+ ### DISC-AEO-06: Cross-Asset Fact Consistency -- Tier 1
131
177
 
132
- **Checks:** Sections open with definitive answers before elaboration
133
- **Against:** Asset content structure (H2 sections)
178
+ **Checks:** Claims in this asset do not contradict claims in other campaign assets — AI Mode will retrieve passages from across your site and surface contradictions to users.
179
+ **Against:** Other assets in the same campaign (via MANIFEST.json cross-reference).
134
180
 
135
181
  #### Evaluation Criteria
136
182
 
137
- 1. **Section opener quality**
138
- - PASS: Each major section (H2) opens with a 1-2 sentence definitive answer to the section's implicit question before any elaboration
139
- - WARN: Most sections open with direct answers but 1-2 sections start with context, background, or preamble before answering
140
- - FAIL: Sections consistently open with context, history, or preamble instead of answering the implicit question first
183
+ 1. **Numeric consistency**
184
+ - PASS: All numeric claims (percentages, counts, dates, prices) in this asset match the same claims in other campaign assets exactly, or are dated/sourced explicitly so the LLM can resolve the freshness.
185
+ - WARN: Numeric claims use different rounding or timeframes but are directionally consistent ("over 50%" vs "53%") and the difference is explainable from dates/sources.
186
+ - FAIL: Numeric claims directly contradict claims in other campaign assets ("30% faster" here, "50% faster" elsewhere) with no dated explanation, creating a contradiction the LLM may surface.
141
187
 
142
- 2. **Independent citability**
143
- - PASS: Key facts and answers can be extracted from individual paragraphs without needing surrounding paragraphs for context
144
- - WARN: Some facts require reading 2+ paragraphs together to get the full context
145
- - FAIL: Facts are spread across multiple sections with no self-contained, independently extractable statements
188
+ 2. **Entity and positioning consistency**
189
+ - PASS: Named entities (product, ICP role, alternative beaten) and positioning claims are referenced with identical naming across all campaign assets.
190
+ - WARN: Minor phrasing differences for the same entity or claim that an LLM could resolve as the same intent.
191
+ - FAIL: Same entity referred to by inconsistent names across assets, or positioning claims that contradict each other (different ICP role named, different alternative beaten).
146
192
 
147
193
  ---
148
194
 
149
195
  ## Base Gate Overrides
150
196
 
151
- None -- all base gates keep default tiers.
197
+ | Base Gate ID | Default Tier | Override Tier | Reason |
198
+ |-------------|-------------|---------------|--------|
199
+ | GATE-10 | Tier 2 (advisory) | Tier 1 (blocking) | Structural markup correctness (H1, H2 hierarchy, schema validity) is load-bearing for passage extraction in AI Mode. Malformed structure does not just degrade SEO display — it makes the asset invisible to passage retrievers. |
152
200
 
153
201
  ---
154
202
 
155
203
  ## Format Rules
156
204
 
157
- - **H2 headings:** Phrased as questions matching user queries ("What Is X?" not "About X")
158
- - **First paragraph:** Must contain a definitive answer to the page's primary question within the first 2 sentences
159
- - **FAQ section:** Minimum 3 Q&A pairs when using FAQPage schema; each answer must be 2+ sentences
160
- - **HowTo section:** Numbered steps with clear action verbs as step openers (e.g., "Install the package" not "The package should be installed")
161
- - **Word count:** 1,500+ words for comprehensive AEO content -- AI engines favor depth and thoroughness over brevity
162
- - **Sentence structure:** Key answer sentences should be 15-30 words -- long enough to be complete, short enough to be quotable
205
+ - **Answer block (TL;DR):** 2–3 sentences, 40–80 words, immediately after H1. Contains the named entity, the class, and the distinguishing claim. This is the single most-extracted passage on the page.
206
+ - **H2 headings:** Phrased as full natural-language questions matching the fan-out ("How does X work?", "What is the difference between X and Y?"). No noun-phrase labels.
207
+ - **Definitional sentences:** Marked with `<dfn>` on first mention, or rendered as `**term** is <class> that <claim>`. Each H2 section opens with one.
208
+ - **FAQ schema:** Minimum 3 Q&A pairs when using FAQPage schema; each answer 2+ sentences (40+ words) and self-contained.
209
+ - **HowTo schema:** Numbered steps with action-verb openers ("Install the package", not "The package should be installed"); each step has a name and description.
210
+ - **Comparative content:** HTML tables, not prose. Minimum 3 columns (feature, option A, option B); minimum 5 rows.
211
+ - **Citations:** Every numeric claim cites a named source with link; at least 3 distinct external sources across the asset.
212
+ - **Entity links:** First mention of any entity with a Wikipedia/Wikidata page links to it.
213
+ - **Sentence length for answer passages:** 15–30 words — long enough to be complete, short enough to be lifted.
214
+ - **llms.txt:** Site root must publish `/llms.txt` listing AEO routes with one-sentence descriptions. Updated on each new AEO route.
215
+ - **Word count:** No fixed minimum — depth follows the fan-out. A 6-query fan-out may need 800 words; a 20-query fan-out may need 2500. Coverage, not word count, is the rule.
163
216
 
164
217
  ---
165
218
 
166
219
  ## Examples
167
220
 
168
- ### Good: Definitive Section Opener
221
+ ### Good: Citation-Worthy Definitional Opener (King-flavored)
169
222
 
170
223
  ```
171
- ## What Is Answer Engine Optimization?
224
+ ## What is Interaction to Next Paint (INP)?
172
225
 
173
- Answer Engine Optimization (AEO) is the practice of structuring web content so AI-powered answer engines can accurately extract, attribute, and cite it in their responses. Unlike traditional SEO, AEO prioritizes citation-worthiness and fact density over keyword placement.
226
+ Interaction to Next Paint (INP) is a Core Web Vital that measures the latency of every user
227
+ interaction with a page and reports the worst-case latency observed during the visit
228
+ (Google Web Vitals, March 2024). INP replaced First Input Delay (FID) as a Core Web Vital
229
+ in March 2024 because FID only measured the first interaction, missing the 95% of slow
230
+ interactions that occur after page load.
174
231
  ```
175
232
 
176
- ### Good: Quotable Standalone Sentence
233
+ Why this works: H2 is question-phrased. First sentence is the definitional passage — entity named with full proper name and class qualifier, claim is concrete, source is cited inline. Second sentence performs entity disambiguation (INP vs FID) and supplies a comparative passage for the "INP vs FID" synthetic query in the fan-out. Both sentences are standalone-citable.
234
+
235
+ ### Good: Composition-Friendly Comparative Table
177
236
 
178
237
  ```
179
- "Core Web Vitals consist of three metrics: Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), and Interaction to Next Paint (INP)."
180
- -- This sentence can be lifted verbatim by any AI engine as a complete, accurate answer.
238
+ ## How does Postgres logical replication differ from physical replication?
239
+
240
+ Postgres supports two replication modes — logical and physical — with different trade-offs:
241
+
242
+ | Property | Physical Replication | Logical Replication |
243
+ |-----------------------|-----------------------------------|-----------------------------------|
244
+ | Replication unit | WAL records (byte-for-byte) | Logical changes (row-level) |
245
+ | Cross-version support | No (same major version only) | Yes (cross-version permitted) |
246
+ | Selective tables | No (whole cluster replicated) | Yes (per-table publication) |
247
+ | Use case | High-availability standby | Migration, ETL, partial sync |
181
248
  ```
182
249
 
183
- ### Bad: Hedging Language
250
+ Why this works: Table is HTML-renderable (passage-extractable per row). Each row is a single comparative claim — an LLM can lift one row to answer one synthetic sub-query. Entity disambiguation is explicit ("Postgres logical replication" vs "Postgres physical replication" — both terms appear in the header so the embedding match resolves cleanly).
251
+
252
+ ### Bad: Keyword-Stuffed, Entity-Ambiguous Passage
184
253
 
185
254
  ```
186
- "It could be argued that Core Web Vitals might include several important metrics that some developers believe are essential."
187
- -- No AI engine will quote this. Too uncertain, no concrete facts, no standalone value.
255
+ ## INP
256
+
257
+ INP is important. Many sites are tracking INP because INP is a new metric.
258
+ It can be slow if the page has too much JavaScript. You should improve INP
259
+ to make your site faster. INP optimization is a key part of SEO.
188
260
  ```
189
261
 
190
- ### Bad: Buried Answer
262
+ Why this fails: H2 is a noun-phrase label, not a question. The entity is named but never disambiguated — "INP" appears 5 times but the class qualifier ("a Core Web Vital", "Interaction to Next Paint") never appears, so the LLM cannot ground the entity. Pronoun "it" breaks passage independence. No citation, no numbers, no source. Keyword repetition without semantic distance variation produces a low-similarity score against the fan-out, not a high one.
263
+
264
+ ### Bad: Buried Answer, Narrative Preamble
191
265
 
192
266
  ```
193
- ## What Is AEO?
267
+ ## What is Answer Engine Optimization?
194
268
 
195
- The history of search engines dates back to the 1990s when Archie first indexed FTP sites. Over the decades, search evolved through directories, PageRank, and semantic search. Today, a new paradigm is emerging... [answer finally appears in paragraph 4]
196
- -- The actual answer is buried under context. AI engines extract from the first 1-2 sentences after a heading.
269
+ In the early days of search, Archie indexed FTP servers and Yahoo built directories.
270
+ As the web grew, ranking became algorithmic with PageRank, and then semantic with BERT.
271
+ Now a new paradigm is emerging — one driven by large language models and probabilistic
272
+ retrieval. In this new world, marketers are scrambling to adapt. [Answer appears in paragraph 4.]
197
273
  ```
198
274
 
275
+ Why this fails: The first sentence after the H2 is narrative history, not a definitional passage. The passage extractor will lift sentence 1 as the candidate answer to "what is AEO" — and sentence 1 is about Archie and Yahoo, not about AEO. The asset loses the fan-out match to a competitor who opens with the definition.
276
+
199
277
  ---
200
278
 
201
279
  ## Anti-Patterns
202
280
 
203
- 1. **Opening sections with history/context instead of direct answers** -- AI engines extract from the first sentences after a heading. If those sentences are background context, the actual answer is missed or a less authoritative source is cited instead.
281
+ 1. **Opening sections with history/context instead of the definitional passage.** AI Mode passage extractors lift the first 1–2 sentences after a heading. If those sentences are backstory, the actual definition is invisible and a competitor's passage wins the fan-out match. Lead with the definition; supply history later in the section if at all.
282
+
283
+ 2. **Hedging language as a substitute for evidence.** "It could be argued", "Some believe", "Arguably" all signal absence of citation. LLMs preferentially cite content that itself cites — a hedge tells the model your passage is downstream of nothing. Replace hedges with sources, authors, and numbers.
284
+
285
+ 3. **Pronoun-heavy passages that break passage independence.** "It", "they", "this approach" all force the embedding model to resolve anaphora against a context window it doesn't carry into retrieval. Every passage must name the entity explicitly, even at the cost of "unnatural" prose repetition. LLMs reward this; human readers tolerate it.
204
286
 
205
- 2. **Hedging language** -- Phrases like "It could be argued", "Some experts believe", "It might be the case" signal uncertainty. AI engines prefer definitive statements and will skip hedged claims in favor of direct ones from other sources.
287
+ 4. **Entity ambiguity on first mention.** Introducing "Stripe" or "Postgres" or "INP" without a class qualifier and without a canonical link forces the model to guess which entity you mean. The guess often goes wrong, and your passage never participates in the right fan-out cluster.
206
288
 
207
- 3. **FAQ schema with thin answers** -- FAQPage schema where answers are single words, sentence fragments, or placeholder text ("Coming soon"). This provides no value to AI engines and may cause schema validation warnings.
289
+ 5. **Treating schema as decoration.** Sprinkling `FAQPage` schema with single-word answers, or `HowTo` schema with no step descriptions, is worse than no schema it tells the parser to expect structured Q&A and then disappoints it. Schema is the contract that says "this content is genuinely composition-ready"; if the content doesn't honor the contract, the page is downranked.
208
290
 
209
- 4. **Self-contradicting facts across assets** -- Publishing different numbers or claims in different campaign assets (blog says "30% faster", landing page says "2x faster"). AI engines may cite both, surfacing the contradiction to users.
291
+ 6. **One-page-per-keyword thinking.** The 2015 SEO playbook said "one keyword, one page." Relevance Engineering says "one fan-out, one cluster of passages distributed across as many surfaces as the fan-out demands." A single page rarely answers an entire fan-out. Plan content as a cluster: pillar page + answer-block pages + comparison pages + FAQ pages, cross-linked, with each cluster member optimized for a sub-region of the fan-out.
210
292
 
211
- 5. **No author attribution on expertise-dependent content** -- Publishing authoritative claims about health, finance, legal, or technical topics without author credentials. AI engines increasingly weight E-E-A-T signals when selecting citation sources.
293
+ 7. **Treating AEO as a separate vendor / discipline from SEO.** Outsourcing "AEO" to a different team or tool while running SEO separately produces contradictory assets. Relevance Engineering subsumes both the same passages need to serve both deterministic SEO retrieval and probabilistic AI-Mode composition. See `playbooks/seo.md`.
294
+
295
+ 8. **Single-format content in a multimodal index.** Text-only assets compete against text + image + video + transcript on the same query. A well-labeled HTML table (which is also a chart), a diagram with a citation-worthy `<figcaption>`, and a transcript-style HowTo each open a different retrieval surface. Skipping them concedes those surfaces to competitors.
296
+
297
+ 9. **Rank-tracking via logged-out searches.** King explicitly flags this: logged-out SERPs no longer reflect what most users see in personalized AI Mode results. AEO measurement must be presence-based (citation tracking) not rank-based.
212
298
 
213
299
  ---
214
300
 
215
301
  ## Metrics
216
302
 
217
- Track these indicators for AEO content after shipping:
303
+ Track these indicators for AEO content after shipping. The bias here is **presence** (am I cited?) and **readiness** (is my content eligible to be cited?), not rank.
304
+
305
+ - **AI Mode citation rate** — Manual or scripted check across ChatGPT, Perplexity, Gemini, Claude, and Google AI Overviews for the head query and 3–5 sub-queries from the fan-out; check monthly. The metric is "cited / not cited" per surface, not a position number.
306
+ - **Brand mention frequency in AI summaries** — For broad queries adjacent to your category, count how often your brand or product is mentioned (even without a click-through link). This is the AI-Mode equivalent of share-of-voice.
307
+ - **Fan-out coverage rate** — For each enumerated synthetic sub-query, did at least one passage in your asset cluster get cited? Target 70%+ coverage.
308
+ - **Featured snippet / Position 0 capture** — Google Search Console SERP monitoring; featured snippet capture is a strong leading indicator of AI Overview inclusion.
309
+ - **FAQ rich result appearances** — GSC Rich Results report; tracks how often FAQPage schema generates rich results, which doubles as a proxy for whether the schema is being parsed correctly.
310
+ - **Citation accuracy** — When cited by an AI engine, verify the cited text matches your source verbatim. Drift (LLM paraphrases that introduce errors) is a signal that your passages are not standalone-citable enough — the model is rewriting them to make them work, and rewrites introduce error.
311
+ - **llms.txt crawl hits** — Server-log check for AI-crawler hits on `/llms.txt`; presence of crawler hits is a readiness signal that AI systems are using the route map.
312
+ - **Cross-asset contradiction count** — Diff numeric claims across all campaign assets monthly; target zero contradictions. AI Mode will surface contradictions between two of your own pages to a user, eroding trust faster than any single bad page.
313
+
314
+ ---
315
+
316
+ ## Sources
317
+
318
+ Mike King's Relevance Engineering framework as cited throughout this playbook:
319
+
320
+ - Mike King, "How AI Mode Works" — iPullRank, 2025. https://ipullrank.com/how-ai-mode-works
321
+ - Mike King, "Optimizing for New Search: How Relevance Engineering Is Reshaping SEO" — Advanced Web Ranking blog. https://www.advancedwebranking.com/blog/optimizing-new-search-how-relevance-engineering-is-reshaping-seo
322
+ - Search Engine Land, "Mike King — SMX Advanced 2025 interview" (named 2025 Search Marketer of the Year for Relevance Engineering work). https://searchengineland.com/mike-king-smx-advanced-2025-interview-456186
323
+
324
+ Supporting material:
218
325
 
219
- - **AI engine citations** -- Manual check across ChatGPT, Perplexity, Gemini, and Copilot for brand/product queries; check monthly
220
- - **Featured snippet captures** -- Google Search Console and SERP monitoring tools; featured snippets indicate extraction-worthy content
221
- - **FAQ rich result appearances** -- GSC Rich Results report; tracks how often FAQ schema generates rich results
222
- - **Direct answer box presence** -- Monitor target queries in Google for Position 0 / direct answer box appearances
223
- - **Citation accuracy** -- When cited by AI engines, verify the cited content matches the source accurately (no hallucinated claims attributed to you)
326
+ - AirOps, "10x Content Engineer: Michael King" interview (entity-first SEO and passage-level optimization). https://www.airops.com/blog/10x-content-engineer-michael-king
327
+ - Operational AEO anatomy used by takeToMarket: `references/pseo-page-anatomy.md`.