DEV Community

Garvit Sharda
Garvit Sharda

Posted on

How AI Crawlers Actually Read Your Site: A Developer's Guide to GEO & llms.txt (2026)

Your users increasingly don't scroll ten blue links anymore. They ask ChatGPT, Perplexity, or Google's AI Overview a question and read one synthesized answer. For that answer to mention your site, a machine has to crawl it, parse it, and decide your content is worth quoting.

That whole pipeline is Generative Engine Optimization (GEO) — and a surprising amount of it lives in the part of the stack developers own, not the marketing team.

Here's the one-line version: treat AI crawlers like a browser that never runs your JavaScript, and hand them clean, server-rendered, well-structured HTML. Everything below unpacks what that means in practice.

Meet the bots already hitting your server

Open your access logs and you'll find a new class of user-agents. They fall into two jobs:

  • Training / indexing crawlersGPTBot (OpenAI), ClaudeBot (Anthropic), PerplexityBot, and Google-Extended (a token that controls whether your content is used for Gemini/AI, separate from Googlebot).
  • Live "user-triggered" fetchersOAI-SearchBot and ChatGPT-User, Claude-User, Perplexity-User. These hit your page in real time when someone's prompt needs a fresh source.

You control access to all of them from robots.txt:

User-agent: GPTBot
Allow: /

User-agent: Google-Extended
Disallow: /private
Enter fullscreen mode Exit fullscreen mode

Blocking them keeps you out of training data and out of the answers your customers now read. For most businesses, being cited is the goal — so allow the retrieval bots deliberately.

The big one: most AI crawlers don't run your JavaScript

Googlebot renders JavaScript with an evergreen Chromium engine. Most AI-specific crawlers do not. They largely fetch your raw HTML response and move on. If your content only appears after a client-side framework hydrates in the browser, there's a real chance the bot sees an empty <div id="root"> and nothing else.

Test it the way the bot does — no browser, no JS:

curl -A "GPTBot" https://yoursite.com/your-page | grep "the headline you expect"
Enter fullscreen mode Exit fullscreen mode

If your key content isn't in that response, AI engines probably can't read it. The fixes are the ones you already know:

  • SSR or SSG (Next.js, Nuxt, Astro, SvelteKit) so HTML ships with content in it.
  • Prerender / dynamic rendering for legacy SPAs you can't fully migrate.
  • Keep the important text in the initial HTML, not lazy-loaded behind an interaction.

This single architectural choice separates sites that get quoted from sites that are invisible to the models.

Structure your HTML so a machine can extract answers

Once the bytes arrive, the model has to understand them. Semantic, answer-first HTML is the highest-leverage, least-hyped tactic here:

  • One <h1>, then a logical <h2>/<h3> outline that reads like the questions people actually ask.
  • Lead each section with a direct, self-contained answer, then expand. Models lift clean, standalone sentences far more readily than points buried in a wall of text.
  • Use real <ul>, <ol>, and <table> elements. Structured facts extract cleanly; <div> soup does not.

Add JSON-LD structured data (Organization, Article, FAQPage, BreadcrumbList, Product). Whether schema directly boosts AI citations is still genuinely debated, and I won't oversell it — but it's cheap, it powers traditional rich results, and it removes ambiguity about what your entities are. Clean signals never hurt.

llms.txt: add it, but don't believe the hype

llms.txt is a proposed standard (introduced by Jeremy Howard in late 2024): a Markdown file at /llms.txt that gives models a curated map of your most important content, minus the nav and cruft.

The honest status in 2026: adoption among docs and dev-tool sites is real, but no major AI provider has publicly confirmed they consume it, and skeptics (including voices at Google) have compared it to the old keywords meta tag. Server logs rarely show the big crawlers fetching it.

My take as a developer: it costs ten minutes and a static file, so add it — but treat it as a nice-to-have, not the thing that gets you cited. Your rendered HTML is still what matters.

Speed is still a ranking and crawling signal

Core Web Vitals didn't go away. INP (Interaction to Next Paint) replaced FID in 2024 as the responsiveness metric, joining LCP and CLS. Fast, server-rendered pages get crawled more thoroughly and are less likely to time out a bot mid-fetch. The performance work you do for users pays off again for machines.

The practical GEO checklist

If you do nothing else, ship these:

  1. Server-render your content — verify with curl, not just DevTools.
  2. Allow the AI retrieval bots you want to be cited by in robots.txt.
  3. Answer-first sections under a clean heading hierarchy.
  4. JSON-LD for your core entities.
  5. Meet Core Web Vitals, INP included.
  6. Drop an llms.txt — low effort, possible upside.

None of this is a growth hack. It's the same discipline as good, crawlable web engineering — which is exactly why developers, not marketers, are often the ones who move the needle on it. This groundwork is the technical core of modern AI SEO, and it overlaps almost entirely with classic technical SEO: fast, semantic, server-rendered pages that both humans and machines can actually read.

Build for the crawler that can't run your JavaScript, and you'll be ready for whatever the answer engines do next.

Top comments (2)

Collapse
 
citedy profile image
Dmitry Sergeev

finally someone explains llms.txt properly. wonder if google is actually gonna respect those hints or just ignore them lol

Some comments may only be visible to logged-in visitors. Sign in to view all comments.