agentspeed.

channel4.com

r2026.11.0sha fd2d068us-eastscan 1f6a16d8checked 2026-08-25 02:18 UTC
Compare this site →Simulate an agent task →

Publicly-generated scan via agentspeed.com. Not affiliated with channel4.com.

channel4.com is weakly ready for AI agents (composite 66, grade D). Strongest sub-score: performance (80). Weakest: structured data (33). The most actionable gaps detected: a robots.txt that disallows AI crawlers, missing JSON-LD, and no markdown content negotiation.

Agent preview

What an AI agent fetching this site today is likely to understand. Each row is backed by a real signal that ran on this scan, or labels itself “not detected”. We never invent values.

confidence · 3/5 fields resolvedmedium
D
grade66/100
8 findings · 2 critical · 6 medium
discoverability77
readability75
structured_data33
actionability57
performance80

Based on 37 checks · 26 deterministic · 10 heuristic · 1 model-assisted. see /rubric.

Governance & crawler policy

How channel4.com declares its policy toward AI agents and crawlers. These rows are a presentation view over checks already counted under Discoverability and Readability, so they don’t add to the composite a second time.

Has robots.txtrobots_txt.presentpass
Allows well-known agentsrobots_txt.allows_known_agentsfail
Declares Content-Signalrobots_txt.content_signalsfail
Supports Web Bot Authdiscoverability.web_bot_authskip
Cookie consent does not block contentauth.cookie_consent_blocks_contentpass
Crawler access
robots.txt-derived snapshotfail

robots.txt blocks one or more major AI agents. Citations from those agents will skip this site.

For a live UA-by-UA fetch matrix (status, redirects, content similarity, cloaking detection across GPTBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Google-Extended, Googlebot, Bingbot, CCBot, and a default browser), run the matrix tool against this domain.

Run live crawler matrix →Fix robots.txt →
Top fixes (8)

Findings grouped by severity. Critical and high-severity items move the composite the most; medium and low items are quality improvements. Each finding links to a full remediation page.

Critical2
weight 2

3 access agent(s) blocked: ChatGPT-User, OAI-SearchBot, PerplexityBot.

weight 2

Page text too sparse to probe; agent has nothing to read.

Medium6

