DeepSmith

Jul 26 · AEO & AI Visibility

14 min read

How ChatGPT, Perplexity, and AI Agents Actually Fetch and Read Your Pages

Avinash Saurabh
Avinash Saurabh · CO-Founder & CEO
A monochrome abstract diagram showing a web page flowing through nodes and connection lines into stacked text-chunk cards, with the centered white cover line "How AI Reads Your Pages" on a charcoal background.

You publish a page. Days later, an AI assistant answers a question about your topic and cites a competitor instead of you. Frustrating, right? Here is the good news: this is not magic, and it is not random. There is a real, mechanical pipeline behind it, and once you can see it, you can fix your side of it.

The question people actually type is some version of "how ChatGPT reads my page," and it has a concrete answer. Every LLM real time fetch, whether it comes from ChatGPT, Perplexity, Claude, or a custom agent, runs the same basic path from your URL to the words in the answer. This piece walks that path end to end, so you understand what happens the moment an assistant pulls your page live, and what quietly breaks it.

We will stay at the level that is true across engines. The per-engine bot names and the deep JavaScript details for each crawler live in their own pieces, and we will point you to those when you want to go deeper. Here, you get the shared machinery. Take it one stage at a time.

The one idea that changes how you write

Start here, because it reframes everything else: an AI assistant almost never sees your full HTML page.

It sees a cleaned, ranked, and truncated slice of it.

Read that again. The model does not open your page in a browser the way you do, scroll through your hero image, your nav, your sidebar, and your footer. It receives a stripped-down version of your words, cut into pieces, with only the most relevant pieces handed to the model at answer time.

So when you ask why a page did or did not get cited, the honest answer is usually about that slice. Was your answer inside the part that survived? Was it near the top? Was it even in the initial HTML at all? Keep that picture in your head, and the rest of this makes sense.

The six stages every AI fetch runs

Every AI retrieval system, whatever the brand name on the box, runs the same six-stage skeleton. The labels differ by vendor. The stages do not. This shared skeleton is the heart of AI agent page retrieval, so let's walk it slowly.

Stage one: decide whether to fetch at all. The model gets your question and makes a quick bet. Does it already know the answer from its training, or does it need to go look? If confidence is low, it fires a tool call to search the live web. Not every question triggers this. Independent analysis of ChatGPT traffic suggests only around half of queries actually go and fetch; the rest are answered from memory. Perplexity, by contrast, is built to retrieve on nearly every answer.

Stage two: reformulate the question. Your conversational prompt ("what's the best way to...") gets rewritten into clean, keyword-style search queries. The reworded query is what actually hits the index, not your original sentence.

Stage three: pull candidates from an index. The system asks a search index for matching pages and gets back a list: titles, URLs, snippets, dates. This is the moment of inclusion or exclusion at scale. Some engines lean on an existing web index; others crawl and maintain their own. Either way, if you are not in that candidate set, nothing else you do matters.

Stage four: evaluate snippets and pick which pages to open. The model reads the title, URL, snippet, and date for each candidate, then decides which handful to open in full. This gate is more important than it looks. Your title tag and meta description are the gatekeepers here. Weak, generic metadata means your page gets skipped, even if the body holds the best answer on the internet.

Stage five: fetch, parse, and extract. The system sends an HTTP request to each chosen URL, gets the HTML back, strips out the clutter, and converts what is left into clean text. We will spend real time on this stage next, because it is where most of the damage happens.

Stage six: chunk, embed, rank, and generate. The clean text gets cut into pieces, scored for relevance, and the top pieces get handed to the model along with your question. The model writes the answer and attaches citations to whichever pieces it leaned on.

That is the whole pipeline. Six stages, from your URL to a cited sentence. Now let's zoom into the two stages you can actually influence the most.

What "reading" really means

Here is where a lot of good pages quietly lose. When an assistant fetches your page, it does not keep your HTML. It runs your page through an extractor whose entire job is to find the article body and throw away everything else: navigation, ads, scripts, styles, cookie banners, related-posts widgets, comments, and the footer.

The dominant extractor is the same readability engine that powers Firefox Reader View, wrapped inside tools like Jina Reader, Firecrawl, and others. The output is clean text or markdown. That conversion is dramatic: clean markdown can cut the input down by roughly 93 percent compared with your raw HTML. The model sees the distilled version, not your design.

