akili-specs 2.14.0 → 2.15.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.
@@ -137,6 +137,7 @@ Produce `docs/specs/$SPEC_PATH/seo-setup-report.md` documenting:
137
137
  - Record every finding with its structure: **Issue / Impact / Evidence / Fix / Priority**.
138
138
  - Respect its schema-detection limitation: static fetches (`curl`, `web_fetch`) cannot see JS-injected JSON-LD. Validate structured data via `url_inspection_inspect.richResultsResult` or a rendering tool, never via static HTML alone.
139
139
  - Apply its International SEO checklist (hreflang reciprocity, self-reference, `x-default`, cross-locale canonicals, locale sitemaps) whenever the site serves multiple languages or regions.
140
+ - Apply its **GEO** section (Step 2.8) for generative-engine visibility. GEO is a layer on top of ranking, never a substitute — run the priority order first. When citing a magnitude, carry the skill's source tier: the KDD 2024 figures are peer-reviewed; AI Overview and crawler-behaviour figures are industry analyses and must not be presented as measured fact.
140
141
 
141
142
  Use `systematic-debugging` when results are inconsistent with site reality.
142
143
 
@@ -210,6 +211,24 @@ For the pages sampled in Step 2.5, apply the on-page checklist from the `seo-aud
210
211
 
211
212
  Record each failure as a finding using the skill's Issue / Impact / Evidence / Fix / Priority structure.
212
213
 
214
+ #### Step 2.8 — GEO audit (generative-engine visibility)
215
+
216
+ For the same sampled pages, apply the `seo-audit` skill's **GEO** section (evidence and sources in its
217
+ `references/geo.md`). Highest-yield checks first — the measured gains come from evidence, not markup:
218
+
219
+ - **Evidence density:** claims carry verifiable statistics with named sources; credible quotations where the topic supports them; outbound citations to reliable sources.
220
+ - **Self-containment test:** for each passage the page wants cited, confirm it still makes sense lifted out with no surrounding context. Flag anaphora that depends on the previous paragraph ("this approach", "as mentioned above"). No on-page check above catches this.
221
+ - **Definitional sentences:** each term the page wants to own has a *"X is a Y that does Z."* sentence at first use.
222
+ - **Entity resolution:** the page states in one sentence what the subject is and who made it; `Person`/`Organization` node with `sameAs`.
223
+ - **Freshness:** `dateModified` exposed and truthful; no stale visible version numbers or dates.
224
+ - **AI crawler directives:** `robots.txt` separates training agents (`GPTBot`, `ClaudeBot`, `Google-Extended`) from retrieval agents (`OAI-SearchBot`, `Claude-SearchBot`, `PerplexityBot`). A blanket AI-bot block removes the site from AI answers too — confirm the owner's intent before calling either state correct.
225
+ - **Unverifiable claims:** flag numeric or superlative claims in `<title>`, meta description, or JSON-LD that no source supports.
226
+
227
+ **Do not raise:** a missing `llms.txt` (no measured visibility effect — see the skill), or any finding
228
+ that asserts engagement metrics such as bounce rate affect rankings.
229
+
230
+ Record each failure in the same Issue / Impact / Evidence / Fix / Priority format.
231
+
213
232
  ---
214
233
 
215
234
  ### Phase 3: Write `seo-audit-report.md`
@@ -227,8 +246,9 @@ Required sections:
227
246
  7. Render Audit
228
247
  8. Internal Linking Findings
229
248
  9. On-Page SEO Findings — Step 2.7 results, each in the `seo-audit` Issue / Impact / Evidence / Fix / Priority format.
230
- 10. Remediation Planprioritized (High / Medium / Low) actionable items, each scoped enough that an implementer can execute it without further discovery.
231
- 11. Re-audit Schedulewhen to run `/akili-seo <domain>` again.
249
+ 10. GEO FindingsStep 2.8 results, same format. State the source tier next to any magnitude cited, and keep GEO items ranked below blocking classic-SEO fixes in the remediation plan (GEO layers on ranking, it does not substitute for it).
250
+ 11. Remediation Planprioritized (High / Medium / Low) actionable items, each scoped enough that an implementer can execute it without further discovery.
251
+ 12. Re-audit Schedule — when to run `/akili-seo <domain>` again.
232
252
 
233
253
  The report title must be `# SEO Audit Report — <domain>`.
234
254
 
@@ -268,6 +288,8 @@ After the command completes, verify:
268
288
  - [ ] Every URL in the sitemap is either audited or explicitly excluded with a reason.
269
289
  - [ ] Every structured-data warning is reproduced with the exact bad value and the exact fix.
270
290
  - [ ] On-page findings from Step 2.7 use the `seo-audit` Issue / Impact / Evidence / Fix / Priority format.
291
+ - [ ] GEO findings from Step 2.8 are present, carry their source tier where a magnitude is cited, and rank below blocking classic-SEO fixes in the remediation plan.
292
+ - [ ] No finding claims engagement metrics (bounce rate, time on page) affect rankings, and none flags a missing `llms.txt`.
271
293
  - [ ] The implementation prompt is self-contained and would not require this conversation to execute.
272
294
 
273
295
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: seo-audit
3
- description: When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," or "indexing issues." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. In AKILI-SPECS projects, /akili-seo loads this skill in its audit phase.
3
+ description: When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," or "indexing issues." Also covers generative-engine visibility (GEO/AEO): "AI Overviews," "AI search," "not showing up in ChatGPT," "get cited by AI," "GEO," "answer engine optimization," "llms.txt," "AI crawlers," "GPTBot," or "ClaudeBot." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. In AKILI-SPECS projects, /akili-seo loads this skill in its audit phase.
4
4
  license: MIT
