---
title: "Your AI SEO Audit Checked Schema. Did It Check Whether Bots Could Load the Page?"
description: "An AI visibility audit can recommend schema and still miss a blocked or empty page. Check what ChatGPT-User and Claude-User actually receive before paying for another report."
url: "https://groas.com/post/your-ai-seo-audit-recommended-schema-mar"
image: "https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/f9912121-b087-4e9b-a030-d7411af572dc.png"
published: "2026-10-19T05:53:41.007Z"
modified: "2026-10-19T05:53:41.075Z"
---

October 19, 2026 · 9 min read

# Your AI SEO Audit Checked Schema. Did It Check Whether Bots Could Load the Page?

[Alexander PerelmanHead Of Product @ groas](https://groas.com/author/alexander-perelman)[LinkedIn](https://www.linkedin.com/in/alexander-433793253/)

![A freshly painted front door with a shiny doorbell and wreath is nailed shut with planks and padlocked, a thick audit report waiting on the doormat.](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/f9912121-b087-4e9b-a030-d7411af572dc.png)

In this article

1. [First, the audit sells you a nicer doorbell](#first-the-audit-sells-you-a-nicer-doorbell)
2. [The fetch happens before the citation](#the-fetch-happens-before-the-citation)
3. [“AI bot” is not one bot](#ai-bot-is-not-one-bot)
4. [The landing-page change nobody mentioned](#the-landing-page-change-nobody-mentioned)
5. [Eighty pages are easier to bill for than a fetch test](#eighty-pages-are-easier-to-bill-for-than-a-fetch-test)
6. [The six checks to demand before another audit](#the-six-checks-to-demand-before-another-audit)
7. [The fix is a watch, not another PDF](#the-fix-is-a-watch-not-another-pdf)
8. [Fix the door before you repaint the house](#fix-the-door-before-you-repaint-the-house)

Your AI SEO audit recommended schema markup. It never checked whether ChatGPT-User or Claude-User could load the page.

I keep seeing the same deliverable: 80 pages, a nice cover, sections on FAQ schema and meta descriptions and E-E-A-T, and not one line showing what a bot got back when it tried to fetch the site. That is not an AI visibility audit. That is a 2015 SEO audit with the word _AI_ pasted on top.

Here is why it bothers me. In groas edge logs for the last 30 days, `robots.txt` was the most-fetched file by live-answer bots, with **1,227 Claude-User live-answer fetches** hitting that file. The bots check the door first. Most audits never look at the door.

## First, the audit sells you a nicer doorbell

The padding usually opens with **“Add FAQ schema.”** An Ahrefs matched-control study of 1,885 pages that added JSON-LD versus about 4,000 controls found [ChatGPT citations up 2.2% and AI Mode up 2.4%, both noise, with AI Overviews down 4.6%](https://www.stanventures.com/news/schema-markup-has-no-meaningful-impact-on-ai-citations-7231/). Google says [there is no special schema needed for AI Overviews or AI Mode beyond being indexed and eligible for a snippet](https://stellarcast.ai/blog/does-schema-get-you-cited-by-ai/).

Then someone points out that [about 53% of AI-cited pages carry schema, roughly three times the non-cited rate](https://stellarcast.ai/blog/does-schema-get-you-cited-by-ai/). That is the correlation trap. Maintained sites tend to do lots of things well. Finding schema on a cited page does not mean schema earned the citation, and it certainly does not tell you whether an assistant can fetch _your_ page.

Next comes “improve E-E-A-T signals,” which often translates to: write like you have done the work before. Fine advice, if there is work worth describing. My favorite is “optimize meta descriptions for LLMs.” Live-retrieval tests have found assistants [extracting visible HTML while ignoring JSON-LD and microdata](https://stellarcast.ai/blog/does-schema-get-you-cited-by-ai/); one vendor test reported [six of seven systems, including ChatGPT, Claude and Perplexity, could not reliably fetch JSON-LD](https://stellarcast.ai/blog/does-schema-get-you-cited-by-ai/). None of that makes readable pages or useful descriptions worthless. It does make them a strange first order of business when nobody has tested access.

**The audit told you to repaint walls the bot never walks past.**

![Cartoon of an 80-page audit PDF beside a locked server door labeled robots.txt](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/fa6be656-fbb4-4041-b017-8feb2001a4b0.png)

## The fetch happens before the citation

Bots fetch. They do not read your audit. In our logs, `robots.txt` outranked every money page for live-answer bots. A fetch that gets a 403, a redirect loop or an empty shell of JavaScript cannot quote the useful text you thought you published. Your FAQ schema may be immaculate. The page still has to arrive.

JavaScript makes this easy to miss. A Vercel and MERJ network study found [none of the major AI crawlers it examined rendered JavaScript, including GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot and PerplexityBot](https://vercel.com/blog/the-rise-of-the-ai-crawler). Downloading a script is not the same as executing it. In that data, [ChatGPT fetched JS on 11.50% of requests and Claude on 23.84%, yet executed none of it](https://vercel.com/blog/the-rise-of-the-ai-crawler). If your main text appears only after a script runs, those fetchers do not receive that text in the HTML.

I used to tell clients a green check in a head-tag test meant they were safe. I was wrong. A test can find the title and meta tags while missing the empty body underneath. One practitioner check of 50 sites found [20 of 32 judged sites sending a crawler 1 to 11 words of body content against a 631-word median for humans](https://dev.to/growwithram/javascript-seo-what-google-and-ai-crawlers-actually-see-on-your-site-450k). The browser shows a page. The fetcher gets an empty root div.

You can start with an unglamorous check: [View Source and search for a sentence from the middle of the page](https://dev.to/growwithram/javascript-seo-what-google-and-ai-crawlers-actually-see-on-your-site-450k). If it is missing, the content may depend on JavaScript. Curl the HTML, too. Neither check replaces a real bot fetch, but both tell you more about what arrived than another page of markup recommendations. **No audit that skips the response deserves _AI_ on the cover.**

## “AI bot” is not one bot

Here is another distinction the PDF tends to flatten. [GPTBot is used for training, OAI-SearchBot for ChatGPT search indexing, and ChatGPT-User for a user-triggered fetch](https://alhena.ai/blog/ai-shopping-agents-black-friday/). Those are different jobs. A line that says “check robots.txt for AI” does not tell you which token was checked, what it was allowed to reach or which visibility problem the rule might cause.

Anthropic has its own set of tokens. [ClaudeBot, Claude-SearchBot and Claude-User honor robots.txt](https://alhena.ai/blog/ai-shopping-agents-black-friday/), so a `Disallow` on Claude-User can stop live retrieval even if ClaudeBot is allowed. Check rules for each relevant subdomain as well. It is perfectly possible to examine the main site, declare it open, and miss the rule on the subdomain serving the page you want quoted.

I have seen the maddening version: ClaudeBot allowed, Claude-User blocked, FAQ schema recommended anyway. The fix starts with a less impressive question than “Are we AI-ready?” **Which bot, which fetch, which subdomain?** Make the audit answer that before it scores your markup.

## The landing-page change nobody mentioned

This reminds me of paid search. I have watched a Quality Score tank after someone swapped a landing page without telling the person managing the account. The keywords and ads had not become mysterious overnight. The page had changed. Looking at what the crawler could reach was more useful than admiring the campaign report.

The same blind spot now sits between a public page and an AI fetcher. [Cloudflare changed its default to block AI crawlers unless owners opt in](https://blog.cloudflare.com/content-independence-day-no-ai-crawl-without-compensation/). Your `robots.txt` can say allow while the edge says block. A firewall rule can outlive the scraping panic that prompted it. A JavaScript framework upgrade can change what lands in the initial HTML. Each change puts the same question back on the table: **what did the bot get back today?**

I wrote about the paid-search version in [why grader-score audits do not fix campaigns](https://groas.com/post/google-ads-audit-not-worth-it-why-grader-scores-dont-fix-campaigns). A score does not fix anything. A fetch log at least shows you what broke. If the page changes on Thursday, Monday’s tidy audit is not a control system.

## Eighty pages are easier to bill for than a fetch test

Fetching your own `robots.txt` with a bot user-agent takes minutes. Curling a page with JavaScript off takes less. Neither produces a handsome PDF. Schema tables and E-E-A-T maturity matrices do, even when they never establish whether the assistant received a readable response.

That is the grievance. I am not asking auditors to hate schema or abandon editorial judgment. I am asking them to put the dependency first. If access fails, the arguments about wording and markup are happening on the wrong side of a locked door. What the deck calls “AI readiness,” I call two people doing the same 2015 job while the door stays locked.

![Plumber checking a locked front door while painters repaint walls inside](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/adafe1be-fc1b-4dc9-9149-b0f313450e6f.png)

## The six checks to demand before another audit

Run these in order, from access to the ongoing watch. Keep the result for each page you care about; “looks fine in my browser” is not a result from a bot fetch.

1. **Check `robots.txt` by user-agent.** Inspect GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot and Claude-User separately, including relevant subdomains.
2. **Check the CDN or WAF response.** A permissive `robots.txt` does not override a firewall that returns a block.
3. **Check the HTML without JavaScript.** Find a mid-page sentence in View Source; if it is absent, investigate what the fetcher receives.
4. Fetch your top 10 money pages with ChatGPT-User and Claude-User user-agents. Record status codes, redirects and the body returned, not just the browser view.
5. Check that the sitemap is current and fetched. Look for an actual bot request in the server logs rather than treating a submitted sitemap as proof.
6. **Name who gets alerted when a key page changes.** Without that owner, a deploy or new rule can undo the first five checks before anyone notices the lost citations.

![Plumber at a locked front door while painters continue working inside](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/1aeceff6-763c-4d95-a454-639ce6866fa0.png)

That last item is the one everyone skips. A page can pass on Monday and fail after a Thursday deploy, a plugin update or a new WAF rule. If nobody watches status codes and the amount of readable text returned from money pages, the first sign may be a drop in traffic. Explanation comes later, usually in a meeting with too many slides.

## The fix is a watch, not another PDF

An audit is a snapshot. The fix I want is an access check that keeps running, with someone accountable for acting when it fails. Fetch the important pages as the relevant bots. Record what came back. Notice when a 200 becomes a 403 or the readable body disappears. Then investigate the rule, template or deployment that changed it. That is dull work. Dull work is exactly what should not wait for the next quarterly presentation.

That principle is why I prefer continuous execution to another pile of recommendations. [groas](https://groas.com/) is built around autonomous search work, logged actions and a named human strategist who sets direction and owns the outcome. That does not make a blocked CDN rule magically disappear. Someone still has to identify the barrier and change the right thing within the right guardrails. But a report that merely labels the site “AI-ready” while nobody checks the next fetch is not even trying to solve this problem.

For landing pages, I would put server-rendered, visible HTML first: give the fetcher the actual answer near the top, in a structure it can read. Schema can come after the page is accessible and useful. If you want to run the checks yourself, [_Can AI Fetchers Read Your Page? A 45-Minute Check Before You Buy a Fix_](https://groas.com/post/can-chatgpt-claude-and-perplexity-actual) walks through `robots.txt`, bot user-agents and no-JavaScript checks. Start there before paying someone to describe your headings back to you.

## Fix the door before you repaint the house

I do not hate schema. I run JSON-LD on pages I control. I hate the order of operations in these audits. They sell you curtains while the front door is nailed shut. **Fetch first, render second, monitor access after that.** Then argue about FAQ markup and E-E-A-T wording. A vendor who reverses that order is billing you for what is easy to write, not what decides whether your page can be read.

This will not matter equally to every site. If what you need people to find lives inside a logged-in app or a marketplace listing rather than a public page, fix the place they can actually reach. For public URLs you want an assistant to quote, though, the fetch is the funnel. No accessible page, no amount of polish inside the page gets a turn.

If you already paid for one of these audits, do not bin it. Use whatever is useful. Then send the vendor one email: show me the fetch results for my top 10 pages as ChatGPT-User and Claude-User, with status codes and readable word counts. Keep those results and check again after every deploy. If the vendor cannot show you what the bot received, you know what the 80 pages left out.

**They audited the document. They did not audit the door.**

## Frequently Asked Questions

### Does adding FAQ schema markup help pages get cited by ChatGPT or AI Overviews?

The evidence suggests little to no effect. An Ahrefs matched-control study of 1,885 pages that added JSON-LD found ChatGPT citations up 2.2% and AI Mode up 2.4%, both noise, with AI Overviews down 4.6%. Google also says no special schema is needed for AI Overviews or AI Mode beyond being indexed and eligible for a snippet.

### Why can a page with great content still not be quoted by ChatGPT or Claude?

A bot has to fetch the page before it can cite it. If that fetch returns a 403, a redirect loop or an empty shell of JavaScript, the assistant never receives the useful text you published. Your schema can be immaculate, but the page still has to arrive intact first.

### Do AI crawlers like GPTBot and ClaudeBot execute JavaScript when they fetch a page?

No. A Vercel and MERJ network study found none of the major AI crawlers it examined rendered JavaScript, including GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot and PerplexityBot. ChatGPT fetched JS on 11.50% of requests and Claude on 23.84%, yet executed none of it, so text that only appears after a script runs never reaches those fetchers in the HTML.

### Is there just one AI bot user-agent I need to allow in robots.txt?

No. GPTBot is used for training, OAI-SearchBot for ChatGPT search indexing, and ChatGPT-User for a user-triggered fetch. Anthropic similarly has ClaudeBot, Claude-SearchBot and Claude-User, all of which honor robots.txt. A block on Claude-User can stop live retrieval even when ClaudeBot is allowed, so each token needs its own check, including on relevant subdomains.

### Can my site be blocked from AI bots even if my robots.txt allows them?

Yes. Cloudflare changed its default to block AI crawlers unless owners opt in, so your robots.txt can say allow while the edge says block. A firewall rule can also outlive the scraping panic that prompted it, and a JavaScript framework upgrade can change what lands in the initial HTML.

### How can I check whether ChatGPT or Claude can actually read my page?

Start by opening View Source and searching for a sentence from the middle of the page; if it is missing, the content likely depends on JavaScript. Curl the HTML too, then fetch your top money pages with ChatGPT-User and Claude-User user-agents, recording status codes, redirects and the body returned rather than judging by the browser view.

### Is a one-time AI SEO audit enough to keep my pages accessible to AI bots?

No. An audit is a snapshot, and a page that passes on Monday can fail after a Thursday deploy, a plugin update or a new WAF rule. The fix is a continuous access check with someone accountable for acting when a 200 becomes a 403 or the readable body disappears, rechecking after every deploy.

## Pay For Results, Not For Hours

Businesses buy the outcome, agencies resell it, and groas answers for it either way.

[See If You Qualify](https://groas.typeform.com/to/xC1bQNUT)

## Structured data

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://graph.groas.com/entity/groas","name":"groas","url":"https://groas.com/","logo":{"@type":"ImageObject","url":"https://groas.com/icon-512.png","width":512,"height":512},"sameAs":["https://www.linkedin.com/company/groas/"]},{"@type":"WebSite","@id":"https://groas.com/#website","name":"groas","url":"https://groas.com/","inLanguage":"en-US","publisher":{"@id":"https://graph.groas.com/entity/groas"}},{"@type":"WebPage","@id":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar#webpage","url":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar","name":"Your AI SEO Audit Checked Schema. Did It Check Whether Bots Could Load the Page?","description":"An AI visibility audit can recommend schema and still miss a blocked or empty page. Check what ChatGPT-User and Claude-User actually receive before paying for another report.","inLanguage":"en-US","isPartOf":{"@id":"https://groas.com/#website"},"about":{"@id":"https://graph.groas.com/entity/groas"},"primaryImageOfPage":{"@type":"ImageObject","url":"https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/f9912121-b087-4e9b-a030-d7411af572dc.png"},"breadcrumb":{"@id":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar#breadcrumb"},"dateModified":"2026-10-19T05:53:41.075Z","mainEntity":{"@id":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar#article"}},{"@type":"BreadcrumbList","@id":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://groas.com/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://groas.com/blog"},{"@type":"ListItem","position":3,"name":"Your AI SEO Audit Checked Schema. Did It Check Whether Bots Could Load the Page?","item":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar"}]},{"@type":"BlogPosting","@id":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar#article","url":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar","mainEntityOfPage":{"@id":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar#webpage"},"isPartOf":{"@id":"https://groas.com/blog#blog"},"headline":"Your AI SEO Audit Checked Schema. Did It Check Whether Bots Could Load the Page?","description":"An AI visibility audit can recommend schema and still miss a blocked or empty page. Check what ChatGPT-User and Claude-User actually receive before paying for another report.","datePublished":"2026-10-19T05:53:41.007Z","dateModified":"2026-10-19T05:53:41.075Z","image":{"@type":"ImageObject","url":"https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/f9912121-b087-4e9b-a030-d7411af572dc.png"},"author":{"@id":"https://groas.com/author/alexander-perelman#person"},"publisher":{"@id":"https://graph.groas.com/entity/groas"},"keywords":"page, schema, check, audit, fetch, bots, seo audit, robots txt","wordCount":1809,"inLanguage":"en-US"},{"@type":"Person","@id":"https://groas.com/author/alexander-perelman#person","name":"Alexander Perelman","jobTitle":"Head Of Product @ groas","description":"My background includes Goldman Sachs and Stanford Computer Science.","image":"https://groas.com/media/blog/4f17cac3a81acc224cc1b2cfab8f94bbc295a3089d13e8421125771ef8d4064f.jpg","worksFor":{"@id":"https://graph.groas.com/entity/groas"},"sameAs":["https://www.linkedin.com/in/alexander-433793253/"]},{"@type":"FAQPage","@id":"https://groas.com/post/your-ai-seo-audit-recommended-schema-mar#faq","mainEntity":[{"@type":"Question","name":"Does adding FAQ schema markup help pages get cited by ChatGPT or AI Overviews?","acceptedAnswer":{"@type":"Answer","text":"The evidence suggests little to no effect. An Ahrefs matched-control study of 1,885 pages that added JSON-LD found ChatGPT citations up 2.2% and AI Mode up 2.4%, both noise, with AI Overviews down 4.6%. Google also says no special schema is needed for AI Overviews or AI Mode beyond being indexed and eligible for a snippet."}},{"@type":"Question","name":"Why can a page with great content still not be quoted by ChatGPT or Claude?","acceptedAnswer":{"@type":"Answer","text":"A bot has to fetch the page before it can cite it. If that fetch returns a 403, a redirect loop or an empty shell of JavaScript, the assistant never receives the useful text you published. Your schema can be immaculate, but the page still has to arrive intact first."}},{"@type":"Question","name":"Do AI crawlers like GPTBot and ClaudeBot execute JavaScript when they fetch a page?","acceptedAnswer":{"@type":"Answer","text":"No. A Vercel and MERJ network study found none of the major AI crawlers it examined rendered JavaScript, including GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot and PerplexityBot. ChatGPT fetched JS on 11.50% of requests and Claude on 23.84%, yet executed none of it, so text that only appears after a script runs never reaches those fetchers in the HTML."}},{"@type":"Question","name":"Is there just one AI bot user-agent I need to allow in robots.txt?","acceptedAnswer":{"@type":"Answer","text":"No. GPTBot is used for training, OAI-SearchBot for ChatGPT search indexing, and ChatGPT-User for a user-triggered fetch. Anthropic similarly has ClaudeBot, Claude-SearchBot and Claude-User, all of which honor robots.txt. A block on Claude-User can stop live retrieval even when ClaudeBot is allowed, so each token needs its own check, including on relevant subdomains."}},{"@type":"Question","name":"Can my site be blocked from AI bots even if my robots.txt allows them?","acceptedAnswer":{"@type":"Answer","text":"Yes. Cloudflare changed its default to block AI crawlers unless owners opt in, so your robots.txt can say allow while the edge says block. A firewall rule can also outlive the scraping panic that prompted it, and a JavaScript framework upgrade can change what lands in the initial HTML."}},{"@type":"Question","name":"How can I check whether ChatGPT or Claude can actually read my page?","acceptedAnswer":{"@type":"Answer","text":"Start by opening View Source and searching for a sentence from the middle of the page; if it is missing, the content likely depends on JavaScript. Curl the HTML too, then fetch your top money pages with ChatGPT-User and Claude-User user-agents, recording status codes, redirects and the body returned rather than judging by the browser view."}},{"@type":"Question","name":"Is a one-time AI SEO audit enough to keep my pages accessible to AI bots?","acceptedAnswer":{"@type":"Answer","text":"No. An audit is a snapshot, and a page that passes on Monday can fail after a Thursday deploy, a plugin update or a new WAF rule. The fix is a continuous access check with someone accountable for acting when a 200 becomes a 403 or the readable body disappears, rechecking after every deploy."}}]}]}
```
