Skip to content
⊛Hidden LayerSee what AI sees.
  • Learn
  • Playbook
  • Insights
  • Reference
  • Data (sign in required)
Sign in to audit
GEO Readiness Playbook — Print Edition

Hidden Layer · GEO Readiness Playbook

From AI-invisible
to fully transactable.

The step-by-step framework to make your site discoverable, citable, and actionable by AI systems. Four phases. Five readiness levels.

By Harshak Patel · Hidden LayerUpdated July 2026https://hidden-layer-blogs.pages.dev/playbook
0 / 118domains are agent-ready today
+115%citation lift from adding statistics
83%ChatGPT Shopping from Google organic top-40

The readiness ladder

Five sequential levels. Each depends on the one below. Most sites are stuck at L0 — blocked before they're even seen.

  1. F
    L0 — Invisible — AI crawlers cannot read your site. JavaScript-only content, blocked bots, missing server-render.
  2. D–C
    L1 — Discoverable — Crawlers can access you. robots.txt declared. Server-rendered HTML. Basic meta signals present.
  3. C–B
    L2 — Included — Structured data complete. Merchant feeds submitted. Products eligible for AI shopping surfaces.
  4. B–A
    L3 — Cited — Brand earns LLM mentions. Entity present in training data. Prose answers real buyer questions.
  5. A
    L4 — Transactable — Agents can discover, recommend, and complete transactions with your catalogue in real time.
TL;DR: Fix access first (Phase 1), then signal quality (Phase 2), then content authority (Phase 3), then agentic integration (Phase 4). Skipping levels doesn't work — an uncrawlable site cannot be cited regardless of content quality.
01

Phase 1 — Quick Wins

L0 → L1·~1 week

Fix crawler access, robots.txt, render gaps, and meta signals. No code required.

P0Quick winVery high impact · Low effort · 1–2 hours · Dev / Marketing

Audit and publish robots.txt

AI crawlers rely on robots.txt to know they're allowed. Missing or restrictive rules silently remove you from AI search results — crawlers default to denial on absence.

How to:

  1. Check your current robots.txt at yourdomain.com/robots.txt — if it returns a 404, you have no file.
  2. Verify AI bots are not blocked. Ensure GPTBot, ClaudeBot, PerplexityBot are explicitly allowed.
    User-agent: *
    Allow: /
    
    User-agent: GPTBot
    Allow: /
    
    User-agent: ClaudeBot
    Allow: /
  3. Deploy at your domain root: https://yourdomain.com/robots.txt
  4. Verify: curl -I https://yourdomain.com/robots.txt — expect HTTP/2 200 and text/plain.
P0Quick winHigh impact · Low effort · 1–3 hours · Dev / Content

Add /llms.txt — the AI-specific robots.txt

The emerging standard for AI-specific directives. Without it, LLMs have no structured way to understand what you want them to use.

How to:

  1. Create a plain-text file at /llms.txt in your site root.
  2. Write using the llms.txt spec: title, summary, links to key content pages.
  3. Validate: curl https://yourdomain.com/llms.txt — should return 200 text/plain.
P1Medium impact · Medium effort · 2–4 hours · Dev / Marketing

Audit meta descriptions and Open Graph tags

Agents use meta descriptions as the first signal for page intent. Missing OG tags mean social sharing and link-preview agents get no structured context.

How to:

  1. Audit top 10 pages: meta description < 160 chars, og:title, og:description, og:image (1200×630px), og:url.
  2. Use the Open Graph Debugger (developers.facebook.com/tools/debug/) to validate.
P0Very high impact · Medium–High effort · 1 day – 1 week · Developer

Check for JavaScript-only content (the render gap)

AI crawlers do not execute JavaScript. If your core content only renders client-side, LLM crawlers miss it entirely.

How to:

  1. Test by disabling JavaScript in DevTools and reloading. If core content disappears, AI sees the same blank page.
  2. If missing: implement SSR (getServerSideProps) or SSG (getStaticProps). Ensure product names, descriptions, prices are in the initial HTML.
P1Quick winMedium impact · Low effort · 1–2 hours · Dev / SEO

Verify canonical URL consistency

A canonical tag pointing to a different domain silently redirects LLM crawl credit away from you.

How to:

  1. Check: curl -s https://yourdomain.com | grep -i "canonical"
  2. Verify top 5–10 pages for staging URLs, www vs non-www, HTTP vs HTTPS mismatches.
02

Phase 2 — Schema & Feeds

L1 → L2·~2 weeks

Organization schema, FAQPage, Product schema, Merchant Center, RSS.

P1High impact · Low effort · 1–2 hours · Developer

Add Organization schema with @id + sameAs entity links

The entity anchor LLMs use to resolve all facts about your brand. Without @id linkage, your brand is a string, not an entity.

