Site and publishing

Eight checks, and every verdict shows its evidence

8

checks, all deterministic, none of them needing a model to decide

CheckID constants in internal/readiness — crawlers, llms.txt, Organization schema, FAQ schema, head basics, server rendering, about page, pricing page

This is not a site audit. Title lengths, alt text, and readability scores are Ahrefs' job and largely a commodity by now. The two gaps that actually cost citations, no directory profiles and no public pricing, are off-page findings and they live on Citation Sources instead.

What is left is the floor, and only the floor: eight things that either let an answer engine read you or stop it. Each one runs over your homepage and a handful of key pages, costs a few HTTP requests, and produces a verdict you can trace back to the bytes we fetched. We fail one of them ourselves.

Where it lives: Site audit in the dashboard, plus the free checker on /tools.

What it looks like

Illustrative

6

of 8 checks pass

brightmetric.com, read live. Every check names the file it read.

  • AI crawlers allowed in robots.txtPass
  • llms.txt present and parseablePass
  • Organization schema with sameAsFix
  • FAQPage schema on answer pagesFix
  • Title, description, canonicalPass
  • Content readable without JavaScriptPass
  • An about page that names the companyPass
  • A pricing page with numbers on itPass
The eight checks, run against a domain. Illustrative result; the check list is the CheckID set in internal/readiness.

What it does

01

Checks crawler access properly

GPTBot, ClaudeBot, PerplexityBot, and Google-Extended are separate agents with separate purposes, and the one people block is usually not the one they meant to. The check reads your robots.txt and reports blanket rules you did not write, which is how most accidental blocks happen. The crawler checker runs that one check on its own, and the robots.txt generator writes the file if you need to start over.

02

Reads what the engines read

llms.txt, Organization and FAQ JSON-LD, canonical and meta tags, and whether your copy is in the server response or arrives later via JavaScript. Also whether an about page and a pricing page exist, because those two are what an assistant reaches for when a buyer asks who you are and what you cost. Each of those has a generator or validator of its own: llms.txt, schema markup, and a structured data validator for what you already publish.

03

Distinguishes four verdicts, not two

Pass, warn, fail, and unknown. Warn means nothing is broken and the engines are being given less than they could use, and it is never dressed up as a failure. Unknown means we could not fetch the page, which is a different fact from a broken site.

How it works

  1. 01Every check is explainable from bytes we fetched, and each stored verdict carries its own evidence.
  2. 02The copy for a check (what it is called, why it is on the list, how to fix it) is joined on at read time rather than stored, so editing an explanation fixes every historical run for free.
  3. 03Fetches go through an SSRF-guarded client, since the URL being fetched is user-supplied.
  4. 04The same engine powers the free AI Readiness Checker, so you can see the output before paying for anything.

What it does not do

  • Passing all eight does not get you cited. It gets you readable, which is the precondition and not the goal.
  • It is a floor, and other tools go deeper on the same floor. Botric audits machine-readable pricing and freshness as well, and if your on-page basics are the thing that is broken, that is the half worth fixing first.
  • The one check we fail on our own site is Organization schema sameAs, and no amount of code fixes it: it needs real third-party profiles.
  • Sites that block automated fetches return unknown rather than a verdict.
  • It tells you a check failed. It does not tell you where the setting lives on your platform, and that varies more than it should. Wix and Framer will not serve a file from the site root at all. Shopify keeps robots.txt behind a Liquid template. Substack gives you almost nothing to change, and Mintlify has already written half of it for you. On HubSpot robots.txt is per-domain and the schema is never written for you at all. The per-platform pages carry the click path, one per platform.
  • It looks at a handful of pages, not your whole site. This is a floor check, not a crawl. For whether the engines can find the rest of your pages at all, the sitemap validator is the separate check.

What you get

Included, and the eight-check version is free with no signup.

Read the full plan comparison.

Try it free

Run all eight checks on any URL, no signup, no stored result.

Free AI Readiness Checker

Live demo

See Readiness checks on a real account, with no signup and nothing to configure.

Open the demo

Frequently asked questions

Should I block AI crawlers?

Training crawlers and answer-engine crawlers are different agents. Blocking GPTBot does not remove you from ChatGPT's answers, and blocking the retrieval agents does. Most sites that meant to opt out of training have blocked the wrong one.

Does llms.txt actually do anything?

No engine has committed to reading it. It costs an hour, it is a plain markdown file, and it is the cheapest item on this list, which is roughly the honest case for it.

Is the free version the same as the paid one?

Same eight checks. The paid version stores runs against your product so you can see what changed, and sits next to the citation data that tells you whether being readable made any difference.

Related features

Every feature we publish

Run it on your own product

Start with the free visibility check to see whether the engines name you today, then run the scan that shows which pages they used instead.