Skip to content
New storyWe built Skald to count visitors. It caught an AI-key thief.
SkaldEvery visit, truly told.

Guide · GEO

What is GEO? Generative engine optimization, and how to prove it works

What is GEO, and why is it so hard to prove? GEO is the work of getting your pages read, quoted and linked by AI assistants. Here is what it means, what the work involves, and how your server log shows whether it is working.

GEO, or generative engine optimization, is the work of making a website easy for AI assistants such as ChatGPT, Claude, Perplexity and Gemini to find, read, quote and link to in their answers. It is to AI answers what SEO is to search results.

By · Updated · 8 min read

What is GEO, in one paragraph

GEO, generative engine optimization, is the work of making your website easy for AI assistants to use. When someone asks ChatGPT, Claude, Perplexity or Gemini a question, the assistant builds an answer from pages it has read. GEO is everything you do so that your pages are among them: readable by AI crawlers, clear enough to quote, and worth linking to. If SEO (search engine optimization, the work of ranking in Google's results) is about ranking in a list of results, GEO is about being part of the answer.

I came to GEO from the other side. I built Skald for our own small-business site (the story), because our analytics could not say whether ChatGPT, Claude or Perplexity had read our pages at all. That question, "did it work?", is the hard part of GEO, and most of this guide is about answering it.

How AI answers pick their sources

An assistant can know about your page in two ways, and they matter for different reasons.

Read earlier, by training and index crawls

AI companies send crawlers to collect pages long before anyone asks anything. GPTBot and ClaudeBot collect pages that may train a model. OAI-SearchBot, Claude-SearchBot and PerplexityBot build the search indexes that ChatGPT, Claude and Perplexity answer from. Nobody is waiting on any of them. They read your site the way Googlebot does: on their own schedule, page by page.

Read right now, by live fetches

The second way is newer. When a person asks a question, the assistant may fetch pages at that moment to answer it. These fetchers have their own names: ChatGPT-User, Claude-User, Perplexity-User, Gemini-User. A live fetch means a real person is waiting for an answer that uses your page. It is the closest thing to a reader that a machine can be.

Then, sometimes, the person clicks the link in the answer and lands on your site. That is the only one of the three a normal analytics script can see. I wrote more about the three in AI traffic tracking.

GEO and SEO: what stays the same, what is new

A lot of GEO is good SEO with a new reader in mind. Pages that answer a real question clearly, that load fast, that machines can fetch without errors, and that other pages link to, do well with both. Both kinds of crawler fetch your pages the same way, so the same errors stop both.

Three things are new.

  • The answer comes before the click. In a search result, the person has to visit you to learn anything. In an AI answer, they may get what they need from your page without ever visiting. Your page did its job, and nothing in your analytics moved.
  • There are new formats. AI fetchers ask for files made for them: an llms.txt file (a short list of a site's key pages for AI), Markdown copies of pages, plain text. In a server log you see them ask for /llms.txt and .md files by name.
  • There are new choices. You can let AI read your site for answers but keep it out of training, because the crawlers are separate. GPTBot trains; ChatGPT-User answers. Blocking one does not block the other.

What GEO work usually involves

There is no secret switch. The work people call GEO usually falls into five parts.

  1. Let the right crawlers in. Check your robots.txt (the file where a site asks crawlers to stay away) and any rules at your CDN (a service such as Cloudflare that serves your pages from near each reader). Decide which AI crawlers may read the site, and which may train on it. A page an assistant cannot fetch is a page it cannot quote.
  2. Make pages easy to quote. Put the answer near the top, in plain sentences. Name things the way your buyers name them. One page, one question, answered well.
  3. Fix what crawlers trip on. Pages that return errors, long chains of redirects, slow answers and pages missing from your sitemap (the file that lists your pages for crawlers) trip up AI crawlers and search crawlers alike.
  4. Give AI a map. A sitemap, and if you like an llms.txt that points to your best pages. It is a guide, not a guarantee.
  5. Be worth citing. Original facts, clear prices, real reviews and honest comparisons give an answer something to quote.

None of this is hard to start. The hard part is knowing whether any of it changed anything.

Why GEO is hard to prove

Most of what GEO changes never shows up in the tools people already have.

  • Script tags cannot see machines. Google Analytics and tools like it count browsers that run their script. AI crawlers and AI fetchers do not run scripts. Every training crawl and every live fetch is invisible to them.
  • Clicks lose their referrer. The referrer is the address of the page a click came from. Many apps and privacy settings strip it, so a click from an AI answer can arrive as a direct visit. Any count of AI clicks is a floor, not a total.
  • Some clicks cannot be told apart at all. A click from a Google AI Overview arrives exactly like an ordinary Google click. No tool can count those honestly. Google's AI Mode can be told apart only when the click carries udm=50, the mark AI Mode puts in its addresses.
  • Prompt trackers sample answers, not events. A tool that asks ChatGPT your buyers' questions and records whether you were named is useful. But a sampled answer says what the assistant might say, not whether it read your page or sent you anyone. I compare the two in prompt tracking vs server logs.

How to prove GEO works, from your server log

Your web server already writes a line for every request it answers, whether a script ran or not. That access log is the one record that saw the crawlers, the live fetches and the clicks. Read it well, and GEO becomes a chain you can check, one link at a time, each proven by a different record:

  1. Cited. An AI answer names your page. You find this by sampling answers: Skald asks ChatGPT, Perplexity, Gemini and Claude your buyers' questions with your own API keys, at your cost, with a daily cap. It is a direction over weeks, not a census.
  2. Read. The assistant's fetcher asked your server for that page. This is in the log: "GET /pricing/" 200 "ChatGPT-User/1.0". Skald checks the address against the list OpenAI publishes, so a fake shows as "claims to be".
  3. Sent a visitor. A person clicked through, with chatgpt.com as the referrer. Skald counts that click as a person, and lists the pages ChatGPT fetched in the 15 minutes before it. A direct visit to a page ChatGPT had just fetched is shown as likely from ChatGPT, kept apart, never added.
  4. Became a lead. That visitor booked a call or filled a form. A signed webhook (a message your form or booking tool sends Skald when it happens) ties the lead to the visits before it.

Each link is counted on its own, and never added to the others. A cited page that was never read tells you one thing; a page read every day that never sends anyone tells you another. That is the whole point: GEO work you can steer, instead of GEO work you have to take on faith. The full chain is in cited, read, visited, lead.

the proof panel · switch on each link you can show2 of 4 links proven

what you can say

  • An answer named your page, in a sample. It shows what the assistant may say, not that anyone asked.
  • The fetcher read the page while a person asked. Someone used your page, click or not.
  • You cannot say AI sent anyone. A click without a referrer is Direct, shown as likely at best.
  • You cannot say it paid.
Each lamp is one link, and each is proven by a different record. Switch them to match what you can show; the panel says what follows and what does not. Nothing is ever added across links. switch a link

See your own chain, 30 days free Open the live demo

A GEO check you can run this week

You do not need a tool to start. With your access log and a few commands you can answer the first questions. With Skald, each one is a screen.

  • Which AI crawlers read my site last month, and are they real? See AI crawler tracking.
  • Which of my sitemap's pages has each crawler never fetched? See AI crawl health.
  • Does anyone ask for my llms.txt, and what would a good one hold? See llms.txt.
  • How many people did ChatGPT, Perplexity and Claude send, and what did they read first? See AI referral traffic.
  • Which crawlers should I let in, and which keep out of training? See block AI crawlers.

For a longer, step-by-step version, read the AI traffic guide.

What GEO cannot promise

Be wary of anyone who promises a place in AI answers. Nobody controls what an assistant says, and answers change from one asking to the next. What you can control is whether your pages are reachable, clear and worth citing, and whether you measure the result honestly.

Honest measurement has limits too. AI clicks are a floor, because referrers are stripped. Estimates of the rest should be labelled as estimates. Clicks from AI Overviews cannot be counted by anyone. And without a server or CDN log, the crawlers and fetchers are not seen at all. A GEO report that hides these limits is guessing. One that states them next to the numbers is one you can act on. For more short reads on AI traffic, see AI traffic insights.

questions

GEO FAQ

Straight answers, including what Skald does not do.

What does GEO stand for?

GEO stands for generative engine optimization: the work of making a website easy for AI assistants such as ChatGPT, Claude, Perplexity and Gemini to read, quote and link to in their answers.

Is GEO the same as SEO?

No, but they overlap. Both need clear, useful pages that machines can fetch. GEO adds new readers: AI crawlers, and fetchers that read a page at the moment someone asks a question. And in an AI answer, the person may get what they need without clicking.

How do I know if GEO is working?

Look for four kinds of proof, each from a different record: an AI answer names your page, the assistant's fetcher reads that page, a person clicks through, and that person becomes a lead. Your server log holds the middle two; signed webhooks hold the last.

Can a tool guarantee I appear in ChatGPT answers?

No. Nobody controls what an assistant answers. What a tool can do is show whether assistants read your pages, whether their answers name you in sampled questions, and whether they send people.

$ tail -f access.log | skald

See what AI does with your site. Free for 30 days.

No card. We set up hosted Skald for you within one working day, or you self-host it free. Every line of your log, sorted and added up.

Start free trial Live demo