---
title: "CF-CONTENT-SIGNALS: Content-Signal line | Agent Ready Checklist"
description: "CF-CONTENT-SIGNALS (CLOUDFLARE, Find layer): Content-Signal line. What it asks, the evidence, the command that verifies it and the fix on 19 platforms."
canonical: https://agentreadychecklist.com/checklist/cf-content-signals
site: "Agent Ready Checklist"
last_updated: 2026-11-05
section: "Checklist"
---

# CF-CONTENT-SIGNALS: Content-Signal line | Agent Ready Checklist

> CF-CONTENT-SIGNALS (CLOUDFLARE, Find layer): Content-Signal line. What it asks, the evidence, the command that verifies it and the fix on 19 platforms.

Source: https://agentreadychecklist.com/checklist/cf-content-signals
Site: Agent Ready Checklist
Last reviewed: 2026-11-05
Agent endpoints: https://agentreadychecklist.com/llms.txt (index), https://agentreadychecklist.com/openapi.json (API), https://agentreadychecklist.com/mcp (MCP server), https://agentreadychecklist.com/ask (search)
Access: https://agentreadychecklist.com/auth.md (no key). Pricing: https://agentreadychecklist.com/pricing.md (free).

# CF-CONTENT-SIGNALS: Content-Signal line

CF-CONTENT-SIGNALS is a Cloudflare scanner check on the find layer: Declare AI usage preferences with a Content-Signal line in robots.txt (ai-train, search, ai-input). It applies to every site that wants to state AI use terms. 19 of 19 platforms have a recipe below, 2 of them workarounds. The kit check robots-verdicts tests it with one command.

## The requirement

Identifier

CF-CONTENT-SIGNALS

Level

CLOUDFLARE

Layer

Find

Applies to

every site that wants to state AI use terms

Checked by

Cloudflare contentSignals, Verify Kit robots-verdicts

Ora check

none matched, see below

The statement

Declare AI usage preferences with a Content-Signal line in robots.txt (ai-train, search, ai-input).

## Why

