Content Signals and IETF AIPREF: Saying What AI May Do With Your Content
robots.txt answers one question: may you fetch this URL? It has no vocabulary for the question publishers actually care about now β you may read this to answer someone's question, but not to train a model on it.
Two efforts are filling that gap from opposite directions. Cloudflare shipped one unilaterally and put it on millions of domains overnight. The IETF is standardising the other properly, and slowly. They are compatible, they mean roughly the same things, and right now you should probably deploy the first while watching the second.
Cloudflare Content Signals
A Content-Signal: line in your robots.txt, with a comma-separated list of preferences:
Content-Signal: search=yes, ai-input=yes, ai-train=noThree signals, each yes or no:
searchβ building a search index, returning links and short excerpts. Explicitly not AI-generated summaries.ai-inputβ real-time use in a generated answer. This is retrieval-augmented generation: your page is read at question time and informs the reply.ai-trainβ training or fine-tuning a model.
That middle one is the interesting addition. Until Content Signals there was no way to say βcite me live, do not absorb meβ β and for most publishers that is precisely the position.
You may already have one. Cloudflare rolled the policy out across more than 3.8 million domains, injecting the directive at the edge with defaults of search=yes, ai-train=no, and ai-input left neutral.
If your site is behind Cloudflare, fetch your own /robots.txt over HTTP and compare it with the file in your repository. They will not match β and the live one is what crawlers read.
IETF AIPREF
The IETF chartered an AI Preferences working group to do this properly: one vocabulary for expressing preferences, one set of mechanisms for attaching it to content, and defined rules for reconciling preferences that disagree.
Two drafts matter:
draft-ietf-aipref-vocabβ the vocabulary. Defines categories includingtrain-aiandsearch, withy/nvalues.draft-ietf-aipref-attachβ how to attach it: aContent-UsageHTTP response header, and a matching robots.txt rule.
In robots.txt it sits inside a user-agent group:
User-agent: *
Content-Usage: train-ai=n
Allow: /Or as a header, which has a real advantage: it can be set per-resource, so a single page or a single PDF can carry a different preference from the rest of the site.
Content-Usage: train-ai=nBoth drafts are adopted working-group documents on the Proposed Standard track, with an August 2026 milestone to send the attachment spec to the IESG. That is real progress β but βon the standards trackβ is not βpublishedβ, and crawler support today is close to nonexistent.
Which should you deploy?
| Content Signals | AIPREF Content-Usage | |
|---|---|---|
| Status | Vendor policy, deployed | IETF draft, standards track |
| Reach | 3.8M+ domains | Minimal |
| Granularity | Whole site | Per user-agent, or per resource via header |
| Governance | One company | Open standards body |
Add Content Signals now. It is one line, it costs nothing, a large share of the web already carries it, and it states an intent that Allow and Disallow cannot.
Wait on Content-Usage unless you enjoy being early. Broadcasting a preference no crawler reads adds a line that has to be kept consistent with everything else in the file. Revisit when the RFC publishes.
Keep Allow and Disallow as the load-bearing part. Both of these say what should happen to content a crawler is already permitted to fetch. Neither stops a fetch. If you want something not read, disallow it.
The failure mode to avoid
Declaring ai-train=no while leaving GPTBot and Google-Extended on Allow: /.
The signal is advisory; the Disallow rule is what crawlers act on. A file that says one thing in a signal and the opposite in its rules is not a policy β it is a contradiction, and the rules win. Our robots.txt validator flags exactly this pairing, alongside unknown signal keys and invalid values.
People Also Ask About Content Signals and AIPREF
These are common questions about llms.txt and AI optimization. Click on any question to see the answer.
Check your signals for contradictions
Our robots.txt validator parses Content-Signal and Content-Usage, and flags signals your rules contradict.
Validate my robots.txtRelated Reading
Control AI Crawlers with robots.txt
The per-vendor user-agent list, and the mistake that removes you from AI answers while you are trying to opt out of training.
Read moreai.txt: Two Competing Standards
Two unrelated specifications share the filename ai.txt. How to tell them apart, and which one solves your problem.
Read moreLLMs.txt vs Robots.txt
How llms.txt differs from robots.txt β and why most sites need both.
Read more