Docs
GEO Audit
Score how well a site is positioned to be crawled, parsed and cited by AI engines.
What the GEO Audit measures
GEO (Generative Engine Optimization) is the practice of making a website easy for AI engines — ChatGPT, Claude, Perplexity, Gemini and Google AI Overviews — to crawl, understand and cite. The GEO Audit, found under AI Visibility → GEO Audit, fetches a client's site the same way those engines do (a plain HTTP request, no JavaScript execution — which is exactly how the major AI crawlers fetch) and grades concrete, verifiable signals into a single 0–100 readiness score.
Importantly, this measures readiness — whether a site is positioned to be cited — not actual citation share. How often a brand is genuinely mentioned in AI answers is tracked separately on the Visibility tab. We keep that distinction explicit so the score is never over-claimed.
The five scored categories
The composite score weights five categories. AI crawler access (30): whether your robots.txt lets the crawlers that power live AI answers — OpenAI's OAI-SearchBot and ChatGPT-User, Anthropic's Claude-User and Claude-SearchBot, PerplexityBot, Googlebot and Google-Extended — actually reach the site. Content accessibility / SSR (30): whether the page's main content is present in the raw HTML rather than injected by JavaScript, since AI crawlers don't run JS. Structured data (20): valid schema.org JSON-LD that anchors your brand as a known entity — especially an Organization block with sameAs links, plus support for richer answer-friendly types including FAQPage, Article, Product, HowTo and QAPage. Beyond just detecting these types, the audit checks that a present type actually carries its required properties (a FAQPage needs questions with accepted answers, an Article needs headline/author/datePublished, a Product needs offers, a HowTo needs steps); a type that's present but incomplete is flagged as a partial with the exact missing properties to add, rather than a full pass. Technical SEO hygiene (15): sitemap, self-referential canonical, a single H1, a sensible title and meta description, and HTTPS. llms.txt (5): presence and basic validity of an /llms.txt file — an emerging convention, weighted low because no major engine is confirmed to consume it yet.
Each check is graded pass, partial or fail with a plain-language explanation of what was found and why it matters, so the result is an action list, not just a number.
Research-validated content signals
Inside the content-quality scoring, the GEO Audit checks for three writing signals that peer-reviewed research has shown make a page more likely to be quoted by generative engines: direct quotations, cited statistics, and authoritative outbound citations. These come from the KDD'24 paper "GEO: Generative Engine Optimization" (Aggarwal et al., Princeton / IIT Delhi), which measured that adding quotations, statistics, cited sources and fluent language each lifted a page's visibility in AI answers by roughly a quarter. Each check is graded pass/partial/fail with a plain-language note, and the audit labels them as research-backed so you know the recommendation isn't a hunch.
The same research identified what doesn't work: keyword stuffing was the single worst tactic, actively reducing AI visibility. So the audit treats keyword stuffing as a negative signal — it never earns points, and a page whose keyword density is too high (roughly above 6%, with an elevated band around 4–6%) is flagged as a problem to fix, not a box to tick. Nothing in the content score ever rewards keyword density; it only ever penalises stuffing.
Live AI-crawler reachability (WAF and CDN blocks)
A robots.txt rule that says "allowed" only matters if the crawler can actually reach the page. Plenty of sites unblock AI bots in robots.txt but then sit behind a WAF or CDN — Cloudflare's "Block AI bots" toggle is the common one — that quietly turns those same crawlers away at the edge. To both you and the site owner everything looks fine; to the AI engine the site is invisible.
The GEO Audit now runs a live reachability check alongside the robots.txt review: it requests the page while presenting itself as each AI crawler and reports whether the request actually got through. This is informational by default — it only raises a concern when a block is genuinely confirmed, so you won't get false alarms from ordinary rate-limiting or transient errors. When a real edge block is detected, the audit names the crawler that was turned away so you can take it straight to the client's hosting or security team. The lesson it encodes: "allowed in robots.txt" and "reachable in practice" are two different things, and AI visibility needs both.
Running an audit and tracking it over time
Open a client's AI Visibility project, go to GEO Audit, and the domain is pre-filled from the client's saved website. Click Run audit and CrunchJunkie checks robots.txt, the homepage, llms.txt and the sitemap in one pass. Every run is saved, so you can re-audit after making changes and watch the score move — the history strip shows each snapshot with its date.
Because the audit reflects on-site signals only, it can't see off-site factors that also drive AI visibility (brand mentions across the web, Reddit/Wikipedia presence) or whether a model was trained on your content. Treat a high score as "this site is well-positioned to be cited," and pair it with the Visibility tab to see whether that positioning is translating into actual AI mentions.
SPA and server-rendering checks
AI crawlers fetch a page with a plain HTTP request and don't run JavaScript, so anything a site paints in the browser after load is invisible to them. The audit checks for this directly. The SSR signal check measures how much real content is in the initial HTML — the words present in the raw <body> before any JavaScript runs — and passes when there's a meaningful amount, flags a partial when there's only a little, and fails on an empty shell. The client-side-only check looks for the fingerprints of a single-page-app framework (React, Next.js, Vue, Nuxt, Angular, Svelte and others) sitting on top of a near-empty initial body, which is the classic pattern of a site that renders fine for people but returns almost nothing to a crawler.
The audit also checks for a robots meta noindex: if a page carries <meta name="robots" content="noindex">, it's telling search and AI answer engines to leave it out entirely, so that's called out with the exact fix. Together these three checks catch the technical reasons a page that looks perfect in a browser can still be effectively invisible to AI.
Draft the fix with Crunch
Every issue the audit raises comes with a plain-language explanation of what was found and how to change it. For the ones where you'd rather not write the fix from scratch, each issue has a "Draft the fix with Crunch" button. Click it and Crunch drafts a concrete, copy-pasteable remediation for that specific issue — grounded in the actual finding and the audited page, not generic advice — with a Copy button to lift it straight into a ticket or hand it to the client's developer.
The drafted fix is generated on demand for the issue in front of you and isn't saved to the audit; re-run it any time. Like the rest of Crunch, it needs an available AI model (Managed AI or your own key). It turns the audit from a list of problems into a list of ready-to-apply changes.
Getting started Reporting Report templates Filtering, dimensions & comparisons Sharing & delivering reports Metrics glossary AI visibility AI Shopping Visibility AI traffic from GA4 Integrations Data, privacy & security The Crunch assistant Connect to Claude & ChatGPT (MCP) Account & billing Refer a friend FAQ