squirrelscan
GitHub

What is GEO? Generative engine optimization defined

GEO is the practice of making content easier for AI answer engines to retrieve, cite and quote. Where the term comes from, and what an audit can check.

Generative engine optimization (GEO) is the practice of shaping web content so AI answer engines are more likely to retrieve it, cite it and quote it in their responses.

The name comes from a 2023 research paper, GEO: Generative Engine Optimization, which framed it as a creator-centric way to raise a source’s visibility in generative engine responses. The authors released a benchmark of queries, GEO-bench, and reported visibility gains of up to 40% for some content changes on it. You will also see the practice called AEO, answer engine optimization.

GEO is not the same thing as geo meta tags, the geo.placename and geo.position tags that state a page’s location.

Category: Agent Experience

Why it matters

An answer engine quotes what its crawlers could fetch and read. A page they are blocked from may still appear as a bare link. Google’s guidance for its own AI features is that no special files, markup or Markdown are needed to appear in them, and that structured data is not required for generative AI search.

How squirrelscan checks it

No squirrelscan rule measures GEO, and no audit can tell you whether an answer engine will cite a page. The rules below check the preconditions: whether AI crawlers and fetchers can reach the page, whether the text is in the raw HTML, whether the site offers a curated entry point, and whether its structured data parses. LLM parsability is a cloud rule that scores how reliably a language model reads each page; it is not a ranking factor.

RuleWhat it flagsSeverity
AI crawlers in robots.txt: which bots you block, by classrobots.txt blocking Claude-User or PerplexityBot alongside the training bots. squirrel classifies all 24 known AI crawlers and names what each block costs.warning
Content that needs JavaScript: invisible to raw-HTML agentsMost of a page’s text arriving only after JavaScript runs. squirrel compares the raw HTML against the rendered DOM and reports the gap.info
llms.txt: what the file is and how squirrel validates itNo /llms.txt at the root, an SPA fallback served in its place, or a file with no H1 and no links. squirrel checks the file and its format.info
LLM parsability score: what it measures and how to raise itA page a language model reads badly, scored under 70 out of 100. squirrel scores every crawled page and names the ones below the mark.info
Invalid JSON-LD syntax: what breaks it and how to fixA structured data block that will not parse, or parses but omits properties schema.org requires. squirrel names the exact type and property.warning
Blocking AI agents at the edge: what robots.txt hidesA WAF or bot-management rule serving GPTBot or Claude-User a challenge the browser never sees. squirrel probes the homepage as all three.error

How to fix it

Fix access first. Check that robots.txt does not block the AI search indexers and user-action fetchers you want citing you, and that the WAF does not challenge them (see the AI crawler access fix and the agent blocking fix):

User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

Then render the main content on the server (content without JavaScript) and fix any JSON-LD that fails to parse (JSON-LD validation).

Run the check

squirrel audit https://example.com --rule-include ax/ai-crawlers,ax/content-without-js,ax/llms-txt,ai/llm-parsability,schema/json-ld-valid,ax/agent-blocking

A signed-out local audit costs nothing. LLM parsability runs only when you are signed in, and the raw-versus-rendered comparison needs a cloud audit.

  • Agent experience (AX): How well a site serves AI agents that read it, find their way around it and act on it, the way UX serves people.
  • AI crawler: A bot that fetches pages for AI companies, in three classes: training crawlers, AI search indexers and user-triggered fetchers, each with its own user-agent token.
  • llms.txt: A proposed Markdown file at /llms.txt that gives language models a curated map of a site’s key content.
  • Structured data: Machine-readable statements about a page’s content, usually schema.org vocabulary in JSON-LD, that search engines and agents can parse.
  • Geo meta tags: Legacy geo.region, geo.placename and geo.position meta tags that state a page’s location; not to be confused with GEO, generative engine optimization.

Learn more

References

Type to search…

↑↓ navigate↵ openesc close