How to:

  1. Add JSON-LD in <head>: @type Organization, @id (canonical URL + "#org"), name, url, logo, sameAs (Wikipedia, Wikidata, LinkedIn, Twitter).
  2. Validate at: search.google.com/test/rich-results
P1Quick winHigh impact · Medium effort · 2–4 hours · Dev / Content

Add FAQPage schema to key landing pages

FAQPage schema is among the highest-impact schema types for LLM citation. Each Q&A is a directly quotable, structured fact AI systems can extract verbatim.

How to:

  1. Identify the 3–5 questions buyers ask most. Add FAQPage JSON-LD with Question + Answer for each.
  2. Each answer must be complete and standalone — AI quotes answers verbatim without surrounding context.
P0Very high impact · Medium effort · 1–3 days · Developer

Validate Product schema on product pages

Agents shopping on behalf of users need: name, offers (price + availability), image, description. Without Product schema, AI shopping assistants skip to competitors.

How to:

  1. Add Product schema JSON-LD to every product page. Required: name, offers (price, priceCurrency, availability), image, description.
  2. Validate every variant (in-stock, out-of-stock, sale) using Google Rich Results Test.
P1Very high impact · Low effort · 1–2 hours · Marketing / eCommerce

Enable Google Merchant Center Free Listings explicitly

83% of ChatGPT Shopping results come from Google Shopping organic top-40. Free Listings must be explicitly activated — it is not on by default.

How to:

  1. Merchant Center → Growth → Manage Programs → Free product listings → Get started.
  2. Check Diagnostics → Item issues. Common blockers: missing price, availability, image, title, link, GTIN.
P2Quick winMedium impact · Low effort · 1–2 hours · Developer

Publish an RSS / Atom feed

LLM training pipelines frequently ingest RSS feeds. Sites with feeds get faster content-to-LLM propagation between training checkpoints.

How to:

  1. Create RSS 2.0 at /feed.xml with title, link, description, and <item> per post (pubDate, guid, full description).
  2. Declare in <head>: <link rel="alternate" type="application/rss+xml" href="/feed.xml" />
03

Phase 3 — Content & Citation

L2 → L3·Ongoing

Earn LLM recommendations with statistics-rich prose, entity presence, and AI referral tracking.

P1Very high impact · High effort · Ongoing · Content / Marketing

Write conversational content with statistics, comparisons, and cited sources

Princeton/SIGKDD 2024: citing external sources = +115% AI citation rate; statistics = +41%; direct quotations = +28%. Keyword stuffing = −10%.

How to:

  1. Audit top 5 landing pages: at least 3 cited statistics? At least 1 direct quotation? Explicit comparison tables?
  2. Add a "Key statistics" section. Format: "[X]% of [audience] [action], according to [Source, Year]." Hyperlink to source.
  3. Structure prose for AI extraction: short paragraphs, clear topic sentences, named entities. Each sentence should be self-contained.
P0Very high impact · High effort · 1–4 weeks · Marketing / PR

Build Wikipedia / Wikidata entity presence

Wikipedia is the single strongest predictor of LLM citation accuracy — it is a direct training corpus for every major model.

How to:

  1. Check: en.wikipedia.org/wiki/YourBrand. If no article, build notability first — 3+ independent reliable secondary sources required.
  2. Create a Wikidata entry even without a Wikipedia article: wikidata.org → New Item. Add: business type, name, URL, founded date, industry.
  3. Add Wikidata and Wikipedia URLs to Organization schema sameAs array.
P1Quick winHigh impact · Low effort · 1–2 hours · Analytics / Marketing

Set up AI referral traffic tracking in GA4

ChatGPT, Perplexity, Claude, Gemini send referral traffic with identifiable hostnames. Without custom channel grouping, AI referral appears as Direct.

How to:

  1. GA4 → Admin → Data Settings → Channel groups → Create "AI Referrals" group.
  2. Match hostnames: chat.openai.com, chatgpt.com, perplexity.ai, claude.ai, gemini.google.com, bing.com.
P1High impact · Low effort · 1 hour per quarter · Marketing

Track LLM cold recall quarterly via Hidden Layer audits

Cold recall measures whether an LLM can accurately describe your brand from training data alone. Improvement = real brand authority in AI systems.

How to:

  1. Baseline: ask GPT-4, Claude, and Gemini "Describe [YourBrand] and what they offer." Record verbatim.
  2. Score on accuracy, completeness, sentiment, confidence. Repeat every 90 days.
  3. Use Hidden Layer's geo_cold_recall audit score at /audit as a consistent benchmark.
04

Phase 4 — Agentic & Advanced

L3 → L4·1–4 weeks

