Your firewall might be blocking GPTBot. Your schema might be missing prices. Use this checklist to audit your site's AI Readability in 30 minutes — and get the exact fix for every item that fails.
Work through one module at a time. Items that fail get a Copy Prompt in Hema's Site Audit — paste it to your developer for the exact fix. Re-run your audit after implementing each module's fixes to see the score impact.
Module 1 — JS Rendering (8 items)
1. GPTBot can execute JavaScript on homepage
How to check: Disable JS in dev tools. Does core content appear in HTML source?
Pass criteria: PASS if core content is visible in source HTML without JS.
2. Pricing page renders without JavaScript
How to check: View source of pricing page. Plan names, prices, features in raw HTML?
Pass criteria: PASS if all plan info is in server-rendered HTML.
3. Product descriptions are server-rendered
How to check: Are descriptions in initial HTTP response or JS-injected?
Pass criteria: PASS if descriptions appear in curl request without JS execution.
4. Navigation is crawlable without JavaScript
How to check: Are nav links standard anchor elements in raw HTML source?
Pass criteria: PASS if all nav links are anchor tags in source HTML.
5. Page titles and meta set server-side
How to check: View source — title and meta description before any scripts?
Pass criteria: PASS if both appear in raw HTML before script tags.
6. Schema markup in initial HTML, not JS-injected
How to check: Does JSON-LD schema appear in raw page source before scripts?
Pass criteria: PASS if all JSON-LD blocks are in initial HTML.
7. Core content loads within 3 seconds on slow connection
How to check: Chrome DevTools throttled to Slow 3G. Main content readable?
Pass criteria: PASS if h1 and first paragraph visible within 3 seconds.
8. CTAs are in HTML, not rendered only by JS
How to check: Check source HTML for button text and href values.
Pass criteria: PASS if CTAs exist as HTML elements in source.
Module 2 — Firewall & Security (7 items)
9. GPTBot allowed in robots.txt
How to check: Check domain/robots.txt for GPTBot rules.
Pass criteria: PASS if no Disallow rule targets GPTBot.
10. PerplexityBot allowed in robots.txt
How to check: Check robots.txt for PerplexityBot rules.
Pass criteria: PASS if PerplexityBot is not disallowed.
11. Google-Extended (Gemini) allowed in robots.txt
How to check: Check robots.txt for Google-Extended user agent.
Pass criteria: PASS if Google-Extended is not disallowed.
12. ClaudeBot (Anthropic) allowed in robots.txt
How to check: Check robots.txt for ClaudeBot user agent.
Pass criteria: PASS if ClaudeBot is not disallowed.
13. WAF rules not blocking AI crawlers
How to check: Review Cloudflare/WAF bot management rules.
Pass criteria: PASS if AI crawler agents categorised as Verified Bot.
14. CSP headers allow AI crawler access
How to check: Review Content-Security-Policy response headers.
Pass criteria: PASS if CSP headers do not restrict AI crawler access.
15. Rate limiting not triggering for AI crawls
How to check: Check server logs for 429 responses for crawler IPs.
Pass criteria: PASS if no 429 responses for known AI crawler IP ranges.
Module 3 — Schema & Structured Data (12 items)
16. Homepage has Organization schema
How to check: Check for Organization JSON-LD with name, url, logo, description.
Pass criteria: PASS if valid Organization schema present.
17. Pricing page has Product schema per plan
How to check: Check for Product JSON-LD on pricing page for all plans.
Pass criteria: PASS if each plan has Product entity with offers.
18. Pricing page has PriceSpecification schema
How to check: Does each price have PriceSpecification with price and currency?
Pass criteria: PASS if all prices structured with PriceSpecification.
19. Product/service pages have Offer schema
How to check: Do service pages have Offer entities with price or priceRange?
Pass criteria: PASS if Offer schema present on key product pages.
20. Blog articles have Article schema
How to check: Check article pages for Article or BlogPosting JSON-LD.
Pass criteria: PASS if all published articles have valid Article schema.
21. Blog articles have Author schema
How to check: Does Article schema include author entity with name and URL?
Pass criteria: PASS if Author entity present with at minimum a name.
22. FAQ sections have FAQPage schema
How to check: Are FAQ items structured as FAQPage JSON-LD?
Pass criteria: PASS if all FAQ sections use FAQPage with Question/Answer entities.
23. Comparison pages have Product schema for each product
How to check: Do comparison pages mark up each product compared?
Pass criteria: PASS if all compared products have Product schema.
24. About page has Person schema for leadership
How to check: Does About page use Person JSON-LD for founders and leadership?
Pass criteria: PASS if key people marked up with name, jobTitle.
25. BreadcrumbList schema on inner pages
How to check: Do inner pages include BreadcrumbList showing hierarchy?
Pass criteria: PASS if BreadcrumbList present on all pages deeper than homepage.
26. Schema validates with zero errors
How to check: Run all pages through validator.schema.org.
Pass criteria: PASS if zero errors reported (warnings acceptable).
27. All schema is server-side not JS-injected
How to check: Verify JSON-LD blocks in raw HTTP response.
Pass criteria: PASS if all schema in initial HTML before script execution.
Module 4 — Content Quality (9 items)
28. Homepage states what product does in first 100 words
How to check: Read h1 plus first paragraph. Can a non-expert understand it?
Pass criteria: PASS if product purpose is clear within 100 words.
29. Pricing page answers all questions without ambiguity
How to check: Every feature listed per plan? No need to contact sales?
Pass criteria: PASS if prospect understands all plans without clicking elsewhere.
30. Key pages have at least 800 words of substantive content
How to check: Word count on each core product page.
Pass criteria: PASS if all key product pages exceed 800 substantive words.
31. Pages directly answer questions users type into AI
How to check: For top 10 tracked prompts, does site content answer each?
Pass criteria: PASS if content addresses at least 8 of top 10 tracked prompts.
32. Page titles are specific and informative
How to check: Are titles descriptive not generic like "Features" or "Services" alone?
Pass criteria: PASS if no page uses a generic one-word title alone.
33. Each product/service has its own dedicated page
How to check: Is each distinct offering on its own URL?
Pass criteria: PASS if each service tier or product has a unique page.
34. Content cites verifiable authoritative sources
How to check: Do articles link to official docs or reputable publications?
Pass criteria: PASS if all factual claims have at least one external citation.
35. About page names team, location, and founding story
How to check: Is About page specific with founder names, year, location?
Pass criteria: PASS if About includes at least 3 specific verifiable facts.
36. Site has at least 10 indexed pages of substantive content
How to check: Count indexed pages in Google Search Console.
Pass criteria: PASS if 10+ pages indexed with unique substantive content.
Module 5 — Hidden Content (7 items)
37. Accordion content is in HTML even when collapsed
How to check: View source — accordion content present even when hidden?
Pass criteria: PASS if accordion content in HTML source regardless of visual state.
38. Pricing is not hidden behind login wall or modal
How to check: Can AI crawlers see pricing without authentication?
Pass criteria: PASS if pricing fully accessible without login.
39. Product descriptions not inside carousels only
How to check: Is all carousel slide content in HTML for all slides?
Pass criteria: PASS if all slide content in HTML regardless of active state.
40. Reviews not loaded by API after page load
How to check: Check source HTML — is review text present or loaded by JS call?
Pass criteria: PASS if review content is in initial HTML response.
41. Footer has structured links to all key pages
How to check: Does footer link to Pricing, Features, About, Contact, Blog?
Pass criteria: PASS if footer contains direct links to all core pages.
42. Key content not only reachable via infinite scroll
How to check: Is all important content in first paginated load?
Pass criteria: PASS if no essential content requires infinite scroll to reach.
43. Cookie banners do not block content from crawlers
How to check: Does cookie consent use overlay hiding body content?
Pass criteria: PASS if cookie UI does not block body content in HTML.
Module 6 — Data Tags (7 items)
44. All images have meaningful alt text
How to check: Check source — all img tags have descriptive alt attributes?
Pass criteria: PASS if no img has empty or generic alt text.
45. Product images have descriptive file names
How to check: Named hema-dashboard-analytics.png not image-1.png?
Pass criteria: PASS if all feature images have descriptive file names.
46. Headings follow logical H1-H2-H3 hierarchy
How to check: Exactly one H1 per page followed by H2 then H3?
Pass criteria: PASS if no page skips heading levels or uses multiple H1 tags.
47. Sitemap.xml includes all key pages
How to check: Check domain/sitemap.xml — all core pages listed?
Pass criteria: PASS if sitemap includes all pages you want AI to index.
48. Sitemap submitted to Google Search Console
How to check: Is sitemap URL added and confirmed in Search Console?
Pass criteria: PASS if sitemap shows as Submitted with no coverage errors.
49. Canonical tags correct on all pages
How to check: Each page has self-referencing canonical or correct canonical?
Pass criteria: PASS if all pages have canonical pointing to correct URL.
50. HTML lang attribute set correctly
How to check: Check html lang=en or correct code on every page.
Pass criteria: PASS if html lang attribute matches page's actual language.
Hema's Site Audit runs all 6 modules automatically — every failing item comes with a Copy Prompt fix instruction. Start your free AI audit at tryhema.com.