Build1 publisher3 min readPublished Updated
A page that ranks can hand GPTBot an empty HTML shell
A dev.to post sets out two ways assistant retrieval fails while ordinary search keeps working, one in robots.txt rules written per user-agent and one in copy that appears only after JavaScript runs. It offers no measurement.
The Engineer · Build desk

What happened
- A dev.to post argues that a page ranking in Google is not necessarily readable by GPTBot or ClaudeBot, because a robots.txt can allow one crawler and reject another.
- The post says those per-crawler rules often reach a site through a template, a hosting configuration, or a change someone made for a reason nobody documented.
- The audit the post proposes has two steps, asking whether each named crawler is allowed to fetch the domain and then inspecting what that crawler actually receives.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint A review that confirms search rankings tests neither gate, so access and content have to be checked per user-agent against raw response bodies.
- cost The work falls on whoever owns the site configuration: a fetch per named agent, per page template, plus a read of the returned HTML after the hosting configuration changes.
- exposure On the post's model, a product with unfetchable pages and no third-party mentions is absent from the material a shortlist gets assembled from, whatever the product is worth.
- decision Anyone budgeting for an AI visibility score or for ad impressions now has to argue that the spend changes the retrievable record, which the post says it does not.
Two gates sit in front of any assistant answer that could cite your site. The first is whether a named user-agent is allowed to fetch the domain at all [2]. The second is whether the bytes that come back contain the explanation [5]. Two gates with two outcomes each gives four states, and only one of them puts product copy where a retrieval system can read it [1]. The state that costs you is the one that passes the checks you already run: fetch permitted, response nearly empty, deployment green [7].
The access gate fails quietly because the rule was usually not written as a decision. The dev.to post lists where such rules come from: a template, a hosting configuration, or a change someone made for a reason nobody documented [3]. Ordinary search traffic keeps arriving the whole time, so nothing surfaces [4].
The content gate is the more interesting problem, because the page is genuinely there. Many sites return an HTML shell and paint the copy after JavaScript runs, so a fetcher that does not execute scripts receives a mostly empty document [5]. A login, a demo gate or a chat widget produces the same result, with a human clicking around seeing a complete product while the retrievable page holds almost none of the category language a buyer would use [6]. That is the argument for reading the HTML instead of a screenshot [7].
The rest of the post's case needs a further assumption before it transfers. Its model is that an assistant builds a category shortlist from what it can retrieve, meaning pages it managed to fetch plus public text where people discuss the category by name [10]. On that model a competitor with a worse product gets named because more retrievable evidence exists that it exists [9], and sites present in both places become the default answer [11]. Nothing in the post measures any of it: no crawl sample, no share of ranking domains that disallow GPTBot, no logs from an assistant [17]. The first gate is still cheap to test on your own domain, at one request per named agent and a look at the response body [8].
On instrumentation the post is blunt. Watching an AI visibility score does not change the record the answers are assembled from, and the author wrote of such a score, "It is a thermometer, not treatment." [12] Paid placement gets the same reading. Ad impressions are not text an engine retrieves when it assembles a category answer, which the post gives as the reason ads are a poor first fix for never being named [13].
The author calls the audit table "deliberately unglamorous" [14]. That is the most credible sentence in the piece.
What to watch
- A published crawl sample showing what share of ranking domains disallow GPTBot or ClaudeBot would move this from mechanism to prevalence.
- Server logs recording a named AI user-agent's fetches and the response bytes it got would settle the content gate for a specific domain.
- Any documented change in how assistants cite third-party discussion pages would change which of the two gates matters more.