Skip to main content

Writing

GEO — AI search optimization

Generative Engine Optimization. How to rank in ChatGPT, Perplexity, Google AI Overviews, and Bing Copilot answer boxes — the patterns that work, the ones that don't, and why it's different from classic SEO.

Classic SEO optimised for the ten blue links. GEO — Generative Engine Optimization — optimises for the one paragraph an LLM pastes above them. ChatGPT browse, Perplexity, Google AI Overviews, Bing Copilot all work the same way: query → retrieve top-N pages → synthesise a ~200-word answer → cite 3-5 sources. Ranking #1 in classic SEO doesn't mean you're the cited source in the AI answer.

This guide covers the patterns that get your page cited.

Why GEO is different from SEO

Classic SEO targets a query → click

Title tag, meta description, headings, backlinks, word count. Success = reader clicks to your site. Page content after the click is secondary.

GEO targets a query → quote

Answer paragraphs, citation-worthy sentences, structured facts. Success = the LLM synthesiser pulls your exact sentence into its answer. The reader may never click — they got the answer.

Classic SEO rewards length

Longer pages rank better in most niches. 1500+ words is table stakes.

GEO rewards density

The best 3-sentence paragraph on the topic wins the citation. Long pages get their best chunks picked and the rest ignored.

The seven patterns

1. Lead-with-the-answer

LLMs retrieve chunk-by-chunk. The first chunk that matches the query wins. Put the answer in the first paragraph, not after a build-up.

❌ Build-up — LLM retrieves the intro paragraph, has nothing to cite

# Rate limits

Acme implements a rate-limiting system to protect our infrastructure
and ensure fair use for all customers. We continually monitor...

✅ Answer first — LLM retrieves the first paragraph, has the limit to cite

# Rate limits

Default limit: 100 requests per minute per API key. Enterprise plans
scale to 1000/min. Exceed the limit → HTTP 429 with `Retry-After` header.

2. Query-matching headings

The retrieval step matches query keywords to heading text. "How do I add a CAA record" searches for "CAA record" — make sure your heading says that exactly, not "DNS records" or "SSL preparation".

❌ Vague                    ✅ Query-matching
## DNS                       ## CAA records
## Configuration             ## Environment variables
## More info                 ## Rate limit error codes (429)
## Getting started           ## Install the SDK via npm

One query per heading. Multiple-question headings ("DNS + SSL + CAA") confuse the matching.

3. Quotable fact sentences

LLMs pull sentences, not paragraphs. Write sentences the synthesiser can drop into an answer without editing.

  • Complete. "Default limit: 100 req/min" beats "we set a reasonable limit."

  • Self-contained. "Acme's API returns JSON." beats "It returns JSON." — pronouns don't survive chunking.

  • Imperative when instructive. "Add the CAA record: acme.com. IN CAA 0 issue letsencrypt.org" beats "You might want to add a CAA record."

4. Structured data wins citations

LLMs prefer quoting structured content over prose. Given two equivalent pages, the one with a table gets cited.

Tables

Per-field semantics, numeric limits, pricing tiers, HTTP status codes. LLMs quote table rows intact.

Code blocks

Commands, config snippets, curl examples. Round-trip cleanly through every LLM.

ParamField / ResponseField

API docs with explicit type / required / default cite cleanly. Loose prose descriptions ("you'll probably want to set...") don't.

Step-by-step lists

Imperative numbered steps are the highest-citation format for how-to content. Paragraph walkthroughs lose.

5. Canonical URL + <link rel="canonical">

LLMs cite URLs. If your page lives at https://docs.acme.com/api/custom-domain but the canonical URL points to https://acme-docs.vercel.app/api/custom-domain, the LLM cites the Vercel URL — embarrassing and potentially broken on deploy.

NookDocs emits canonical tags automatically. When you add a custom domain and mark it primary, every page's <link rel="canonical"> updates. Verify once after adding a domain:

curl -sI https://docs.acme.com/any-page | grep -i canonical
# Link: <https://docs.acme.com/any-page>; rel="canonical"

6. First-paragraph definition

