GEO vs SEO: What Changes When the Searcher Is an AI Assistant

Generative engine optimization (GEO) is the work of making a site's pages easy for AI assistants such as ChatGPT, Claude and Perplexity to fetch, understand and cite in their answers. It is not a replacement for SEO: it is the same technical foundation, plus a few changes for a reader that quotes pages instead of ranking them.

By Seth Black. Published and last updated October 31, 2026. Crawler numbers are from this site's server logs.

What is GEO, and what is it not?

GEO is a name for the work of being a good source for AI assistants. When someone asks ChatGPT, Claude, Perplexity or Gemini a question, the assistant either answers from what it learned in training or fetches pages and answers from them, usually with a link. GEO is about the second case: making sure your page can be fetched, that its text is in the HTML, and that the answer is stated plainly enough to quote.

What GEO is not:

How do AI assistants get your pages?

A search engine's crawler has one job: build the index. AI companies split the work into three kinds of fetch, and most of them run a separate user agent for each so you can treat them differently in robots.txt.

  1. Training crawl. Bulk crawling to build datasets for future models. Nothing is cited and nobody is sent to you. GPTBot, ClaudeBot and meta-externalagent are documented this way.
  2. Search index. Crawling to build the index an assistant searches when it answers. This is the closest thing to Googlebot: OAI-SearchBot, Claude-SearchBot and PerplexityBot.
  3. User-initiated fetch. One request, made because a person asked a question or pasted your link: ChatGPT-User, Claude-User and Perplexity-User. Some vendors say these may not follow robots.txt, because a person asked for the page.

Here is every AI-related crawler that fetched blackseoanalyzer.com in October 2026, from this site's server logs, with what each vendor's own documentation says it does. Hits are requests, not people.

User agent Operator Kind of fetch What the vendor says Hits, Oct 2026
GPTBot OpenAI Training crawl Collects pages that may be used to train OpenAI's models. Disallowing it opts the site out of training. Source 2,126
OAI-SearchBot OpenAI Search index Surfaces websites in ChatGPT's search features. Obeys robots.txt. Source 1,159
ChatGPT-User OpenAI User-initiated fetch Visits a page when a ChatGPT user's request needs it. Not an automatic crawler; OpenAI says robots.txt rules may not apply. Source 1,012
ClaudeBot Anthropic Training crawl Collects web content that may help train Anthropic's models. Obeys robots.txt and Crawl-delay. Source 2,995
Claude-SearchBot Anthropic Search index Crawls to improve the quality of Claude's search results. Blocking it can reduce visibility in those answers. Source 820
Claude-User Anthropic User-initiated fetch Fetches a page when a person asks Claude a question that needs it. Source 829
PerplexityBot Perplexity Search index Surfaces and links websites in Perplexity's results. Perplexity says it is not used to train foundation models. Source 1,182
Perplexity-User Perplexity User-initiated fetch Visits a page to answer a user's question. Perplexity says it generally ignores robots.txt because a person asked. Source 866
Google-Extended Google robots.txt token only Controls whether Google may use your content for Gemini training and grounding. Google says it has no HTTP user agent of its own and does not affect Search. Source 295
meta-externalagent Meta Training crawl Crawls for uses such as training foundation models and indexing content. Meta's separate meta-externalfetcher handles user-requested links. Source 4,878
Amazonbot Amazon Product and training crawl Used to improve Amazon's products and services, and may be used to train Amazon AI models. Amazon also lists Amzn-SearchBot and Amzn-User. Source 4,846
Applebot Apple Search index Powers search in Spotlight, Siri and Safari. Its data may also train Apple's models unless you disallow the Applebot-Extended token. Source 1,295
Bytespider ByteDance Not documented We found no user-agent page from ByteDance that we could verify, so we report only what the logs show. 1,266
DuckAssistBot DuckDuckGo Real-time fetch for answers Fetches pages in real time for DuckDuckGo's AI-assisted answers, which cite their sources. Not used to train models. Source 842
CCBot Common Crawl Open crawl archive Builds Common Crawl's public repository of web crawl data. Its page does not mention AI training; the archive is free for anyone to download. Source 567
MistralAI Mistral Training and user fetch Mistral documents MistralAI-User (fetches a page when a user asks) and MistralAI-Training (training datasets). Our log count covers both. Source 330

Source: this site's server logs (nginx), October 1 to 31, 2026, matched on the user-agent string. Vendor documentation read on October 31, 2026. Meta's requests are counted under meta-externalagent; Amazon's and Mistral's other agents are not split out.

Three things in that table need saying separately, because the logs and the vendors do not line up neatly:

Robots.txt rules for each of these, with the mistakes we see most often, are in the AI crawler robots.txt guide. The short version for a site that wants to be cited but not trained on:

User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: Claude-User
Allow: /

User-agent: Perplexity-User
Allow: /

# Opt out of model training, if you want to:
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /

What stays the same?

Almost everything that makes a page work in search makes it work for an assistant, because the assistant's search crawler is doing the same job as Googlebot with less patience.

What changes?

The difference is the reader. A search engine ranks a page and sends a person to read it. An assistant reads the page itself and quotes a sentence or a list item from it. That shifts a few priorities.

How do you measure GEO honestly?

