Skip to content
Barkhausen AI

DataBA-D-2026-08

Emerging AI-usage preference signals census 2026 (robots.txt signal layer)

One row per domain for the 1,381 domains whose robots.txt parsed cleanly in the crawler-access corpus BA-D-2026-01 (universities 398, news 429, e-commerce 303, government 251), recording the presence and value of four emerging AI-usage preference signals — Content-Signal, x-rsl, content-usage, license — the Cloudflare managed-robots.txt signature, the Server-header CDN fingerprint, two established directives (crawl-delay, sitemap), a comma-in-user-agent malformation flag, and the set of AI crawler tokens root-blocked in the same file.

Collection window: 2026-07-09 · License: CC-BY-4.0 · Published with BA-D-2026-08: Emerging AI-usage preference signals in robots.txt: a signal-layer census of 1,381 domains

Download

CC-BY-4.0 · cite as a dataset with the parent report.

Schema

ColumnTypeDescription
sectorstring (enum)The frame the domain belongs to: universities, news, ecommerce, or government. The frames are those of BA-D-2026-01; this dataset carries only the 1,381 rows whose robots.txt parsed cleanly.
domainstringThe registrable domain (eTLD+1) that was fetched, as listed in the sector frame; lowercased. The (sector, domain) key matches the crawler-access-2026 dataset row-for-row for these parsed domains.
content_signal_presentbooleanWhether a Content-Signal line was found by raw-text line scan in the domain's robots.txt. True for 42 of the 1,381 domains.
content_signal_value_rawstring or emptyThe literal Content-Signal value as it appears in the file (for example 'search=yes, ai-train=no, use=reference'), preserving the file's spacing and key order. Empty when content_signal_present is false.
content_signal_value_normstring or emptyThe Content-Signal value with whitespace removed (key order preserved as written), used for grouping identical values. Empty when content_signal_present is false. The 33 managed-default carriers all normalize to 'search=yes,ai-train=no,use=reference'.
content_signal_classstring (enum) or emptyAuthorship classification of the Content-Signal line: 'cdn-default' when the Cloudflare managed-robots.txt signature is present AND the normalized value equals 'search=yes,ai-train=no,use=reference' (33 domains), else 'hand-authored' (9 domains). Empty when content_signal_present is false.
x_rsl_presentbooleanWhether an x-rsl field was found by line scan. True for 7 domains (all news). Recorded as an observed raw field name, not validated against any specification.
content_usage_presentbooleanWhether a content-usage field was found by line scan. True for 3 domains (all e-commerce). Recorded as an observed raw field name, not validated against any specification.
license_presentbooleanWhether a license field was found by line scan. True for 3 domains (all news). Recorded as an observed raw field name, not validated against any specification.
cf_managed_signaturebooleanWhether the file carries a known Cloudflare managed-robots.txt comment signature (a managed-content marker in the file's comments). True for the 33 cdn-default carriers and false for the 9 hand-authored carriers; a component of content_signal_class, not a substitute for the CDN Server header.
cdn_fingerprintstring (enum)The Server response header mapped to one of cloudflare / akamai / other / none. Across the 1,381 parsed domains: cloudflare 288, akamai 8, other 786, none 299. The 'other' and 'none' buckets contain CDNs that do not self-identify in the Server header (e.g. cloudfront, varnish), so any CDN-penetration count read from this column is a lower bound.
server_header_rawstring or emptyThe raw, lower-cased Server response header value backing cdn_fingerprint (for example 'cloudflare', 'nginx', 'cloudfront'). Empty when the response carried no Server header (cdn_fingerprint 'none').
crawl_delay_presentbooleanWhether a crawl-delay directive was found by line scan. True for 228 domains. An established directive, included as context for the scale of the emerging signals; not an AI-usage preference.
sitemap_presentbooleanWhether a sitemap line was found by line scan. True for 914 domains. An established directive, included as context; not an AI-usage preference.
comma_in_ua_value_presentbooleanWhether a user-agent line contains a comma inside its value (for example 'User-agent: GPTBot, CCBot'), a construct a conformant RFC 9309 parser treats as a single unmatched token. True for 10 domains (all news). A malformation flag, not a preference signal.
ai_tokens_root_blockedstring (pipe-separated) or emptyThe set of AI crawler tokens whose root path ('/') is blocked by the same robots.txt, joined by '|' (for example 'CCBot|ClaudeBot|GPTBot'). Reused from the BA-D-2026-01 RFC 9309 evaluation. Empty when no AI token is root-blocked.
ai_tokens_root_blocked_countintegerThe number of AI crawler tokens root-blocked in the same file (the count of ai_tokens_root_blocked). 40 of the 42 Content-Signal carriers have a value of at least 1.

Known limitations

FAQ

Why only 1,381 rows and not 2,000?
An emerging signal is a line inside a robots.txt file, so the denominator is the domains that have a readable file: the 1,381 that BA-D-2026-01 classified 'parsed'. A domain with no file (no_robots_file) has nowhere to carry a signal, and a domain whose file could not be read (unparseable_blocked, fetch_error) has an unreadable file rather than an absent signal. Restricting to parsed files makes a false in a *_present field mean 'a readable file without this line'.
What is the difference between cf_managed_signature and content_signal_class = cdn-default?
cf_managed_signature is one of the two conditions for cdn-default. A carrier is classed cdn-default only when the managed signature is present AND the normalized Content-Signal value is the byte-identical managed default 'search=yes,ai-train=no,use=reference'. In this corpus the two conditions coincide on all 33 managed carriers, but they are recorded separately so a reader can apply either test independently.
Why is authorship not just cdn_fingerprint = cloudflare?
Because 41 of the 42 Content-Signal carriers sit behind that CDN by Server header, including 8 of the 9 hand-authored files. Splitting by the Server header would assign nearly every carrier to one bucket and reveal nothing about who wrote the line. The managed-comment signature plus the exact default value separates an injected default (33) from an operator-authored line (9); the Server header alone does not.
A domain shows a Content-Signal line but also root-blocks AI crawlers. Is that a contradiction?
No, and it is the common case: 40 of the 42 carriers also root-block at least one AI token (ai_tokens_root_blocked_count >= 1). A Content-Signal line expresses a purpose-based preference; a Disallow blocks a named crawler. In this corpus the two are layered in the same file far more often than a Content-Signal line appears alone.
What is the license, and how should this be cited?
The dataset is released under CC-BY-4.0. Cite the parent census BA-D-2026-08 and this datasheet, and state the collection date (2026-07-09), since the data is a single-day snapshot derived from the BA-D-2026-01 corpus.

Changelog

How to cite

Barkhausen AI (2026). Emerging AI-usage preference signals census 2026 (robots.txt signal layer) (dataset). https://barkhausen.ai/data/ai-usage-signals-2026/

BibTeX
@techreport{BA-D-2026-08,
  author       = {{Barkhausen AI}},
  title        = {Emerging AI-usage preference signals census 2026 (robots.txt signal layer) (dataset)},
  institution  = {Barkhausen AI},
  year         = {2026},
  url          = {https://barkhausen.ai/data/ai-usage-signals-2026/}
}

Published under the Creative Commons Attribution 4.0 International (CC-BY-4.0).