Browser pass unavailable; HTML looks like a JS-shell (e.g.

weight 2

No JSON-LD blocks found.

A Link: header is present but carries none of canonical/alternate/describedby, the relations agents consume.

robots.txt advertises Content-Signal directives (e.g. `Content-Signal: ai-train=no, ai-summarize=yes`) that let agents respect granular usage preferences.

Requests with `Accept: text/markdown` return a markdown representation of the page (Markdown content negotiation).

weight 0

Visible text makes up at least 15% of the rendered DOM weight.

Beyond the scan

Running AI agents of your own? AgentSpeed also monitors them in production: every run, its latency, cost, and failures, with alerts when something breaks. Free for 10,000 events a month, no credit card.

Start watching free →How it works

first scan. History starts after the next scan.

Top findings (8)
critical
Failing: robots_txt.allows_known_agents
robots_txt.allows_known_agents
expand ›
What we looked for

robots.txt does not disallow answer-time AI access agents (ChatGPT-User, OAI-SearchBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, YouBot, Amazonbot). Training-data crawler blocks (GPTBot, CCBot, Google-Extended, …) are reported as informational and never fail the check.

Fix this issue
Generated fixreplace filehttps://channel4.com/robots.txt

Your current /robots.txt disallows these AI agents: ChatGPT-User, OAI-SearchBot, PerplexityBot. Replace your robots.txt with the version below to explicitly allow them while keeping any custom rules you've added below the wildcard block.

# robots.txt for channel4.com
# Explicitly allow well-known AI agents that were previously blocked.
# Adjust or remove specific agents as your policy requires.

User-agent: *
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

Sitemap: https://channel4.com/sitemap.xml
save as https://channel4.com/robots.txt
  • This snippet replaces your existing robots.txt. Merge any custom Disallow rules you have today below the wildcard block.
  • Cloudflare and a few CDNs cache robots.txt aggressively, so purge the cache after deploy to confirm AI agents see the change.
What we found
{
  "blocked": [
    "ChatGPT-User",
    "OAI-SearchBot",
    "PerplexityBot"
  ],
  "declaredMarkets": [],
  "regionalBlocked": [],
  "trainingBlocked": [
    "GPTBot",
    "ClaudeBot",
    "anthropic-ai",
    "Google-Extended",
    "Applebot-Extended",
    "Bytespider",
    "CCBot",
    "cohere-ai",
    "Meta-ExternalAgent"
  ]
}
Remediation

3 access agent(s) blocked: ChatGPT-User, OAI-SearchBot, PerplexityBot. These keep your site out of AI answers. 9 training-data crawler(s) blocked (GPTBot, ClaudeBot, anthropic-ai, Google-Extended, Applebot-Extended, Bytespider, CCBot, cohere-ai, Meta-ExternalAgent), a licensing choice, not scored.

full remediation →
See the spechttps://datatracker.ietf.org/doc/html/rfc9309
Cite this findingagentspeed.com/score/channel4.com/scan/1f6a16d8-dfdf-43b3-84f7-29d69d7ea0de#robots_txt.allows_known_agents
critical
Failing: journey.primary_probe
journey.primary_probe
expand ›
What we looked for

A read-only LLM-driven probe can identify the primary offering and either its price or its primary call-to-action.

What we found
{}
Remediation

Page text too sparse to probe; agent has nothing to read.

full remediation →
Cite this findingagentspeed.com/score/channel4.com/scan/1f6a16d8-dfdf-43b3-84f7-29d69d7ea0de#journey.primary_probe
medium
Failing: robots_txt.content_signals
robots_txt.content_signals
expand ›
What we looked for

robots.txt advertises Content-Signal directives (e.g. `Content-Signal: ai-train=no, ai-summarize=yes`) that let agents respect granular usage preferences.

What we found
{}
Remediation

No Content-Signal directives. Add e.g. Content-Signal: ai-train=no, ai-summarize=yes to declare granular AI usage policy beyond binary allow/disallow.

full remediation →
See the spechttps://contentsignals.org
Cite this findingagentspeed.com/score/channel4.com/scan/1f6a16d8-dfdf-43b3-84f7-29d69d7ea0de#robots_txt.content_signals
medium
Warning: discoverability.link_headers
discoverability.link_headers
expand ›
What we looked for

HTTP `Link:` response headers carry useful relations (canonical, alternate, describedby) that agents consume without parsing HTML.

What we found
{}
Remediation

A Link: header is present but carries none of canonical/alternate/describedby, the relations agents consume.

full remediation →
See the spechttps://datatracker.ietf.org/doc/html/rfc8288
Cite this findingagentspeed.com/score/channel4.com/scan/1f6a16d8-dfdf-43b3-84f7-29d69d7ea0de#discoverability.link_headers
medium
Failing: readability.markdown_negotiation
readability.markdown_negotiation
expand ›
What we looked for

Requests with `Accept: text/markdown` return a markdown representation of the page (Markdown content negotiation).

What we found
{
  "status": 200
}
Remediation

Accept: text/markdown returns HTML, not markdown. Serve a markdown variant of primary content when requested; agents summarize and cite it more reliably.

full remediation →
See the spechttps://www.rfc-editor.org/rfc/rfc7763.html
Cite this findingagentspeed.com/score/channel4.com/scan/1f6a16d8-dfdf-43b3-84f7-29d69d7ea0de#readability.markdown_negotiation
medium
Failing: content.text_ratio
content.text_ratio
expand ›
What we looked for

Visible text makes up at least 15% of the rendered DOM weight.

What we found
{
  "ratio": 0.0006432706740047173,
  "htmlBytes": 13991,
  "textBytes": 9,
  "styleBytes": 0,
  "markupBytes": 2143,
  "scriptBytes": 11839
}
Remediation

Visible text is 0.1% of HTML weight (9/13991 bytes). 85% of the document is inline script, 15% is markup.

full remediation →
Cite this findingagentspeed.com/score/channel4.com/scan/1f6a16d8-dfdf-43b3-84f7-29d69d7ea0de#content.text_ratio
medium
Warning: content.js_required_for_primary_content
content.js_required_for_primary_content
expand ›
What we looked for

Primary content is visible without JavaScript.

What we found
{}
Remediation

Browser pass unavailable; HTML looks like a JS-shell (e.g. #__next / #root). Likely JS-dependent.

full remediation →
Cite this findingagentspeed.com/score/channel4.com/scan/1f6a16d8-dfdf-43b3-84f7-29d69d7ea0de#content.js_required_for_primary_content
medium
Failing: structured_data.jsonld_present
structured_data.jsonld_present
expand ›
What we looked for

At least one valid JSON-LD block is present.

Fix this issue
Generated fixinline snippet<head>

AgentSpeed didn't find any JSON-LD on the page. JSON-LD is the most agent-readable structured-data format, and schema.org Organization is the right starting block for a homepage; product, blog, and FAQ pages should add their own per-page types alongside it.

<!-- Place inside <head>. Replace placeholder values with real data. -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Channel4",
  "url": "https://channel4.com",
  "logo": "https://channel4.com/logo.png",
  "sameAs": [
    "https://twitter.com/<your-handle>",
    "https://www.linkedin.com/company/<your-company>"
  ]
}
</script>
paste inside <head>
  • Validate with Google Rich Results test before deploying.
  • For product pages add `Product`; for blog posts add `Article` or `BlogPosting`; for FAQs add `FAQPage`.
  • Multiple <script type="application/ld+json"> blocks per page are fine and recommended over deeply-nested mixed types.
What we found
{}
Remediation

No JSON-LD blocks found. Add a <script type="application/ld+json"> with a schema.org type for this page.

full remediation →
See the spechttps://schema.org
Cite this findingagentspeed.com/score/channel4.com/scan/1f6a16d8-dfdf-43b3-84f7-29d69d7ea0de#structured_data.jsonld_present
Checks (37)
Every check that ran. Switch to ELI5 for plain-language explanations.
checkstatusweightduration
actionability.web_mcpfail1.000ms
content.text_ratiomin text ratio = 15%fail1.000ms
journey.primary_probemodel-assistedfail2.000ms
readability.markdown_negotiationfail1.000ms
robots_txt.allows_known_agentsfail2.001ms
robots_txt.content_signalsfail1.000ms
structured_data.jsonld_presentfail2.000ms
content.js_required_for_primary_contentdetector = no-JS visibility heuristicwarn2.000ms
discoverability.link_headerswarn1.001ms
performance.ttfb_msthreshold = 800mswarn1.000ms
actionability.agent_skillsskip1.000ms
actionability.commerce_protocolsskip1.000ms
coherence.jsonld_name_matches_visibleskip1.000ms
coherence.jsonld_price_matches_visibleskip2.000ms
coherence.language_declared_matches_contentdetector = stopword/script profile, >=40 words, WARN-onlyskip1.000ms
discoverability.api_catalogskip1.000ms
discoverability.mcp_server_cardskip1.000ms
discoverability.oauth_authorization_serverskip1.000ms
discoverability.oauth_protected_resourceskip1.000ms
discoverability.web_bot_authskip1.000ms
operability.filters_addressableskip2.001ms
operability.primary_action_in_domskip2.001ms
performance.full_render_msthreshold = 4sskip1.000ms
structured_data.validatesskip2.000ms
auth.cookie_consent_blocks_contentdetector = consent overlay heuristicpass2.002ms
auth.paywall_or_login_wall_on_landingdetector = paywall/login-wall heuristicpass2.001ms
content.headings_hierarchyrule = single H1, no skipped levelspass1.002ms
llms_txt.presentpass0.000ms
markup.canonicalpass2.002ms
markup.languagepass1.000ms
markup.meta_descriptionpass2.001ms
markup.titlepass2.001ms
performance.payload_kbthreshold = 3MBpass1.000ms
reachability.statuspass2.000ms
robots_txt.presentpass1.000ms
sitemap.presentpass2.000ms
structured_data.type_coveragematch = type-to-purpose inferencepass1.000ms

Sorted failures first. Every row was produced by the scan on 2026-08-25 02:18 UTC. Each check is defined in /rubric §6.

Reproduce this scan

This scan is content-addressable. Download the JSON and confirm that the composite matches score(rubric, checks) for the referenced rubric. Re-running the command below executes against the current rubric; scores agree within ±1 point unless the target site changed.

↓ Download scan.json→ View rubric
rubricr2026.11.0
rubric shafd2d068
regionus-east
user-agentAgentSpeedBot/1.0
viewport1280x800
finished2026-08-25T02:18:12Z
POST /api/scans: run a fresh scan
curl -sS -X POST https://agentspeed.com/api/scans \
  -H 'content-type: application/json' \
  -d '{"url": "https://channel4.com"}'
Download this scan: scan.json (cache-forever, immutable). Includes per-check raw values, rubric sha, and the full finding list with remediation.
What AgentSpeed scanned

What AgentSpeed scanned

Every scan is based on public website behaviour, fetched from a public client, no auth, no plugins, no private data. The nine signals below are what AgentSpeed reads about your site.

Embed an AgentSpeed badge

Show your AgentSpeed score in your README, footer, or sales deck. Four variants below; each is a static SVG served from /badge/<your-domain> with no JS, no tracking, no API calls. Documentation: /docs/badge.

Dark220×32

Default. Brand mark + grade + score on a dark base. Pairs well with most footers and READMEs.

AgentSpeed D 66/100
HTML snippet
<a href="https://agentspeed.com/score/channel4.com" target="_blank" rel="noopener">
  <img src="https://agentspeed.com/badge/channel4.com?variant=dark" alt="AgentSpeed grade D for channel4.com" width="220" height="32" />
</a>
Markdown snippet
[![AgentSpeed grade D for channel4.com](https://agentspeed.com/badge/channel4.com?variant=dark)](https://agentspeed.com/score/channel4.com)
Light220×32

Same dimensions as the dark variant; light background with dark text. For light-mode docs and pages.

AgentSpeed D 66/100
HTML snippet
<a href="https://agentspeed.com/score/channel4.com" target="_blank" rel="noopener">
  <img src="https://agentspeed.com/badge/channel4.com?variant=light" alt="AgentSpeed grade D for channel4.com" width="220" height="32" />
</a>
Markdown snippet
[![AgentSpeed grade D for channel4.com](https://agentspeed.com/badge/channel4.com?variant=light)](https://agentspeed.com/score/channel4.com)
Compact130×32

Brand mark + grade only. Use when you have horizontal space constraints.

AgentSpeed D
HTML snippet
<a href="https://agentspeed.com/score/channel4.com" target="_blank" rel="noopener">
  <img src="https://agentspeed.com/badge/channel4.com?variant=compact" alt="AgentSpeed grade D for channel4.com" width="130" height="32" />
</a>
Markdown snippet
[![AgentSpeed grade D for channel4.com](https://agentspeed.com/badge/channel4.com?variant=compact)](https://agentspeed.com/score/channel4.com)
Score-only60×32

Just the grade chip. Smallest variant, fits inline next to a heading or metric.

A·S D
HTML snippet
<a href="https://agentspeed.com/score/channel4.com" target="_blank" rel="noopener">
  <img src="https://agentspeed.com/badge/channel4.com?variant=score-only" alt="AgentSpeed grade D for channel4.com" width="60" height="32" />
</a>
Markdown snippet
[![AgentSpeed grade D for channel4.com](https://agentspeed.com/badge/channel4.com?variant=score-only)](https://agentspeed.com/score/channel4.com)
Certified250×32

Shows your certification tier while your certificate is valid; falls back to the score badge when it is not.

AgentSpeed D 66/100
HTML snippet
<a href="https://agentspeed.com/score/channel4.com" target="_blank" rel="noopener">
  <img src="https://agentspeed.com/badge/channel4.com?variant=certified" alt="AgentSpeed grade D for channel4.com" width="250" height="32" />
</a>
Markdown snippet
[![AgentSpeed grade D for channel4.com](https://agentspeed.com/badge/channel4.com?variant=certified)](https://agentspeed.com/score/channel4.com)
FAQ
What does this AgentSpeed score mean?expand ›

The composite is a 0–100 weighted average of five sub-scores measuring how well a website performs for AI agents (ChatGPT, Claude, Perplexity, Operator, etc.). The full rubric (every check, weight, and grade band) is published at /rubric.

Is this an official score from the website owner?expand ›

No. AgentSpeed scores are publicly generated against channel4.com's public surfaces (robots.txt, sitemap, the landing URL, /llms.txt, /.well-known/* discovery endpoints). AgentSpeed is not affiliated with or endorsed by channel4.com. The score reflects what we observed at scan time, nothing more.

How often is this site scanned?expand ›

Public scans happen when someone submits the URL on the homepage. Once a domain is claimed in the (forthcoming) monitoring tier, the site is rescanned daily and a history is kept. For now, every public score reflects the most recent submission.

How can this score be improved?expand ›

Each failing check on the page expands to a remediation step with the exact change to make. The "Top fixes" section ranks them by score impact. Most domains move 5–10 points by adding an llms.txt, allowing well-known agent user-agents in robots.txt, and emitting JSON-LD that matches the page purpose.

What rubric version was used?expand ›

This scan was computed against rubric r2026.11.0. The rubric is versioned and immutable: historical scans always render against the rubric they were computed on, even after a new version ships. The current rubric and its full changelog are at /rubric.