GEO audit checklist: 26 checks for AI search visibility
A GEO (generative engine optimization) audit asks a narrow, answerable question: can AI search crawlers reach this page, and can they read what it says? This checklist is the one our free AI visibility checker runs, with the points each check carries and what to change when it fails.
What a GEO audit covers, and what it cannot
A GEO audit checks the technical path between your page and an AI answer engine. The engine's crawler has to be allowed in, the page has to be indexable, and the text has to be readable without guesswork. Google states that there are no extra technical requirements for its AI features beyond ordinary Search: a page must be indexed and eligible to show a snippet. The same basics matter when ChatGPT, Claude or Perplexity search the web: their search crawlers fetch pages, and a blocked or unreadable page gives them nothing to cite.
An audit cannot tell you whether an engine will mention your brand. Relevance, competition and the question a person asks decide that. Treat the audit as the part you control, and measure mentions separately (see how to track brand mentions in AI search).
The checklist below has 26 checks in five groups. Nineteen are weighted and add up to 100 points. Seven are reported for information with zero weight, because they reflect a site owner's choice rather than a readiness problem.
Crawler access: 11 robots.txt checks
Each crawler is checked against your published robots.txt for the audited path. Search crawlers carry points because blocking them removes you from that engine's answers. Training crawlers carry none: allowing or blocking them is a business decision.
| Crawler | What it does | Points |
|---|---|---|
OAI-SearchBot | ChatGPT search discovery and answers | 4 |
Claude-SearchBot | Claude search discovery and answers | 4 |
PerplexityBot | Perplexity search indexing and citations | 4 |
Googlebot | Google Search, including AI Overviews and AI Mode | 4 |
Bingbot | Bing search and search-backed answers such as Copilot | 4 |
GPTBot | OpenAI model training | 0 |
ClaudeBot | Anthropic model training | 0 |
Google-Extended | Google AI training and Gemini grounding control | 0 |
CCBot | Common Crawl corpus collection | 0 |
Bytespider | ByteDance content collection | 0 |
Applebot-Extended | Apple foundation-model training control | 0 |
Fix: a bot with its own User-agent group ignores the * group, so check named groups first. Our AI crawler list explains each token, and the robots.txt generator builds a fragment from your choices. Remember that robots.txt is only one layer: a CDN or firewall rule can still block a crawler that robots.txt allows.
Access and indexing: 6 checks, 38 points
| Check | Points | Passes when |
|---|---|---|
| HTTP response | 10 | The page returns a 2xx status after redirects |
| HTTP index directives | 6 | No noindex or none in the X-Robots-Tag header |
| HTML index directives | 8 | No noindex or none in a robots meta tag |
| Canonical URL | 6 | A valid absolute canonical URL is declared |
| Language alternatives | 3 | Valid hreflang alternates are declared |
| XML sitemap | 5 | A readable sitemap is at /sitemap.xml or declared in robots.txt |
Fix: a stray noindex is the most expensive failure on this list, because it removes the page from the index that AI features draw on. Look for it in your SEO plugin, staging settings that leaked to production, and server headers. A single-language site can ignore the hreflang check; the audit reports it so multilingual sites notice missing alternates.
Structured data and content: 7 checks, 36 points
| Check | Points | Passes when |
|---|---|---|
| Valid relevant JSON-LD | 12 | Every JSON-LD block parses and at least one declares a type |
| Clear heading hierarchy | 5 | One H1 and no skipped heading levels |
| Early answer paragraph | 5 | One of the first two paragraphs is 25 to 120 words |
| Visible FAQ section | 5 | An FAQ heading, two or more disclosure questions, or FAQPage markup |
| Author attribution | 4 | An author in HTML or JSON-LD |
| Published or updated date | 3 | A date in HTML or JSON-LD |
| Useful visible content | 2 | At least 200 visible words in the initial HTML |
Fix: start the page with a short paragraph that answers the page's main question directly, then support it. Keep structured data consistent with the visible text; Google's guidelines say not to mark up content readers cannot see. Our guide to schema markup for AI search covers which types are worth adding. The 200-word threshold is an inspection prompt, not a ranking rule: do not pad a page to reach it.
Rendering and optional signals: 2 checks
- Content in initial HTML (6 points). The audit reads the raw HTML without running JavaScript. If the page is a near-empty app shell, crawlers that do not render JavaScript see nothing to cite. Render the main heading and text on the server.
- Optional llms.txt (0 points). Reported only. llms.txt is an optional navigation proposal, not a ranking or access control. Read does llms.txt work? before spending time on it.
A copyable GEO audit template
Paste this into a ticket or spreadsheet and work through one page at a time:
GEO audit — page: ____________ date: __________
Crawler access (robots.txt and CDN)
[ ] OAI-SearchBot allowed [ ] Claude-SearchBot allowed
[ ] PerplexityBot allowed [ ] Googlebot allowed
[ ] Bingbot allowed [ ] CDN / firewall checked
[ ] Training bots (GPTBot, ClaudeBot, Google-Extended,
CCBot, Bytespider, Applebot-Extended): decision recorded
Access and indexing
[ ] HTTP 200 on the canonical URL
[ ] No noindex in X-Robots-Tag [ ] No noindex in meta robots
[ ] Canonical URL present [ ] hreflang (multilingual only)
[ ] XML sitemap readable and listed in robots.txt
Structured data and content
[ ] JSON-LD parses and matches visible facts
[ ] One H1, no skipped heading levels
[ ] Early answer paragraph (25–120 words)
[ ] Visible FAQ where it helps readers
[ ] Author and date where the page type needs them
[ ] Main text present in the initial HTML
Recheck date after fixes: __________How to run a GEO audit
- Open
https://your-site.com/robots.txtand read every group that names a crawler from the table above. - Run
curl -sI https://your-site.com/pageto see the status code and anyX-Robots-Tagheader. - View the page source, not the rendered page, and search for
noindex,canonical,hreflangandapplication/ld+json. - Confirm the first paragraphs and headings are in that source.
- Fix the failures in order of points, then recheck the same page.
Or run the free AI visibility checker on the page: it performs these 26 checks on the public HTML and returns each failure with a copyable fix after an email unlock.
Sources
- Google Search Central: AI features and your website
- Google Search Central: Robots meta tag and X-Robots-Tag specifications
- Google Search Central: How to specify a canonical URL
- Google Search Central: Localized versions of your pages (hreflang)
- Google Search Central: General structured data guidelines
- Sitemaps.org: Sitemap protocol
- RFC 9309: Robots Exclusion Protocol
- OpenAI: Overview of OpenAI crawlers
Reviewed on 2026-10-09. Point values match the CiteVisor audit at that date. Passing every check means the technical path is open; it does not guarantee that any engine will mention or cite a page.
Frequently asked questions
What is a GEO audit?
A GEO audit reviews whether AI answer engines can crawl, index and understand a page: robots.txt access for their search crawlers, indexing directives, structured data, content structure and whether the text is in the initial HTML. It is a technical readiness check, not a measurement of how often an engine mentions you.
Is there a free GEO audit tool?
Yes. The CiteVisor AI visibility checker on our home page runs all 26 checks in this list against one public page for free. You can also work through the template below by hand with a browser and curl.
What is a good AI visibility score?
There is no industry benchmark. Aim to pass every check that applies to the page. Some checks do not apply everywhere: a single-language site has no hreflang tags and a product page may have no author, so a correct page can score below 100.
How often should I run a GEO audit?
After any change to robots.txt, your CDN or firewall rules, your CMS or theme, and at least once a quarter. Crawler operators add and rename user agents, so recheck the crawler rules when their documentation changes.