agntcms
all posts
Guidepublished June 18, 2026

Why ChatGPT and Claude can't read your marketing site (and how to fix it without a dev)

You publish good pages and they don't get cited. Often it isn't the writing — it's that the crawler feeding the answer engines never saw your text, because your site renders in the browser and the bots don't have one. The most mechanical problem in AEO, and the easiest to fix once you can see it.
agntcms team
guidelast updated June 18, 2026
You publish good pages and they don't get cited. ChatGPT summarises a competitor, Perplexity links someone else, your own answer to the exact question sits on a page nobody quotes. The instinct is to blame the writing. Often it is not the writing. It is that the crawler feeding those answer engines never saw your text at all — because your site renders in the browser, and the bots don't have a browser. This is the most mechanical problem in AEO, and the easiest to fix once you can see it.

AI crawlers do not run JavaScript


This is the load-bearing fact. Vercel's study of AI crawler traffic across its network — hundreds of millions of requests a month, with GPTBot generating around 569M and ClaudeBot around 370M — found a consistent pattern: the bots fetch your JavaScript files but never execute them. GPTBot pulls JS on roughly 11.5% of its requests; ClaudeBot downloads it on about 23.84%. Neither has a rendering engine to run it. PerplexityBot behaves the same way. Independent analyses reach the same conclusion: among the major crawlers, only Googlebot renders JavaScript. Everyone else reads the raw HTML your server sends and stops there.

What that means for a client-rendered site


A client-rendered page — a single-page app, most "modern" dashboards-turned-frontends — sends the browser an almost empty document: a <div id="root">, a bundle of JavaScript, and the instruction "assemble the page here." A human's browser runs that and sees your content. A crawler that doesn't run JavaScript sees the empty div.

So the page that ranks fine in classic Google — because Googlebot renders — is invisible to the systems behind ChatGPT, Claude, and Perplexity. You are not losing the citation on the merits of your content. You are losing it because the content was never in the response. The bot read a blank page and moved on.

How to fix it — and why it's not a coding job


The fix is to send the content in the first HTML response, before any JavaScript runs. In framework terms that's server-side rendering (SSR) or static generation (SSG) instead of client rendering. You can confirm whether you have it in under a minute — here's the test — by checking whether your body copy is present in the raw HTML.

For a marketer the important part is this: server-rendering is an architecture choice your CMS makes for you, not a script you write. Some stacks render on the server by default; some render in the browser by default; some can do either depending on how a developer wired them. You don't fix this page by page — you fix it by being on a platform that serves real HTML. Which is why, as we argue in the pillar, your CMS is the bottleneck for AI visibility.

The agntcms version


agntcms takes the choice off the table. The public site is a frozen, server-rendered Next.js site — no AI in production, no client-side assembly of your copy. Every crawler, renderer or not, receives the full text in the first response. None of the editing machinery, none of the agent tooling, ships to visitors; what goes live is a plain, fast page a bot can read. The same property that makes it quick for humans makes it legible to machines — because it's the same HTML.

This is the mechanical floor under everything else in AEO. Structure, schema, answer-first copy — all of it is wasted on a page the crawler received empty. Get the text into the response first; llms.txt and the rest come after, and matter less than people claim.

The short version


AI crawlers don't run JavaScript, so a client-rendered site shows them a blank page. Only Googlebot renders; GPTBot, ClaudeBot, and PerplexityBot read raw HTML and stop. If your content isn't in that first response, the answer engines sending traffic literally cannot see it — and no amount of copywriting reaches a bot that got an empty div. The fix is server-rendering, and that's a CMS decision, not a code project.

Check your own site in 60 seconds with the machine-readable test, then read why the CMS is the real bottleneck. agntcms is server-rendered by default and open source on GitHub.

github.com/agntcms