LLM SEO starts with how LLM search picks sources

“LLM SEO” is a field mostly made of restated guesses: listicles claiming schema markup gets you cited, llms.txt is a ranking signal, studies that can’t agree on basic overlap numbers. Almost none of it distinguishes what a vendor has documented from what an SEO agency inferred from watching outputs change. This piece keeps that line visible throughout: documented (a vendor said so, in their own docs), reported (credible third-party measurement, methodology stated), speculative (repeated online, no traceable source). It closes with the part most LLM-SEO advice skips — how you’d know if any of it worked.

Google AI Overviews is the most transparent of the three. Google’s own Search Central documentation states there is no separate “AI index” or “AI ranking algorithm” — AI Overviews draws from the same Search index, “rooted in our core Search ranking and quality systems” in the docs’ own words, plus a Gemini-based language layer, and recommends the same helpful-content/E-E-A-T guidance as ordinary ranking. Google also documents “query fan-out”: AI Overviews may issue several related sub-queries to assemble one answer rather than answering off a single search. That much is documented, straight from Google. Third-party measurement adds texture but isn’t Google’s number: seoClarity’s 432,000-keyword study found 97% of AI Overviews cite at least one top-20 organic source, and BrightEdge’s separate long-running tracking put the exact-overlap between AI Overview citations and organic-ranked pages at 54.5% as of September 2025 — after steep growth through early 2025, BrightEdge’s own series shows the metric roughly flat around 54% since mid-2025 — two different studies measuring two different things, which is exactly why we name both rather than blending them into one statistic.

ChatGPT Search runs on a dedicated crawler, OAI-SearchBot, which OpenAI documents separately from GPTBot (the general training crawler) — one of the few hard facts here, straight from OpenAI’s bot documentation (now at developers.openai.com/api/docs/bots). ChatGPT Search historically leaned heavily on Bing’s index and API; one piece of third-party measurement (Search Engine Land, reporting on observed agent behavior in late 2025) put roughly 92% of ChatGPT’s agent queries routing through the Bing Search API at that point — reported, not OpenAI-stated architecture. Beyond that, treat claims carefully: you’ll see specific “index overlap” percentages between ChatGPT, Google, and Bing thrown around. Different studies give materially different figures for the same question, and we’re deliberately not reprinting any — the honest summary is that ChatGPT’s citations diverge substantially from both Google’s and Bing’s organic results, by an amount that depends heavily on which study you pick.

Perplexity runs its own dedicated crawler, PerplexityBot, and layers a commercial relationship on top: a revenue-share Publisher Program, documented on Perplexity’s own blog, with partners including TIME, Der Spiegel, and Fortune. Separately, Adweek has reported publishers seeing Perplexity referral traffic despite blocking its crawler — Adweek’s reporting, not a mechanism Perplexity has explained.

No vendor has published a ranking-factor list the way Google once did for classic search. Everything past this point is either mechanics you control (crawling, structure) or claims you should discount (the folklore list below).

Step 1: be crawlable by the right bots

Before any citation question matters, the relevant crawler has to be able to fetch your pages. This is the one part of LLM SEO fully within your control and non-speculative: block a bot in robots.txt and you’re absent from whatever that bot feeds, full stop.

The bots that matter for citation, as opposed to training: OAI-SearchBot (OpenAI’s search indexer, distinct from GPTBot), PerplexityBot, and Google’s existing Search crawler feeding AI Overviews. A minimal allow-list:

User-agent: OAI-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Googlebot
Allow: /

The common mistake: someone installs a “block all AI crawlers” plugin to protest training-data scraping, and it lumps OAI-SearchBot in with GPTBot even though one indexes you for citation and the other trains a model. Check your disallow list bot-by-bot, not by category name — see what is OAI-SearchBot and what is PerplexityBot for exact user-agent strings and verification.

Step 2: be citable

Given a crawlable page, what makes an LLM quote it? Here the evidence gets thinner.

Direct, extractable answers (mechanism plausible, not vendor-confirmed). All three systems are, per their own documentation, synthesizing an answer from retrieved sources rather than just linking to the best match. A page that states its answer plainly near the top — price, definition, step count — gives an LLM something to lift cleanly; a page that buries the answer under paragraphs of scene-setting gives it something to paraphrase badly or skip. No vendor has published this as a ranking factor; it follows from how retrieval-then-synthesis systems behave in general, and is the same advice competent technical writing has always given.

Heading structure and scannability (same caveat). Clear H2/H3 hierarchy that mirrors how a person would ask the question helps both classic crawlers and whatever chunking an LLM’s retrieval step does. Standard SEO practice that predates “LLM SEO” as a term — nothing here is AI-specific.

Freshness. Reported consistently, not quantified by any vendor. Query fan-out and live retrieval both imply recently-crawled pages have an edge, but “how recent is recent enough” isn’t published anywhere we could find.

What we won’t claim causes citation: schema.org markup. Repeated constantly, so it deserves its own flag. The claim in circulation is that a “Google 2026 announcement” established schema as an AI-citation signal — we could not independently verify that announcement, and the more defensible read is that LLMs tokenize raw HTML (including schema blocks) without parsing it as structured metadata the way a search ranking system does. Keep schema for what it still demonstrably does (rich results, crawl comprehension) — don’t add it expecting an LLM-citation bump nobody has shown.

Step 3: llms.txt — useful, oversold, or both

