Checklist
The AI Search Readiness checklist.
Twenty checks in three layers. Each row says how to check it by hand and whether the audit can open the fix as a pull request or only describe it. It does not guarantee citations; it removes the reasons an assistant cannot read you.
01 · Access
Can named AI crawlers fetch the site?
| Check | How to check | Fix |
|---|---|---|
| robots.txt exists and returns text, not an HTML shell | Fetch /robots.txt and read it | Pull request |
| No group blocks OAI-SearchBot, Claude-SearchBot, PerplexityBot or Amazonbot | Evaluate each token with longest-match rules | Pull request |
| No group blocks ChatGPT-User, Claude-User or Perplexity-User | Same evaluation, live-fetch tokens | Pull request |
| The star group does not Disallow everything on the production host | Read the star group; preview hosts are exempt | Pull request |
| Googlebot is allowed and the home page is not noindex | robots.txt plus the robots meta and header | Pull request |
| The sitemap is reachable and lists live URLs | Fetch it, parse it, sample entries | Pull request |
| Canonical tags point at the production host, not a preview domain | Compare every canonical with the final origin | Pull request |
| No hosting challenge page is served to anonymous fetchers | Fetch without JavaScript; check status and title | Guidance |
02 · Receipt
Do crawlers receive real content when they fetch?
| Check | How to check | Fix |
|---|---|---|
| The raw HTML of each page carries readable text before scripts run | Count words in the fetched HTML | Guidance |
| The home page is not an empty application shell | One div and a script tag is a shell | Guidance |
| Rendered and raw content do not differ by more than a screen of text | Compare word counts | Guidance |
| No robots meta declares noai on pages you want read | Read robots meta on sampled pages | Pull request |
03 · Meaning
Can they parse what the business and page are?
| Check | How to check | Fix |
|---|---|---|
| Title, Open Graph title and JSON-LD name agree on the business name | Compare the leading segment of each | Guidance |
| Organization or SoftwareApplication JSON-LD with name and url on the home page | Parse every JSON-LD block | Pull request |
| Every JSON-LD block parses | JSON.parse each script | Guidance |
| FAQPage questions appear as visible text on the page | Match each question against the body | Guidance |
| Blog and article pages carry an Article type | Check types on content paths | Guidance |
| One H1 per page and sectioned H2s | Count headings | Guidance |
| The first paragraph names the entity and says what it is | Read the first 120 words of the main content | Guidance |
| llms.txt exists with a heading, a summary and live links | Fetch it and check three links | Pull request |