GEO Writer
Makes public-facing text extractable and citable by LLM-based search engines. Classic SEO is losing ~25% of traffic to AI Overviews, ChatGPT, Perplexity, Gemini, and Claude — content must be structured for extraction, not just for reading.
Based on the GEO-SFE framework (arXiv 2603.29979) and 2026 practitioner sources. Full guide in geo-writing-guide.md. Pre-publish checklist in pre-publish-checklist.md.
When to Use
- Blog posts, articles, pillar guides
- Landing pages, help articles, glossary entries
- FAQ blocks, comparison pages, tutorials
- Programmatic SEO templates
- Any text meant to be surfaced or cited by an AI engine
Do NOT apply to: internal docs, ADRs, code comments, commit messages, AI asset files.
Core Principles
- Write for extraction, not just reading. LLMs lift 30-180 word chunks. Every section must stand alone.
- Answer first, context second. The first sentence of each H2/H3 fully answers the implied question in 30-60 words.
- One topic per section. One H2 = one entity or question. Do not merge sub-topics.
- Entity-first, not keyword-first. Name the product, brand, person, or concept explicitly. Never start paragraphs with
It, This, They referring to prior sections.
- Verifiable > persuasive. Every non-trivial claim needs a statistic, date, source, or named example.
Process
- Read project brand context —
marketing/MARKETING.md at project root (if exists) for canonical brand terms, product name, category label, metric names, audience. Use these verbatim.
- Draft macro structure — single literal H1, 5-9 H2 sections each phrased as a standalone question or declarative topic, TL;DR section at end.
- Apply meso chunking — paragraphs 40-80 words (hard cap 120), sections 120-180 words, one idea per paragraph, statistic/named source every 150-200 words.
- Apply micro emphasis — bold 3-5 most quotable phrases per section, bullet lists for 3+ items, tables for any 2+ entity comparison across 2+ attributes.
- Insert high-leverage formats — FAQ block (4-8 Q&A), comparison table where natural, named stats with year, direct quotes from named experts.
- Attach schema — Organization + Article + Person on every article; FAQPage for any Q&A block; HowTo for tutorials; Product/SoftwareApplication for tool pages; DefinedTerm for glossary.
- Run
@humanizer — remove AI-sounding patterns. GEO and humanizer are complementary: GEO optimizes structure, humanizer optimizes voice.
- Run pre-publish checklist — see
pre-publish-checklist.md. Every item must pass or be explicitly waived.
Answer-First Template
## <Question phrased as H2>
<30-60 word direct answer, no preamble, entity named explicitly.>
<Optional 1-2 supporting paragraphs, 40-80 words each, with at least one number or named source.>
<Optional bullet list, table, or code block.>
Do: ## What is an AI-Readiness Score? → first sentence fully defines the term, names the product, lists the dimensions.
Do not: ## Understanding the Score → first sentence says When it comes to AI search, there are many things to consider....
Format Patterns That Get Cited
Ranked by observed citation lift:
| Pattern |
Why it works |
When to use |
| Comparison tables |
Clean extraction across rows/columns |
Tools, pricing, competitors, features |
| FAQ + matching JSON-LD |
3.1-3.2× higher extraction vs prose |
End of every pillar page |
| How-to numbered steps |
Maps to HowTo schema |
Tutorials, onboarding, fix-it posts |
| Definition + example pairs |
Matches X is Y retrieval pattern |
Glossary, concept explainers |
| Named stats with year |
+22% AI visibility in 2026 is quotable |
Intros, thought leadership |
| Direct quotes from named experts |
Quotation patterns boost visibility ~37% |
Trend posts, research summaries |
Comparison articles lead citation rates at ~32.5% across all formats.
Schema / JSON-LD (Mandatory)
On every page
- Organization (homepage +
sameAs on every article)
- WebSite with
potentialAction for sitelinks search
- BreadcrumbList on every non-homepage URL
By content type
| Content type |
Required schema |
Pre-built template |
Notes |
| Article / blog |
Article + Person (author) |
assets/jsonld-templates/Article.json + Person.json |
datePublished, dateModified, author.sameAs |
| Pillar / guide with Q&A |
Article + FAQPage |
assets/jsonld-templates/FAQPage.json |
Questions must literally match prompt phrasing |
| Tutorial / walkthrough |
HowTo |
assets/jsonld-templates/HowTo.json |
step array with 3-8 steps |
| Product / tool page |
Product or SoftwareApplication |
assets/jsonld-templates/Product.json or SoftwareApplication.json |
aggregateRating if honest data exists |
| Glossary entry |
DefinedTerm in DefinedTermSet |
assets/jsonld-templates/DefinedTerm.json |
|
| Site-level (homepage) |
Organization + WebSite |
assets/jsonld-templates/Organization.json + WebSite.json |
WebSite.potentialAction enables sitelinks search box |
| Non-homepage URL |
BreadcrumbList |
assets/jsonld-templates/BreadcrumbList.json |
One ListItem per crumb, position 1..N |
FAQPage is the single highest-leverage schema: 4-8 questions per page, 8-20 words each; answers 40-80 words, self-contained, matching the prompt phrasing; never duplicate marketing copy. Validate in Google Rich Results Test and schema.org/validator.
Schema templates
Pre-built JSON-LD templates with realistic example values live in assets/jsonld-templates/. Copy the file matching your content type, replace example values with project-specific data (canonical brand from marketing/MARKETING.md, real URLs, real datePublished/dateModified), and embed inside <script type="application/ld+json">. Each template has a valid @context + @type root and validates conceptually in Google Rich Results Test before any project data is added.
Available templates: Article.json, FAQPage.json, HowTo.json, Person.json, Organization.json, WebSite.json, BreadcrumbList.json, Product.json, SoftwareApplication.json, DefinedTerm.json.
Entities and Brand Signals
Off-site brand mentions correlate with AI visibility at 0.67 — stronger than any on-site factor. Mentions beat backlinks 3:1 for AI Overviews.
Rules:
- Use the canonical brand form verbatim — from
marketing/MARKETING.md. No variant spellings, no acronyms mid-article.
- Use the canonical category name and metric names — invented variants fragment the entity graph.
- Link first mention of any external entity to its canonical page (Wikipedia, official docs).
- Internal links — every pillar page must interlink to glossary terms and at least 3 related articles.
- Never change terminology mid-article.
GEO score in one paragraph and AI-readiness rating in the next confuses retrieval.
If marketing/MARKETING.md is absent — ask the user for canonical brand form, category name, and metric names before writing.
Freshness Rules
Pages not refreshed quarterly lose AI citations at ~3× the normal rate.
| Content type |
Refresh cadence |
| Time-sensitive (algo updates, model releases) |
24-48 hours |
| FAQ on pillar pages |
Monthly |
| Evergreen guides |
Quarterly |
| Glossary |
Quarterly |
| Landing / commercial pages |
Quarterly |
On every refresh: update dateModified in schema, add visible Updated on YYYY-MM-DD line under H1, replace at least one stat or example with a fresher one. Perplexity materially favors updates within the last 2-3 days.
Platform Differentiation
| Engine |
Dominant source |
Optimization lever |
| ChatGPT |
Wikipedia (~48%), training data |
Semantic authority, long-lived authoritative pages, Wikipedia entity parity |
| Perplexity |
Reddit (~47%) + live web |
Freshness (2-3 days), Reddit presence, clear dates |
| Google AI Overviews |
Organic top 10 (99%) |
Classic SEO + schema; top-10 or not cited |
| Gemini |
YouTube + Knowledge Graph |
Video content with chapters, Knowledge Panel |
| Claude |
Curated authoritative sources |
Cite your own sources inline; neutral, evidence-based tone |
Off-site portfolio for pillar topics: 1 Reddit post/comment in a relevant subreddit, 1 YouTube video with descriptive chapters (YouTube overtook Reddit as the #1 LLM citation source in October 2025 — ~16% vs ~10%), 1 LinkedIn long-form post for B2B visibility.
Anti-Patterns
- Burying the lede.
In this post we will explore... openings.
- Pronoun drift. Paragraphs starting with
It, This, They referring to earlier entities.
- Walls of text. Paragraphs over 120 words.
- Opinion without a named source.
Experts say is invisible to RAG.
- Duplicate FAQ between body prose and FAQPage schema. LLMs de-duplicate aggressively.
- Undated statistics.
Studies show +30% with no year or link.
- AI-generated filler. Always run
@humanizer before publishing.
- Changing terminology mid-article. Confuses the entity graph.
Output Format
When producing GEO-optimized text, deliver:
- Draft — macro/meso/micro structure applied
- Checklist pass — run
pre-publish-checklist.md, report each item
- Schema block — JSON-LD for the content type, ready to embed
- Humanizer pass — applied before final delivery
- Follow-ups — off-site companion assets suggested (Reddit / YouTube / LinkedIn), freshness cadence noted
Integration
- Rule:
geo-content rule auto-activates this skill for public-facing content meant to be cited by AI engines
- Companion skill:
@humanizer — GEO structures extraction, humanizer removes AI voice. Always run both.
- Used by workflows:
/content-creation (Step 4 of blog pipeline; merged from former /blog-post), /marketing (content operations; absorbed former marketing-operations skill), /docs and /docs-pack (public-facing content), /seo-review (GEO audit alongside classic SEO)
- Used by skills:
content-creation (structural gate), social-media-manager (LLM-quotable post framing)
- Companion resources:
geo-writing-guide.md (full reference), pre-publish-checklist.md (PR checklist template)
- Brand context source:
marketing/MARKETING.md at project root — canonical terms, audience, category
1---2name: geo-writer3description: Use this skill when writing or editing public-facing text intended to be cited or quoted by LLMs (ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews) — blog posts, landing pages, help articles, FAQ blocks, programmatic SEO templates, pillar guides — to optimize that text for GEO/AEO (Generative Engine Optimization and Answer Engine Optimization).4---56<!-- ARCHITECTURAL NOTE: intentional model-invocable companion — deliberately no `context: fork` and no `disable-model-invocation`. GEO writing guide applied by the Content Writer and the `/content-creation` / `/docs-pack` pipelines; it must stay model-invocable and composable into the caller's thread (not forked, not knowledge-only). Not a defect — do not reclassify. -->78# GEO Writer910Makes public-facing text extractable and citable by LLM-based search engines. Classic SEO is losing ~25% of traffic to AI Overviews, ChatGPT, Perplexity, Gemini, and Claude — content must be structured for extraction, not just for reading.1112Based on the GEO-SFE framework (arXiv 2603.29979) and 2026 practitioner sources. Full guide in `geo-writing-guide.md`. Pre-publish checklist in `pre-publish-checklist.md`.1314## When to Use1516- Blog posts, articles, pillar guides17- Landing pages, help articles, glossary entries18- FAQ blocks, comparison pages, tutorials19- Programmatic SEO templates20- Any text meant to be surfaced or cited by an AI engine2122Do NOT apply to: internal docs, ADRs, code comments, commit messages, AI asset files.2324## Core Principles25261. **Write for extraction, not just reading.** LLMs lift 30-180 word chunks. Every section must stand alone.272. **Answer first, context second.** The first sentence of each H2/H3 fully answers the implied question in 30-60 words.283. **One topic per section.** One H2 = one entity or question. Do not merge sub-topics.294. **Entity-first, not keyword-first.** Name the product, brand, person, or concept explicitly. Never start paragraphs with `It`, `This`, `They` referring to prior sections.305. **Verifiable > persuasive.** Every non-trivial claim needs a statistic, date, source, or named example.3132## Process33341. **Read project brand context** — `marketing/MARKETING.md` at project root (if exists) for canonical brand terms, product name, category label, metric names, audience. Use these verbatim.352. **Draft macro structure** — single literal H1, 5-9 H2 sections each phrased as a standalone question or declarative topic, TL;DR section at end.363. **Apply meso chunking** — paragraphs 40-80 words (hard cap 120), sections 120-180 words, one idea per paragraph, statistic/named source every 150-200 words.374. **Apply micro emphasis** — bold 3-5 most quotable phrases per section, bullet lists for 3+ items, tables for any 2+ entity comparison across 2+ attributes.385. **Insert high-leverage formats** — FAQ block (4-8 Q&A), comparison table where natural, named stats with year, direct quotes from named experts.396. **Attach schema** — Organization + Article + Person on every article; FAQPage for any Q&A block; HowTo for tutorials; Product/SoftwareApplication for tool pages; DefinedTerm for glossary.407. **Run `@humanizer`** — remove AI-sounding patterns. GEO and humanizer are complementary: GEO optimizes structure, humanizer optimizes voice.418. **Run pre-publish checklist** — see `pre-publish-checklist.md`. Every item must pass or be explicitly waived.4243## Answer-First Template4445```46## <Question phrased as H2>4748<30-60 word direct answer, no preamble, entity named explicitly.>4950<Optional 1-2 supporting paragraphs, 40-80 words each, with at least one number or named source.>5152<Optional bullet list, table, or code block.>53```5455Do: `## What is an AI-Readiness Score?` → first sentence fully defines the term, names the product, lists the dimensions.5657Do not: `## Understanding the Score` → first sentence says `When it comes to AI search, there are many things to consider...`.5859## Format Patterns That Get Cited6061Ranked by observed citation lift:6263| Pattern | Why it works | When to use |64|---|---|---|65| Comparison tables | Clean extraction across rows/columns | Tools, pricing, competitors, features |66| FAQ + matching JSON-LD | 3.1-3.2× higher extraction vs prose | End of every pillar page |67| How-to numbered steps | Maps to HowTo schema | Tutorials, onboarding, fix-it posts |68| Definition + example pairs | Matches `X is Y` retrieval pattern | Glossary, concept explainers |69| Named stats with year | `+22% AI visibility in 2026` is quotable | Intros, thought leadership |70| Direct quotes from named experts | Quotation patterns boost visibility ~37% | Trend posts, research summaries |7172Comparison articles lead citation rates at ~32.5% across all formats.7374## Schema / JSON-LD (Mandatory)7576### On every page77- **Organization** (homepage + `sameAs` on every article)78- **WebSite** with `potentialAction` for sitelinks search79- **BreadcrumbList** on every non-homepage URL8081### By content type8283| Content type | Required schema | Pre-built template | Notes |84|---|---|---|---|85| Article / blog | `Article` + `Person` (author) | `assets/jsonld-templates/Article.json` + `Person.json` | `datePublished`, `dateModified`, `author.sameAs` |86| Pillar / guide with Q&A | `Article` + `FAQPage` | `assets/jsonld-templates/FAQPage.json` | Questions must literally match prompt phrasing |87| Tutorial / walkthrough | `HowTo` | `assets/jsonld-templates/HowTo.json` | `step` array with 3-8 steps |88| Product / tool page | `Product` or `SoftwareApplication` | `assets/jsonld-templates/Product.json` or `SoftwareApplication.json` | `aggregateRating` if honest data exists |89| Glossary entry | `DefinedTerm` in `DefinedTermSet` | `assets/jsonld-templates/DefinedTerm.json` | |90| Site-level (homepage) | `Organization` + `WebSite` | `assets/jsonld-templates/Organization.json` + `WebSite.json` | `WebSite.potentialAction` enables sitelinks search box |91| Non-homepage URL | `BreadcrumbList` | `assets/jsonld-templates/BreadcrumbList.json` | One ListItem per crumb, position 1..N |9293**FAQPage** is the single highest-leverage schema: 4-8 questions per page, 8-20 words each; answers 40-80 words, self-contained, matching the prompt phrasing; never duplicate marketing copy. Validate in Google Rich Results Test and schema.org/validator.9495### Schema templates9697Pre-built JSON-LD templates with realistic example values live in `assets/jsonld-templates/`. Copy the file matching your content type, replace example values with project-specific data (canonical brand from `marketing/MARKETING.md`, real URLs, real `datePublished`/`dateModified`), and embed inside `<script type="application/ld+json">`. Each template has a valid `@context` + `@type` root and validates conceptually in Google Rich Results Test before any project data is added.9899Available templates: `Article.json`, `FAQPage.json`, `HowTo.json`, `Person.json`, `Organization.json`, `WebSite.json`, `BreadcrumbList.json`, `Product.json`, `SoftwareApplication.json`, `DefinedTerm.json`.100101## Entities and Brand Signals102103Off-site brand mentions correlate with AI visibility at 0.67 — stronger than any on-site factor. Mentions beat backlinks 3:1 for AI Overviews.104105Rules:106- **Use the canonical brand form verbatim** — from `marketing/MARKETING.md`. No variant spellings, no acronyms mid-article.107- **Use the canonical category name and metric names** — invented variants fragment the entity graph.108- **Link first mention of any external entity** to its canonical page (Wikipedia, official docs).109- **Internal links** — every pillar page must interlink to glossary terms and at least 3 related articles.110- **Never change terminology mid-article.** `GEO score` in one paragraph and `AI-readiness rating` in the next confuses retrieval.111112If `marketing/MARKETING.md` is absent — ask the user for canonical brand form, category name, and metric names before writing.113114## Freshness Rules115116Pages not refreshed quarterly lose AI citations at ~3× the normal rate.117118| Content type | Refresh cadence |119|---|---|120| Time-sensitive (algo updates, model releases) | 24-48 hours |121| FAQ on pillar pages | Monthly |122| Evergreen guides | Quarterly |123| Glossary | Quarterly |124| Landing / commercial pages | Quarterly |125126On every refresh: update `dateModified` in schema, add visible `Updated on YYYY-MM-DD` line under H1, replace at least one stat or example with a fresher one. Perplexity materially favors updates within the last 2-3 days.127128## Platform Differentiation129130| Engine | Dominant source | Optimization lever |131|---|---|---|132| ChatGPT | Wikipedia (~48%), training data | Semantic authority, long-lived authoritative pages, Wikipedia entity parity |133| Perplexity | Reddit (~47%) + live web | Freshness (2-3 days), Reddit presence, clear dates |134| Google AI Overviews | Organic top 10 (99%) | Classic SEO + schema; top-10 or not cited |135| Gemini | YouTube + Knowledge Graph | Video content with chapters, Knowledge Panel |136| Claude | Curated authoritative sources | Cite your own sources inline; neutral, evidence-based tone |137138Off-site portfolio for pillar topics: 1 Reddit post/comment in a relevant subreddit, 1 YouTube video with descriptive chapters (YouTube overtook Reddit as the #1 LLM citation source in October 2025 — ~16% vs ~10%), 1 LinkedIn long-form post for B2B visibility.139140## Anti-Patterns141142- **Burying the lede.** `In this post we will explore...` openings.143- **Pronoun drift.** Paragraphs starting with `It`, `This`, `They` referring to earlier entities.144- **Walls of text.** Paragraphs over 120 words.145- **Opinion without a named source.** `Experts say` is invisible to RAG.146- **Duplicate FAQ between body prose and FAQPage schema.** LLMs de-duplicate aggressively.147- **Undated statistics.** `Studies show +30%` with no year or link.148- **AI-generated filler.** Always run `@humanizer` before publishing.149- **Changing terminology mid-article.** Confuses the entity graph.150151## Output Format152153When producing GEO-optimized text, deliver:1541551. **Draft** — macro/meso/micro structure applied1562. **Checklist pass** — run `pre-publish-checklist.md`, report each item1573. **Schema block** — JSON-LD for the content type, ready to embed1584. **Humanizer pass** — applied before final delivery1595. **Follow-ups** — off-site companion assets suggested (Reddit / YouTube / LinkedIn), freshness cadence noted160161## Integration162163- **Rule**: `geo-content` rule auto-activates this skill for public-facing content meant to be cited by AI engines164- **Companion skill**: `@humanizer` — GEO structures extraction, humanizer removes AI voice. Always run both.165- **Used by workflows**: `/content-creation` (Step 4 of blog pipeline; merged from former `/blog-post`), `/marketing` (content operations; absorbed former marketing-operations skill), `/docs` and `/docs-pack` (public-facing content), `/seo-review` (GEO audit alongside classic SEO)166- **Used by skills**: `content-creation` (structural gate), `social-media-manager` (LLM-quotable post framing)167- **Companion resources**: `geo-writing-guide.md` (full reference), `pre-publish-checklist.md` (PR checklist template)168- **Brand context source**: `marketing/MARKETING.md` at project root — canonical terms, audience, category