Index of every page on this site: llms.txt

Content Signals in robots.txt declare how you want AI systems to use your content. They rely on the receiving system to honor them. They do not restrict access to a page.

Standards

The module emits two directive formats:

Content-Usage (values: y/n)

  • train-ai: foundation model training

Content-Signal (values: yes/no)

  • search: indexing/snippets
  • ai-input: RAG, grounding, AI search
  • ai-train: model training/fine-tuning

See Nuxt Robots AI Directives for full documentation.

Default

With no contentSignal option, the module adds this line to the User-agent: * group:

robots.txt
Content-Signal: search=yes, ai-input=yes

The default allows search and AI input. It states no preference on AI training, so the line leaves out ai-train. Under the Content Signals spec, a missing signal neither grants nor restricts that use.

The module adds no default line when a robots group or a merged robots.txt file already sets Content-Signal. That policy stays the only one.

Set contentSignal: false to send no Content-Signal line.

Response headers

Markdown conversion preserves a Content-Signal header from the source HTML response. An explicit header on the Markdown route takes precedence. Disabling automatic robots directives does not remove headers supplied by your application.

Cloudflare Markdown for Agents also preserves an origin policy header. If the origin sends no header, the converter adds ai-train=yes, search=yes, ai-input=yes. Configure an origin header when you need the same preference across both conversion paths.

Prerendered policies

If your HTML response sends a Content-Signal header, prerendering preserves it on HTML and Markdown twins. Explicit Markdown route policies and static header removals take precedence. This preserves your existing headers. It does not create HTTP policy headers from contentSignal configuration.

Cloudflare builds write these policies into _headers. Shared route policies stay shared. Specific policies replace broader policies. Other static hosts need their own response header configuration.

Cloudflare allows 100 static header rules. If optional discovery rules exceed this limit, the build drops them and retains policy rules. If policy rules exceed the limit, the build fails. Use fewer per-page policies or a shared policy.

Configure

Set each use you want to allow:

nuxt.config.ts
export default defineNuxtConfig({
  aiReady: {
    contentSignal: {
      aiTrain: true,
      search: true,
      aiInput: true
    }
  }
})

The module adds these directive lines to the User-agent: * group. It merges them into a group you already define, so robots.txt keeps one wildcard group:

robots.txt
Content-Usage: train-ai=y
Content-Signal: ai-train=yes, search=yes, ai-input=yes

Set contentSignal.contentUsage: false to omit the draft Content-Usage row while keeping the Content-Signal row for tooling that specifically rejects Content-Usage.

Nuxt AI Ready requires @nuxtjs/robots 7.0.0 or later.

An object states the whole policy. The module sends no for each permission you leave out of the object. For example, contentSignal: { aiTrain: false } sends ai-train=no, search=no, ai-input=no. To keep the default and also refuse training, set all three permissions.

Selective Permissions

Allow search and AI input, and refuse AI training:

nuxt.config.ts
export default defineNuxtConfig({
  aiReady: {
    contentSignal: {
      search: true,
      aiInput: true,
      aiTrain: false
    }
  }
})
robots.txt
Content-Usage: train-ai=n
Content-Signal: ai-train=no, search=yes, ai-input=yes
Was this page helpful?