So this is literally how ChatGPT reads my page, if we phrase it the way a worried marketer might: not as your browser paints it, but as a stripped extract handed over by a parser. Same for every other assistant. Once you picture that handoff, you stop optimizing your design for the bot and start optimizing your text.

Two things follow from this, and they matter for how you write.

First, structure is how the extractor finds your answer. Semantic HTML landmarks like <article>, <main>, and <header>, a single clear H1, a logical heading order, short paragraphs, and real lists all help the extractor keep your content and drop the noise. Messy markup means your actual answer can get buried under widgets in the extracted text.

Second, position matters more than feels fair. Both ChatGPT and Perplexity overweight the top of the page. In one analysis, a large share of cited content came from the first third of the source page, and most top-cited Perplexity sources answered the core question within their first hundred words. The same pattern holds for how Perplexity fetches pages and for how the others do it: lead with the answer, then elaborate. Do not make the model dig.

If you take one writing habit from this section, make it that one. Put the direct, declarative answer in the first fifty to a hundred words of every section, then explain. You can read more on writing answer-first content that AI engines actually extract, because this is the single highest-return habit on the page.

Rendering: the quiet citation killer

Now the failure mode that costs the most citations while nobody notices. Take a breath, because this one is common and very fixable.

Most AI crawlers do not run JavaScript.

They send an HTTP request, receive the initial HTML, read it, and stop. They do not wait for your React, Vue, or client-side app to hydrate and paint the content. So if your article text only appears after JavaScript runs in the browser, the assistant sees an empty shell. Your words are simply not there when it looks.

This is what AI crawler rendering comes down to: does the meaningful text exist in the raw HTML response, or does it only appear after the browser does work the bot will not do? Verified AI fetchers from OpenAI, Anthropic, Perplexity, and others are confirmed to skip JavaScript by default. A couple of engines do render (notably Google's crawler, which feeds AI Overviews, and Apple's), but you cannot count on rendering across the board.

You do not need a developer to check this. Ask whoever owns your site to run one simple test: fetch the raw HTML of your article and search it for the first sentence of your text. If that sentence is in the raw response, the assistant can read it. If it is not, the assistant cannot. That is the whole test.

The fix is server-side rendering or static generation, so the words ship inside the initial HTML. Frameworks like Next.js, Nuxt, SvelteKit, Astro, and Hugo all support this. Your readers can still get all the interactive polish; the bot just needs the words in the first response. If your site is a client-rendered single-page app, this is likely your biggest single opportunity, and it is worth a dedicated look at JavaScript sites and LLM visibility.

Chunking: where your answer is kept or dropped

Remember stage six? After your page is cleaned, it gets cut into chunks, and only some chunks make it into the model's context. Chunking sounds like a backend detail, but it decides whether your specific sentence is even eligible to be quoted.

Most systems cut content into pieces of roughly 256 to 512 tokens, a few hundred words, with a small overlap between neighbors. That overlap is not a technicality. A fact that sits right on the boundary between two chunks, with no overlap, can fall through the crack and become invisible to retrieval. With overlap, the same sentence appears in both pieces, so at least one survives.

What does this mean for you? A few practical things.

Keep each idea self-contained. If a claim only makes sense across three scattered paragraphs, it may never land whole inside one chunk. Write passages that stand on their own, so a single chunk carries a complete, quotable thought.

Use structure the chunkers respect. Headings, short sections, and clean lists give structure-aware chunkers natural seams to cut on, which keeps related sentences together. If you want the deeper mechanics, we cover how content chunking works for retrieval in its own guide, and you can even audit your pages for retrieval and chunking to see where your content splits.

You do not control the chunk size an engine uses. You do control whether your best sentence is short, complete, and near a clear heading, which is exactly what survives the cut.

What breaks the pipeline

Sometimes a page is well written and still never gets cited. Usually the break is upstream, in the pipeline, not in your prose. Here are the failures worth checking, roughly in the order they bite.

Client-side rendering with no fallback. We just covered it, and it is number one for a reason. Empty HTML, empty answer.

Generic title and meta description. The page gets skipped back at stage four, before anyone reads a word of the body. Write a specific, accurate title and description for every page.

