How to run a GEO audit with fan-out data, step by step
Published . Updated .
A GEO audit with fan-out data checks that AI assistants can reach your site, records the searches ChatGPT, Claude and Grok run for your buyers' questions, and gives every answer one state: your page was missed, fetched, cited or only your brand was named. You end with a scorecard by theme and a fix list that the next audit can be measured against.
Our guide to the GEO workflow with fan-out data sets out the monthly steps. This page is the first run of that workflow done as an audit: the checks to make before you send a prompt, the sheet to record each search in, how to score the results and what the report should say. Most GEO audits log the answer and its cited links. Logging the searches as well tells you why a page was missed.
What does fan-out data add to a GEO audit?
It adds the searches the assistant ran and the pages those searches brought in. With those two lists you can see where in the process your page dropped out.
| Question the audit asks | Answer and citations only | With fan-out data |
|---|---|---|
| Was our brand named? | Yes | Yes |
| Which pages were cited? | Yes | Yes |
| What did the assistant search for? | No | Every query, in the order it ran them |
| Was our page read and then left out? | No | The fetched list set against the cited list |
| Did it check our own site for a fact? | No | A site: search on our domain in the query text |
| Did it answer about us from memory? | Guesswork | Brand named, and none of our pages fetched |
What should you check before you send a prompt?
Check that the assistants are allowed to reach your pages and that the facts you want quoted sit in the page itself. A blocked page can never turn up in a fetched list, and rewriting it will not change that.
| Check | How | Why it matters |
|---|---|---|
| Search crawlers allowed | Read robots.txt for OAI-SearchBot and Claude-SearchBot | OpenAI says sites opted out of OAI-SearchBot "will not be shown in ChatGPT search answers" |
| User fetchers not blocked | Check robots.txt and your firewall or CDN bot settings for ChatGPT-User and Claude-User | Anthropic says blocking Claude-User "prevents our system from retrieving your content in response to a user query" |
| Training crawlers kept apart | Decide on GPTBot and ClaudeBot separately from the two rows above | Both companies list them as training crawlers, so blocking them is a separate choice from search |
| Key facts in the HTML | Open view-source on your main pages and search for your price, product name and main claim | A fact that only appears once scripts run may be missing from what a fetcher reads |
| Pages load | Each page you expect to be cited returns 200 with no sign-in wall or pop-up in front of the text | A page browse in Grok's record means Grok opened that exact URL |
The crawler names and quotes come from OpenAI's overview of its crawlers and Anthropic's article on how site owners can block its crawlers. Note anything you fix here with the date, so you know which audit was the first to see the change.
How do you choose the prompts for a GEO audit?
Write 15 to 30 prompts in your buyers' words, spread across the stages of a purchase, and run each one three times on each assistant in a fresh chat. Three runs matter because the searches change from run to run.
| Stage | Prompt shape | What the fan-out shows you |
|---|---|---|
| Problem | "How do I stop this happening?" | Whether your explainer pages come up for the general searches |
| Comparison | "Best tool for this job" or "A versus B" | Which review and comparison pages the assistant reads, and whether yours is one |
| Decision | "How much does it cost?" or "Is it worth it?" | Whether your pricing and product pages are fetched, and whether it runs site: searches on your domain |
| Brand | "What is your brand?" or "Is your brand any good?" | Whether the assistant reads your site or answers from memory |
Keep branded prompts to about a quarter of the set, since an audit made only of them tells you little about the searches where buyers have not heard of you yet. Seer Interactive's test of 100 prompts on Gemini 3's API found only 8 exact queries that came back in all 13 runs, so one run per prompt would give you a list that never repeats.
What goes in the audit sheet?
Use two tabs, with one row per search query in the first and one row per turn in the second. The query tab shows what the assistant looked for, and the turn tab shows where your pages ended up.
| Tab | Columns |
|---|---|
| Queries | Run date, assistant, prompt, run number, query text, its place in the order, kind of search, theme |
| Turns | Run date, assistant, prompt, run number, your pages fetched, your pages cited, brand named (yes or no), other domains cited, queries withheld (yes or no), state |
The kind of search matters when you clean the list. ChatGPT runs web, business, image and find searches. Claude runs web and places searches, and Grok runs web searches, page browses and X searches. Drop ChatGPT's find lines, and Grok's searches of a connected Gmail, Drive or Calendar, whose query text is never stored. The workflow guide has the full cleaning rules.
Record while you send. Since 14 September 2026, ChatGPT sends its query text only in the live answer stream, so an audit built from reopened chats has the sources but no searches. Only Fan Out records each turn in a side panel as the answer arrives and exports a turn or a whole conversation as CSV, Markdown or JSON for the sheet. Add your brand and domain to its watchlist and it highlights every mention across queries, fetched sources, cited sources and answers.
How do you score a GEO audit?
Give every turn one state, then count the states by theme and by assistant. Keep each assistant's scores apart, because ChatGPT, Claude and Grok search in different ways.
| State of a turn | What the record shows |
|---|---|
| Missed | None of your pages fetched, and your brand not named |
| Named only | Your brand named in the answer, and none of your pages fetched |
| Fetched, not cited | One of your pages fetched, and no sentence in the answer cites it |
| Cited | A sentence in the answer cites one of your pages |
| No data | The assistant withheld its queries and showed a label such as "Searching the web" |
Leave "No data" turns out of every count. Then work out four numbers for each theme.
| Score | How to count it | A low score points to |
|---|---|---|
| Reach | Turns with one of your pages fetched, divided by all turns | Your pages do not come up for the searches the assistant writes |
| Cite rate | Cited turns divided by turns with your pages fetched | Your page is read and no sentence relies on it |
| Named without a page | Count of "Named only" turns | The answer comes from the model's memory, so check that what it says is true |
| Own-site checks | Queries that use site: with your domain | The assistant went to your site for one fact, so that fact needs its own crawlable page |
Counting per turn keeps a page that appears twice in one answer from counting twice. Our post on fetched vs cited sources explains where each assistant keeps the two lists and why published cite rates disagree.
How do you find your competitors in a GEO audit?
Take them from the cited lists for your themes. The domains cited most often for a theme are the pages the assistant prefers, whether or not you think of them as rivals.
For each weak theme, open the two or three most cited pages and note what they answer that your page does not. Some will be other brands. Others will be review sites, forums or directories, and those need work off your site, such as getting listed or reviewed there, since no edit to your own page changes them.
What should the audit report say?
Put the scorecard by theme for each assistant on the first page, then the weakest themes with one fix each, then the date and the prompt set so the next audit compares like with like.
- Access problems found in the checks, with the date each was fixed.
- Themes the assistant searched where you have no page at all.
- Themes with low reach, where you have a page and it was not fetched.
- Themes with a low cite rate, where your page was fetched and left out.
- "Named only" answers, with anything the assistant got wrong about you.
- Your own-site checks, with the fact the assistant was looking for each time.
The workflow guide's fix order covers what to change for each state. Run the same prompts again each month as a light check and repeat the full audit each quarter. Change the prompt set only between full audits, or the scores stop being comparable.
What can a manual GEO audit not tell you?
It shows what one account saw on the days you ran it, and it says nothing about how OpenAI, Anthropic or xAI choose sources inside the model.
Answers through an assistant's API can differ from the chat app people use, so keep the audit in the app. Bing Webmaster Tools' AI Performance report adds Bing's own grounding queries for your site, which is a separate source from ChatGPT, Claude or Grok. And no tool or audit can promise citations. Only Fan Out records the data and changes nothing on your site.
Related questions
How many prompts does a GEO audit need?
Enough to cover each theme several times. Write 15 to 30 prompts in your buyers' words and run each one three times on each assistant in a fresh chat, because the searches change between runs.
How is a GEO audit different from an SEO audit?
An SEO audit checks how your pages rank for the searches people type. A GEO audit checks whether AI assistants reach, read and cite your pages for the searches they write themselves. The crawler and HTML checks overlap.
Does Only Fan Out run the audit for you?
No. It records the queries, fetched pages and cited pages for each turn in ChatGPT, Claude and Grok, and exports them as CSV, Markdown or JSON. Choosing the prompts, scoring the turns and making the fixes are up to you.
See the fan-out for your own prompts
Only Fan Out is a free Chrome side panel that lists the queries, fetched pages and cited pages behind each ChatGPT, Claude or Grok answer. Nothing leaves your browser.
Add to Chrome, it's free