llms.txt and robots.txt for AI: what each file does and how to set them up
Hussam Sufan with Francisco A. Kemeny ·
In September 2025 we ran a micro-training with Francisco A. Kemeny, co-founder of Kemeny Studio, a generative AI consultancy, who has been doing SEO since 2002. Halfway through he opened the robots.txt of his own site, kemeny.studio, and walked through it bot by bot. That demo is the backbone of this guide, which replaces the two posts we had on llms.txt and AI bot policies.
Our position up front: publish an llms.txt if it takes you less than an afternoon, because it's cheap and forces you to organize your content, but don't expect it to move your citations. The file that actually decides whether an AI assistant can read you is robots.txt, and that's where we keep finding expensive mistakes.
How your page gets into an AI answer
Francisco opened with a technical point that changes how you frame the problem.
"The chatbot itself doesn't have an index the way we know it from Google." — Francisco A. Kemeny, co-founder of Kemeny Studio [15:23]
A language model predicts words from what it learned. According to Francisco, your content reaches it through three routes (minute 11:29):
- Training: whatever a crawler collected before the model version was frozen. It's what ChatGPT "knows" without searching.
- RAG (retrieval augmented generation): the system pulls text into the context window and the model answers from that plus the prompt.
- Tool calling: the assistant queries a search engine, reads the results page and, for Perplexity, ChatGPT search or Gemini, visits your page and extracts the text.
Route 1 is governed by the training crawler. Routes 2 and 3 are governed by search crawlers and by agents that act when a user asks for something. Those are different user-agents, allowed or blocked separately.
A test you can run today
During the session Francisco asked ChatGPT, in instant mode, who the president of Chile is: it went and searched on its own. Then he asked about the president of El Salvador and told it not to search, and it answered from training, with no sources. When he asked about El Salvador's elections with search on, the sources came back in an order very close to Google's (minute 25:13).
Try it with a question from your own category. An answer without sources is training talking. An answer with sources is search, and your robots.txt decides whether your site can be on that list.
Video chapters
- 0:00Bienvenida y contexto del Micro-Training
- 1:21Agenda: ¿Qué aprenderemos hoy?
- 4:03Presentación Francisco Kemeny (Experto SEO y IA)
- 6:42Demo: Cómo medir tu presencia en IA (SearchBrand)
- 11:29¿Cómo "buscan" información los LLMs? (RAG y Tool Calling)
- 15:23Introducción al archivo llms.txt
- 24:03Paso clave: Configurar tu robots.txt para los crawlers de IA
- 25:13Diferencia entre GPTBot (Entrenamiento) y ChatGPT-User
- 33:41Demo Práctica: Implementar el llms.txt en el código (HTML)
- 36:28Demo Práctica: El contenido del archivo llms.txt (Markdown)
- 40:48Pro-Tip: Cómo medir el tráfico de LLMs en Google Analytics
- 42:01Q&A: Cómo probar si la IA tiene memoria (Modo Incógnito)
- 45:25Recursos: Dónde ver ejemplos de llms.txt (Anthropic y otros)
- 49:11Q&A: ¿Puedo usar ChatGPT para crear mi propio llms.txt?
- 52:09Palabras finales y cierre
What llms.txt is, per the original proposal
Jeremy Howard, co-founder of Answer.AI, proposed llms.txt in September 2024; the spec lives at llmstxt.org. It's a markdown file at the root of your domain (yourdomain.com/llms.txt) that summarizes the site and links the pages a model should read, minus the HTML noise.
The format is short:
- An H1 with the site name. It's the only required part.
- A blockquote with the summary.
- Optional paragraphs or lists, with no headings.
- H2 sections holding link lists in the form
- [name](url): notes. - A section literally named
## Optional, last, with what an agent can skip when it needs a short context.
A minimal example:
# SearchBrand
> Platform that measures whether ChatGPT, Gemini, Perplexity, Claude and AI Overviews mention and cite a brand.
## Pricing
- [Pricing](https://searchbrand.ai/pricing): Pro and Pro+ plans in USD
## Optional
- [About SearchBrand](https://searchbrand.ai/hey-ai-about-us): Company facts written for AI assistants
The llms-full.txt you'll see on documentation sites isn't part of the proposal. It's a convention from docs tooling: one file with all the content in markdown. Anthropic publishes both in its docs, and Francisco showed them as an example (minute 45:25).
"You don't need a plugin, you don't need anything; you just need a clear structure of your site, reflected in markdown and available at the root." — Francisco A. Kemeny, co-founder of Kemeny Studio [45:25]
In the demo, kemeny.studio also references the file with a <link> tag in the <head> and mentions it in robots.txt. Neither is part of the proposal. They do no harm, and there's no evidence any bot reads them.
What we know as of September 2026 about who uses it
Keep publishing and consuming apart.
Plenty of sites publish one: developer docs, SaaS companies, and directories such as llmstxthub.com that collect them. Anthropic has one in its docs. A lab publishing its own llms.txt tells you it helps its users paste documentation into a chat or into Cursor. It doesn't tell you its crawlers use the file to choose what to cite.
Using it to rank or cite, on the other hand, hasn't been confirmed by any major provider. As of this guide, OpenAI, Anthropic, Google, Perplexity and Microsoft have not publicly stated that they use a site's llms.txt to decide whether to surface or cite it. In 2025 Google's John Mueller compared the file to the old keywords meta tag. Francisco said much the same on the webinar: the big labs don't use it "officially", in quotes.
"This is still theory, and we have to start putting it into practice." — Francisco A. Kemeny, co-founder of Kemeny Studio [15:23]
Francisco said that Kemeny Studio clients who index their documentation are seeing "20% more mentions", plus more ChatGPT and Gemini traffic in Analytics once FAQs are tied to product descriptions in the llms.txt. He flagged the confounder himself: overall AI usage is growing. It's a consultancy figure with no published methodology, so treat it as a hypothesis to test on your own site.
robots.txt: the file that actually has an effect
robots.txt has been an IETF standard since 2022 (RFC 9309), and the major AI operators document which user-agent they use for each purpose. This is the list behind the generator below. Check it against each company's docs, because it changes several times a year.
| User-agent | Company | What it's for | Honors robots.txt? |
|---|---|---|---|
| GPTBot | OpenAI | Model training | Yes, stated |
| OAI-SearchBot | OpenAI | ChatGPT search index, to surface and cite sites | Yes, stated |
| ChatGPT-User | OpenAI | Reads a page when a ChatGPT user or a custom GPT asks | OpenAI notes it may not apply, since a person initiates it |
| ClaudeBot | Anthropic | Model training | Yes, stated |
| Claude-SearchBot | Anthropic | Quality of Claude's search results | Yes, stated |
| Claude-User | Anthropic | Reads a page when a Claude user asks | Yes, stated |
| PerplexityBot | Perplexity | Perplexity's index to surface and link sites; they say it doesn't train foundation models | Yes, stated |
| Perplexity-User | Perplexity | Reads a page when a user asks | Perplexity says it generally ignores robots.txt |
| Google-Extended | Token, doesn't crawl: decides whether Googlebot's crawl trains Gemini and grounds the Gemini app | Yes. Does not control Google Search, AI Overviews or AI Mode | |
| Applebot-Extended | Apple | Token, doesn't crawl: decides whether Applebot's crawl trains Apple Intelligence | Yes. Doesn't remove you from Siri or Spotlight |
| CCBot | Common Crawl | Open web archive that many labs train on | Yes, stated |
| Bytespider | ByteDance | Training ByteDance models | CDN operators have reported it doesn't always comply |
| meta-externalagent | Meta | AI model training and indexing for Meta products | Yes, stated; user-initiated fetches use meta-externalfetcher |
Two rows cause most of the confusion we see. Blocking Google-Extended to get out of AI Overviews does nothing, because AI Overviews and AI Mode run on Googlebot; leaving them means leaving Google. And GPTBot and OAI-SearchBot are independent: you can refuse to train OpenAI's models and still get cited in ChatGPT.
"If you block GPTBot from your site, your site won't be indexed in the model's general context." — Francisco A. Kemeny, co-founder of Kemeny Studio [25:13]
How long before you see a change
For training, Francisco estimated six months to a year, since the change only shows up with the next major model release. Hussam Sufan, SearchBrand co-founder and the session's host, added a caveat: if you let the browsing bot in, "that time could be much shorter." Search-driven changes can show up within days or weeks.
The most-specific-group trap
Under RFC 9309, each bot follows only the most specific group that names it. Write User-agent: GPTBot with Allow: / and GPTBot ignores your User-agent: * block, along with its Disallow: /admin and Disallow: /checkout. We see this a lot: someone "opens" the site to AI bots and opens the admin panel to them by accident. That's why the generator repeats private paths in every group.
Your CDN can overrule your robots.txt
Hussam asked about Cloudflare live (minute 24:03). Since July 2025, Cloudflare blocks AI crawlers by default on new domains and offers to charge them per crawl. Your robots.txt can say Allow: / while the CDN returns a 403. If your site sits behind Cloudflare or another CDN with bot protection, check that dashboard before any file.
The policy we recommend
For a B2B brand or an online store that wants to show up in AI answers:
- Always allow search bots (OAI-SearchBot, Claude-SearchBot, PerplexityBot) and user-initiated agents. They're the ones that produce linked citations.
- Allow training bots unless your content is the product, as with a paywalled publisher or a dataset you sell. Then block the seven training rows in the table, GPTBot through meta-externalagent, and leave everything else open.
- Never block search while leaving training open. You hand over the content and lose the citation.
Generate and validate both files
1. Your site
152/300
Uncheck "Priority" to move it to ## Optional.
| URL | Title | Description | Section | Priority |
|---|---|---|---|---|
| https://searchbrand.ai/pricing | ||||
| https://searchbrand.ai/es/chatgpt-mencione-marca | ||||
| https://searchbrand.ai/es/blog/medir-trafico-ia-google-analytics-4 | ||||
| https://searchbrand.ai/es/blog/auditoria-aeo-geo-2025 | ||||
| https://searchbrand.ai/es/blog/share-of-voice-en-ias | ||||
| https://searchbrand.ai/es/contact |
2. AI bots
Block it if your content is your product (paywall, data you sell).
Adjust bot by bot
GPTBot · OpenAI
Crawls content OpenAI may use to train its foundation models.
Honors robots.txtClaudeBot · Anthropic
Collects web content that may be used to train Anthropic's models.
Honors robots.txtGoogle-Extended · Google
Token, not a separate crawler: decides whether what Googlebot crawls is used to train Gemini and for grounding in the Gemini app and Vertex AI. It does not control Google Search, AI Overviews or AI Mode.
Honors robots.txtApplebot-Extended · Apple
Token, does not crawl: decides whether what Applebot crawls is used to train Apple Intelligence models. It does not remove you from Siri or Spotlight.
Honors robots.txtCCBot · Common Crawl
Common Crawl's crawler; the nonprofit publishes an open web archive that many labs use as training data.
Honors robots.txtBytespider · ByteDance
ByteDance (TikTok) crawler tied to training its models. Several CDN operators have reported it does not always honor robots.txt.
Reported non-compliancemeta-externalagent · Meta
Meta's crawler for training AI models (Llama, Meta AI) and indexing content for its products.
Honors robots.txt
These bots produce linked citations.
Adjust bot by bot
OAI-SearchBot · OpenAI
Builds the index ChatGPT search uses to surface and cite sites. OpenAI says it is not used for training.
Honors robots.txtClaude-SearchBot · Anthropic
Crawls the web to improve the quality of search results Claude gives its users.
Honors robots.txtPerplexityBot · Perplexity
Indexes sites so they appear and get linked in Perplexity results. Perplexity says it is not used to train foundation models.
Honors robots.txt
They visit when someone asks the AI to read your page.
Adjust bot by bot
ChatGPT-User · OpenAI
Visits a page when a ChatGPT user (or a custom GPT) asks for something that requires reading it. Not automatic crawling. OpenAI notes robots.txt may not apply because a person initiates the action.
Not guaranteedClaude-User · Anthropic
Visits a page when a user asks Claude for information that requires reading it.
Honors robots.txtPerplexity-User · Perplexity
Visits a page when a Perplexity user asks something that requires it. Perplexity says that, being user-requested, it generally ignores robots.txt.
Not guaranteed
List reviewed on 2026-06-30. Sources: each company's official docs.
3. Validate an llms.txt
Validating the llms.txt generated in tab 1.
94/100
Ready to publish
H1 with the site name 15/15
OK.
Blockquote summary, 50 to 300 characters 10/10
152 characters.
Between 1 and 8 H2 sections 10/10
4 sections.
Absolute, same-domain links 15/15
0 relative, 0 off-domain, out of 6.
Each link has a 5-25 word description 10/10
6/6.
Between 10 and 60 priority links 9/15
6 priority, 0 in Optional.
File under 50 KB 10/10
1.1 KB.
No search or user bot blocked 15/15
OK.
Format errors (llmstxt.org)
Matches the llmstxt.org format.
Alerts
Check that your CDN isn't blocking these bots. Since July 2025 Cloudflare blocks AI crawlers by default on new domains: robots.txt can say Allow while the CDN returns 403.
What your blocks mean
You're not blocking any AI bot.
# SearchBrand > Plataforma chilena que mide si ChatGPT, Gemini, Perplexity, Claude y AI Overviews mencionan y citan a una marca, y qué contenido le falta para aparecer. ## Product and services - [Cómo lograr que ChatGPT mencione tu marca](https://searchbrand.ai/es/chatgpt-mencione-marca): Qué mira ChatGPT al elegir marcas y cómo medir si te nombra ## Pricing - [Precios](https://searchbrand.ai/pricing): Planes Pro y Pro+ en USD más IVA, con factura en pesos chilenos ## Guides - [Medir tráfico de IA en GA4](https://searchbrand.ai/es/blog/medir-trafico-ia-google-analytics-4): Cómo crear un canal de tráfico de IA en Google Analytics 4 paso a paso - [Auditoría AEO y GEO](https://searchbrand.ai/es/blog/auditoria-aeo-geo-2025): Checklist para auditar la presencia de una marca en motores de respuesta - [Share of voice en IA](https://searchbrand.ai/es/blog/share-of-voice-en-ias): Cómo calcular qué parte de las respuestas de IA menciona a tu marca ## Company - [Contacto](https://searchbrand.ai/es/contact): Agenda una demo o escribe al equipo de SearchBrand en Santiago
# robots.txt generated with SearchBrand's AI crawler matrix (list reviewed 2026-06-30) # Each bot obeys only the most specific group naming it (RFC 9309), so private paths are repeated in every group. # Model training: allowed User-agent: GPTBot User-agent: ClaudeBot User-agent: Google-Extended User-agent: Applebot-Extended User-agent: CCBot User-agent: Bytespider User-agent: meta-externalagent Disallow: /admin Disallow: /app Disallow: /api Allow: / # AI search and index: allowed User-agent: OAI-SearchBot User-agent: Claude-SearchBot User-agent: PerplexityBot Disallow: /admin Disallow: /app Disallow: /api Allow: / # User-initiated fetch: allowed User-agent: ChatGPT-User User-agent: Claude-User User-agent: Perplexity-User Disallow: /admin Disallow: /app Disallow: /api Allow: / # All other bots (search engines included) User-agent: * Disallow: /admin Disallow: /app Disallow: /api Allow: / Sitemap: https://searchbrand.ai/sitemap.xml # LLMs: https://searchbrand.ai/llms.txt
After uploading
The tool builds your llms.txt from your real URLs and your robots.txt from the policy you pick per category. Paste an existing llms.txt and it checks it against the llmstxt.org format and scores it. Everything runs in your browser; your files never reach a server. It can't check your links for 404s, because browsers block reads from other domains, so if you paste your sitemap it flags links that aren't in it.
To see whether those changes show up in AI answers, you can create a SearchBrand account with 10 free credits, no card required and track 10 fixed questions before and after.
Case study: SearchBrand's own llms.txt, step by step
Before publishing this guide we audited ours, and it wasn't pretty. Our internal technical audit found that searchbrand.ai's llms.txt pointed to /es/blog/rss.xml, which doesn't exist, and to /es/contacto/, when the real path is /es/contact. It was last updated on December 1, 2025. Nine months untouched, with two broken links, on the site of a company that sells AI visibility.
Here's how we're fixing it:
- Check robots.txt against the table above: which bots are allowed in each of the three categories, and whether the CDN blocks any by default.
- Run the llms.txt through the validator. A partial reconstruction of the old file, with the two broken links, one relative link and a section called "Opcional" instead of "Optional", scores 75 out of 100 with two format errors. The version built with the tool scores 94.
- Pick 15 to 30 high-value URLs: pricing, the page on getting ChatGPT to mention your brand, our GA4 AI-traffic guide (our best non-brand page by clicks) and the AEO audit. Everything else goes under
## Optionalor stays out. - Publish, reference the file from robots.txt and log the date.
- Measure 30 days before and 30 days after: hits from the five bots we care most about (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot) in our Netlify and Cloudflare logs, AI-channel sessions in GA4, and SearchBrand mentions across 10 fixed questions.
- Publish the numbers on this page, even if they're flat. If llms.txt moves nothing, that tells you how much time it deserves.
If your site has thousands of URLs
An attendee named Fernando asked what a bank or a big retailer with millions of products should do: list everything? Francisco's answer was to highlight what's valuable and leave the rest out (minute 45:25).
"As the model's context window fills up, the model tends to perform worse and worse." — Francisco A. Kemeny, co-founder of Kemeny Studio [45:25]
We tested it with the validator and a 15,000-product sitemap, the figure Francisco used for his e-commerce example. The generator keeps 30 priority URLs and pushes 14,970 into ## Optional. The file goes past 50 KB, loses 15 points for link count and lands at 65. Parking the catalog under Optional doesn't solve anything. For a retailer, the sensible list is categories and buying guides, shipping and returns policies, the FAQ, plus the 20 or 30 products people ask about most.
Francisco also suggested not doing it by hand: ask ChatGPT for a first llms.txt draft, or have Cursor write a script that reads your sitemap (minute 49:11). Run the output through the validator before uploading.
How to tell whether it worked
Nobody will tell you your llms.txt worked. You measure it with four sources, from hardest to softest.
Server logs. Filter by user-agent and count hits per bot per week. If GPTBot downloads your llms.txt you know it read the file, not that it uses it to cite you.
An AI channel in GA4. Francisco recommends a dedicated AI traffic channel you can compare against email or organic search, instead of only eyeballing referrals (minute 40:48).
Temporary chat. To rule out ChatGPT answering from the memory of your own past conversations, repeat the question in a temporary chat (minute 42:01). Francisco called it "the best acid test."
A daily monitor. Francisco has a scheduled task in ChatGPT that checks kemeny.studio every day and reports whether anything changed. For a long time it said "no change"; after some tweaks it started picking up differences. His summary: trial and error.
What we don't recommend
- Buying or installing an "llms.txt plugin" that promises ChatGPT rankings. The file is plain text, and no provider has confirmed it uses it for citations.
- Repeating the "70% better answer quality" stat making the rounds on LinkedIn. It came up in the webinar and we couldn't find a study behind it.
- Blocking Google-Extended to opt out of AI Overviews. That's not how it works.
- Dumping your full catalog into llms.txt.
- Expecting a difference from writing llms.txt in English versus Spanish. An attendee asked; Francisco and Hussam think it doesn't matter because models are multilingual, but nobody has measured it. Write it in your customers' language.
- Treating llms.txt as a substitute for content. Francisco estimates technical SEO does "20% of the work" and the other 80% is authority and relevance, what Google calls E-E-A-T. If your site is a client-rendered SPA with no prerendering, fix that first: most AI crawlers don't execute JavaScript, and no text file makes up for a blank page.
Once both files are live and you want the whole-site picture, move on to the AEO and GEO audit. Then track your 10 questions in SearchBrand: the free account comes with 10 credits, no card required.
Frequently asked questions
Does llms.txt improve my visibility in ChatGPT?
There's no public evidence that it does. It's a 2024 proposal from llmstxt.org, and as of September 2026 neither OpenAI, Anthropic nor Google has confirmed using it to decide what to cite. It's worth having because it's cheap and organizes your content, but measure it with logs and mentions before crediting it with any change.
What's the difference between llms.txt and robots.txt?
robots.txt is a standard (RFC 9309) that crawlers check to see whether they may access your site, and the major AI operators say they honor it. llms.txt is a markdown summary meant for language models and grants no permissions. If robots.txt blocks a bot, your llms.txt does nothing for it.
What's the difference between GPTBot, OAI-SearchBot and ChatGPT-User?
GPTBot collects content to train future OpenAI models. OAI-SearchBot builds the ChatGPT search index, which is what produces linked citations. ChatGPT-User visits your page when a user asks, and OpenAI notes robots.txt may not apply there. You can block GPTBot and still appear in ChatGPT search.
Does blocking Google-Extended remove me from AI Overviews?
No. Google-Extended is a token that controls whether your content trains Gemini and grounds answers in the Gemini app. AI Overviews and AI Mode use Googlebot, just like regular search, so leaving them means leaving Google. Blocking Google-Extended doesn't change your Google Search rankings.
Which pages should I include if my site has thousands of URLs?
Somewhere between 10 and 60 that explain what you do and answer customer questions: categories, pricing, policies, FAQ, guides and your most-asked-about products. Leave the rest out. In our test with 15,000 products, pushing everything into the Optional section produced a file over 50 KB that the validator scored 65.
How long does a robots.txt change take to show up?
It depends on the bot. Search and user-initiated access can reflect changes within days or weeks. Training access shows up only when the provider ships a new major model, six months to a year according to Francisco A. Kemeny in the webinar. Also check that your CDN isn't blocking those bots.
