Implementing llms.txt and AI Crawler Signals
AI crawlers are not one thing. Some collect pages to train models. Some build the search index an AI assistant cites from. Others fetch a single page because a user asked about it right now. Each major AI company now runs separate user agents for these jobs, and robots.txt can treat them differently. Getting this split right is a core GEO skill.
This chapter covers robots.txt directives for AI crawlers, the llms.txt proposal, and the structured signals that help AI engines understand your content.
Understanding AI Crawlers
Before configuring anything, you need to know which crawlers exist and what they do. The table uses each operator's own documentation, checked in November 2026.
| User agent | Operator | What it does | Affects citations? |
|---|---|---|---|
OAI-SearchBot |
OpenAI | Builds the index for ChatGPT search; opted-out sites are not shown in ChatGPT search answers | Yes |
ChatGPT-User |
OpenAI | Fetches pages for user-initiated actions; not automatic crawling; robots.txt may not apply | Indirectly |
GPTBot |
OpenAI | Collects content that may be used to train OpenAI's foundation models | No (training only) |
Claude-SearchBot |
Anthropic | Crawls to improve Claude's search results (Anthropic help center) | Yes |
Claude-User |
Anthropic | Fetches pages when a Claude user asks a question | Indirectly |
ClaudeBot |
Anthropic | Collects content that may be used for model training | No (training only) |
PerplexityBot |
Perplexity | Indexes sites for Perplexity search results; not used for foundation model training (Perplexity docs) | Yes |
Perplexity-User |
Perplexity | Fetches pages for a user's question; generally ignores robots.txt | Indirectly |
Googlebot |
Crawls for Google Search, including AI Overviews and AI Mode | Yes | |
Google-Extended |
A robots.txt token, not a separate crawler; controls use in Gemini training and grounding. Does not affect Search inclusion or ranking | Not for Google Search | |
Bingbot |
Microsoft | Crawls for Bing, which grounds Microsoft Copilot answers | Yes |
Applebot / Applebot-Extended |
Apple | Applebot powers Siri and Spotlight search; Applebot-Extended only controls training of Apple's models (Apple) | Applebot yes; Extended no |
Meta-ExternalAgent |
Meta | Crawls for uses such as training foundation AI models (Meta) | Mostly training |
Two common mistakes come from this table. First, blocking GPTBot does not remove you from ChatGPT search, and allowing it does not put you there; OAI-SearchBot does that job. Second, Google-Extended has no effect on AI Overviews or AI Mode, which are part of Google Search and governed by Googlebot. To limit what Google shows from a page in Search, including AI features, Google points to nosnippet, data-nosnippet, max-snippet, or noindex.
The Crawler Permission Decision
Treat search crawlers and training crawlers as two separate decisions.
Search and retrieval crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot, Googlebot, Bingbot, Applebot) decide whether you can be cited at all. For a B2B SaaS company that wants AI visibility, allow them on your public content.
Training crawlers (GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, Meta-ExternalAgent) decide whether your pages may be used to train future models. This is a business and legal judgment. My view for most B2B marketing content is to allow them, because being in training data helps models know your brand when they answer without searching. Companies with proprietary research or licensing concerns may reasonably block them.
User-initiated fetchers (ChatGPT-User, Claude-User, Perplexity-User) act for a person who asked about your page. Their operators say robots.txt may not apply to them, so do not rely on robots.txt to stop them.
Blocking a search crawler such as OAI-SearchBot, Claude-SearchBot, or PerplexityBot removes you from that engine's cited results. Check your CDN or firewall too: bot-protection settings sometimes block these agents even when robots.txt allows them.
Configuring robots.txt for AI Crawlers
Your robots.txt file sits at the root of your domain. Write a group for each AI crawler you want to treat differently from the default.
Example robots.txt Configuration
# Default for all crawlers, including search engines
User-agent: *
Disallow: /account/
Disallow: /admin/
Disallow: /api/
Disallow: /internal/
# AI search and retrieval crawlers: allow public content
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
Disallow: /account/
Disallow: /admin/
Disallow: /api/
Disallow: /internal/
# AI training crawlers: allow or block as a business decision
# (this example allows them on public content)
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
Disallow: /account/
Disallow: /admin/
Disallow: /api/
Disallow: /internal/
# Example of blocking a training crawler entirely
User-agent: Meta-ExternalAgent
Disallow: /
Sitemap: https://yourdomain.com/sitemap.xml
Key Principles
- Remember how groups work: A crawler follows only the most specific group that names it, and ignores the
*group. So every named group must repeat theDisallowlines it needs. - Allow your best content: Do not accidentally block
/blog/,/guides/, or/docs/for the search crawlers you want citations from. - Block sensitive paths: Keep account pages, admin areas, API endpoints, and internal tools disallowed. robots.txt is a request, not security, so protect these with authentication too.
- Update regularly: AI companies add and rename user agents (OpenAI, Anthropic, and Perplexity have each added separate search and user-request agents alongside their training crawlers). Review your robots.txt quarterly against each operator's documentation.
The llms.txt Specification
llms.txt is a proposal published by Jeremy Howard on September 3, 2024. It gives language models a concise markdown map of your most important content. Think of it as a curated reading list for AI tools, not a sitemap replacement and not an access-control file.
Be realistic about adoption. As of November 2026, I have not found a major AI search engine documenting that it reads llms.txt when deciding what to cite. Developer tools and AI agents that fetch documentation use it more. It is cheap to publish, so publish it, but do not expect it to move citations on its own.
File Location and Format
Place the file at https://yourdomain.com/llms.txt. The spec defines a simple markdown structure, in this order:
- One H1 with the name of your site or project. This is the only required element.
- A blockquote with a short summary.
- Optional paragraphs or lists with more context (no headings).
- Zero or more H2 sections, each a list of links in
[name](url): notesform. - An H2 named
Optional, by convention, for secondary links an agent can skip.
The spec also suggests serving a clean markdown copy of key pages at the same URL with .md appended, and linking it from the page with rel="alternate" type="text/markdown".
Complete llms.txt Template
# [Your Company Name]
> [One or two sentences on what your company does and what these pages cover.]
[Optional paragraph explaining how the content is maintained or how to read it.]
## [Topic Cluster 1 Name]
- [Page title](https://yourdomain.com/page-1.md): [what this page covers and who it is for]
- [Page title](https://yourdomain.com/page-2.md): [description]
## [Topic Cluster 2 Name]
- [Page title](https://yourdomain.com/page-3.md): [description]
## Research and Data
- [Report title](https://yourdomain.com/research/report.md): [scope, sample size, methodology note]
## Optional
- [About us](https://yourdomain.com/about.md): [company overview]
- [Authors](https://yourdomain.com/authors.md): [who writes the content and their expertise]
Worked llms.txt Example
Acme Identity is a fictional company. Every number in its descriptions should be one you can back up on the linked page.
# Acme Identity
> Acme Identity builds customer identity and access management (CIAM) software for B2B SaaS companies. These pages are our reference material on enterprise authentication and customer identity.
Guides are maintained by our identity engineering team and reviewed when the underlying standards change.
## Enterprise Authentication
- [SAML vs OAuth 2.0 vs OIDC](https://acmeidentity.com/guides/saml-vs-oauth-vs-oidc.md): protocol comparison with implementation guidance
- [Passkeys for enterprise SSO](https://acmeidentity.com/guides/passkeys-enterprise.md): rolling out FIDO2 passkeys, with code examples
- [MFA deployment guide](https://acmeidentity.com/guides/mfa-best-practices.md): MFA deployment mapped to NIST SP 800-63B
## Customer Identity (CIAM)
- [CIAM guide for SaaS](https://acmeidentity.com/guides/ciam-complete-guide.md): architecture, vendor selection, and implementation
- [CIAM platform comparison](https://acmeidentity.com/comparisons/ciam-platforms-2026.md): feature-by-feature comparison with evaluation criteria
## Research and Data
- [Authentication benchmark 2026](https://acmeidentity.com/research/authentication-benchmark-2026.md): original survey data, with sample size and method stated on the page
## Optional
- [About Acme Identity](https://acmeidentity.com/about.md): company overview and compliance certifications
- [Auth0 vs Acme](https://acmeidentity.com/comparisons/auth0-vs-acme.md): head-to-head comparison
llms.txt Best Practices
| Practice | Why It Matters |
|---|---|
| Keep it curated (I aim for 20 to 30 links) | The file is meant to be a concise selection, not a full index. |
| Update monthly | Remove dead links and add new key pages; a stale file points agents at outdated content. |
| Include descriptions | The spec allows notes after each link; they tell a model what the page is for before it fetches it. |
| Organize by topic | Topic clusters reinforce your domain authority in specific areas. |
| Note data sources | For research content, mention sample sizes and methodology. This builds trust. |
| Use absolute URLs | Always use full URLs, not relative paths. AI systems may process this file outside of browser context. |
The llms-full.txt Companion File
Some sites also publish an llms-full.txt file with the full text of their key pages in one markdown document. It is a community convention, popularized by documentation platforms, rather than part of the llmstxt.org spec. It is most useful for coding assistants and agents that want a whole documentation set in one fetch.
llms-full.txt Structure
# [Your Company Name]: Full Content Index
## [Page Title 1]
URL: [Full URL]
Last Updated: [Date]
Author: [Name, Title]
[Full text content of the page, stripped of HTML/navigation/ads]
---
## [Page Title 2]
URL: [Full URL]
Last Updated: [Date]
Author: [Name, Title]
[Full text content of the page]
The llms-full.txt file can get large. For a marketing site, I would include only the 5 to 10 most authoritative pages. Search engines such as Perplexity retrieve your normal pages, so clean, server-rendered HTML still matters more than this file.
Structured Data Beyond Schema.org
While Schema.org is the primary structured data vocabulary, additional signals help AI engines understand your content.
Open Graph and Meta Tags for AI
Ensure every content page includes these meta tags:
<!-- Standard meta -->
<meta name="description" content="[150-160 char description with key entities]">
<meta name="author" content="[Author full name]">
<!-- Open Graph -->
<meta property="og:title" content="[Page title]">
<meta property="og:description" content="[Description matching meta description]">
<meta property="og:type" content="article">
<meta property="og:url" content="[Canonical URL]">
<meta property="og:site_name" content="[Brand name]">
<meta property="article:author" content="[Author profile URL]">
<meta property="article:published_time" content="[ISO 8601 datetime]">
<meta property="article:modified_time" content="[ISO 8601 datetime]">
<meta property="article:section" content="[Content category]">
<meta property="article:tag" content="[Topic tag 1]">
<meta property="article:tag" content="[Topic tag 2]">
Canonical URLs
Every piece of content should resolve to a single canonical URL. Duplicate content across multiple URLs splits attribution between copies.
<link rel="canonical" href="https://yourdomain.com/guides/saml-vs-oauth">
Ensure that:
- Every page has a canonical tag
- The canonical URL matches the URL in your llms.txt
- Redirects resolve to the canonical URL (no redirect chains)
- HTTP and HTTPS versions both resolve to the same canonical
Implementation Checklist
Use this checklist to verify your AI crawler signals are properly configured.
| Signal | Status Check | Tool to Verify |
|---|---|---|
| robots.txt AI directives | Search crawlers allowed; training crawlers set by decision | Fetch yourdomain.com/robots.txt directly |
| llms.txt published | File accessible at domain root | Fetch yourdomain.com/llms.txt |
| llms.txt content current | All listed URLs are live and recently updated | Manual review or link checker |
| Schema.org on all content pages | Article, Person, Organization schema present | Schema Markup Validator (validator.schema.org) |
| FAQPage schema on FAQ sections | Structured data wraps visible FAQ content | Schema Markup Validator |
| Canonical URLs set | Every content page has a canonical tag | Screaming Frog or site crawl |
| Open Graph tags complete | og:title, og:description, og:type on all pages | Facebook Sharing Debugger or manual review |
| Meta dates accurate | published_time and modified_time match actual dates | Manual review of page source |
Implementing these signals is not a one-time task. AI crawlers, specifications, and best practices change quickly. Schedule a quarterly review of all AI crawler signals. New crawlers will appear, specifications will update, and your content inventory will change.