- Before content strategy, confirm the basics: can AI crawlers reach your site, and does your homepage have the structural elements engines look for.
- This is a fixed 11-check list — four crawler-access checks plus seven structural checks — the same 11 ContextOwl's own report runs.
- Crawler access is pass/fail per bot: GPTBot, PerplexityBot, Google-Extended and ClaudeBot each have their own robots.txt line, and blocking one doesn't affect the others.
- llms.txt is one of the 11 checks, but it's contested: Google's own guidance says it neither helps nor hurts in Google Search.
- Re-run the full list after every fix, not just the one check you believe you fixed.
Which crawlers are allowed?
Run 11 pass-or-fail checks before anything else: four confirm AI crawlers can reach your site at all, seven confirm your homepage has the structural basics engines use once they do reach it. None of this guarantees a citation — it's the floor a brand needs cleared before content and PR work has anywhere to land. See is your site invisible to AI crawlers for what happens when it isn't, and a full robots.txt guide for exact syntax.
| Bot | Engine | What it does |
|---|---|---|
| GPTBot | ChatGPT | Trains future OpenAI models. Doesn't control ChatGPT's search/citation feature — that's OAI-SearchBot, a separate bot. |
| PerplexityBot | Perplexity | Builds the index Perplexity's answers ground on. Perplexity-User, a separate agent, fetches pages live and generally ignores robots.txt. |
| Google-Extended | Google Gemini | A robots.txt token, not a separate crawler — Googlebot does the fetching. Controls Gemini training/grounding only; Google states it doesn't affect Search inclusion or ranking, and AI Overviews/AI Mode run on Googlebot, not this token. |
| ClaudeBot | Claude | Trains and develops Claude. Claude-User and Claude-SearchBot handle user-triggered fetches and search indexing separately. |
Blocking one bot doesn't block the others — blocking GPTBot specifically does not remove you from ChatGPT's answers, a common and costly mistake covered in full in blocking GPTBot isn't blocking ChatGPT.
Which structural elements are present?
| Check | What it tests |
|---|---|
| llms.txt present | A file at /llms.txt — contested, see below |
| JSON-LD structured data | <script type="application/ld+json"> on the homepage |
| Meta description present | A non-empty <meta name="description"> |
| Canonical tag present | A <link rel="canonical"> |
| Clear H1 | One identifiable top-level heading |
| Extractable body text | Real text in the initial HTML, not JavaScript-only |
| Recent last-modified signal | Homepage sends a current Last-Modified header |
Which checks matter most, and how to prioritise failures?
Crawler access first, always. If a crawler can't fetch your site, nothing else on this list matters for that engine — there's no later step where a blocked crawler reconsiders. Extractable body text and a clear H1 next: a page a crawler can't read has nothing for a model to extract, regardless of its schema or meta tags. The rest (meta description, canonical, JSON-LD, last-modified) are low-effort, independent fixes — any order is fine. llms.txt last, deliberately: Google's generative AI guide states you "don't need to create new machine readable files, AI text files, markup, or Markdown" and that doing so "won't help or harm." It's one check on this list, not a priority — see whether to bother with llms.txt for the full evidence picture.
A worked example
A fictional small SaaS homepage, checked today — 7 of 11 passed (64%):
| # | Check | Result | Fix |
|---|---|---|---|
| 1 | GPTBot allowed | Pass | — |
| 2 | PerplexityBot allowed | Fail | A wildcard Disallow: / catches it — add an explicit Allow line above the block |
| 3 | Google-Extended allowed | Pass | — |
| 4 | ClaudeBot allowed | Pass | — |
| 5 | llms.txt present | Fail | Not present — low priority |
| 6 | JSON-LD present | Pass | — |
| 7 | Meta description present | Fail | <head> has no meta name="description" — a five-minute fix |
| 8 | Canonical tag present | Pass | — |
| 9 | Clear H1 | Pass | — |
| 10 | Extractable body text | Pass | — |
| 11 | Recent last-modified | Fail | Server sends no Last-Modified header |
Priority order: fix #2 (crawler access) first, then #7 (quick win), then #5 and #11 as lower-priority cleanup.
Common mistakes: blocking GPTBot and assuming it removes you from ChatGPT entirely; prioritising llms.txt ahead of basic crawler access; never re-checking robots.txt after a CMS or hosting migration, which commonly regenerates an overly-restrictive default.
Checklist:
- Checked
/robots.txtforGPTBot,PerplexityBot,Google-Extended,ClaudeBot— including under a wildcardUser-agent: *block. - Loaded the homepage with JavaScript disabled and confirmed the H1 and body text are still there.
- Checked page source for
application/ld+json, a meta description, and a canonical tag. - Checked response headers for
Last-Modified. - Checked whether
/llms.txtresolves — optional, not a priority.
Tools to use: the AI Bot Access Checker reads your live robots.txt and reports pass/fail for all four crawlers in seconds; a browser's "disable JavaScript" toggle for the text-extraction check; curl -I on your homepage for response headers.
How to re-check after fixes?
Re-run the full 11-check list after any fix — a robots.txt edit is easy to get subtly wrong. Re-check again after any CMS migration or hosting change, since these commonly reset robots.txt to a restrictive default without anyone noticing until citations drop.
FAQ
Is this the same 11 checks as ContextOwl's paid report? Yes — the free checklist here and ContextOwl's Technical AI-Readiness report chapter run the same 11 checks.
Do I need to pass all 11 to be "AI-ready"? No single threshold is meaningful. Treat crawler access and extractable content as closer to required, and the rest as good practice.
Should I prioritise llms.txt? No. Google's own guide says it neither helps nor hurts in Google Search, and it's the lowest-priority item here.
How often should I re-run this checklist? Immediately after any migration, CMS change or robots.txt edit; quarterly otherwise.
What to do next
- Run the AI Bot Access Checker now to clear the four crawler-access checks in one pass.
- Walk the seven structural checks using the checklist above.
- Fix failures in priority order and re-run the full list after each fix.
ContextOwl sells one-time AI visibility reports. The AI Bot Access Checker is a free version of four of the 11 checks in ContextOwl's full technical-readiness audit.
Sources
- OpenAI, "Overview of OpenAI Crawlers" (GPTBot, OAI-SearchBot, ChatGPT-User): https://developers.openai.com/api/docs/bots
- Perplexity, "Perplexity Crawlers" documentation (PerplexityBot, Perplexity-User): https://docs.perplexity.ai/docs/resources/perplexity-crawlers
- Anthropic/Claude Support, crawler documentation (ClaudeBot, Claude-User, Claude-SearchBot): https://support.claude.com/en/articles/8896518
- Google, "Google's common crawlers" (Google-Extended token): https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers
- Google Search Central, "Optimizing your website for generative AI features on Google Search" (updated 10 July 2026): https://developers.google.com/search/docs/fundamentals/ai-optimization-guide
- ContextOwl product documentation: the 11-check Technical AI-Readiness audit (
auditSite,AI_BOT_SPECS).
More in Playbooks
Put the answer in the first paragraph, ask the question in the heading, and stop writing once one question is answered. That's most of it.
AI answers about you start from what's findable under your own name. A clean homepage, claimed profiles and healthy branded search are the base layer everything else sits on.
List every source an AI engine cites for your competitors but never for you. That list is your content and outreach plan — the GEO equivalent of a keyword gap analysis.