Bot blocks and security walls. Cloudflare challenges, aggressive WAF rate limits, and bot-management tools can hand an AI fetcher a 403 or a challenge it cannot solve. The assistant moves on. Check whether your security setup is quietly blocking the fetchers you actually want.

robots.txt mistakes. A blanket disallow, or blocking the wrong user agent, can remove you from AI answers entirely. This one is a five-minute fix that too many sites get wrong.

Login walls, consent gates, and geo-fences. If the bot sees a different page than your reader does, it reads that different page. Content behind authentication usually returns nothing at all.

Heavy DOM noise. When your article body is drowned in widgets, related posts, and comments, the extractor can struggle to find the real content, and your answer becomes one weak chunk among hundreds.

Truncation on very long pages. The relevant section can sit past the read window and simply get cut off. Front-loading the answer protects you here too.

Stale cache. A CDN can serve an old version to the bot, so your fresh update never gets seen. Freshness is a real signal, especially for how Perplexity fetches pages, so make sure updates actually reach the crawler.

None of these are about writing talent. They are plumbing. Fix the plumbing and your good writing finally gets a fair hearing. Seen this way, AI agent page retrieval stops being a black box and becomes a short checklist you can actually work through.

How to make your pages easy to fetch and read

Let's turn all of that into a short, doable list. You do not have to do everything this week. Start at the top and work down.

Server-side render every page that carries content. This is the highest-leverage change on the list. Verify it with the raw-HTML test above. Nothing else matters as much if the words are not in the initial response.

Lead every section with the answer. First fifty to a hundred words, direct and declarative, then elaborate. This wins the top-of-page bias and survives chunking.

Use clean, semantic structure. One H1, logical H2 and H3 order, short paragraphs, real lists and tables, and HTML5 landmarks. This is what extractors and chunkers are built to read.

Add structured data in the initial HTML. JSON-LD for Article, FAQ, Organization, and Author helps engines understand what your page is and who stands behind it. Just make sure it is in the raw HTML, not injected later by JavaScript. Here is a practical guide to schema markup for AI search if you want the specifics.

Keep the technical basics honest. One canonical URL per piece, a current XML sitemap with real update timestamps, a robots file that explicitly allows the AI agents you want, and a fast time to first byte. Our technical SEO checklist for LLM retrieval pulls these together in one place.

Show your dates. Visible published and updated dates feed freshness signals, which matters for every LLM real time fetch that weighs recency.

That is the whole game on your side of the line. Get the words into the raw HTML, put the answer up top, keep the structure clean, and stop the pipeline from breaking. The engines handle the rest.

Where this fits into a real content operation

Here is the honest part. Reading this is easy. Doing it on every page, every time, across a growing site, is where teams fall behind. You already have a hundred priorities, and manually checking rendering, structure, schema, and freshness on each new article is exactly the work that slips.

That is the gap DeepSmith is built to close. It tracks where you actually show up in AI answers across engines, finds the prompts and pages where you are invisible or losing, and produces on-brand articles that are structured for retrieval from the first draft: answer-first sections, clean headings, internal links, schema, and metadata built in during creation, not bolted on after. You get to spend your time on strategy instead of on the plumbing.

You do not need a bigger team to keep up with how AI reads the web. You need a system that writes with these mechanics baked in. If that sounds like the bottleneck you keep hitting, you can start a free DeepSmith trial and see your real gaps and real drafts before you pay.

Take it one page at a time. You are closer than you think.

Frequently asked questions

Does ChatGPT visit my page every time someone asks about my brand?

No. It only fetches live when its own confidence is low and it decides it needs a source, and even then only for that specific answer. Much of the time it answers from training memory without touching your page at all.

If I block GPTBot, does my content disappear from AI answers?

Not the way most people expect. Blocking a training crawler is different from blocking the search and on-demand fetchers that pull your page at answer time. If you want to be cited, allow the fetching agents; blocking the training bot mainly affects future model training, not live citations.

Do AI bots actually respect robots.txt?

The verified, well-behaved fetchers generally do. Unverified traffic that merely claims to be a known bot often does not. So robots.txt is a real control for the engines you care about, but it is not a force field.

What is the single highest-leverage change I can make?

Server-side rendering. If your words are not in the raw HTML, most AI crawler rendering stops before it starts, and nothing else you do can rescue the page. Get the text into the initial response first, then optimize everything else.