A GEO audit is a structured review of your own site and content to find what is helping or blocking generative engines from reading, understanding and quoting you. GEO here means Generative Engine Optimization, not geography or local search. The audit runs in twelve checks across three layers: whether AI crawlers can reach your pages, whether they can parse what is on them, and whether anything on the page is worth quoting in the first place.
The term is genuinely ambiguous, so worth settling before anything else. Search "geo audit" and half the results are about geographic or geotechnical surveys. In the AI search world it means auditing a property for generative engine readiness. "geo audit" gets 170 US searches a month at keyword difficulty 0 (DataForSEO, July 2026), which tells you the term is still forming. If you want the concept from scratch, start with what generative engine optimisation actually is.
What this audit is not
This is the fix list, not the measurement. Measurement answers "where do I currently stand in AI answers", and that belongs in a separate exercise: see how to run an AI visibility audit for prompt sets, engine coverage and baselining. Run that first. It tells you whether you have a problem worth fixing and gives you the before number.
This post assumes you already know you are underexposed and want to know what on your own property is contributing. Measurement is the input. The twelve checks below are the output.
The 12-point checklist at a glance
| # | Check | Severity if failing | Typical fix effort | Moves the needle |
|---|---|---|---|---|
| 1 | AI crawlers blocked at CDN or WAF | Critical | 1 hour | Yes, gating |
| 2 | robots.txt disallows AI user agents | Critical | 15 minutes | Yes, gating |
| 3 | Content requires JavaScript to appear | Critical | 1 to 6 weeks | Yes, gating |
| 4 | Broken URLs and redirect chains | High | 1 to 3 days | Yes |
| 5 | No llms.txt | Low | 2 hours | Marginal |
| 6 | Missing or invalid schema | Medium | 2 to 5 days | Modest |
| 7 | No answer-first structure | High | Per page, 1 hour | Yes |
| 8 | Broken heading semantics | Medium | 1 to 3 days | Modest |
| 9 | No dates, stale content | Medium | 1 day plus upkeep | Modest |
| 10 | Inconsistent entity naming | High | 1 to 2 weeks | Yes |
| 11 | Thin third-party mention footprint | Critical | Ongoing, months | Yes, strongest |
| 12 | No original data to cite | High | Ongoing | Yes |
Layer one: can they reach you (checks 1 to 5)
1. Crawler access at the edge. The most common failure is not robots.txt, it is a CDN or WAF bot rule silently returning 403 to AI agents. Check it by fetching your own pages with each user agent from a clean IP and reading the status code, not the rendered page. The agents that matter, from each vendor's own documentation: OpenAI runs GPTBot for model training, OAI-SearchBot for surfacing sites in ChatGPT search, and ChatGPT-User for live user-triggered fetches (OpenAI crawler documentation, accessed 20 July 2026). Anthropic runs ClaudeBot, Claude-User and Claude-SearchBot (Anthropic support documentation, accessed 20 July 2026). Perplexity runs PerplexityBot for indexing and Perplexity-User for query-time fetches (Perplexity developer documentation, accessed 20 July 2026). Full list in our AI crawler user agent reference.
2. robots.txt. Read yours line by line. Two traps. First, a blanket `Disallow: /` under a wildcard user agent catches everything. Second, Google-Extended is widely misunderstood: Google states it controls whether your content trains Gemini and grounds its outputs, and that it "does not impact a site's inclusion in Google Search nor is it used as a ranking signal" (Google Search Central documentation, accessed 20 July 2026). Blocking it is a deliberate policy choice, not a technical accident, but many sites inherited it from a template without deciding.
Note also that the user-triggered fetchers behave differently. OpenAI documents that for ChatGPT-User, robots.txt rules may not apply because the request represents a user action, and Perplexity documents the same for Perplexity-User. So a robots.txt block may stop indexing without stopping live retrieval, which produces confusing audit results if you only test one agent.
3. Rendering. This is the check most teams skip and the one that most often explains a total absence from AI answers. Vercel and MERJ analysed real crawler traffic and found none of the major AI crawlers execute JavaScript. GPTBot requested JavaScript files in 11.50% of fetches and ClaudeBot in 23.84%, but neither executes them (Vercel, The Rise of the AI Crawler). If your content is client-side rendered, AI engines see an empty shell while Google, which does render, sees the full page. How to check: disable JavaScript in your browser, or run `curl` against the URL and read the raw HTML. If your product description, pricing or article body is not in that response, the fix is server-side rendering or static generation for those routes. It is the single most expensive item on this list and usually the highest return.
4. URL hygiene. The same Vercel analysis found ChatGPT's crawler spent 34.82% of fetches on 404 pages plus 14.36% following redirects, and Claude's 34.16% on 404s, against Googlebot's 8.22% and 1.49%. AI crawlers pick URLs badly, so every dead link and redirect chain you leave in place burns a disproportionate share of the attention you get. Check with a standard crawl, fix by repointing internal links to final URLs rather than relying on redirects.
5. llms.txt. A Markdown file at your root that lists your key pages with short notes, proposed by Jeremy Howard in September 2024 (llmstxt.org). The specification calls for an H1, a blockquote summary, then H2 sections containing lists of `name` links with optional notes. It is cheap to produce and no major engine has confirmed it as a ranking input, so treat it as low severity and low effort rather than a fix. Detail in what llms.txt is and llms.txt examples.
Layer two: can they parse you (checks 6 to 9)
Want to see this in action?
See how every major AI model talks about your brand. Free to start.
6. Schema and structured data. Validate with Google's Rich Results Test and Schema.org's validator. Priorities in order: Organization with a stable identifier, Product or Service, FAQPage where the questions are genuine, and Article with author and dates. The value is less about rich results and more about giving a parser unambiguous facts. See schema markup and AI visibility for what to implement first.
7. Answer-first structure. Open any page and read the first 60 words after the H1. If they are throat-clearing about how the industry has changed, that page has nothing liftable. Generative engines quote self-contained passages, so every section should lead with its conclusion and support it afterwards. Fix per page, roughly an hour each, and prioritise pages where you already rank.
8. Heading semantics. One H1, no level skips, and headings phrased as the questions buyers actually ask rather than as clever labels. Check with any accessibility tree inspector. This is a cheap fix with a modest effect: it makes passage extraction more reliable, it does not create demand for you.
9. Freshness and dating. Check whether every substantive page carries a visible published date and a `dateModified` in schema, and whether either is honest. Undated pages are harder for an engine to prefer when a query is time-sensitive. Silently bumping dates without changing content is worse than leaving them alone.
Layer three: are you worth quoting (checks 10 to 12)
10. Entity clarity. Pick one canonical name and use it identically everywhere, on your site, in your schema `Organization` block, on your profiles, and in every third-party listing. Audit by searching your brand plus a category term and reading how you are described back. Where descriptions disagree, engines hedge or substitute a competitor.
11. Third-party mentions. This is the check that matters most and the one your own site cannot fix. Ahrefs' analysis found AI visibility correlates most strongly with third-party mentions and video, not with on-page work. Semrush found Reddit accounts for 40.1% of all AI citations, the single most-cited source. Our own measurement on 13 July 2026, running 20 buyer prompts three times each across four engines by API for 240 answers, found Reddit supplied 71 of Perplexity's 498 citations (14%) and YouTube 40 (8%). Audit yours by listing where you are currently mentioned outside your own domain and comparing that against where the engines are actually pulling from for your category. More on this in how to get cited by AI.
12. Original data. Engines cite sources that carry something unavailable elsewhere: a number, a benchmark, a survey, a teardown. If every page you publish restates what ten other pages say, there is no reason to quote you rather than them. Check by asking, for each page, what single fact appears here and nowhere else. If the answer is nothing, that page will not earn citations regardless of its schema.
What this checklist will not do
Be clear-eyed about the ceiling. On Ahrefs' finding, on-page work is the weaker correlate. Checks 1 to 4 are gating: fail them and nothing else can help, because you are invisible before the question of quality arises. Checks 5 to 9 are hygiene: they improve your odds of being parsed and extracted cleanly, and they are worth doing because they are cheap, but no volume of schema will make a page that says nothing get cited. Checks 10 to 12 are where the actual movement is, and two of the three happen off your own site.
There is also a measurement floor to respect. SparkToro found the same AI query changes its answer roughly 70% of the time, and our 13 July 2026 run found the top-ranked brand changed between identical runs on 44% of Gemini answers and 35% of ChatGPT answers. So do not judge a fix by re-asking one prompt once. Re-baseline with the same prompt set you used for measurement, multiple runs, and compare distributions. Semrush also found that 62% of AI citations never name the brand being cited, which means citation counts and brand mentions are different metrics and you should track both.
Running the audit on a schedule
Quarterly is enough for checks 5 to 12. Checks 1 to 4 deserve monitoring, because a CDN rule change or a framework upgrade can take you offline to AI crawlers overnight without touching your Google rankings, so nothing in your normal reporting will flag it. Add the AI user agents to your log analysis and alert on a sustained drop in successful fetches.
The honest sequencing is: measure first, fix the gating checks, then spend the bulk of your effort on the last three. See also answer engine optimisation for the content side of that work. To get the baseline this audit depends on, run a free check of how often AI assistants name your brand at our AI visibility checker.





