Platform · GEO Audits
Before an AI engine can cite a page, it has to read it.
A GEO audit takes one URL and runs 21 checks: can the engines fetch it, is the outline clean, is the text in the HTML, does robots.txt let 20 AI crawlers in. The result is a score out of 100 and a pass, warn, fail list with a fix hint on every row, and you re-run it to prove the fix worked. Our team runs it on every page we touch.
What a GEO audit is
One URL, five fetches, twenty-one rules
A GEO audit asks one plain question of one URL: can an AI engine fetch this page, parse it, and quote it? It fetches the page as a desktop browser would, plus four files from the site root: robots.txt, llms.txt, sitemap.xml, and the OKF bundle. Then it runs 21 checks in 8 categories and scores the page from 0 to 100.
Every check is a mechanical rule. No language model reads the page and nothing is guessed, so the same page scores the same twice. Each audit covers a single page: our team runs it on the pages that matter and on the templates behind them, because a template fix carries to every page built on it.
What it checks
Twenty-one checks, in eight categories
Every failed check comes back with the same one-line hint. Turning those hints into a roadmap and shipping the fixes is our team’s work.
Discovery
Two checks on the files an engine reads before it reads you: is there an llms.txt, and does it start with a heading? Does sitemap.xml list at least one URL?
Crawlability
One check with 20 verdicts behind it: does robots.txt let each of 20 AI crawler tokens reach this path? Nothing blocked passes, one or two warns, three or more fails.
Structured data
Three checks: does the page carry structured data that parses, does it say what the page is, an organisation, a product, an article, and is there an FAQ block?
Structure
Three checks: Open Graph title, description, and image, all three; a meta description of 50 to 300 characters; a canonical tag. These are what an engine reads when it summarises a page.
Content
Three checks: exactly one H1 and at least two H2 headings, at least 300 words of real body text with scripts and styles stripped, and at least three internal links.
Technical
Three checks on how the page is served: HTTPS, raw HTML under 500 KB, and a language attribute on the html element.
Rendering
Three checks against the raw HTML, with no browser in the way: is there real text in it, and does that text sit inside a main, article, or section element? A page whose text only appears after JavaScript fails here.
OKF bundle
Three checks for ELEVA’s own Open Knowledge Format bundle at /okf: is it served, is it valid markdown, is it in the sitemap. It is our own format rather than an industry standard, so a site without one tops out at 86.
Crawlability
Twenty AI crawlers, one verdict each
Every engine sends its own crawler, and a robots.txt written with Google in mind can shut the rest out. The audit reads your robots.txt and tests the audited path against 20 crawler tokens: GPTBot, ChatGPT-User, and OAI-SearchBot from OpenAI, ClaudeBot and anthropic-ai, PerplexityBot, Google-Extended and GoogleOther, Bytespider, CCBot, Applebot-Extended, Meta-ExternalAgent, GrokBot, cohere-ai, Diffbot, and the rest.
The audit reads what your robots.txt says rather than visiting as each bot in turn, so a firewall that turns crawlers away by user agent will not show up here. If that firewall turns our auditor away too, the audit ends unreachable and says so.
- 0 blocked: pass. A missing robots.txt passes too; nothing is blocking anyone.
- 1 or 2 blocked: warn, and the breakdown names them.
- 3 or more blocked: fail.
Why it matters
A page an engine cannot read is never cited
It does not matter how good the page is. If GPTBot is blocked, the text only exists after JavaScript runs, or the outline has three H1s, the engine moves on to a competitor it can read. That is why every engagement starts here: the free audit runs this on the pages that matter to your brand.
The score is the mean of the scored checks. A pass counts 1, a warning 0.5, a fail 0, and checks that do not apply are left out. Green from 80, amber from 50, red below. Only two checks can warn, llms.txt and AI crawler access; everything else passes or fails.
Proving a fix worked uses the same loop: we audit, ship the change, and re-run. Every run is kept, so before and after sit as two rows in the history. An audit is pending while it runs, usually seconds, and ends completed, failed, or unreachable.
What a run is
One URL, twenty-one checks, a score in seconds
1
URL per audit
The audit scores one page at a time.
21
deterministic checks
Same page in, same score out.
20
AI crawlers tested
Against your robots.txt, for the audited path.
Seconds
from submit to score
A run is five fetches and a parse. Every run is kept.
Inside our GEO work
Where the audit sits in our GEO work
01 · DISCOVER
Where you stand before anything is touched: the technical half of the first picture, beside what the engines already say about you.
02 · OPTIMIZEThis feature
Every fix on the roadmap traces back to a failed check, and a re-run proves each one landed. Robots rules, headings, page structure, llms.txt: this is where the audit does its main work.
03 · DETECT
A template that scored 90 can score 60 after a redesign nobody told you about. Re-auditing the key pages on a cadence catches the regression before the citations go.
Questions about GEO audits
What clients ask about the audit
Is this the free audit?
It is the core of it. The free audit runs these 21 checks on the pages that matter for your brand, alongside a first read of what the engines already say about you, and we walk you through both. Under an engagement it keeps running on every page we touch, before the fix and after it.
Does it check the whole site?
No. One audit is one URL: the page itself, plus robots.txt, llms.txt, and sitemap.xml from the site root. Our team runs it on the pages that matter and on the templates behind them, since a template fix carries to every page built on it.
What is llms.txt?
A plain text file at the root of your site, like robots.txt, that tells AI assistants what the site is and which pages matter. The audit checks that it exists, that it is not an HTML error page in disguise, and that it starts with a top-level heading so it parses. A missing file fails; a file without a heading warns.
Which AI crawlers does it check?
Twenty, by the tokens they announce in robots.txt: GPTBot, ChatGPT-User, and OAI-SearchBot; ClaudeBot and anthropic-ai; PerplexityBot; Google-Extended and GoogleOther; Bytespider; CCBot; Applebot-Extended; Meta-ExternalAgent and Meta-ExternalFetcher; GrokBot; cohere-ai; Diffbot; and a few smaller ones. The verdict is per crawler, for the audited path.
What score should we aim for?
80 or above is green. Every scored check weighs the same, so the fastest route up is the failed checks, whatever category they sit in. Three of the 21 checks look for ELEVA’s own OKF bundle, so a site that does not publish one tops out at 86, and that is fine. The score is a readiness check, not a ranking.
Do you fix what it finds?
In Managed GEO, yes: robots rules, headings, structure, llms.txt, and the content gaps, all shipped by our team and confirmed by a re-run. Under GEO Consulting & Trends your engineers do the shipping, and we hand them the prioritised list with the check names on it so they can verify each fix in the same tool.
Related features
What the audit works with
- Whether the readable page actually gets cited: the questions your buyers ask, run daily across every engine.
Prompt Tracking
- Articles drafted for the prompts you are losing, on pages that have to pass these same checks.
Content Routines
- The competitors AI names instead of you, and which of their pages it cites.
Competitor Research
- For SEO and content leads: which pages and sources each engine cites, share of voice next to rankings, and a fix list per template.
SEO & Content
See what AI is already saying about your brand.
A free audit shows you exactly where you stand across ChatGPT, Gemini, Perplexity, Copilot, Claude, Grok, and AI Overviews, and what it would take to close the gap.