Not with trackers that ask a chatbot the same question a hundred times; assistants answer differently each time and for each user. Measure what reaches your server.

  1. Server logs first. Count requests by user agent each month. That tells you which assistants can reach you and whether it is growing. Your analytics package shows none of this, because crawlers do not run its JavaScript.
  2. Use the user-initiated fetchers as a citation proxy. ChatGPT-User, Claude-User and Perplexity-User only fetch a page because a person's request led there. In October 2026 they fetched this site 2,707 times. Over the last 90 days the homepage took 1,537 of those fetches, then /en/cli-documentation (28) and an old Semrush post (25). Most of the rest were requests for paths like /fetch and /proxy and for secret files: people using assistants to probe sites, which is a finding in itself.
  3. Count referrals, and be honest about the size. In the last twelve months AI products sent this site about 85 human visitors: ChatGPT about 60, Perplexity 12, Claude 11, Gemini 1, Kagi 1. Google sent 354 unique visitors in October 2026 alone. AI search sends fetches, not people. Anyone selling GEO as a traffic channel today should show you their logs.

What are the 26 AI-readiness checks?

bseoa's AI Readiness Analyzer runs 26 checks, grouped below by what they look at. Each link goes to the check's own page with what it means and how to fix it. The checks that compare the server's HTML with the rendered page need JavaScript rendering, which the desktop app and CLI do with headless Chrome; the hosted connector does not render JavaScript.

1. Crawler access (5)

Whether the bots that cite, index and fetch for users can read the site at all, and whether a training block is deliberate.

2. Real HTML (6)

Whether the text, headings, links and markup exist in the HTML the server sends, since most AI crawlers do not run JavaScript.

3. Quotable structure (2)

Whether the page gives an assistant something it can lift accurately. Both checks are advisory.

4. Bylines, dates and structured data (7)

Whether the page says who wrote it, who stands behind it, when it was published and updated, and whether the markup matches what a reader can see.

5. llms.txt (6)

Whether the site publishes an llms.txt and whether it is usable: a title, a summary and links that resolve.

What should you do first?

  1. Read your robots.txt. Allow OAI-SearchBot, Claude-SearchBot, PerplexityBot and the three user-initiated fetchers. Decide about training crawlers separately, on purpose.
  2. View the source of your most important page. Not the inspector, the raw HTML. If the main text is not there, fix rendering before anything else.
  3. Put the answer at the top. First two sentences of the page, and first sentence under each heading. Turn a few headings into the questions people ask.
  4. Show the byline and the dates. On the page, and in Article structured data with author, publisher, datePublished and dateModified.
  5. Publish an llms.txt. A title, a one-line summary, and absolute links to the pages that matter. Ours is at /llms.txt.
  6. Start counting. Pull user-agent counts from your logs once a month, and track the user-initiated fetchers on their own.

GEO vs SEO: frequently asked questions

What is the difference between GEO and SEO?
SEO is getting a page ranked and clicked in a search engine. GEO is getting a page fetched, understood and cited by an AI assistant. The foundation is shared: crawlable HTML, canonical URLs, structured data, speed and internal links. GEO adds a few things on top: answers stated plainly near the top, question headings, visible bylines and dates, llms.txt, and deliberate robots.txt rules for each AI crawler.
Does blocking GPTBot remove my site from ChatGPT search?
No. OpenAI documents GPTBot as its training crawler and OAI-SearchBot as the crawler for ChatGPT's search features. You can disallow GPTBot to opt out of training and still allow OAI-SearchBot so ChatGPT can find and cite you. Anthropic splits its bots the same way: ClaudeBot for training, Claude-SearchBot for search, Claude-User for user requests.
Should I block AI training crawlers?
That is an editorial decision, not a technical one. Blocking a training crawler such as GPTBot, ClaudeBot or meta-externalagent costs no search traffic. Blocking a search or user-fetch crawler removes you from that assistant's answers. The common mistake is one blanket rule that blocks both.
Do AI crawlers run JavaScript?
Assume they do not. Googlebot renders JavaScript on a second pass, but most AI crawlers read the HTML your server sends and stop there. If your text, headings or links only appear after scripts run, an assistant sees a thinner page or an empty one. View the page source, not the rendered page, to see what they see.
Do I need an llms.txt file?
No. llms.txt is an emerging convention, not a requirement, and a site without one is not broken. It is a short Markdown file at your root that points an assistant at the pages that matter. If you publish one, give it a title, a one-line summary and absolute or root-relative links.
How do I know whether AI assistants cite my site?
Count the user-initiated fetchers in your server logs: ChatGPT-User, Claude-User and Perplexity-User. Each hit is one fetch made because a person's question led the assistant to your page, which is the closest thing to a citation count you can measure yourself. Referral traffic from AI products is real but small; this site got about 85 such visits in a year.
Does Google-Extended affect my Google rankings?
No. Google says Google-Extended does not affect inclusion in Google Search and is not a ranking signal. It is a robots.txt token that controls whether Google may use your content for Gemini training and grounding, and Google says it has no HTTP user agent of its own.
Is GEO worth the effort for a small site?
The parts that overlap with SEO are worth doing anyway, and most of the rest is an afternoon: fix robots.txt, check that your HTML carries the text, add bylines and dates, publish llms.txt. Expect fetches, not visitors. AI crawlers fetched this site more than 25,000 times in October 2026 while AI products sent a handful of people a month.

Run the 26 checks on your own site

bseoa crawls your site, renders JavaScript and reports the AI-readiness checks as part of 300+ issue types across 16 analysis modules. 14 days free, every feature, no page limit, no card.

Start the free trial

Already working in an assistant? Ask Claude or ChatGPT to audit a site with the Black SEO Analyzer connector, or see how it compares with other SEO MCP servers.