How to run a GEO audit in an afternoon
·8 min read
A GEO audit checks whether AI search engines can reach your site, read it and cite it, and it ends in a dated list of fixes. You pick 6 to 10 pages, record where you appear in AI answers today, run the sitewide and per-page checks, score each finding by impact and effort, and give every fix an owner and a re-check date. On a site with a handful of page templates, that fits in one afternoon.
This post covers the process. The individual checks, each with a test, are in the GEO checklist for sitewide and off-site work and the AEO checklist for individual pages. Keep both open as you go.
What is a GEO audit?
A GEO audit, short for generative engine optimization audit, reviews what AI answer engines need from your site and samples the answers they give today. Some people call it an AI search audit. Either way the work has two halves.
The sitewide half asks whether AI crawlers can fetch your pages, whether the content exists without JavaScript, and whether the web describes your brand consistently. The per-page half, often sold on its own as an AEO audit, asks whether each page answers its question in a passage an engine can lift.
Know the limits before you promise a client anything. Google's AI optimization guide says no third-party tool has access to its ranking or AI systems, and that optimizing for generative AI search is still SEO. An audit checks the inputs you control and samples the outputs. A score that claims to predict AI Overview inclusion is a guess.
For one person with Search Console and analytics access, the afternoon splits like this.
| Step | Time | Output |
|---|---|---|
| Choose pages | 15 min | 6 to 10 URLs, each with its question |
| Record a baseline | 75 min | AI impressions, referrals, citations, 30 sampled answers |
| Sitewide checks | 40 min | Access, rendering, indexing and entity findings |
| Per-page AEO checks | 60 min | Findings for each sampled page |
| Score and write up | 40 min | A sorted fix list with owners and dates |
Choose which pages to audit
Audit 6 to 10 pages chosen by what they do for the business. A full crawl buries the findings that matter under hundreds of rows that don't.
- The home page. It carries your brand name, your one-line description and usually your Organization markup, so the entity checks happen here.
- Two to four money pages, such as pricing and your main product or service pages. A buyer asking for "the best X for Y" needs prices, plans and who the product is for, and these pages hold them.
- Two to four informational pages with the most Search Console impressions, plus any page that already shows impressions in the Generative AI report.
Take one page per template where you can. A rendering problem on one blog post is almost always a problem on every post, so one sample covers the template. It won't tell you whether each post answers its question, which is why informational pages get read one by one later.
Before you open each page, write the question it should answer next to its URL. If you can't write one, that is your first finding.
Record your AI search baseline before changing anything
Record the baseline first, because once fixes ship the "before" is gone and the re-check has nothing to compare against.
- Export impressions for your sampled pages from Search Console's Generative AI performance report. It opened to all sites on August 31, 2026 and shows impressions only, by page, country, device and date, with AI Overviews and AI Mode counted together.
- Count AI referral sessions for the last 28 days, filtering on referrers such as chatgpt.com, perplexity.ai, gemini.google.com and copilot.microsoft.com. ChatGPT adds
utm_source=chatgpt.comto the links it cites, so filter on that too. The AI referral tracking guide has filters you can paste. - Note total citations from Bing Webmaster Tools' AI Performance report, which Microsoft launched in public preview in February 2026. It counts how often Copilot and Bing's AI summaries cite each of your pages. Microsoft describes the data as a sample.
- Write 10 questions a buyer asks before buying, in their words. Ask each one in ChatGPT, Perplexity and Google AI Mode, and record whether the answer names you, whether it cites your site, and every domain it cites.
A row in the prompt log looks like this:
| Date | Engine | Question | Named | Cited | Cited domains |
|---|---|---|---|---|---|
| 2026-10-09 | Perplexity | best invoicing app for a two-person agency | No | No | reddit.com, g2.com, competitor-a.com |
The cited domains column is the most useful thing the audit produces. When one review site or Reddit thread shows up in a third of your answers, getting onto that page is an off-site fix that no on-page change replaces.
Answers vary between runs, so treat 30 answers as a rough reading and compare totals later, such as "named in 3 of 30", rather than question by question.
Run the sitewide GEO checks
Run the sitewide checks before reading any single page, because one blocked crawler makes every per-page finding pointless for that engine.
Check robots.txt and your CDN's bot settings for Googlebot, OAI-SearchBot, ClaudeBot and PerplexityBot. Compare a page's raw HTML with the rendered version on one page per template, since most AI crawlers don't run JavaScript. Confirm the sampled pages are indexed in Google and Bing. Check that your Organization markup has sameAs links and that your brand name matches across your site and main profiles. Then hold the cited domains from your baseline against the places your brand actually appears.
Log each problem as a row with "sitewide" as its scope and hold off on fixes until the list is sorted. The exception is a robots.txt rule that blocks a search crawler. Fix that today, since the baseline is already recorded.
Run the AEO audit page by page
The AEO audit is the per-page half of the job. For each sampled page, you check whether it answers the question you wrote next to it, in a passage an engine can quote.
Read the page as a crawler gets it, from the raw HTML view if you have it, and go down the AEO checklist. Look for question headings, the answer in the first sentences under each, specific facts with named sources, a visible date and author, and markup that matches the copy.
Money pages and articles fail in different ways. A pricing page fails because the prices sit in a JavaScript widget, or because the plan names in the copy differ from the markup and the review sites. Articles fail on the opening, with three paragraphs of background before the answer.
Score each finding by impact and effort
Give every finding a score from 1 to 3 for impact and another for effort, then sort by impact first and effort second.
| Score | Impact | Effort |
|---|---|---|
| 3 | Stops an engine from reading content, or affects every page | Engineering or off-site work |
| 2 | Affects a money page or a whole template | A template change or page rewrite |
| 1 | Affects one informational page, or is cosmetic | A config or copy change under an hour |
Every impact 3 goes first, whatever its effort, because nothing below it matters while an engine can't read the page. I would rather ship one impact 3 fix than ten impact 1 fixes.
Score some popular findings low on purpose. Google's guide says Search ignores llms.txt and that content doesn't need to be broken into tiny pieces. An audit that leads with "add llms.txt" is padding its list.
The GEO audit sheet
Use one sheet for the whole audit, with columns like these example rows.
| Finding | Scope | Impact | Effort | Owner | Fix | Re-check |
|---|---|---|---|---|---|---|
| robots.txt disallows PerplexityBot | Sitewide | 3 | 1 | Dana | Delete the rule | 2026-10-10 |
| Prices load with JavaScript | /pricing | 3 | 2 | Dana | Render on the server | 2026-10-24 |
| Answer starts in paragraph four | /blog/what-is-x | 2 | 1 | Lee | Move it under the heading | 2026-10-17 |
| Missing from a review site cited in 9 of 30 answers | Off-site | 2 | 3 | Sam | Claim the listing | 2026-11-20 |
Add a status column once work starts, and keep the baseline on a second tab so the re-check sits next to it.
Write up the fix list with an owner and a re-check date
Keep the write-up to one page, with the baseline at the top, the sorted sheet under it and the full re-check date at the bottom.
Give every row one named person. "Marketing" is not an owner, and a row nobody owns after the meeting won't ship.
Set re-check dates by fix type. Access and rendering fixes can be re-tested the day they ship. Rewrites and markup changes can be verified that day too, but answers only change after engines recrawl. I put the full baseline re-check four to six weeks out, with the same exports and the same 10 questions on the same engines. Going from 3 of 30 answers to 7 is worth reporting. Going from 3 to 4 is noise.
Run the GEO audit checks on your own site
Our website check runs the checks half of this process on up to three pages from your sample. Pick from crawling and indexing, on-page SEO, structured data, content and answers, images, rendering and mobile, performance, a crawl of up to 150 pages for links and sitemap coverage, and brand identity. The rendering check includes the raw versus rendered HTML comparison.
For the baseline, add up to three buyer questions. Each one asks ChatGPT, Perplexity and Gemini with web search on and records whether the answer names you or cites your site, and which brands and sites it recommends instead. Each question costs 120 credits. Google AI Mode isn't covered, so sample it by hand.
The price is the sum of the checks you pick, shown before you run. The four default checks on one page come to 67 credits. You get one fix list sorted by priority, with SEO readiness, AEO readiness and AI access scores from 0 to 100, and a rerun on your re-check date reports the percent of issues fixed, the score change and new issues. A preview of your home page costs no credits and takes about 20 seconds.