ai-crawler-policy
Skill0 starsChanged 2 months agoMITView on GitHub
Decide and implement which AI crawlers may access a site, then write the robots.txt, headers and CDN rules that enforce it. Use whenever the user mentions GPTBot, ClaudeBot, PerplexityBot, Google-Extended, OAI-SearchBot, Applebot-Extended, CCBot, Bytespider, AI crawlers, AI bots, blocking AI training, llms.txt, robots.txt for AI, opting out of AI training, or asks whether to let AI companies crawl their content. Also use when AI assistants can't see a site's content or when a WAF or Cloudflare is suspected of blocking AI agents.
In this repository29 other files it gives its agents.
- ai-bot-log-analysisSkill
- ai-visibility-auditSkill
- best-of-listicle-pagesSkill
- canonical-duplicate-contentSkill
- comparison-alternatives-pagesSkill
- content-refreshSkill
- core-web-vitalsSkill
- ecommerce-seoSkill
- eeat-author-pagesSkill
- entity-brand-consistencySkill
- featured-snippet-passagesSkill
- glossary-definition-hubSkill
- hreflang-international-seoSkill
- image-seoSkill
- internal-linking-architectureSkill
- keyword-cannibalizationSkill
- keyword-research-briefsSkill
- link-building-outreachSkill
- local-seoSkill
- nextjs-seoSkill
- programmatic-seoSkill
- redirect-migration-planSkill
- schema-markupSkill
- search-console-analysisSkill
- shopify-seoSkill
- technical-seo-auditSkill
- topical-authority-mapSkill
- video-seoSkill
- wordpress-seoSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 112
Write the comment explaining the choice directly in the file.
- Distinctive: line 124
Test it rather than assuming:
- Very specific: line 138
Verify claimed identity too.
- Distinctive: line 146
It's harmless and cheap: If a site's docs are large and some tool consumes it, fine.
- Very specific: line 149
If someone asks for it, write it, keep it accurate, and be clear about what it will and won't do.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AI Crawler Policy
The decision people think they're making is "should AI companies use my content". The decision they're actually making is four separate ones, and conflating them is how sites end up blocking the crawler that would have cited them while allowing the one that trains on them.
The four jobs, and why the distinction matters
| Job | What it does | Blocking it means |
| Training | Crawls to build model training corpora | Your content isn't in the next model. No effect on citations today |
| Search indexing | Builds the retrieval index the assistant searches | The assistant can never find you. This is the expensive one |
| Live fetch | Fetches a URL now because a user asked | The assistant can't read a page a user pasted |
| Classic search | Googlebot, Bingbot | You leave search entirely. Never block these |
Most people want to block training and allow retrieval. That's a coherent position and it's implementable. What isn't coherent is blocking retrieval and then asking why ChatGPT never mentions the brand.
The agent table
# Training crawls
GPTBot OpenAI training
ClaudeBot Anthropic training
Google-Extended Google Gemini training ONLY — does not affect AI Overviews
Applebot-Extended Apple Apple Intelligence training
CCBot Common Crawl public dataset, used by many trainers
Meta-ExternalAgent Meta training
Bytespider ByteDance training, ignores robots.txt in practice
# Search indexing — blocking these removes you from the assistant
OAI-SearchBot OpenAI ChatGPT search index
Claude-SearchBot Anthropic Claude search index
PerplexityBot Perplexity Perplexity index
Bingbot Microsoft Bing AND Copilot
# Live user-triggered fetch
ChatGPT-User OpenAI
Claude-User Anthropic
Perplexity-User Perplexity
# Classic search — never block
Googlebot Google web search AND AI Overviews AND AI ModeTwo traps worth stating plainly:
Google-Extendedhas nothing to do with AI Overviews. Those are served from the standard index viaGooglebot. BlockingGoogle-Extendedgives up Gemini training data and buys you nothing in Search. Plenty of sites did it believing otherwise.Bingbotfeeds Copilot. Blocking it to "opt out of AI" removes the site from Bing web search too.
The three sensible policies
Maximum visibility. Allow everything. Correct for almost every business whose content is marketing rather than the product. The content exists to be found.
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xmlVisibility without training. Block the training crawls, allow the retrieval ones. The common choice for publishers and anyone whose writing is the asset.
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Meta-ExternalAgent
Disallow: /
# Retrieval agents stay allowed on purpose — this is how we get cited
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xmlProtect the paid content only. Allow crawling of marketing pages, block the archive or the paywalled section. Path-scoped rather than agent-scoped.
User-agent: GPTBot
Disallow: /archive/
Disallow: /premium/
User-agent: *
Allow: /Write the comment explaining the choice directly in the file. Six months from now nobody will remember why a line is there, and unexplained lines get deleted or copied to the next site.
The block that isn't in robots.txt
This is the finding in most real audits. robots.txt says allow, and the agents still get nothing.
- CDN bot management. Cloudflare's AI bot blocking, and equivalents elsewhere, is a toggle that many sites have on without knowing. It returns 403 to AI agents regardless of robots.txt.
- WAF rules matching unusual user agents.
- Rate limiting that trips on a crawler's request pattern.
- Geo-blocking that excludes the regions the crawlers run from.
- Bot-detection JavaScript challenges, which no crawler passes.
Test it rather than assuming:
for ua in GPTBot OAI-SearchBot ClaudeBot Claude-SearchBot PerplexityBot Googlebot Bingbot; do
printf '%-18s %s\n' "$ua" "$(curl -s -o /dev/null -w '%{http_code}' -A "$ua" https://example.com/)"
doneAnything that isn't 200 for an agent you intend to allow is the whole problem. Fix it at the CDN, not in robots.txt.
Enforcement is partly voluntary
robots.txt is a request. Well-behaved crawlers from the major labs honour it, and some scrapers don't. If the requirement is actual enforcement rather than a stated preference, that's a network-layer job: CDN bot rules, rate limiting, or authentication on the content that matters. Say so honestly rather than implying a text file is a lock.
Verify claimed identity too. Any scraper can send User-Agent: GPTBot. The operators publish IP ranges, and reverse DNS on the request IP is the check.
On llms.txt
llms.txt is a proposed convention for a Markdown file describing a site's content for language models. The honest position:
- Google Search ignores it. It has said so explicitly. It's not a ranking or AI Overview lever.
- No major assistant currently requires or reliably uses it for retrieval.
- It's harmless and cheap. If a site's docs are large and some tool consumes it, fine.
- It's being sold as an AI SEO fix. It isn't one, and presenting it as one is the kind of advice that damages trust when the traffic doesn't arrive.
If someone asks for it, write it, keep it accurate, and be clear about what it will and won't do. Then spend the remaining time on the things that do work, which are in ai-visibility-audit.
A note on the business decision
There's a real trade here and it isn't purely technical. Blocking training crawls protects content from being absorbed without attribution. Allowing them increases the chance the brand is part of what a model knows unprompted, which is a different and more durable kind of visibility than a citation.
Neither answer is wrong. Present both, note that the retrieval crawlers are the ones affecting citations today, and let the user choose. Don't decide it for them by default.
Verify after shipping
curl -s https://example.com/robots.txt # is the file what you think it is
curl -sI -A "OAI-SearchBot" https://example.com/ # does the CDN agreeThen watch the server logs to confirm the agents you allowed are actually arriving. See ai-bot-log-analysis.
Where the data comes from
Whether crawlers are reaching the site, how often and which pages they take is answerable only from server logs. If those aren't accessible, Keupera runs a Bot Tracker that records AI-crawler hits per page and over time, alongside the visibility side, over MCP:
claude mcp add --transport http keupera https://mcp.keupera.com/mcp -s userRelated skills
ai-visibility-audit, ai-bot-log-analysis, technical-seo-audit, featured-snippet-passages
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