Both — and the honest version is more interesting than either extreme.

The spec is real and simple: a markdown file at /llms.txt (H1, blockquote summary, H2-delimited link sections), authored by Jeremy Howard and published in September 2024, explicitly framed by its own author as being for inference-time use — a live LLM session pulling context — not for training. We cover the format in detail in llms.txt explained.

Where it’s oversold: adoption and fetch-rate numbers circulating online (a ~10% adoption figure, “408 fetches out of 500 million AI bot visits over 90 days”) come from single SEO-content-site analyses with undisclosed methodology — not repeated here as fact. What is safe to say, consistent across independent write-ups and matching an absence of vendor commitment: none of the major consumer AI-search crawlers (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, Google-Extended) has committed to fetching /llms.txt, and they mostly don’t request it, crawling ordinary HTML instead.

Where it’s plausibly useful, with a mechanism behind it: developer-tooling contexts. IDE agents and coding assistants (Cursor, Claude Code, Copilot, Windsurf) and MCP servers are reported, repeatedly, to fetch llms.txt-style files in practice — plausible given docs sites built for agentic coding tools. No first-party vendor confirmation; anecdotal, not documented, but the one part of the adoption story with a mechanism.

Net: ship it, it costs one markdown file and half an hour. Don’t expect it to move your ChatGPT or Perplexity citation rate on its own — nobody, including the vendors, has shown that it does.

The folklore list

Tactics that show up constantly in “LLM SEO” advice with no traceable evidence:

  • Schema markup as a citation lever. Covered above — no demonstrated causal link to LLM citation, whatever it still does for rich results.
  • llms.txt as a ranking or citation signal for consumer AI search. A real spec, adopted narrowly, with no evidence it moves citation odds outside developer tooling.
  • Specific “index overlap” percentages between ChatGPT/Bing/Google results. Real studies disagree with each other by double digits depending on methodology. Treat any quoted percentage as one study’s number, not a constant.
  • “85% of brand mentions in AI search come from third-party domains, not owned pages.” Widely repeated, plausible-sounding, untraceable to a named original study. If the underlying idea — what other sites say about you matters more than your own copy — turns out true, it’s worth acting on; the specific number isn’t evidence of anything.
  • Keyword-stuffed “AI-friendly” phrasing. No proposed mechanism, and it degrades the writing quality that plausibly does help (Step 2).

If a tactic isn’t in Step 1, Step 2, or the honest version of Step 3, we’re not aware of evidence for it as of this writing.

Step 4: measure whether any of this works

This is the part most LLM-SEO advice skips, and it’s why most of it can’t be falsified. Referrer-based analytics — GA4, standard web analytics — can only ever count a citation-driven visit when a human clicked a link inside a chat UI, the UI passed a referrer, and your analytics correctly bucketed that host. It structurally cannot see agent-triggered fetches (ChatGPT-User, Perplexity-User, and similar user-agents, made server-side the moment someone asks a question, with no Referer header at all because there was no browser navigation), clicks where the client stripped the referrer, or an LLM reading and citing your page without ever sending a human.

That’s why crawl and fetch activity, classified by bot identity rather than inferred from referrer headers, is the more complete signal. In mcp-analytics this is what traffic_class_breakdown and top_user_agents are for — an 8-class taxonomy separating ai_search (OAI-SearchBot, PerplexityBot — the citation-relevant crawlers), ai_user_action (ChatGPT-User, Perplexity-User — live fetches the referrer-only tools miss entirely), ai_training (GPTBot, ClaudeBot, CCBot), and ordinary search_index, alongside human traffic and referrers. (Setup note: the crawler and agent classes are captured by the server-side ingest — a Rack middleware that isn’t public yet as we publish this — not by the JS snippet, which only sees JavaScript-executing clients.)

A before/after check, asked directly in Claude:

  • “Break down my traffic by class for the last 30 days” (traffic_class_breakdown) — is ai_search activity present and growing after you fix robots.txt?
  • “What are my top user agents this month?” (top_user_agents) — is OAI-SearchBot or PerplexityBot actually hitting the pages you rewrote for Step 2?
  • “Compare this month’s AI referrers to last month’s” (top_referrers plus compare_periods) — for the subset of traffic that does carry a referrer, is it moving?

We cover the referrer blind spot in more depth in how to track ChatGPT traffic. If you’re not already running mcp-analytics, this is the one place we’ll mention it: free tier is 100,000 hits/month, no credit card, traffic-class breakdown from day one.

A realistic 30-day plan

Week 1: audit robots.txt bot-by-bot, not by “AI crawler” category. Confirm OAI-SearchBot, PerplexityBot, and Googlebot are explicitly allowed, separate from any GPTBot/ClaudeBot training block. Ship or update /llms.txt per the llms.txt guide — half an hour.

Week 2: pick your 5-10 highest-intent pages and rewrite opening sentences to state the direct answer before any scene-setting. Fix heading hierarchy where it’s marketing fluff instead of the question someone would actually ask.

Week 3: leave it alone. Crawl and re-index cycles aren’t instant, and changing everything at once means you won’t know what moved anything.

Week 4: check traffic_class_breakdown and top_user_agents against your baseline. Growth in ai_search crawl activity on the pages you touched is the first honest signal — it precedes any citation, referral, or ai_user_action visit, and it’s verifiable without waiting on someone else’s study.