5
5
  metadata:
6
6
  author: Corey Haines (coreyhaines31)
@@ -8,7 +8,7 @@ metadata:
8
8
  adapted-by: "Juan Carlos Cadavid — jcadavid.com"
9
9
  adapted-for: "AKILI-SPECS"
10
10
  binding: core
11
- version: 2.0.0
11
+ version: 2.1.0
12
12
  ---
13
13
 
14
14
  # SEO Audit
@@ -61,6 +61,11 @@ Reporting "no schema found" based solely on `web_fetch` or `curl` leads to false
61
61
  4. **Content Quality** (does it deserve to rank?)
62
62
  5. **Authority & Links** (does it have credibility?)
63
63
 
64
+ **GEO is a layer, not a sixth priority.** Generative-engine visibility (AI Overviews, ChatGPT,
65
+ Perplexity) is applied *on top of* pages that already rank or can — roughly three quarters of AI
66
+ Overview citations come from pages already in the top 10. Never trade a fix from the list above for a
67
+ GEO fix. Run the priority order first, then apply the [GEO section](#generative-engine-optimization-geo).
68
+
64
69
  ---
65
70
 
66
71
  ## Technical SEO Audit
@@ -71,6 +76,13 @@ Reporting "no schema found" based solely on `web_fetch` or `curl` leads to false
71
76
  - Check for unintentional blocks
72
77
  - Verify important pages allowed
73
78
  - Check sitemap reference
79
+ - **`Disallow` is not `noindex`.** A disallowed URL can still be indexed (from external links) and will show as "Indexed, though blocked by robots.txt". To remove a page from the index you must let Google crawl it and serve `noindex` — blocking it prevents Google from ever seeing the directive. A `noindex` line inside `robots.txt` is unsupported and ignored.
80
+
81
+ **AI crawler directives** (see [GEO reference](references/geo.md) for the full agent table)
82
+ - Distinguish **training** agents (`GPTBot`, `ClaudeBot`, `Google-Extended`) from **retrieval** agents (`OAI-SearchBot`, `Claude-SearchBot`, `PerplexityBot`) and user-triggered fetchers (`ChatGPT-User`, `Claude-User`, `Perplexity-User`)
83
+ - **High-impact finding:** a blanket AI-bot block removes the site from AI answers as well as from training corpora. Confirm the client's intent before treating either state as correct
84
+ - `Google-Extended` is a robots.txt token only — it never appears in logs, and blocking it does not affect `Googlebot`, Search, or AI Overviews
85
+ - Where the requirement is genuine prevention rather than preference, note that robots.txt is advisory and escalate to WAF/bot management
74
86
 
75
87
  **XML Sitemap**
76
88
  - Exists and accessible
@@ -338,6 +350,30 @@ Three equivalent placement methods: HTML `<link>` in `<head>`, HTTP `Link` heade
338
350
  - No keyword cannibalization
339
351
  - Logical topical clusters
340
352
 
353
+ ### Structured Data
354
+
355
+ Read the **Schema Markup Detection Limitation** above before auditing this — a static fetch cannot
356
+ see JS-injected JSON-LD, and reporting "no schema found" from `curl` output is a false finding.
357
+
358
+ **Check for:**
359
+ - Correct type for the page's purpose (`Article`/`TechArticle`, `Product`, `FAQPage`, `HowTo`, `BreadcrumbList`, `Organization`, `Person`, `SoftwareApplication`, `LocalBusiness`)
360
+ - Validates without errors in the Rich Results Test
361
+ - Markup matches **visible** page content — invisible or contradictory markup is a spam-policy violation, not an optimization
362
+ - `dateModified` present and truthful on content that changes
363
+ - Entity nodes (`Organization` / `Person`) carry `sameAs` links to authoritative profiles
364
+ - `@id` used consistently so nodes can reference each other instead of being duplicated
365
+ - One coherent graph per page rather than several disconnected islands
366
+
367
+ **Common issues:**
368
+ - Required properties missing, so the type is ineligible for rich results
369
+ - `FAQPage` markup on content that is not a genuine Q&A
370
+ - Schema describing content the user cannot see
371
+ - Stale `dateModified` auto-set to build time on unchanged pages
372
+ - Duplicate `Organization` nodes on every page with no shared `@id`
373
+
374
+ Structured data also has a measurable association with citation in generative answers — see the
375
+ [GEO section](#generative-engine-optimization-geo).
376
+
341
377
  ---
342
378
 
343
379
  ## Content Quality Assessment
@@ -373,12 +409,86 @@ Three equivalent placement methods: HTML `<link>` in `<head>`, HTTP `Link` heade
373
409
  - Better than top-ranking competitors
374
410
  - Updated and current
375
411
 
376
- ### User Engagement Signals
412
+ ### User Engagement Signals — diagnostic only, not ranking factors
413
+
414
+ **Google does not use analytics engagement metrics as ranking factors.** John Mueller: *"We don't use
415
+ bounce rate in search rankings."* Gary Illyes: *"we don't use analytics/bounce rate in search
416
+ ranking."* Google has denied this for roughly a decade.
417
+
418
+ Never write a finding that says "improve bounce rate to improve rankings" — it is a causal claim
419
+ Google has explicitly denied, and it damages the credibility of the correct findings next to it.
420
+
421
+ Use these metrics the other way round: as **diagnostics that localize a content problem**, whose fix
422
+ is the content itself.
423
+
424
+ | Metric | Read it as |
425
+ |---|---|
426
+ | High exit rate on a ranking page | Possible intent mismatch — the page ranks for a query it does not answer |
427
+ | Very low time on page for long-form content | Content may be unscannable, or the answer is buried |
428
+ | Pages per session | Internal linking and topical-cluster coverage signal |
429
+ | Return visits | Brand and content-quality signal (correlates with, does not cause, ranking) |
430
+
431
+ - Sources and exact quotes: [SEJ: Is bounce rate a Google ranking factor?](https://www.searchenginejournal.com/ranking-factors/bounce-rate/)
432
+
433
+ ---
434
+
435
+ ## Generative Engine Optimization (GEO)
436
+
437
+ Visibility inside AI-generated answers — Google AI Overviews / AI Mode, ChatGPT, Claude, Perplexity —
438
+ rather than in a ranked list of links. See the [GEO reference](references/geo.md) for the measured
439
+ evidence, source tiers, and the full AI-crawler agent table.
440
+
441
+ **GEO layers on top of ranking; it does not replace it.** Roughly three quarters of AI Overview
442
+ citations come from pages already in the top 10. Audit the priority order first.
443
+
444
+ ### What measurably works
445
+
446
+ Peer-reviewed measurement (GEO-bench, KDD 2024: ~10,000 queries across nine datasets) found the
447
+ largest visibility gains come from **evidence, not markup**:
448
+
449
+ | Finding to raise | Measured effect |
450
+ |---|---|
451
+ | Claims lack **verifiable statistics** with named sources | ~30–40% gain when added |
452
+ | No **credible quotations** where the topic supports them | ~30–40% |
453
+ | No **outbound citations** to reliable sources | ~30–40% |
454
+ | Poor fluency / readability | ~15–30% |
455
+ | Keyword stuffing present | Negligible or **negative** — treat as a defect, not a tactic |
456
+
457
+ Gains are largest for content that is visible but not dominant (up to +115.1% at position 5), which
458
+ is most audit subjects.
459
+
460
+ ### The self-containment test
461
+
462
+ Generative engines extract **passages**, not pages. For each passage the page wants cited, ask:
463
+ *does this paragraph still make sense lifted out with no surrounding context?*
464
+
465
+ Anaphora that depends on the previous paragraph ("this approach", "as mentioned above", "the former")
466
+ breaks extraction. This is the most common GEO defect on otherwise well-optimized pages, and **no
467
+ classic on-page check catches it**.
468
+
469
+ Also require: a **definitional sentence** (*"X is a Y that does Z."*) at first use of every term the
470
+ page wants to own, and a Q&A block with the question as the heading and the direct answer in the
471
+ first sentence.
472
+
473
+ ### Checks
474
+
475
+ - [ ] Verifiable statistics, quotations, and outbound citations present
476
+ - [ ] Target passages pass the self-containment test
477
+ - [ ] Definitional sentence at first use of each ownable term
478
+ - [ ] Entity resolvable in one sentence (what it is, who made it); `Person`/`Organization` + `sameAs`
479
+ - [ ] `dateModified` exposed; no stale visible version numbers or dates (fresh content is cited far more often)
480
+ - [ ] JSON-LD present and valid (see Structured Data above)
481
+ - [ ] robots.txt separates training agents from retrieval agents, matching the client's stated intent
482
+ - [ ] No unverifiable numeric or superlative claims in `<title>`, meta description, or JSON-LD
483
+
484
+ ### Do not raise these
377
485
 
378
- - Time on page
379
- - Bounce rate in context
380
- - Pages per session
381
- - Return visits
486
+ - **Missing `llms.txt`.** Adoption is ~8.7% of the top 1,000 domains, ~40% of existing files are
487
+ empty plugin stubs, no major AI crawler has committed to consuming it, crawler logs show the
488
+ retrieval agents skip it, and in one citation model removing the variable *improved* accuracy. It
489
+ has a legitimate use as business-to-agent context for IDE agents and MCP servers — recommend it on
490
+ developer-experience grounds or not at all, never as a visibility tactic.
491
+ - **"Improve bounce rate to rank better."** See User Engagement Signals above.
382
492
 
383
493
  ---
384
494
 
@@ -459,6 +569,7 @@ Same format as above
459
569
 
460
570
  - [AI Writing Detection](references/ai-writing-detection.md): Common AI writing patterns to avoid (em dashes, overused phrases, filler words)
461
571
  - [International SEO](references/international-seo.md): Evidence and sources for hreflang, canonical + i18n, sitemaps, URL structure, and content quality across locales
572
+ - [GEO](references/geo.md): Evidence and sources for generative-engine visibility — the KDD 2024 measurement of what works, passage-level extraction, freshness, structured-data correlation, the AI-crawler agent table (training vs retrieval), and why `llms.txt` is not a visibility tactic
462
573
 
463
574
  ---
464
575
 
@@ -503,4 +614,5 @@ Adaptation rules:
503
614
 
504
615
  - Findings land in the AKILI report artifacts (`/akili-seo` output), using the Issue / Impact / Evidence / Fix / Priority shape.
505
616
  - Fixes that exceed the trivial gate are routed through `/akili-propose` — never applied silently during the audit.
506
- - Sibling skills mentioned by upstream versions of this skill (programmatic-seo, schema, ai-seo, cro, analytics) are **not packaged** with AKILI-SPECS; when a finding needs them, note the gap in the report instead of loading them.
617
+ - GEO findings use the same Issue / Impact / Evidence / Fix / Priority shape. Label the source tier when citing a magnitude: the KDD 2024 figures are peer-reviewed, the AI Overview and crawler-behaviour figures are industry analyses. Never present an `[INDUSTRY]` number to a client as measured fact.
618
+ - Sibling skills mentioned by upstream versions of this skill (programmatic-seo, cro, analytics) are **not packaged** with AKILI-SPECS; when a finding needs them, note the gap in the report instead of loading them. The upstream `schema` and `ai-seo` gaps are now covered in-skill by the **Structured Data** and **GEO** sections.
@@ -123,12 +123,27 @@
123
123
  {
124
124
  "id": 8,
125
125
  "prompt": "I want to add FAQ schema to my product pages. Can you help me set that up?",
126
- "expected_output": "Should recognize this is a schema markup implementation task, not an SEO audit. Should defer to or cross-reference the schema skill, which specifically handles structured data implementation including FAQ schema. May briefly mention that FAQ schema can enable rich results, but should make clear that schema is the right skill for implementation.",
126
+ "expected_output": "Should recognize this is a structured-data implementation task, not a full SEO audit, and apply the Structured Data section directly (AKILI-SPECS does not package a separate schema skill). Should require that FAQPage markup describe genuine, visible Q&A content on the page, and warn that markup not matching visible content is a spam-policy violation rather than an optimization. Should note the detection limitation for verification (Rich Results Test or a rendering tool, never curl/web_fetch). May mention that FAQ content is also the densest citable surface for generative engines.",
127
127
  "assertions": [
128
- "Recognizes this as schema markup implementation",
129
- "References or defers to schema skill",
130
- "Does not attempt a full SEO audit",
131
- "May briefly mention FAQ schema benefits"
128
+ "Recognizes this as structured-data implementation",
129
+ "Applies the Structured Data section rather than deferring to an unpackaged schema skill",
130
+ "Requires markup to match visible page content",
131
+ "Notes the JS-injection detection limitation for verification",
132
+ "Does not attempt a full SEO audit"
133
+ ],
134
+ "files": []
135
+ },
136
+ {
137
+ "id": 9,
138
+ "prompt": "We rank on page one for our main keywords but we never show up in Google AI Overviews or ChatGPT. What should we fix?",
139
+ "expected_output": "Should apply the GEO section. Should lead with the evidence-density findings, which carry the largest measured gains (verifiable statistics with named sources, credible quotations, outbound citations to reliable sources), and cite the KDD 2024 GEO study as the source with its magnitudes labelled as peer-reviewed. Should apply the self-containment test to target passages and flag anaphora that depends on surrounding context. Should check definitional sentences, entity resolution, freshness / dateModified, and structured data. Should audit robots.txt for a blanket AI-bot block that also excludes the retrieval agents (OAI-SearchBot, Claude-SearchBot, PerplexityBot) as distinct from the training agents. Should NOT recommend creating llms.txt as a visibility tactic. Should NOT claim engagement metrics affect rankings. Should note GEO layers on ranking rather than replacing it.",
140
+ "assertions": [
141
+ "Prioritizes evidence density (statistics, quotations, citations) as the highest-yield fix",
142
+ "Applies the self-containment test to passages",
143
+ "Distinguishes AI training agents from retrieval agents in robots.txt",
144
+ "Does not recommend llms.txt as a visibility tactic",
145
+ "Labels industry figures separately from peer-reviewed figures",
146
+ "States that GEO layers on top of ranking"
132
147
  ],
133
148
  "files": []
134
149
  }
@@ -0,0 +1,203 @@
1
+ # Generative Engine Optimization (GEO): Evidence & Sources
2
+
3
+ Visibility inside AI-generated answers (Google AI Overviews / AI Mode, ChatGPT, Claude, Perplexity)
4
+ rather than in a ranked list of links.
5
+
6
+ **Source tiers used below.** `[PRIMARY]` = peer-reviewed research or first-party vendor
7
+ documentation. `[INDUSTRY]` = vendor or agency analysis of observed data; directionally useful,
8
+ methodology usually undisclosed, treat magnitudes as indicative not exact. Do not present
9
+ `[INDUSTRY]` figures to a client as measured fact.
10
+
11
+ ---
12
+
13
+ ## GEO is not a replacement for SEO
14
+
15
+ `[INDUSTRY]` 76% of Google AI Overview citations come from pages already ranking in the top 10 —
16
+ classic ranking is the qualifying condition, not an alternative to it. A meaningful long tail exists
17
+ (46.5% of cited URLs rank outside the top 50), so ranking is strongly predictive but not required.
18
+
19
+ **Audit consequence:** never trade a classic SEO fix for a GEO fix. Run the standard audit priority
20
+ order first; GEO is an additional layer applied to pages that already rank or can.
21
+
22
+ - [CXL: Where Google AI Overviews cite from — 100-page study](https://cxl.com/blog/google-ai-overview-citation-sources/)
23
+
24
+ ---
25
+
26
+ ## What measurably improves generative visibility
27
+
28
+ `[PRIMARY]` The GEO study (Aggarwal, Murahari, Rajpurohit, Kalyan, Narasimhan, Deshpande — KDD
29
+ 2024) built GEO-bench: ~10,000 queries across nine datasets, against a two-stage pipeline (Google
30
+ Search retrieves top-5 sources, then an LLM synthesizes a cited answer). It tested nine content
31
+ modifications and measured visibility change.
32
+
33
+ | Modification | Measured effect |
34
+ |---|---|
35
+ | Adding **verifiable statistics** | ~30–40% gain (position-adjusted word count) |
36
+ | Adding **credible quotations** | ~30–40% gain |
37
+ | **Citing reliable sources** | ~30–40% gain |
38
+ | Improving **fluency / readability** | ~15–30% gain |
39
+ | **Keyword stuffing** | negligible or **negative** |
40
+
41
+ Aggregate reported improvement across successful methods: **22–41%**.
42
+
43
+ **The Equalizer Effect.** `[PRIMARY]` Gains are largest for lower-ranked sources — up to **+115.1%**
44
+ visibility for content at position 5. GEO disproportionately benefits sites that are visible but not
45
+ dominant, which is precisely the audit population that most needs it.
46
+
47
+ **Audit consequence:** the three highest-yield GEO findings are all citation-and-evidence findings,
48
+ not markup findings. A page making unsourced claims is a GEO defect even when its technical SEO is
49
+ clean.
50
+
51
+ - [arXiv: GEO — Generative Engine Optimization (2311.09735)](https://arxiv.org/pdf/2311.09735)
52
+ - [dblp: KDD 2024 record](https://dblp.dagstuhl.de/rec/conf/kdd/AggarwalMRKND24.html)
53
+ - [Princeton: publication record](https://collaborate.princeton.edu/en/publications/geo-generative-engine-optimization/)
54
+ - [Blck Alpaca: methodology and critique of the Princeton GEO study](https://blckalpaca.at/en/knowledge-base/seo-geo/geo-generative-engine-optimization/the-princeton-geo-study-methodology-results-and-critique)
55
+
56
+ ---
57
+
58
+ ## Extraction happens at passage level, not page level
59
+
60
+ `[INDUSTRY]` Generative engines lift **short, self-contained passages**. Paragraphs that answer one
61
+ specific question are far more likely to be extracted than long blocks where the answer is diluted
62
+ across sentences. Content types cited most: direct answers to specific questions, comparison tables,
63
+ statistics attributed to named sources, and step-by-step instructions.
64
+
65
+ **Audit consequence — the self-containment test.** For each target passage, ask: *does this
66
+ paragraph still make sense lifted out of the page with no surrounding context?* Anaphora that
67
+ depends on the previous paragraph ("this approach", "as mentioned above", "the former") breaks
68
+ extraction. This is the single most common GEO defect on otherwise well-optimized pages, and it is
69
+ invisible to every classic on-page check.
70
+
71
+ **Definitional-sentence pattern.** For each term the page wants to own, include one sentence of the
72
+ form *"X is a Y that does Z."* at first use. That sentence is what gets quoted verbatim.
73
+
74
+ - [Contently: how to get cited in Google AI Overviews (2026)](https://contently.com/2026/02/25/how-to-get-cited-google-ai-overviews/)
75
+ - [CXL: Where Google AI Overviews cite from](https://cxl.com/blog/google-ai-overview-citation-sources/)
76
+
77
+ ---
78
+
79
+ ## Freshness is weighted heavily
80
+
81
+ `[INDUSTRY]` Content under three months old is reported as ~3x more likely to be cited in AI
82
+ Overviews.
83
+
84
+ **Audit consequence:** stale version numbers, undated articles, and missing `dateModified` are GEO
85
+ findings, not just hygiene. For tooling and documentation pages specifically, a visible version
86
+ number that lags the shipped release is a direct credibility signal against the page. Prefer reading
87
+ such values from a live source at build time over hardcoding them.
88
+
89
+ - [Heroic Rankings: Google AI Overview statistics 2026](https://heroicrankings.com/seo/managed/google-ai-overview-statistics-2026/)
90
+
91
+ ---
92
+
93
+ ## Structured data correlates with citation
94
+
95
+ `[INDUSTRY]` Reported: 65% of pages cited by Google AI Mode carry structured data markup; 71% of
96
+ pages cited by ChatGPT do. Figures span all schema types (`Article`, `Organization`, `Product`,
97
+ `Review`, `FAQPage`, `HowTo`).
98
+
99
+ **Read this as correlation, not proven causation** — pages with schema also tend to be better
100
+ maintained overall. It is still a cheap, low-risk intervention with a plausible mechanism
101
+ (machine-readable facts survive extraction better than prose).
102
+
103
+ Highest-value types for GEO:
104
+
105
+ | Type | Use for |
106
+ |---|---|
107
+ | `FAQPage` | Q&A blocks — the densest citable surface on most pages |
108
+ | `HowTo` | Step-by-step procedures |
109
+ | `TechArticle` / `Article` | Carries `dateModified`, feeding the freshness signal |
110
+ | `SoftwareApplication` | Tools and packages — carries `softwareVersion` |
111
+ | `Person` / `Organization` with `sameAs` | Entity resolution and author authority |
112
+
113
+ **Entity disambiguation.** State plainly, in one sentence, what the subject *is* and who made it.
114
+ Ambiguous brand names must be resolvable without inference. Bind the page to a `Person` or
115
+ `Organization` node with `sameAs` links to authoritative profiles.
116
+
117
+ - [Contently: 2026 AI Overview tactics](https://contently.com/2026/02/25/how-to-get-cited-google-ai-overviews/)
118
+ - [Digital Applied: content strategy for AI Overviews, post-I/O 2026](https://www.digitalapplied.com/blog/content-strategy-ai-overviews-post-io-guide-2026)
119
+
120
+ ---
121
+
122
+ ## AI crawler access control
123
+
124
+ `[PRIMARY]` The agents split by **purpose**, and that split is the whole point of auditing them:
125
+
126
+ | Vendor | Training | Search / retrieval | User-triggered |
127
+ |---|---|---|---|
128
+ | OpenAI | `GPTBot` | `OAI-SearchBot` | `ChatGPT-User` |
129
+ | Anthropic | `ClaudeBot` | `Claude-SearchBot` | `Claude-User` |
130
+ | Perplexity | — | `PerplexityBot` | `Perplexity-User` |
131
+ | Google | `Google-Extended` | (Googlebot) | — |
132
+
133
+ **The consequential audit finding:** a site that blanket-blocks AI bots to avoid training also
134
+ blocks the retrieval agents, and therefore removes itself from AI answers entirely. If the goal is
135
+ visibility without feeding training, allow the search and user agents and disallow only the training
136
+ agents.
137
+
138
+ **`Google-Extended` is a robots.txt token, not a user agent.** It never appears in server logs.
139
+ `Disallow: /` under `Google-Extended` opts out of Gemini training while leaving `Googlebot` — and
140
+ therefore Search and AI Overviews — unaffected. Auditing for it in logs will always produce a false
141
+ negative.
142
+
143
+ **robots.txt is a request, not enforcement.** `[INDUSTRY]` Cloudflare reported (2025-08-04)
144
+ observing Perplexity using undeclared crawlers that rotate user-agent, IP, and ASN to bypass
145
+ no-crawl directives. When a client's requirement is actually *prevention* rather than *preference*,
146
+ robots.txt is the wrong control — escalate to WAF/bot-management, and say so in the finding.
147
+
148
+ - [Anagram: AI crawlers explained — GPTBot, ClaudeBot, PerplexityBot (2026)](https://www.anagram.ai/blog/ai-crawlers-explained-gptbot-claudebot-perplexitybot-and-how-to-let-them-in-2026)
149
+ - [AuditAE: AI crawlers list 2026 — ClaudeBot, GPTBot, OAI-SearchBot](https://auditae.app/blog/ai-crawlers-explained)
150
+ - [Witscode: robots.txt strategy 2026 — managing AI crawlers](https://witscode.com/blogs/robots-txt-strategy-2026-managing-ai-crawlers)
151
+
152
+ ---
153
+
154
+ ## llms.txt: do not recommend it for AI search visibility
155
+
156
+ `[INDUSTRY]` The evidence is consistently negative, and this contradicts widespread advice:
157
+
158
+ - Adoption is ~8.7% of the top 1,000 domains (June 2026); ~10% in other samples.
159
+ - **39.6% of existing files are empty plugin stubs.**
160
+ - No major AI crawler has committed to consuming the format.
161
+ - Crawler-log analyses find GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot and Google-Extended
162
+ **overwhelmingly skip `/llms.txt`** and crawl HTML directly.
163
+ - In one citation-frequency model, **removing the llms.txt variable improved prediction accuracy** —
164
+ it contributed noise, not signal.
165
+
166
+ **Audit consequence:** do not raise "missing llms.txt" as a finding, and do not recommend building
167
+ one as a GEO tactic. If a client already has one, leave it. The format does have a real use —
168
+ **business-to-agent context for IDE agents and MCP servers** — which is a developer-experience
169
+ decision, not a search-visibility one. Recommend it on those grounds or not at all.
170
+
171
+ - [Rankability: llms.txt adoption data — 8.7% of the top 1,000 (June 2026)](https://www.rankability.com/data/llms-txt-adoption/)
172
+ - [aeo.press: the state of llms.txt in 2026](https://www.aeo.press/ai/the-state-of-llms-txt-in-2026)
173
+ - [OrganiKPI: llms.txt adoption and impact](https://organikpi.com/blog/distribution/llms-txt-adoption-impact/)
174
+
175
+ ---
176
+
177
+ ## What does not work
178
+
179
+ | Tactic | Status |
180
+ |---|---|
181
+ | Keyword stuffing | `[PRIMARY]` Negligible or **negative** effect on generative visibility |
182
+ | Unverifiable superlatives and performance claims | Dropped during extraction; adjacent verifiable claims lose credibility by association |
183
+ | `llms.txt` as a visibility play | `[INDUSTRY]` No measured effect; see above |
184
+ | Blanket-blocking all AI user agents | Removes the site from AI answers along with training corpora |
185
+ | Prose-only pages with no extractable passages | Structurally unciteable regardless of quality |
186
+
187
+ ---
188
+
189
+ ## Audit checklist
190
+
191
+ - [ ] Page already ranks (or can) for its target query — GEO layers on top of ranking, never replaces it
192
+ - [ ] Claims carry **verifiable statistics** with named sources (highest measured yield)
193
+ - [ ] **Credible quotations** present where the topic supports them
194
+ - [ ] **Outbound citations** to reliable sources present
195
+ - [ ] Every target passage passes the **self-containment test**
196
+ - [ ] Each ownable term has a **definitional sentence** at first use
197
+ - [ ] Q&A block present, question as heading, direct answer in the first sentence
198
+ - [ ] Entity resolvable in one sentence (what it is, who made it)
199
+ - [ ] `dateModified` exposed; visible version/date values not stale
200
+ - [ ] JSON-LD present and valid — `FAQPage` / `HowTo` / `Article` as applicable, plus `Person`/`Organization` with `sameAs`
201
+ - [ ] robots.txt distinguishes **training** agents from **retrieval** agents, and the split matches the client's stated intent
202
+ - [ ] No unverifiable numeric claims in `<title>`, meta description, or JSON-LD
203
+ - [ ] **Not** flagged: missing `llms.txt`
package/CHANGELOG.md CHANGED
@@ -10,6 +10,20 @@ The format is inspired by Keep a Changelog and the repository follows semantic v
10
10
 
11
11
  - No unreleased changes yet.
12
12
 
13
+ ## [2.15.0] - 2026-07-26
14
+
15
+ ### Added
16
+
17
+ - **GEO (Generative Engine Optimization) in `seo-audit` — visibility inside AI answers, grounded in measured evidence.** New `## Generative Engine Optimization (GEO)` section plus a `references/geo.md` evidence file following the same claims-plus-sources convention as `international-seo.md`. The headline finding, from the peer-reviewed GEO study (Aggarwal et al., **KDD 2024**, GEO-bench: ~10,000 queries across nine datasets), is that **the largest gains come from evidence, not markup**: adding verifiable statistics, credible quotations, and outbound citations each yields ~30–40%, fluency/readability ~15–30%, and **keyword stuffing is negligible or negative**. Gains are largest for content that ranks but does not dominate (up to **+115.1%** at position 5 — the "Equalizer Effect"), which is most audit subjects. Also documented: **passage-level extraction** and the resulting **self-containment test** (a paragraph must survive being lifted out of the page — anaphora like "this approach" breaks extraction, and no classic on-page check catches it), definitional sentences, entity resolution, freshness weighting, and the structured-data citation correlation (65% of AI-Mode-cited pages, 71% of ChatGPT-cited pages) explicitly labelled as correlation, not causation. Every claim carries a `[PRIMARY]` / `[INDUSTRY]` **source tier**, and findings must carry that tier forward so an industry estimate is never presented to a client as measured fact. Wired into `/akili-seo` as **Step 2.8** with a matching report section and verification-checklist rows.
18
+ - **AI-crawler directive auditing.** The `Robots.txt` checks now separate **training** agents (`GPTBot`, `ClaudeBot`, `Google-Extended`) from **retrieval** agents (`OAI-SearchBot`, `Claude-SearchBot`, `PerplexityBot`) and user-triggered fetchers. The consequential finding: **a blanket AI-bot block removes the site from AI answers as well as from training corpora** — a state many sites are in by accident. Records that `Google-Extended` is a robots.txt token that never appears in logs (so auditing for it there always yields a false negative) and that blocking it does not affect `Googlebot` or AI Overviews, and that robots.txt is advisory — where the requirement is genuine prevention, escalate to WAF/bot management.
19
+ - **Structured Data audit section** — a real gap: the skill previously explained *how to detect* schema (the JS-injection limitation) but had no checklist for auditing it. Adds per-purpose type selection, validation, the visible-content match requirement (invisible or contradictory markup is a spam-policy violation, not an optimization), truthful `dateModified`, `sameAs` entity nodes, and consistent `@id` graph wiring. Closes the upstream `schema` sibling-skill gap in-skill.
20
+
21
+ ### Changed
22
+
23
+ - **Engagement metrics rewritten from ranking factors to diagnostics — correcting a myth the skill propagated.** The `User Engagement Signals` section listed time on page, bounce rate, pages per session, and return visits as things to audit, implying they are ranking factors. Google has denied this for roughly a decade (Mueller: *"We don't use bounce rate in search rankings"*; Illyes: *"we don't use analytics/bounce rate in search ranking"*). The section now states that plainly, **bans findings of the form "improve bounce rate to improve rankings"** as a causal claim Google has explicitly denied that damages the credibility of correct findings beside it, and reframes each metric as a diagnostic that localizes a content problem whose fix is the content.
24
+ - **`Disallow` is not `noindex`.** New robots.txt check for one of the most consequential confusions in technical SEO: a disallowed URL can still be indexed from external links and surfaces as "Indexed, though blocked by robots.txt"; removing a page from the index requires *allowing* the crawl and serving `noindex`, and a `noindex` line inside `robots.txt` is unsupported and ignored.
25
+ - **`llms.txt` is explicitly ruled out as a visibility tactic, against prevailing advice.** Evidence: ~8.7% adoption of the top 1,000 domains (June 2026), ~40% of existing files are empty plugin stubs, no major AI crawler has committed to consuming the format, crawler-log analyses show the retrieval agents skip it and crawl HTML directly, and in one citation-frequency model **removing the variable improved prediction accuracy** — it contributed noise. Both the skill and `/akili-seo` now list "missing `llms.txt`" as a finding that must **not** be raised, while noting the format's legitimate use as business-to-agent context for IDE agents and MCP servers — a developer-experience call, not a search one.
26
+ - **`seo-audit` priority order gains an explicit GEO boundary.** GEO is a layer applied on top of ranking, not a sixth priority: roughly three quarters of AI Overview citations come from pages already in the top 10, so a GEO fix never displaces a classic-SEO fix, and GEO items rank below blocking classic findings in the remediation plan. Skill version 2.0.0 → 2.1.0; trigger keywords extended (AI Overviews, AI search, GEO, answer engine optimization, `llms.txt`, GPTBot, ClaudeBot); upstream `schema`/`ai-seo` sibling-gap note updated now that both are covered in-skill.
13
27
  ## [2.14.0] - 2026-07-25
14
28
 
15
29
  ### Added
@@ -30,7 +30,7 @@ The skill set is **curated, not accumulated**: every skill declares its original
30
30
  | [`nestjs-expert`](nestjs-expert.md) | stack | Daniel Avila (MIT) | NestJS modules, DI, guards, interceptors, testing, TypeORM/Mongoose | Skill Map; constitution/specify stack lists; persona examples |
31
31
  | [`product-manager-toolkit`](product-manager-toolkit.md) | core | Alireza Rezvani (MIT) | Product discovery, PRDs, prioritization, interview analysis (AKILI-adapted: canonical PRD structure, RICE for scope-chunk ordering) | `/akili-constitution` Steps 2–3, `/akili-propose`, `/akili-specify` scope chunking |
32
32
  | [`react-doctor`](react-doctor.md) | stack | Million.dev | React diagnostics after changes | Skill Map; `/akili-test`, `/akili-validate`, `/akili-execute` React work |
33
- | [`seo-audit`](seo-audit.md) | core | Corey Haines (MIT) | Technical, on-page, and international SEO audits with a standard finding format | `/akili-seo` audit phase (required) |
33
+ | [`seo-audit`](seo-audit.md) | core | Corey Haines (MIT) | Technical, on-page, structured-data, international, and generative-engine (GEO) audits with a standard finding format | `/akili-seo` audit phase (required) |
34
34
  | [`shadcn-ui`](shadcn-ui.md) | stack | community (origin unverified) | shadcn/ui components, forms, themes, Tailwind integration | Skill Map; constitution/specify stack lists; persona examples |
35
35
  | [`software-architect`](software-architect.md) | core | Juan Carlos Cadavid — jcadavid.com (MIT) | Senior-architect Decision Spine: NFRs as measurable quality-attribute scenarios, tactics, robust-vs-lite tier sizing, architecture styles (hexagonal/clean/microservices), GoF pattern selection, C4 views + ADRs, agentic AI patterns | `/akili-constitution` Step 5 (required) and Step 6 tier handoff; `/akili-specify` Phase 2 for architecturally significant features |
36
36
  | [`stitch-design`](stitch-design.md) | conditional | Google — google-labs-code | Stitch prompt enhancement and design generation workflows (fallback UI chain with `frontend-design`) | UI steps of `/akili-constitution`, `/akili-propose`, `/akili-specify` |
@@ -2,28 +2,40 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Provides an expert SEO audit framework: crawlability and indexation, technical foundations (Core Web Vitals, mobile, HTTPS), on-page optimization (titles, metas, headings, images, internal linking), international SEO (hreflang, locale canonicals, locale sitemaps), content quality (E-E-A-T), and a standard finding format.
5
+ Provides an expert SEO audit framework: crawlability and indexation, technical foundations (Core Web Vitals, mobile, HTTPS), on-page optimization (titles, metas, headings, images, internal linking), structured data, international SEO (hreflang, locale canonicals, locale sitemaps), content quality (E-E-A-T), **generative-engine visibility (GEO)**, and a standard finding format.
6
6
 
7
7
  AKILI-adapted: findings use the Issue/Impact/Evidence/Fix/Priority shape inside `/akili-seo` artifacts, non-trivial fixes escalate to `/akili-propose`, and dangling references to unpackaged sibling skills were removed. Binding: `core`.
8
8
 
9
+ AKILI-original additions (not in the upstream skill): the **GEO** section and `references/geo.md`; the **Structured Data** audit section; AI-crawler directive auditing; the `Disallow` ≠ `noindex` correction; and the rewrite of engagement metrics from ranking factors to diagnostics.
10
+
9
11
  ## Use When
10
12
 
11
13
  - Auditing, reviewing, or diagnosing SEO issues on a site.
12
14
  - Rankings or organic traffic dropped and the cause is unknown.
13
15
  - Reviewing meta tags, structured data, page speed, or indexing issues.
16
+ - The site is absent from AI answers (AI Overviews, ChatGPT, Perplexity), or AI-crawler access needs a decision.
14
17
  - Running the audit phase of `/akili-seo`.
15
18
 
16
19
  ## Core Rules
17
20
 
18
21
  - Findings follow the **Issue / Impact / Evidence / Fix / Priority** structure.
19
22
  - Findings are weighted by priority order: crawlability → technical → on-page → content quality → authority.
23
+ - **GEO is a layer, not a sixth priority** — ~3/4 of AI Overview citations come from pages already in the top 10, so a GEO fix never displaces a classic-SEO fix.
24
+ - **Source tiers are carried into findings.** Peer-reviewed magnitudes (KDD 2024 GEO study) and industry analyses are labelled differently; an industry figure is never presented to a client as measured fact.
20
25
  - Static fetches (`curl`, `web_fetch`) cannot detect JS-injected JSON-LD; structured data must be validated with a rendering tool or Search Console URL inspection.
26
+ - **Two findings are explicitly banned:** "missing `llms.txt`" (no measured visibility effect) and any claim that engagement metrics such as bounce rate affect rankings (Google has denied this for a decade).
21
27
 
22
28
  ## Best Paired Commands
23
29
 
24
30
  - `/akili-seo` for the audit phase (index coverage, structured data, render, on-page checks).
25
31
  - `/akili-validate` when a spec includes SEO acceptance criteria.
26
32
 
33
+ ## References (progressive disclosure)
34
+
35
+ - `references/geo.md` — generative-engine visibility: the KDD 2024 measurement of what works, passage-level extraction, freshness, structured-data correlation, the AI-crawler agent table (training vs retrieval), and the negative evidence on `llms.txt`. Claims carry `[PRIMARY]` / `[INDUSTRY]` source tiers.
36
+ - `references/international-seo.md` — hreflang, canonical + i18n, locale sitemaps, URL structure, cross-locale content quality.
37
+ - `references/ai-writing-detection.md` — AI writing patterns to avoid.
38
+
27
39
  ## Source
28
40
 
29
41
  - `../../.claude/skills/seo-audit/SKILL.md`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akili-specs",
3
- "version": "2.14.0",
3
+ "version": "2.15.0",
4
4
  "description": "Portable AKILI-SPECS methodology commands and skills for AI-assisted development.",
5
5
  "homepage": "https://github.com/JuankCadavid/akili-specs#readme",
6
6
  "repository": {