-   Cloudflare Radar found 4% of scanned sites declare AI usage preferences in robots.txt.primary source, 2026-04-17: [blog.cloudflare.com/agent-readiness/](https://blog.cloudflare.com/agent-readiness/), read 2026-11-04
-   The directive takes three keys: ai-train, search and ai-input, for example Content-Signal: ai-train=no, search=yes, ai-input=yes.primary source, 2026-04-17: [blog.cloudflare.com/agent-readiness/](https://blog.cloudflare.com/agent-readiness/), read 2026-11-04
-   Content Signals is written up as an IETF draft (draft-romm-aipref-contentsignals).primary source: [isitagentready.com/.well-known/agent-skills/content-signals/SKILL.md](https://isitagentready.com/.well-known/agent-skills/content-signals/SKILL.md), read 2026-11-04
-   Markdown for Agents adds Content-Signal: ai-train=yes, search=yes, ai-input=yes when the origin sets none.primary source, 2026-10-09: [developers.cloudflare.com/fundamentals/reference/markdown-for-agents/](https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/), read 2026-11-04

## How to verify

### [robots.txt verdict per agent token](https://agentreadychecklist.com/kit/robots-verdicts/)

```bash
curl -fsSL https://agentreadychecklist.com/kit/verify.sh | bash -s -- https://example.com --only=robots-verdicts
```

Parses /robots.txt per RFC 9309 group matching and prints allow or disallow for / for each of 17 tokens (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, Google-Extended, Googlebot, Applebot, Applebot-Extended, Bingbot, Amazonbot, Meta-ExternalAgent, DuckAssistBot, MistralAI-User), plus any Content-Signal and Sitemap lines. FAIL when a search or user-initiated token is disallowed at /.

**It cannot prove:** User-initiated fetchers may ignore robots.txt; a disallow for a training crawler can be a deliberate, valid choice; the parser checks / only unless given a path.

### The one-line version

curl -s <origin>/robots.txt | grep -i "^content-signal:".

## Verify with Ora

Ora's catalogue of 132 checks, read 2026-11-05, has no check that this row's name, cited standard or published description matches, so this page names no Ora id. The audit below still scores the rest of the site. [The crosswalk](https://agentreadychecklist.com/checklist/ora-checks/) lists every row and its match.

### Or audit the whole site

```bash
npx ax@0.10 audit https://example.com --min-score 70
```

Exit code 1 means the score is below the number you passed, so the same line gates a deploy: [the CI recipe](https://agentreadychecklist.com/guides/gate-deploys-on-agent-readiness-in-ci/). [Why this site recommends Ora, and where it falls short](https://agentreadychecklist.com/verify-with-ora/).

## Fix it on your platform

### Next.js (App Router)workaround

MetadataRoute.Robots has no Content-Signal field. Serve robots.txt from public/robots.txt (delete app/robots.ts) or from app/robots.txt/route.ts returning text with a Content-Signal: ai-train=no, search=yes, ai-input=yes line.

Next.js 16.x (npm latest 16.4.5, read 2026-11-04); docs at nextjs.org/docs/app. Read 2026-11-04. [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route). [All Next.js (App Router) recipes](https://agentreadychecklist.com/platforms/nextjs-app-router/#cf-content-signals)

### Astrorecipe

Add "Content-Signal: ai-train=no, search=yes, ai-input=yes" under the User-agent: \* group in public/robots.txt.

Astro 7.x (npm latest astro 7.4.5, @astrojs/sitemap 3.7.4, read 2026-11-04). Read 2026-11-04. [docs.astro.build/en/basics/project-structure/](https://docs.astro.build/en/basics/project-structure/). [All Astro recipes](https://agentreadychecklist.com/platforms/astro/#cf-content-signals)

### Nuxtrecipe

Add a Content-Signal line under User-agent: \* in public/robots.txt (or the module source file it merges).

Nuxt 4.x (npm latest nuxt 4.6.4, @nuxtjs/robots 7.0.2, @nuxtjs/sitemap 9.1.0, read 2026-11-04). Read 2026-11-04. [nuxt.com/modules/robots](https://nuxt.com/modules/robots). [All Nuxt recipes](https://agentreadychecklist.com/platforms/nuxt/#cf-content-signals)

### SvelteKitrecipe

Add a Content-Signal line under User-agent: \* in static/robots.txt.

SvelteKit (npm latest @sveltejs/kit 3.1.1, read 2026-11-04); docs at svelte.dev/docs/kit. Read 2026-11-04. [svelte.dev/docs/kit/project-structure](https://svelte.dev/docs/kit/project-structure). [All SvelteKit recipes](https://agentreadychecklist.com/platforms/sveltekit/#cf-content-signals)

### Remix and React Router (framework mode)recipe

Add a Content-Signal line under User-agent: \* in public/robots.txt or in the robots resource route output.

React Router framework mode (npm latest react-router 8.5.1; Remix v2 @remix-run/node 2.17.5, read 2026-11-04); docs at reactrouter.com. Read 2026-11-04. [reactrouter.com/how-to/resource-routes](https://reactrouter.com/how-to/resource-routes). [All Remix and React Router (framework mode) recipes](https://agentreadychecklist.com/platforms/remix-react-router/#cf-content-signals)

### Plain static hosting (Netlify, Vercel static, Cloudflare Pages, GitHub Pages, S3 and CloudFront)recipe

Add "Content-Signal: ai-train=no, search=yes, ai-input=yes" under User-agent: \* in the uploaded robots.txt.

Host documentation as published on 2026-11-04 (no version numbers; config files \_headers, \_redirects, vercel.json, 404.html). Read 2026-11-04. [developers.cloudflare.com/pages/configuration/serving-pages/](https://developers.cloudflare.com/pages/configuration/serving-pages/). [All Plain static hosting (Netlify, Vercel static, Cloudflare Pages, GitHub Pages, S3 and CloudFront) recipes](https://agentreadychecklist.com/platforms/static-hosting/#cf-content-signals)

### WordPress and Elementorrecipe

Append the line through the filter: `add_filter('robots_txt', fn($out) => $out."Content-Signal: search=yes, ai-input=yes, ai-train=no\n", 10, 1);` It lands after the core `User-agent: *` group.

WordPress 7.1.4 (core release from the version-check API), Elementor 4.3.6 (plugin directory, updated 2026-11-02), Yoast SEO 28.8 noted for llms.txt; docs read 2026-11-04. Read 2026-11-04. [developer.wordpress.org/reference/hooks/robots\_txt/](https://developer.wordpress.org/reference/hooks/robots_txt/). [All WordPress and Elementor recipes](https://agentreadychecklist.com/platforms/wordpress-elementor/#cf-content-signals)

### Shopify (Online Store 2.0 themes)recipe

In robots.txt.liquid, inside the `group.user_agent.value == '*'` branch add `{{ 'Content-Signal: search=yes, ai-input=yes, ai-train=no' }}`.

Hosted SaaS, Online Store 2.0 Liquid themes, docs read 2026-11-04; storefront behaviour probed live on one Shopify store the same day. Read 2026-11-04. [shopify.dev/docs/storefronts/themes/seo/robots-txt](https://shopify.dev/docs/storefronts/themes/seo/robots-txt). [All Shopify (Online Store 2.0 themes) recipes](https://agentreadychecklist.com/platforms/shopify/#cf-content-signals)

### Webflowrecipe

Add `Content-Signal: search=yes, ai-input=yes, ai-train=no` under `User-agent: *` in the robots.txt rules and publish.

Hosted SaaS, help center articles read 2026-11-04 (updated dates 2024-10-14 to 2026-10-29). Read 2026-11-04. [help.webflow.com/hc/en-us/articles/41954080897683-Set-robots-txt-rules](https://help.webflow.com/hc/en-us/articles/41954080897683-Set-robots-txt-rules). [All Webflow recipes](https://agentreadychecklist.com/platforms/webflow/#cf-content-signals)

### Framerrecipe

Upload a custom robots.txt via Static Files containing `User-agent: *`, `Content-Signal: search=yes, ai-input=yes, ai-train=no` and your Sitemap line. framer.com's own robots.txt carries a Content-Signal line (read 2026-11-04).

Hosted SaaS, help articles read 2026-11-04 (marked updated 2026-09-15). Read 2026-11-04. [framer.com/help/articles/static-files/](https://www.framer.com/help/articles/static-files/). [All Framer recipes](https://agentreadychecklist.com/platforms/framer/#cf-content-signals)

### Wix (Wix Editor and Wix Studio)recipe

Robots.txt Editor > View File: add `Content-Signal: search=yes, ai-input=yes, ai-train=no` under `User-agent: *`, Save Changes.

Hosted SaaS, help center read 2026-11-04. Read 2026-11-04. [support.wix.com/en/article/editing-your-sites-robotstxt-file](https://support.wix.com/en/article/editing-your-sites-robotstxt-file). [All Wix (Wix Editor and Wix Studio) recipes](https://agentreadychecklist.com/platforms/wix/#cf-content-signals)

### Squarespace (version 7.1)workaround

robots.txt is not editable beyond the AI crawler checkbox. Not possible on this platform; workaround: none on Squarespace hosting (squarespace.com's own file carries a Content-Signal line, merchant sites cannot add one).

Hosted SaaS, version 7.1 sites, help center read 2026-11-04 (articles updated 2026-07-17 to 2026-11-03). Read 2026-11-04. [support.squarespace.com/hc/en-us/articles/360022347072-Request-that-AI-models-exclude-your-site](https://support.squarespace.com/hc/en-us/articles/360022347072-Request-that-AI-models-exclude-your-site). [All Squarespace (version 7.1) recipes](https://agentreadychecklist.com/platforms/squarespace/#cf-content-signals)

### HubSpot CMS (Content Hub)recipe

Add `Content-Signal: search=yes, ai-input=yes, ai-train=no` under `User-agent: *` in the SEO & Crawlers robots.txt field and Save.

Hosted SaaS, Content Hub, knowledge base and developer docs read 2026-11-04. Read 2026-11-04. [knowledge.hubspot.com/seo/prevent-content-from-appearing-in-search-results](https://knowledge.hubspot.com/seo/prevent-content-from-appearing-in-search-results). [All HubSpot CMS (Content Hub) recipes](https://agentreadychecklist.com/platforms/hubspot-cms/#cf-content-signals)

### Docusaurusrecipe

Add to static/robots.txt under User-agent: \* the line Content-Signal: ai-train=no, search=yes, ai-input=yes (pick your values).

3.10.2 (npm @docusaurus/core latest, read 2026-11-04). Read 2026-11-04. [docusaurus.io/docs/static-assets](https://docusaurus.io/docs/static-assets). [All Docusaurus recipes](https://agentreadychecklist.com/platforms/docusaurus/#cf-content-signals)

### Mintlifyrecipe

Automatic Content-Signal directives in the generated robots.txt; change them by committing a custom robots.txt.

Hosted SaaS, docs read 2026-11-04. Read 2026-11-04. [mintlify.com/docs/optimize/seo](https://mintlify.com/docs/optimize/seo). [All Mintlify recipes](https://agentreadychecklist.com/platforms/mintlify/#cf-content-signals)

### GitBookrecipe

Default robots.txt already contains Content-Signal: ai-train=yes, search=yes, ai-input=yes (live 2026-11-04). To change it, own robots.txt on your root domain via a subdirectory setup.

Hosted SaaS, docs read 2026-11-04. Read 2026-11-04. [gitbook.com/docs/publish/custom-domain/setting-a-custom-subdirectory/configuring-a-subdirectory-with-cloudflare](https://gitbook.com/docs/publish/custom-domain/setting-a-custom-subdirectory/configuring-a-subdirectory-with-cloudflare). [All GitBook recipes](https://agentreadychecklist.com/platforms/gitbook/#cf-content-signals)

### ReadMerecipe

Set Model training, Search indexing and Prompt context under Content Signals; robots.txt gets a Content-Signal line.

Hosted SaaS, docs read 2026-11-04. Read 2026-11-04. [docs.readme.com/main/docs/ai-discoverability](https://docs.readme.com/main/docs/ai-discoverability). [All ReadMe recipes](https://agentreadychecklist.com/platforms/readme/#cf-content-signals)

### Salesforce B2C Commerce (SFRA and PWA Kit / Composable Storefront)recipe

Add Content-Signal: ai-train=no, search=yes, ai-input=yes under User-agent: \* in the Custom robots.txt definition in Business Manager.

Hosted SaaS (B2C Commerce help release 264.0.0); PWA Kit retail-react-app 10.3.0 and pwa-kit-runtime 3.21.0 on npm, read 2026-11-04. Read 2026-11-04. [help.salesforce.com/s/articleView](https://help.salesforce.com/s/articleView?id=cc.b2c_generating_a_robots_txt_file.htm&type=5). [All Salesforce B2C Commerce (SFRA and PWA Kit / Composable Storefront) recipes](https://agentreadychecklist.com/platforms/salesforce-commerce-cloud/#cf-content-signals)

### Adobe Commerce and Magento Open Sourcerecipe

Add Content-Signal: ai-train=no, search=yes, ai-input=yes under User-agent: \* in Edit custom instruction of robots.txt File.

2.4.9 (GitHub tag published 2026-05-12; 2.4.10-alpha1 tagged 2026-10-13); release notes read 2026-11-04. Read 2026-11-04. [experienceleague.adobe.com/en/docs/commerce-admin/marketing/seo/seo-overview](https://experienceleague.adobe.com/en/docs/commerce-admin/marketing/seo/seo-overview). [All Adobe Commerce and Magento Open Source recipes](https://agentreadychecklist.com/platforms/adobe-commerce/#cf-content-signals)

## What it does not do

-   A signal is a stated preference, not an access control; it blocks nothing.
-   No AgentReady identifier covers it.

## Common mistakes

-   Signal placed outside any User-agent group.
-   Forgetting that Markdown for Agents adds a permissive default header.

## Related

-   Term: [robots.txt](https://agentreadychecklist.com/glossary/robots-txt/)

## Sources

-   [blog.cloudflare.com/agent-readiness/](https://blog.cloudflare.com/agent-readiness/)read 2026-11-04
-   [isitagentready.com/.well-known/agent-skills/content-signals/SKILL.md](https://isitagentready.com/.well-known/agent-skills/content-signals/SKILL.md)read 2026-11-04
-   [developers.cloudflare.com/fundamentals/reference/markdown-for-agents/](https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/)read 2026-11-04
-   [nextjs.org/docs/app/api-reference/file-conventions/route](https://nextjs.org/docs/app/api-reference/file-conventions/route)read 2026-11-04
-   [docs.astro.build/en/basics/project-structure/](https://docs.astro.build/en/basics/project-structure/)read 2026-11-04
-   [nuxt.com/modules/robots](https://nuxt.com/modules/robots)read 2026-11-04
-   [svelte.dev/docs/kit/project-structure](https://svelte.dev/docs/kit/project-structure)read 2026-11-04
-   [reactrouter.com/how-to/resource-routes](https://reactrouter.com/how-to/resource-routes)read 2026-11-04
-   [developers.cloudflare.com/pages/configuration/serving-pages/](https://developers.cloudflare.com/pages/configuration/serving-pages/)read 2026-11-04
-   [developer.wordpress.org/reference/hooks/robots\_txt/](https://developer.wordpress.org/reference/hooks/robots_txt/)read 2026-11-04
-   [shopify.dev/docs/storefronts/themes/seo/robots-txt](https://shopify.dev/docs/storefronts/themes/seo/robots-txt)read 2026-11-04
-   [help.webflow.com/hc/en-us/articles/41954080897683-Set-robots-txt-rules](https://help.webflow.com/hc/en-us/articles/41954080897683-Set-robots-txt-rules)read 2026-11-04
-   [framer.com/help/articles/static-files/](https://www.framer.com/help/articles/static-files/)read 2026-11-04
-   [support.wix.com/en/article/editing-your-sites-robotstxt-file](https://support.wix.com/en/article/editing-your-sites-robotstxt-file)read 2026-11-04
-   [support.squarespace.com/hc/en-us/articles/360022347072-Request-that-AI-models-exclude-your-site](https://support.squarespace.com/hc/en-us/articles/360022347072-Request-that-AI-models-exclude-your-site)read 2026-11-04
-   [knowledge.hubspot.com/seo/prevent-content-from-appearing-in-search-results](https://knowledge.hubspot.com/seo/prevent-content-from-appearing-in-search-results)read 2026-11-04
-   [docusaurus.io/docs/static-assets](https://docusaurus.io/docs/static-assets)read 2026-11-04
-   [mintlify.com/docs/optimize/seo](https://mintlify.com/docs/optimize/seo)read 2026-11-04
-   [gitbook.com/docs/publish/custom-domain/setting-a-custom-subdirectory/configuring-a-subdirectory-with-cloudflare](https://gitbook.com/docs/publish/custom-domain/setting-a-custom-subdirectory/configuring-a-subdirectory-with-cloudflare)read 2026-11-04
-   [docs.readme.com/main/docs/ai-discoverability](https://docs.readme.com/main/docs/ai-discoverability)read 2026-11-04
-   [help.salesforce.com/s/articleView](https://help.salesforce.com/s/articleView?id=cc.b2c_generating_a_robots_txt_file.htm&type=5)read 2026-11-04
-   [experienceleague.adobe.com/en/docs/commerce-admin/marketing/seo/seo-overview](https://experienceleague.adobe.com/en/docs/commerce-admin/marketing/seo/seo-overview)read 2026-11-04
-   [rfc-editor.org/rfc/rfc9309](https://www.rfc-editor.org/rfc/rfc9309)read 2026-11-04
-   [ora.ai/api/checks, contract 1.38.0](https://ora.ai/api/checks?utm_source=agentreadychecklist.com&utm_medium=referral&utm_campaign=requirement)read 2026-11-05
-   [registry.npmjs.org/ax, the ax README](https://registry.npmjs.org/ax)read 2026-11-05

Verify with Ora

The scanner this site recommends for the whole checklist. 132 checks, a score out of 100, no account.

`npx ax@0.10 audit <url> --min-score <n>`

[Why Ora, and its limits](https://agentreadychecklist.com/verify-with-ora/)

Fix it on

-   [Next.js (App Router)workaround](#p-nextjs-app-router)
-   [Astrorecipe](#p-astro)
-   [Nuxtrecipe](#p-nuxt)
-   [SvelteKitrecipe](#p-sveltekit)
-   [Remix and React Router (framework mode)recipe](#p-remix-react-router)
-   [Plain static hosting (Netlify, Vercel static, Cloudflare Pages, GitHub Pages, S3 and CloudFront)recipe](#p-static-hosting)
-   [WordPress and Elementorrecipe](#p-wordpress-elementor)
-   [Shopify (Online Store 2.0 themes)recipe](#p-shopify)
-   [Webflowrecipe](#p-webflow)
-   [Framerrecipe](#p-framer)
-   [Wix (Wix Editor and Wix Studio)recipe](#p-wix)
-   [Squarespace (version 7.1)workaround](#p-squarespace)
-   [HubSpot CMS (Content Hub)recipe](#p-hubspot-cms)
-   [Docusaurusrecipe](#p-docusaurus)
-   [Mintlifyrecipe](#p-mintlify)
-   [GitBookrecipe](#p-gitbook)
-   [ReadMerecipe](#p-readme)
-   [Salesforce B2C Commerce (SFRA and PWA Kit / Composable Storefront)recipe](#p-salesforce-commerce-cloud)
-   [Adobe Commerce and Magento Open Sourcerecipe](#p-adobe-commerce)

Last reviewed 2026-11-05. AgentReady v2.0, read 2026-11-04.