WebMCP annotations, /.well-known/webmcp manifest, x402 / BuyAction for agent-initiated commerce.

P2High impact · Low effort · 2–4 hours · Developer

Annotate HTML forms with WebMCP toolname + tooldescription

Make your existing forms agent-discoverable without JavaScript. Hidden Layer audits of 118 domains found 0 sites with any WebMCP annotations.

How to:

  1. Identify your 2–3 highest-value forms: product search, add-to-cart, contact.
  2. Add data-toolname and data-tooldescription attributes to each form, describing inputs and outputs.
P2High impact · Low effort · 1–2 hours · Developer

Publish /.well-known/webmcp tool manifest

The WebMCP discovery endpoint. Browser agents check this path to discover your available tools before probing the DOM.

How to:

  1. Create /.well-known/webmcp as a JSON file listing your tools: name, description, form action, input schema.
  2. Serve with Content-Type: application/json. Validate at: webmcp.io/validate (if available).
P2High impact · High effort · 1–4 weeks · Developer / Product

Evaluate x402 / BuyAction schema for transactable products

x402 and BuyAction schema are the emerging rails for agent-initiated purchases. Early movers gain catalogue positioning before mainstream tooling arrives.

How to:

  1. Add schema.org/BuyAction to product pages with eligibleRegion, price, and seller.
  2. Evaluate x402 payment protocol for agent-initiated transactions — see x402.org for spec.
P2Medium impact · Low effort · 1 hour per quarter · Dev / Analytics

Monitor agent tool completion rate and description clarity quarterly

Agent models improve over time. A tool description that worked 6 months ago may now be ambiguous — quarterly review keeps your tool surface current.

How to:

  1. Review each annotated form: is the description clear and specific? Does it name inputs, expected output, and any constraints?
  2. Test with current major AI agents. Update descriptions when behavior drifts from intent.

Glossary — 13 GEO terms

Key concepts used throughout this playbook.

GEO (Generative Engine Optimisation)
The practice of making a website discoverable, citable, and transactable by AI-powered search and recommendation systems — the counterpart to traditional SEO for the LLM era.
AEO (Answer Engine Optimisation)
A subset of GEO focused specifically on getting your content quoted as a direct answer by AI systems like ChatGPT, Perplexity, or Google AI Overviews.
LLM / AI crawler
An automated bot (e.g. GPTBot, ClaudeBot, PerplexityBot) that fetches and indexes web content to train or augment large language models.
llms.txt
An emerging open standard that lets site owners declare AI-specific access rules and link to key content for LLM consumption, placed at the root of a domain.
robots.txt
A plain-text file at the root of a domain that instructs crawlers which pages they may or may not access; AI crawlers respect it just like traditional search bots.
Schema.org / structured data
A shared vocabulary of JSON-LD markup embedded in HTML that tells search engines and AI systems what a page is about — product, FAQ, organisation — in a machine-readable format.
RAG (Retrieval-Augmented Generation)
An AI architecture where a model fetches live documents at query time to ground its answer in current facts, rather than relying solely on training-time knowledge.
Citation
When an AI system names or quotes your brand, product, or content in a generated answer — the primary success metric of GEO.
Readiness ladder
Hidden Layer's five-level framework (L0 Invisible → L4 Transactable) describing the sequential stages of AI readiness.
Render gap
The discrepancy between what a browser displays (after executing JavaScript) and what an AI crawler actually sees (server-rendered HTML only).
Entity
A uniquely identified real-world concept — a brand, product, or person — that AI systems track across sources using @id anchors and sameAs links.
WebMCP
An open protocol that lets browser-based AI agents discover and invoke HTML forms as tools via data-toolname / data-tooldescription attributes and a /.well-known/webmcp manifest.
Cold recall
The ability of an LLM to accurately describe your brand from training data alone, without any retrieval or search — measured by Hidden Layer's geo_cold_recall score.

Hidden Layer — AI Readiness Research · June 2026 · https://hidden-layer-blogs.pages.dev/playbook

Run a live audit on your domain at https://hidden-layer-blogs.pages.dev

Hidden Layer

See what AI sees. Agent-readiness audits, industry benchmarks, and the Human/Agent toggle — free, no login required.

46+Agent Checks
8Score Categories
12Bot Profiles

Quick Links

  • Learn
  • Playbook
  • Insights
  • Reference
  • Data
  • Run an Audit
  • About

Agent files

  • llms.txt
  • MCP server card
  • robots.txt
  • sitemap.xml

Recent articles

  • Cold recall: does AI know your brand?
  • Product schema in the AI era
  • GEO leaderboard: who's winning AI visibility
  • The render gap explained
© 2026 Hidden Layer. See what AI sees.
v0.4.0 · ad08612dev
MethodologyBlog