GEO Audit — Anomalia Docs
Search docs… &Cmd;K
Docs/GEO Audit

GEO Audit

When a buyer asks ChatGPT, Perplexity, or Google AI Overviews a category question — does THIS brand get named? The GEO Audit answers that with two levels: technical crawlability and citation share-of-voice.

GEO = SEO for the AI-answer era. Traditional SEO optimises for Google's ten blue links. GEO optimises for the single answer an LLM generates.

Level 1: Technical audit

Deterministic — no AI calls, no cost. Fetches four well-known URLs in parallel:

URLWhat it reveals
Homepage HTMLMeta tags, JSON-LD, content quality, heading hierarchy, alt text, NAP signals
/llms.txtWhether the brand has adopted the LLM-readable sitemap standard
/robots.txtWhether AI crawlers are blocked
/sitemap.xmlHow many pages are discoverable

The audit checks 13 on-page signals (title, meta description, H1, word count, text ratio, Open Graph, heading hierarchy, image alt text, internal links, meta robots, Q&A blocks, NAP data, HTML lang). Each rated good / warn / bad.

Scoring: high severity = −25 pts, medium = −12, low = −5. Score starts at 100.

AI crawlers checked

9 crawlers that feed major generative engines:

CrawlerEngine
GPTBotOpenAI training
OAI-SearchBotChatGPT search
ChatGPT-UserChatGPT live browsing
ClaudeBotAnthropic
PerplexityBotPerplexity index
Google-ExtendedGemini / AI Overviews training
CBotCommon Crawl (feeds many models)
Applebot-ExtendedApple Intelligence
anthropic-aiAnthropic (legacy)

Content analysis

The homepage is parsed for signals that affect both classic SEO ranking and whether generative engines can understand + cite the page:

  • Title — 30-60 chars (LLMs use titles to understand page identity)
  • Meta description — 120-160 chars (summary text AI engines extract)
  • Word count — ≥500 (thin content gives AI nothing to cite)
  • Text-to-HTML ratio — ≥10% (JS-rendered SPAs look empty to non-JS crawlers)
  • Q&A blocks — FAQ-style content is the most-cited format in AI answers
  • Image alt text — AI can't "see" images; alt is the only bridge

Level 2: Citation share-of-voice

Answers: when a real buyer asks an LLM a category question, does THIS brand appear?

Seed prompts

From the brand's profile, generate 5-7 natural buyer questions: "best X for Y", "alternatives to competitor", "how do I choose an X". Never the bare brand name.

Ask each prompt

Call Gemini with Google Search grounding → get a web-grounded answer. Then extract: did the answer name this brand? What rank? Which competitors?

Compute share-of-voice

% of prompts where the brand was mentioned. A brand named in 2 of 6 questions has 33% share-of-voice.

Artifacts: closing the gaps

The audit finds gaps. The artifact generator produces copy-paste assets the user can ship on their site — Anomalia proposes, the human ships.

KindFormatCloses issue
faqmarkdown + JSON-LDNo FAQ schema + citation gaps
org_schemaJSON-LDNo Organization structured data
llms.txttxtNo /llms.txt

Each artifact uses the parallel variants + reviewer pattern: 3 variants generated in parallel, a GEO reviewer picks the most citable one. The LLM writes the content; the module assembles the structured format in code.

Cron: GET /api/v1/geo/tick — runs weekly for all active brands. Supports ?brand=<slug>.