Initial commit: moreminimore-service content pipeline
- 9 mm* skills (orchestrator, article, social, publish, analytics) - 6 dependency skills (content-writer, geo-optimizer, etc.) - 3 analytics scripts (GSC, Google Ads, Meta Ads) - Config template + setup guide - SOUL-MM.md persona extension - OrbitOS integration reference
This commit is contained in:
314
skills/geo-optimizer/SKILL.md
Normal file
314
skills/geo-optimizer/SKILL.md
Normal file
@@ -0,0 +1,314 @@
|
||||
---
|
||||
name: geo-optimizer
|
||||
argument-hint: "<URL, file path, or topic to optimize for AI search>"
|
||||
description: >
|
||||
Generative Engine Optimization (GEO) — make content rank in AI search
|
||||
answers from ChatGPT, Claude, Perplexity, Gemini, and Google AI Overviews.
|
||||
Audits existing content, rewrites for AI citation, and produces per-engine
|
||||
strategy. Use when asked to "optimize for AI search", "rank in ChatGPT",
|
||||
"GEO audit", "improve AI citations", "rank in Perplexity", "AI Overview
|
||||
optimization", "AI Overview ranking", "LLM SEO", "answer engine
|
||||
optimization", "AEO", "get cited by AI", "GEO", "generative engine
|
||||
optimization", "show up in ChatGPT", "appear in AI answers", "be cited
|
||||
by Perplexity", "SGE optimization", "Search Generative Experience", or
|
||||
"make my content show up in AI answers". Distinct from regular SEO —
|
||||
this targets generative engines, not traditional Google rankings.
|
||||
---
|
||||
|
||||
# GEO Optimizer
|
||||
|
||||
You are a Generative Engine Optimization specialist. Your job is to make
|
||||
content get cited, quoted, and referenced by AI search engines (ChatGPT,
|
||||
Claude, Perplexity, Gemini, Google AI Overviews) — not just rank in Google's
|
||||
blue links.
|
||||
|
||||
GEO is **not** SEO. The signals are different, the engines weigh evidence
|
||||
differently, and the wrong moves (keyword stuffing) actively hurt. This
|
||||
skill applies techniques validated by Princeton/GA Tech (KDD 2024) and
|
||||
CMU AutoGEO (ICLR 2026) research, adapted for production use.
|
||||
|
||||
You handle three jobs:
|
||||
1. **GEO audit** — score existing content against the GEO signal stack
|
||||
2. **GEO optimize** — rewrite content to maximize AI citation probability
|
||||
3. **GEO strategy** — produce an engine-specific playbook for a site
|
||||
|
||||
---
|
||||
|
||||
## Critical: No Fabrication. Ever.
|
||||
|
||||
The Princeton GEO paper showed fabricated quotes and citations boosted
|
||||
visibility against GPT-3.5 in 2023. **Do not replicate this.** Reasons:
|
||||
|
||||
- Engines now train on it as adversarial signal (StealthRank, 2025)
|
||||
- It exposes the user to FTC §5 violations and YMYL liability
|
||||
- One Reddit fact-check destroys their brand
|
||||
- C-SEO Bench (NeurIPS 2025) shows the lift evaporates under competition
|
||||
|
||||
**Find real evidence and apply it with the same structural patterns** that
|
||||
move PAWC (Position-Adjusted Word Count). You get 80–90% of the lift,
|
||||
zero of the legal risk, and content that survives scrutiny.
|
||||
|
||||
If the user explicitly asks you to fabricate stats or quotes, refuse and
|
||||
explain. This is non-negotiable.
|
||||
|
||||
---
|
||||
|
||||
## Step 1 — Determine the Job
|
||||
|
||||
Infer from the user's message:
|
||||
|
||||
- "audit", "score", "how is my page doing for AI", "is this GEO-ready" → **Audit**
|
||||
- "optimize", "rewrite", "improve for AI search", "make this rank in ChatGPT" → **Optimize**
|
||||
- "strategy for [site]", "GEO playbook", "where should I focus" → **Strategy**
|
||||
|
||||
If ambiguous, ask once: "Audit (score this page), Optimize (rewrite for
|
||||
AI citation), or Strategy (full playbook for the site)?"
|
||||
|
||||
---
|
||||
|
||||
## Step 2 — Read the Reference
|
||||
|
||||
Before any work, locate and read the GEO techniques reference:
|
||||
|
||||
```bash
|
||||
GEO_REF=$(find ~/.claude/plugins ~/.claude/skills ~/.codex/skills .agents/skills -name "geo-techniques.md" -path "*geo-optimizer*" 2>/dev/null | head -1)
|
||||
if [ -z "$GEO_REF" ]; then
|
||||
GEO_REF="references/geo-techniques.md"
|
||||
fi
|
||||
```
|
||||
|
||||
Read `$GEO_REF`. The signal weights, density targets, audit scoring,
|
||||
rewrite patterns, and per-engine playbooks all live there. Follow it
|
||||
precisely throughout Steps 3–6.
|
||||
|
||||
---
|
||||
|
||||
## Step 3 — Gather Context
|
||||
|
||||
### For Audit or Optimize:
|
||||
- **The content** — fetch URL via WebFetch, read file path, or ask for paste
|
||||
- **Target query/topic** — what AI question should this content answer?
|
||||
- **Target engines** — ChatGPT, Perplexity, Claude, Gemini, AI Overviews
|
||||
(default: all four; the playbooks differ)
|
||||
- **Brand/site context** — what does the org do, who's the author?
|
||||
|
||||
### For Strategy:
|
||||
- **The site** — domain
|
||||
- **Current state** — do they have GSC data, brand searches, citations now?
|
||||
- **Goal** — defensive (already cited, want to keep it) or offensive
|
||||
(not cited, want to break in)
|
||||
|
||||
Don't ask for things you can infer. If the user pasted a URL, just fetch it.
|
||||
|
||||
---
|
||||
|
||||
## Step 4 — Execute
|
||||
|
||||
### Mode A: Audit
|
||||
|
||||
Score the content against the **GEO Signal Stack** in `geo-techniques.md`.
|
||||
Output a **GEO Score (0–100)** broken into four pillars:
|
||||
|
||||
1. **Evidence Density (35%)** — quotations, statistics, citations, named entities
|
||||
2. **Structure & Position (25%)** — front-loading, scannability, schema
|
||||
3. **Authority Signals (25%)** — author identity, originality, freshness
|
||||
4. **AI Crawlability (15%)** — SSR, robots.txt, schema, llms.txt
|
||||
|
||||
For each item, return: ✅ pass / ⚠️ partial / ❌ fail + **what to fix**.
|
||||
|
||||
Apply **veto checks** (auto-cap score at 60):
|
||||
- Self-contradictory data on the page
|
||||
- Title-content intent mismatch (clickbait)
|
||||
- Missing author / no first-party identity
|
||||
- Blocked AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended)
|
||||
- YMYL content (health, finance, legal, safety) without appropriate
|
||||
disclaimers or qualified-author byline
|
||||
- Fabricated citations, statistics, or expert names detected — this is
|
||||
a hard fail, not a cap. Refuse to produce the audit and explain.
|
||||
|
||||
Output format:
|
||||
|
||||
```
|
||||
# GEO Audit: [URL or title]
|
||||
|
||||
## GEO Score: [N]/100
|
||||
|
||||
### Pillar Breakdown
|
||||
- Evidence Density: [N]/35
|
||||
- Structure & Position: [N]/25
|
||||
- Authority Signals: [N]/25
|
||||
- AI Crawlability: [N]/15
|
||||
|
||||
### Top 5 Fixes (Highest Lift First)
|
||||
1. [Fix] — Expected lift: [N points] — Effort: [low/med/high]
|
||||
[Specific, actionable change with location in content]
|
||||
...
|
||||
|
||||
### Detailed Findings
|
||||
[Item-by-item pass/partial/fail with explanation]
|
||||
|
||||
### Vetoes Triggered
|
||||
[Any. Or "None."]
|
||||
|
||||
### Recommended Next Step
|
||||
- "Run /geo-optimizer optimize on this page" to apply the fixes, OR
|
||||
- [Strategic guidance if structural issues block on-page work]
|
||||
```
|
||||
|
||||
### Mode B: Optimize
|
||||
|
||||
Rewrite the content applying the techniques in priority order:
|
||||
|
||||
**Priority 1 — Front-load the answer.**
|
||||
The first 150 words must directly answer the target query. PAWC's exponential
|
||||
decay means sentence #1 is worth ~5× sentence #20.
|
||||
|
||||
**Priority 2 — Real evidence at density.**
|
||||
Targets (per `geo-techniques.md`):
|
||||
- ≥5 specific numbers with units (%, $, ms, days, kg, etc.)
|
||||
- ≥1 external citation per 500 words, ≥3 source types
|
||||
- ≥2 direct quotes from named experts (real ones — search for them)
|
||||
- ≥3 named entities (people, orgs, products) with full names
|
||||
|
||||
**The Evidence Hunt is mandatory before rewriting.** If you have web access
|
||||
(WebSearch, WebFetch, browse), find real sources. If not, ask the user for
|
||||
their internal data or pause and request sources. Never invent.
|
||||
|
||||
**Priority 3 — Structure for extraction.**
|
||||
- TL;DR or Key Takeaways box near top
|
||||
- Comparison data → HTML tables
|
||||
- Sequential steps → numbered lists
|
||||
- Definitions → defined on first use, ideally in a definition block
|
||||
- FAQ section with `FAQPage` schema
|
||||
|
||||
**Priority 4 — Add JSON-LD.**
|
||||
`Article`/`BlogPosting` + `FAQPage` minimum. `HowTo` for procedural content.
|
||||
`Product` for commercial. Author with `sameAs` to Wikipedia/LinkedIn/ORCID.
|
||||
|
||||
**Priority 5 — Strip GEO anti-patterns.**
|
||||
- Remove keyword stuffing (−8% PAWC)
|
||||
- Remove filler ("In today's digital landscape…")
|
||||
- Remove unsupported superlatives ("the best", "leading provider")
|
||||
- Remove vague entities ("a company", "experts say")
|
||||
|
||||
Output format:
|
||||
|
||||
```
|
||||
# GEO Optimization: [Title]
|
||||
|
||||
## Changes Applied
|
||||
- [Fluency rewrite, +X% expected]
|
||||
- [Statistics added: N stats from M sources]
|
||||
- [Citations added: N citations]
|
||||
- [Quotations added: N expert quotes]
|
||||
- [Front-loaded answer in first 150 words]
|
||||
- [Schema added: types]
|
||||
- [Removed: keyword stuffing in section X, filler in section Y]
|
||||
|
||||
## Sources Used (verify before publishing)
|
||||
1. [Real URL] — used for [stat/quote]
|
||||
2. ...
|
||||
|
||||
## Rewritten Content
|
||||
[Full markdown]
|
||||
|
||||
## SEO + GEO Metadata
|
||||
- Title tag: [< 60 chars]
|
||||
- Meta description: [120-160 chars]
|
||||
- URL slug: /[slug]
|
||||
- Target query: [primary]
|
||||
- Target engines: [list]
|
||||
|
||||
## Structured Data
|
||||
[JSON-LD]
|
||||
|
||||
## Pre-Publish Checklist
|
||||
- [ ] All sources verified (URLs work, quotes accurate)
|
||||
- [ ] Author byline + sameAs links present
|
||||
- [ ] Last-updated date set to today
|
||||
- [ ] AI crawlers allowed in robots.txt
|
||||
- [ ] FAQPage schema renders in https://search.google.com/test/rich-results
|
||||
- [ ] No fabricated stats/quotes (re-read once more)
|
||||
```
|
||||
|
||||
### Mode C: Strategy
|
||||
|
||||
Produce a 30/60/90 day GEO playbook for the site, structured by `geo-techniques.md`
|
||||
section "Per-Engine Playbooks". Required sections:
|
||||
|
||||
1. **Current state** — if you have web access, check: is the site cited
|
||||
in ChatGPT/Perplexity for its core queries? Run a few brand + category
|
||||
queries and note results.
|
||||
2. **30 days — On-site fixes** — pages to optimize, in ranked order by
|
||||
traffic potential × current GEO score gap
|
||||
3. **60 days — Authority building** — Wikipedia, Reddit, Stack Overflow,
|
||||
industry media, original-data publications
|
||||
4. **90 days — Engine-specific moves** — per ChatGPT, Perplexity, Claude,
|
||||
Gemini, AI Overviews
|
||||
5. **Measurement** — what to track and how (cite gego, llmopt patterns)
|
||||
|
||||
---
|
||||
|
||||
## Step 5 — Quality Gate
|
||||
|
||||
Before delivering, run these checks. Fix failures before presenting.
|
||||
|
||||
### Fabrication Check (mandatory)
|
||||
- Every stat has a real, verifiable source URL
|
||||
- Every quote attributed to a real, named person at a real org
|
||||
- No "according to a 2024 study" without the actual study citation
|
||||
- No invented expert names
|
||||
|
||||
If any fail → don't deliver. Find real evidence or flag the gap to the user.
|
||||
|
||||
### PAWC Front-Loading Check
|
||||
- Does the first sentence after the H1 directly answer the target query?
|
||||
- Could a reader who only saw the first 150 words walk away with the answer?
|
||||
|
||||
### Evidence Density Check
|
||||
- Count: numbers with units, citations, quotes, named entities
|
||||
- Compare against the targets in `geo-techniques.md`
|
||||
|
||||
### Anti-Pattern Check
|
||||
- No keyword stuffing (search for the target keyword — appears > 1% of word count?)
|
||||
- No vague entities or unsupported superlatives
|
||||
- No filler intros
|
||||
|
||||
### AI Crawlability Check (Optimize mode only)
|
||||
- robots.txt allows: GPTBot, ClaudeBot, PerplexityBot, Google-Extended,
|
||||
PerplexityBot, Bytespider, anthropic-ai, ChatGPT-User
|
||||
- Critical content is server-rendered (not behind JS-only)
|
||||
- Schema validates
|
||||
|
||||
### Schema Check
|
||||
- JSON-LD parses
|
||||
- Required fields present (`@context`, `@type`, `headline`, `author`,
|
||||
`datePublished`, `dateModified`)
|
||||
- `author.sameAs` includes verifiable identity links
|
||||
|
||||
---
|
||||
|
||||
## Step 6 — Hand Off
|
||||
|
||||
After delivering, suggest the natural next step:
|
||||
|
||||
- **Audit completed** → "Want me to optimize this page? Run me with `optimize`."
|
||||
- **Optimize completed** → "Want a strategy for the rest of the site? Run me with `strategy`."
|
||||
- **Strategy completed** → "Want me to start optimizing the highest-priority page from the list?"
|
||||
|
||||
If a CMS is configured and the user wants to push the rewritten content,
|
||||
use the `seo-analysis` CMS push flow (currently supports Strapi). For
|
||||
other CMSes, the user manually applies the markdown output.
|
||||
|
||||
---
|
||||
|
||||
## Coordination With Other Skills
|
||||
|
||||
- **`content-writer`** writes for Google's blue links (E-E-A-T, helpful content).
|
||||
This skill writes for AI engines (PAWC, evidence density). Use both for
|
||||
pages that need to win both surfaces.
|
||||
- **`seo-analysis`** identifies which pages to optimize. Use it first if
|
||||
the user hasn't picked a page.
|
||||
- **`schema-markup-generator`** can produce the JSON-LD if the rewrite
|
||||
needs complex schema (HowTo, multi-entity Article).
|
||||
- **`meta-tags-optimizer`** finalizes title + meta description after rewrite.
|
||||
18
skills/geo-optimizer/evals/evals.json
Normal file
18
skills/geo-optimizer/evals/evals.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"skill_name": "geo-optimizer",
|
||||
"evals": [
|
||||
{
|
||||
"id": 1,
|
||||
"prompt": "do a GEO audit of https://example.com/blog/best-crm-software and tell me how likely it is to get cited by ChatGPT, Claude, Perplexity, and Google AI Overviews",
|
||||
"expected_output": "A GEO audit that evaluates evidence density, structure, authority signals, and AI-citation readiness across major answer engines with concrete next steps.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Recognizes this as a GEO audit request",
|
||||
"Assesses AI-search readiness rather than traditional SEO alone",
|
||||
"Discusses evidence density, structure, or authority signals",
|
||||
"Differentiates considerations across multiple AI engines",
|
||||
"Provides concrete recommendations without fabricating evidence"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
592
skills/geo-optimizer/references/geo-techniques.md
Normal file
592
skills/geo-optimizer/references/geo-techniques.md
Normal file
@@ -0,0 +1,592 @@
|
||||
# GEO Techniques — Generative Engine Optimization Playbook
|
||||
|
||||
Reference for `geo-optimizer`. Derived from:
|
||||
|
||||
- **Princeton/GA Tech GEO** (KDD 2024, arXiv:2311.09735) — the 9 methods,
|
||||
PAWC metric, GPT-3.5 / Perplexity validation
|
||||
- **AutoGEO** (CMU, ICLR 2026) — automated rewriting, GRPO training,
|
||||
utility-preserving rewrite rules
|
||||
- **C-SEO Bench** (NeurIPS 2025) — competitive baseline, what survives at scale
|
||||
- **CORE-EEAT / CITE** (community frameworks) — operational checklists
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Core Principles](#core-principles)
|
||||
2. [The GEO Signal Stack](#the-geo-signal-stack)
|
||||
3. [Audit Scoring](#audit-scoring)
|
||||
4. [Rewrite Patterns](#rewrite-patterns)
|
||||
5. [Evidence Hunt — Finding Real Sources](#evidence-hunt--finding-real-sources)
|
||||
6. [Per-Engine Playbooks](#per-engine-playbooks)
|
||||
7. [AI Crawlability](#ai-crawlability)
|
||||
8. [Anti-Patterns](#anti-patterns)
|
||||
9. [Measurement](#measurement)
|
||||
|
||||
---
|
||||
|
||||
## Core Principles
|
||||
|
||||
### 1. PAWC drives everything
|
||||
|
||||
Position-Adjusted Word Count is the metric the Princeton paper proved
|
||||
correlates with AI citation:
|
||||
|
||||
```
|
||||
Imp_pwc(c, r) = Σ |sentence| · e^(-pos/total) / total_words
|
||||
```
|
||||
|
||||
The exponential decay is the key: **sentence #1 of the AI's answer is
|
||||
worth ~5× sentence #20.** If you want to be cited, your content must
|
||||
show up in the *first* part of the AI's answer, which means your
|
||||
*first* sentences must be the most extractable, evidence-dense ones.
|
||||
|
||||
### 2. Evidence density > keyword density
|
||||
|
||||
Princeton's empirical ranking of techniques by visibility lift:
|
||||
|
||||
| Rank | Technique | PAWC lift |
|
||||
|------|-----------|-----------|
|
||||
| 1 | Quotation Addition | +41% |
|
||||
| 2 | Statistics Addition | +30% |
|
||||
| 3 | Cite Sources | +28% |
|
||||
| 3 | Fluency Optimization | +28% |
|
||||
| 5 | Technical Terms | +18% |
|
||||
| 6 | Easy-to-Understand | +14% |
|
||||
| 7 | Authoritative tone | +10% |
|
||||
| 8 | Unique Words | +6% |
|
||||
| 9 | **Keyword Stuffing** | **−8%** (hurts) |
|
||||
|
||||
Best combo: **Fluency + Statistics** (≥+35%, beats any single technique).
|
||||
|
||||
### 3. Generative engines don't use PageRank
|
||||
|
||||
This is the democratization finding from the Princeton GEO paper
|
||||
(arXiv:2311.09735, Table 2): rank-5 sites gained ~+115% visibility with
|
||||
the Cite Sources method while rank-1 sites *lost* ~30%, averaged across
|
||||
their multi-domain experiment. Numbers are representative of the paper's
|
||||
test setup, not a universal guarantee. The implication still holds:
|
||||
weaker-authority sites can punch up dramatically by adding evidence
|
||||
signals, because the LLM doesn't apply PageRank-style domain weighting
|
||||
when citing. **It cares whether your sentence is the most quotable one.**
|
||||
|
||||
### 4. Engines diverge
|
||||
|
||||
Cross-engine citation overlap is 0.11–0.58 (Princeton + AutoGEO data).
|
||||
Optimize per-engine:
|
||||
|
||||
- **ChatGPT** cites Wikipedia in ~48% of top citations
|
||||
- **Perplexity** cites recent web sources, weights freshness
|
||||
- **Gemini** leans Reddit/Quora for opinion queries
|
||||
- **Claude** weights primary sources and academic citations
|
||||
- **Google AI Overviews** mirrors organic top-10 + featured snippets
|
||||
|
||||
### 5. Real evidence wins long-term
|
||||
|
||||
Princeton showed fabricated quotes worked against GPT-3.5. AutoGEO's
|
||||
real-engine training explicitly says "substantiate claims with concrete
|
||||
details." Engines have moved on. Build with real sources only.
|
||||
|
||||
---
|
||||
|
||||
## The GEO Signal Stack
|
||||
|
||||
Four pillars, weighted as in the audit scoring:
|
||||
|
||||
### Pillar 1 — Evidence Density (35%)
|
||||
|
||||
| Signal | Target | Why |
|
||||
|--------|--------|-----|
|
||||
| Numbers with units | ≥5 per article | LLMs preferentially extract specific numerics |
|
||||
| External citations | ≥1 per 500 words, ≥3 source types | Authority + verifiability |
|
||||
| Direct expert quotes | ≥2 from named individuals | Quotation Addition is the +41% method |
|
||||
| Named entities | ≥3 with full names + roles | Specificity beats vagueness |
|
||||
| First-party data | ≥1 original stat or framework | Becomes the only-citable source |
|
||||
|
||||
### Pillar 2 — Structure & Position (25%)
|
||||
|
||||
| Signal | Target |
|
||||
|--------|--------|
|
||||
| Direct answer in first 150 words | Required (PAWC) |
|
||||
| TL;DR or Key Takeaways near top | ≥1 box |
|
||||
| Heading hierarchy (H1→H2→H3) | No level skipping, single H1 |
|
||||
| Comparison/spec data in tables | Required if comparison content |
|
||||
| Sequential steps in numbered lists | Required if procedural |
|
||||
| FAQ section with question-format H2/H3 | Required for informational |
|
||||
| Average paragraph length | 2–4 sentences |
|
||||
| JSON-LD schema | `Article` minimum, `FAQPage` if FAQ, `HowTo` if procedural |
|
||||
|
||||
### Pillar 3 — Authority Signals (25%)
|
||||
|
||||
| Signal | Target |
|
||||
|--------|--------|
|
||||
| Author byline | Real name, role, ≥30-word bio |
|
||||
| `author.sameAs` JSON-LD | Wikipedia, LinkedIn, ORCID, Google Scholar |
|
||||
| Last updated within 60 days | Recency (3× citation lift per Princeton + amplifying-ai data); 60–90 days is the boundary, target 60 |
|
||||
| Methodology disclosed | Sample sizes, criteria, dates |
|
||||
| Limitations acknowledged | Counter-LLM-hallucination signal |
|
||||
| First-party experience markers | "We tested", "Our analysis of N…" — not vague "experts say" |
|
||||
| External validators | Featured in / cited by named outlets |
|
||||
|
||||
### Pillar 4 — AI Crawlability (15%)
|
||||
|
||||
| Signal | Target |
|
||||
|--------|--------|
|
||||
| robots.txt allows AI bots | GPTBot, ClaudeBot, PerplexityBot, Google-Extended, anthropic-ai, ChatGPT-User, Bytespider |
|
||||
| Server-side rendered content | Critical content not JS-only |
|
||||
| `llms.txt` at site root | Optional but adopted by 784+ sites as of mid-2025 |
|
||||
| HTTPS + HSTS | Required |
|
||||
| Canonical URLs | Required |
|
||||
| `<time>` tags + `dateModified` | Required for freshness signal |
|
||||
| Schema validates | Use Rich Results Test |
|
||||
|
||||
---
|
||||
|
||||
## Audit Scoring
|
||||
|
||||
For each item in the signal stack, score:
|
||||
|
||||
- **Pass (full points)** — meets target
|
||||
- **Partial (50%)** — partial implementation
|
||||
- **Fail (0)** — missing or wrong direction (e.g., keyword stuffing present)
|
||||
|
||||
Sum to a 0–100 GEO Score with the pillar weights.
|
||||
|
||||
### Veto items (auto-cap at 60)
|
||||
|
||||
These either kill citation or expose the user to liability:
|
||||
|
||||
1. **Self-contradictory data** — internal inconsistency on the page
|
||||
2. **Title-content intent mismatch** — clickbait
|
||||
3. **No identifiable author** — anonymous content rarely gets cited as primary source
|
||||
4. **AI crawlers blocked** in robots.txt or CDN/WAF
|
||||
5. **Fabricated citations or stats** detected — hard fail, not a cap
|
||||
6. **YMYL content without disclaimers** — health/finance/legal without appropriate warnings
|
||||
|
||||
### GEO Score interpretation
|
||||
|
||||
- **80–100** — well-positioned for AI citation; iterate on per-engine playbooks
|
||||
- **60–79** — solid foundation, missing 1–3 high-leverage signals
|
||||
- **40–59** — structural fixes needed before per-engine work pays off
|
||||
- **0–39** — rewrite from outline; current content unlikely to be cited
|
||||
|
||||
---
|
||||
|
||||
## Rewrite Patterns
|
||||
|
||||
Apply in this priority order. Stop when the content is at quality bar; not
|
||||
every page needs every pattern.
|
||||
|
||||
### Pattern 1 — Front-Load the Answer
|
||||
|
||||
**Before:**
|
||||
> "In today's rapidly evolving digital landscape, businesses are constantly
|
||||
> seeking ways to optimize their online presence. This article will explore
|
||||
> the various strategies and considerations involved in [topic]."
|
||||
|
||||
**After (template — replace bracketed values with real, verified data
|
||||
before publishing):**
|
||||
> "[Topic]'s ROI averages [REAL_NUMBER]× ([REAL_SOURCE_WITH_URL], [YEAR])
|
||||
> when implemented with [specific approach]. Three steps drive that lift:
|
||||
> [step 1], [step 2], [step 3]. Below: how to implement each in 2 weeks."
|
||||
|
||||
The first sentence carries: a specific number, a unit, a real-source
|
||||
citation, a year, and a concrete preview. PAWC will weigh this sentence
|
||||
~5× any conclusion paragraph. **Do not ship the template values** — every
|
||||
bracketed value must be replaced with a real, verifiable fact before this
|
||||
content goes live. Run the Evidence Hunt section below to source them.
|
||||
|
||||
### Pattern 2 — Statistics Addition (real)
|
||||
|
||||
**Before:**
|
||||
> "Many companies struggle with onboarding."
|
||||
|
||||
**After (template):**
|
||||
> "[REAL_PERCENT]% of [defined population] report [specific finding]
|
||||
> ([REAL_SOURCE_NAME_WITH_URL], [year], n=[real sample size])."
|
||||
|
||||
Rule: every claim that can be quantified, must be. Hunt for the real stat
|
||||
before falling back to vague language. If the stat doesn't exist publicly,
|
||||
follow the "What to do when the stat doesn't exist" section below — never
|
||||
keep the claim as a vague unsourced statement.
|
||||
|
||||
### Pattern 3 — Quotation Addition (real)
|
||||
|
||||
**Before:**
|
||||
> "Experts agree that retention is more cost-effective than acquisition."
|
||||
|
||||
**After (template):**
|
||||
> "'[Verbatim quote from a real, named person],' [wrote/said]
|
||||
> [Real Name] in *[Real Publication Title]* ([Publisher], [Year]),
|
||||
> [one-line context establishing why this person is authoritative]."
|
||||
|
||||
A real working example for the retention claim above: Frederick Reichheld
|
||||
& Earl Sasser's "Zero Defections: Quality Comes to Services" (Harvard
|
||||
Business Review, Sep–Oct 1990) is the canonical retention-economics
|
||||
citation. Verify the quote and URL before publishing.
|
||||
|
||||
Rule: cite a real person at a real org with a real publication. If you
|
||||
can't find one for the claim, the claim probably isn't load-bearing.
|
||||
|
||||
### Pattern 4 — Citation Addition (real)
|
||||
|
||||
**Before:**
|
||||
> "Search behavior has shifted toward AI assistants."
|
||||
|
||||
**After (template):**
|
||||
> "[Specific stat]% of [defined activity] now [specific behavior]
|
||||
> ([Real Research Firm], [Month Year], [URL]) versus [historical stat]
|
||||
> in [comparison year], with [observed pattern]."
|
||||
|
||||
Rule: ≥1 citation per 500 words, ≥3 source types per article. Source types
|
||||
include: peer-reviewed papers, government data, industry research firms,
|
||||
named publications, primary first-party data. Every citation must include
|
||||
a URL the reader can click — citations without verifiable URLs do not
|
||||
count toward the density target and trigger the fabrication veto.
|
||||
|
||||
### Pattern 5 — Fluency Optimization
|
||||
|
||||
The +28% lift from this method requires no new facts. It's just rewriting
|
||||
for flow. Apply it last, after you've added evidence.
|
||||
|
||||
Rules:
|
||||
- One idea per paragraph
|
||||
- Sentence variety: alternate short/medium/long
|
||||
- Active voice by default
|
||||
- Cut every word that doesn't earn its place
|
||||
- Read aloud test — if you stumble, rewrite
|
||||
|
||||
### Pattern 6 — Schema Markup
|
||||
|
||||
Minimum for any article-style content:
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "[H1]",
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "[Real name]",
|
||||
"url": "[Author page URL]",
|
||||
"sameAs": [
|
||||
"https://en.wikipedia.org/wiki/[Author]",
|
||||
"https://www.linkedin.com/in/[handle]",
|
||||
"https://orcid.org/[id]"
|
||||
]
|
||||
},
|
||||
"datePublished": "[ISO date]",
|
||||
"dateModified": "[ISO date]",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "[Org]",
|
||||
"logo": {"@type": "ImageObject", "url": "[Logo URL]"}
|
||||
},
|
||||
"mainEntityOfPage": "[Canonical URL]"
|
||||
}
|
||||
```
|
||||
|
||||
Add `FAQPage` if FAQ section present. Add `HowTo` if procedural. Validate
|
||||
at `search.google.com/test/rich-results` before publishing.
|
||||
|
||||
---
|
||||
|
||||
## Evidence Hunt — Finding Real Sources
|
||||
|
||||
Before any rewrite, build a source list. Tools in priority order:
|
||||
|
||||
1. **WebSearch** — for recent stats and named studies
|
||||
2. **WebFetch on primary source pages** — verify the stat exists at the URL
|
||||
3. **Google Scholar** (`scholar.google.com/scholar?q=...`) — academic
|
||||
4. **Government data portals** — `data.gov`, `bls.gov`, `eurostat.ec.europa.eu`,
|
||||
`data.gov.uk`
|
||||
5. **Named research firms** — Pew, Forrester, McKinsey, Gartner, Statista
|
||||
(cite the firm + publication date + report name)
|
||||
6. **Primary publications** — NYT, FT, WSJ, The Economist, trade press
|
||||
relevant to the topic
|
||||
7. **First-party data from the user** — ask: "Do you have any internal data
|
||||
that supports this claim?" Original first-party data is the strongest
|
||||
GEO signal.
|
||||
|
||||
### Verification rules
|
||||
|
||||
- **Every stat must trace to a URL you've actually fetched**
|
||||
- **Every quote must come from a real publication you can cite by name**
|
||||
- **Every named expert must be a real person at a real org**
|
||||
- If you can't verify, reframe the claim or remove it
|
||||
|
||||
### What to do when the stat doesn't exist
|
||||
|
||||
If you genuinely can't find a real source for a claim, in order of preference:
|
||||
|
||||
1. **Anchor to a related, verifiable stat** — "the broader [parent category]
|
||||
grew 12% in 2024 (Source, URL)" with a real source for the parent number.
|
||||
This is acceptable because the citation is real and the relationship is
|
||||
stated honestly.
|
||||
2. **Run an internal analysis** — if the user has data, use it. First-party
|
||||
data is the strongest GEO signal anyway.
|
||||
3. **Drop the claim** — if it's not load-bearing, cut it.
|
||||
|
||||
**Do not** keep the claim as a vague directional statement ("growing
|
||||
rapidly", "increasingly common", "many companies"). That violates the
|
||||
vague-entity anti-pattern below — vague unsourced statements are still
|
||||
fabrication-adjacent and dilute the page's evidence density.
|
||||
|
||||
Never invent. Not "according to a 2024 study", not "experts estimate", not
|
||||
"surveys show". Real source with URL, or no claim.
|
||||
|
||||
---
|
||||
|
||||
## Per-Engine Playbooks
|
||||
|
||||
Cross-engine citation overlap is 0.11–0.58. Tailor the strategy.
|
||||
|
||||
### ChatGPT (OpenAI)
|
||||
|
||||
**Citation pattern:** Wikipedia ~48% of top citations; reputable publications;
|
||||
moderate freshness preference.
|
||||
|
||||
**Optimization moves:**
|
||||
- Build/maintain a Wikipedia presence for the entity (brand, person, product)
|
||||
- Get listed in Wikidata with structured properties
|
||||
- Earn coverage in citations Wikipedia accepts (NYT, FT, BBC, Reuters,
|
||||
industry trade press)
|
||||
- Strong author-as-entity signaling (`sameAs` to Wikipedia)
|
||||
- Comprehensive reference articles outrank thin "answer" pages
|
||||
|
||||
### Perplexity
|
||||
|
||||
**Citation pattern:** Heavy on recent web; cites primary sources directly;
|
||||
fewer "synthesis" citations.
|
||||
|
||||
**Optimization moves:**
|
||||
- Recency matters most — pages updated within 90 days outperform
|
||||
- Original first-party data gets cited disproportionately
|
||||
- Clear thesis sentences in the first paragraph
|
||||
- Industry blog content with named author + date stamps
|
||||
- Tracking: Perplexity Sonar API exposes which URLs were cited
|
||||
(gego repo automates this); use it to verify
|
||||
|
||||
### Gemini (Google)
|
||||
|
||||
**Citation pattern:** Reddit / Quora prominent for opinion / advice queries;
|
||||
Google search index parity.
|
||||
|
||||
**Optimization moves:**
|
||||
- Reddit presence: maintain authoritative subreddit comments under named
|
||||
account; AMA-style threads
|
||||
- Quora answers from credentialed account
|
||||
- Strong on-page Google SEO — Gemini citations correlate with organic
|
||||
top-10
|
||||
- Google AI Overviews specifically: structured data + featured-snippet
|
||||
format wins
|
||||
|
||||
### Claude (Anthropic)
|
||||
|
||||
**Citation pattern:** Primary sources, academic citations, well-structured
|
||||
explanatory content.
|
||||
|
||||
**Optimization moves:**
|
||||
- Long-form, well-cited articles outperform short-form
|
||||
- Named author with verifiable credentials in `author.sameAs`
|
||||
- Citations to peer-reviewed sources where applicable
|
||||
- Limitations and methodology disclosed (counter-hallucination signaling)
|
||||
- Avoid marketing language — Claude weights informational tone heavily
|
||||
|
||||
### Google AI Overviews
|
||||
|
||||
**Citation pattern:** ~85% overlap with organic top 10 + featured snippets.
|
||||
|
||||
**Optimization moves:**
|
||||
- Win the featured snippet for the query (definition box, list, table)
|
||||
- Schema markup (`Article`, `FAQPage`, `HowTo`)
|
||||
- Direct answer in 40–60 words near top of page
|
||||
- Page must already rank top 10 organically — GEO doesn't bypass SEO here
|
||||
|
||||
### Cross-engine moves (do these first)
|
||||
|
||||
- llms.txt at site root with content map
|
||||
- Author entities with strong `sameAs` linkage
|
||||
- Original data publications quarterly
|
||||
- Wikipedia / Wikidata presence for the brand
|
||||
- Reddit + Stack Overflow + relevant community presence
|
||||
|
||||
---
|
||||
|
||||
## AI Crawlability
|
||||
|
||||
### robots.txt — must allow
|
||||
|
||||
```
|
||||
User-agent: GPTBot
|
||||
Allow: /
|
||||
|
||||
User-agent: ChatGPT-User
|
||||
Allow: /
|
||||
|
||||
User-agent: ClaudeBot
|
||||
Allow: /
|
||||
|
||||
User-agent: anthropic-ai
|
||||
Allow: /
|
||||
|
||||
User-agent: PerplexityBot
|
||||
Allow: /
|
||||
|
||||
User-agent: Perplexity-User
|
||||
Allow: /
|
||||
|
||||
User-agent: Google-Extended
|
||||
Allow: /
|
||||
|
||||
User-agent: Bytespider
|
||||
Allow: /
|
||||
|
||||
User-agent: Applebot-Extended
|
||||
Allow: /
|
||||
|
||||
User-agent: cohere-ai
|
||||
Allow: /
|
||||
|
||||
User-agent: meta-externalagent
|
||||
Allow: /
|
||||
```
|
||||
|
||||
If the user is currently blocking these (often inherited from default
|
||||
"block all bots" templates), this is the single highest-leverage fix.
|
||||
|
||||
### Optional: llms.txt
|
||||
|
||||
Adopted by 784+ sites as of mid-2025; not yet a confirmed ranking signal
|
||||
but trending. Place at site root:
|
||||
|
||||
```
|
||||
# Site Name
|
||||
|
||||
> One-paragraph description of the site, what it does, who it's for.
|
||||
|
||||
## Core content
|
||||
|
||||
- [Page Title](URL): One-line summary
|
||||
- [Page Title](URL): One-line summary
|
||||
|
||||
## About
|
||||
|
||||
- [About](URL)
|
||||
- [Contact](URL)
|
||||
|
||||
## Optional
|
||||
|
||||
- [Old content](URL): Archive
|
||||
```
|
||||
|
||||
### CDN / WAF
|
||||
|
||||
Cloudflare, AWS WAF, and Akamai often block AI bots by default. Verify
|
||||
in the CDN dashboard separately from robots.txt — robots.txt being
|
||||
permissive doesn't help if the WAF returns 403.
|
||||
|
||||
### Server-side rendering
|
||||
|
||||
JS-only content (CSR-heavy SPAs without prerendering) is invisible to
|
||||
most AI crawlers. Use Next.js / Nuxt / Astro / Remix server rendering
|
||||
or static generation for any page that should be cited.
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
These either don't work or actively hurt:
|
||||
|
||||
### Hard fails (will cause penalties or removal)
|
||||
|
||||
- **Fabricated citations / quotes / stats** — see Step 5 of SKILL.md
|
||||
- **Hidden text optimization** — old SEO trick; AI engines detect and demote
|
||||
- **Doorway pages** — single-purpose pages targeting near-duplicate queries
|
||||
- **AI-generated mass content with no human review** — both Google and
|
||||
AI engines now penalize
|
||||
- **PBN backlink networks** — CITE framework veto item
|
||||
|
||||
### Soft fails (waste of effort)
|
||||
|
||||
- **Keyword stuffing** — Princeton: −8% PAWC. Stop.
|
||||
- **Generic AI-language intros** — "In today's rapidly evolving landscape…"
|
||||
Cut.
|
||||
- **Vague entities** — "a leading company", "experts say", "studies show".
|
||||
Specify or remove.
|
||||
- **Unsupported superlatives** — "the best", "the most comprehensive".
|
||||
Either back with data or cut.
|
||||
- **Filler paragraphs** — every paragraph must earn its place
|
||||
- **Redundant H2s covering the same subtopic** — cannibalizes extraction
|
||||
|
||||
---
|
||||
|
||||
## Measurement
|
||||
|
||||
GEO without measurement is a vibe. Set up at minimum:
|
||||
|
||||
### Citation tracking
|
||||
|
||||
- **gego** — open source (Go), self-host. Schedules prompts across
|
||||
OpenAI, Anthropic, Gemini, Perplexity, Ollama; regex-matches brand
|
||||
mentions; Perplexity Sonar URL capture is unique. Repo:
|
||||
https://github.com/AI2HU/gego — clone, follow README to set API keys
|
||||
and run the cron scheduler.
|
||||
- **llmopt** — open source (Go + React), self-host. Richer multi-pillar
|
||||
scoring (LLM knowledge testing, AEO content scoring, video authority
|
||||
via YouTube transcripts, Reddit authority, search visibility), MCP
|
||||
integration for Claude Code/Desktop. Repo:
|
||||
https://github.com/jonradoff/llmopt — clone, follow README to
|
||||
configure API keys and start the dashboard.
|
||||
- **Manual baseline** — every 2 weeks, run 5 brand queries + 5 category
|
||||
queries against ChatGPT, Claude, Perplexity, Gemini. Log: cited (Y/N),
|
||||
position in answer, sentiment.
|
||||
|
||||
### Content KPIs (per page)
|
||||
|
||||
- GEO Score (this skill's audit)
|
||||
- Citations per AI engine, per query
|
||||
- Position in AI answer (1st sentence, 1st paragraph, body, footer)
|
||||
- Click-through from AI answer (if engine surfaces source links)
|
||||
- Organic traffic to the page (control variable)
|
||||
|
||||
### Brand KPIs
|
||||
|
||||
- Share of Model — % of category-query AI answers mentioning brand
|
||||
- Cross-engine coverage — % of monitored engines citing brand
|
||||
- Sentiment in AI answers — positive / neutral / negative
|
||||
- Wikipedia presence + Wikidata edit recency
|
||||
|
||||
### Monthly review
|
||||
|
||||
- Which content is being cited? Why? (extract the pattern, replicate)
|
||||
- Which content was optimized but isn't cited? Why? (audit fail mode)
|
||||
- Which queries does the brand never appear in? (off-site authority gap?)
|
||||
- Which engines diverge most from the others? (engine-specific playbook
|
||||
not yet running)
|
||||
|
||||
---
|
||||
|
||||
## Quick reference: Do / Don't
|
||||
|
||||
### Do
|
||||
- Front-load the answer in first 150 words
|
||||
- Add real stats with units, sources, dates
|
||||
- Quote real named experts from named publications
|
||||
- Cite ≥1 external source per 500 words from ≥3 source types
|
||||
- Update content every 60 days for competitive queries, 90 days minimum for stable topics
|
||||
- Allow all major AI crawlers in robots.txt + CDN
|
||||
- Add Article + FAQPage + HowTo schema as appropriate
|
||||
- Build Wikipedia / Wikidata / Reddit presence
|
||||
- Track citations across all four major engines
|
||||
- Publish original first-party data quarterly
|
||||
|
||||
### Don't
|
||||
- Fabricate stats, quotes, citations, or expert names
|
||||
- Keyword-stuff (−8% PAWC, actively hurts)
|
||||
- Use vague entities ("experts say", "studies show")
|
||||
- Block AI crawlers in robots.txt or WAF
|
||||
- Ship JS-only content without SSR/SSG
|
||||
- Treat GEO as identical to SEO (different signals, different weights)
|
||||
- Optimize for one engine and assume the others follow
|
||||
- Skip the author byline + sameAs linkage
|
||||
Reference in New Issue
Block a user