Glossary-style first paragraphs rank in answer boxes. LLMs synthesise "what is X?" questions by pulling the first definition they find.

✅ First paragraph defines the term

# Rate limits

Acme enforces 100 requests per minute per API key by default, returning
HTTP 429 with a `Retry-After` header when exceeded. Enterprise customers
can request higher limits via support.

This one paragraph will cite for "what is Acme's rate limit", "how many req/min does Acme allow", "does Acme rate limit by API key", and "what HTTP status does Acme return for rate limit?".

7. Freshness signals

LLMs prefer fresh sources when synthesis uncertainty is high. Signals the retrieval step uses:

  • <time> tags + ISO dates in visible prose ("Updated 2026-04-20")

  • NookDocs' Last Updated footer — automatically emitted from the last git commit touching the file

  • Year in heading or subtitle — "2026 API changes", "Q2 2026 updates"

  • Changelog pages with recent <Update date="..."> entries

Dates from 2+ years ago get deprioritised. Pages with no date at all get assumed-stale and deprioritised further.

Where each AI engine gets its content

EngineHow it fetches your pageGEO implication
ChatGPT (browse)Bing search → top N → read HTML + renderClassic SEO signals matter for the initial retrieval. GEO structure matters for citation.
PerplexityOwn index + Bing. Checks /llms.txt when present./llms.txt presence is a real signal. NookDocs auto-generates.
Claude.ai ProjectsUser pastes URL. Claude fetches HTML + checks /llms.txt / /<slug>.md.LLM-optimised endpoints win — ship both.
Google AI OverviewsSame index as Google search. Schema.org + featured-snippet patterns rank.JSON-LD TechArticle / BreadcrumbList / Organization / FAQPageNookDocs emits these automatically (tune via GEO config).
Bing CopilotBing index + content-type negotiation.Accept: text/markdown returns raw MDX (roadmap on our side). .md URL suffix works today.
Google Gemini / BardGoogle index. Schema-driven.Same as AI Overviews.

Takeaway: emit rich HTML for classic search bots, AND emit /llms.txt + /<page>.md for AI crawlers. NookDocs does both automatically.

What NookDocs emits automatically

Every page ships JSON-LD structured data — the format AI Overviews, Perplexity, and Gemini parse to understand and cite a page:

  • TechArticle — headline, description, dates, author, keywords, license

  • BreadcrumbList — the page's place in your nav hierarchy

  • Organization + WebSite — your publisher entity (name, logo, sameAs)

  • FAQPage — from a page's frontmatter faq (see below)

Tune it with the geo config block: set your organization.sameAs profiles, primary topics, content license, and a custom /llms.txt intro. You can also control which AI crawlers may access your site (geo.aiCrawlers). Everything is on by default — a site with no geo block still emits sensible structured data.

FAQ schema

Add a faq array to any page's frontmatter and NookDocs emits a FAQPage — the single most cited format in answer engines:

---
title: Rate limits
faq:
  - q: What is the default rate limit?
    a: 100 requests per minute per API key.
  - q: What happens when I exceed it?
    a: The API returns HTTP 429 with a Retry-After header.
---

Anti-patterns

Measuring GEO success

Classic SEO tracks impressions, clicks, rankings. GEO tracking is harder because AI engines don't expose impressions or ranks. Proxies that work:

  1. AI traffic referrer. Check for chat.openai.com, perplexity.ai, claude.ai, gemini.google.com in your analytics referrer field. Not precise but signals "users are coming here from AI answers".

  2. Manual LLM spot-checks. Weekly, ask the top 5-10 questions about your product in ChatGPT + Perplexity + Google AI. Note whether your docs are cited. Trend over time.

  3. Brand mention tracking. Tools like Profound, Otterly, HubSpot AI Grader track "does the LLM mention your brand when answering relevant questions?". Early-stage, mostly heuristic.

Expect messy data. The discipline is about patterns (see the seven above), not dashboard-watching.

Related

Was this page helpful?

Last updated August 9, 2026

GEO — AI search optimization | NookDocs | NookDocs