fix(seo): make the edge-injected AI-crawler block loud instead of silent (#82) - #83
Open
eaitbrahim wants to merge 1 commit into
Open
fix(seo): make the edge-injected AI-crawler block loud instead of silent (#82)#83eaitbrahim wants to merge 1 commit into
eaitbrahim wants to merge 1 commit into
Conversation
…ent (#82) public/robots.txt allows everything; the served robots.txt does not. Cloudflare prepends a managed block at the edge disallowing nine AI crawlers — ClaudeBot, GPTBot, CCBot, Google-Extended and five more — plus Content-Signal ai-train=no. Roadmap 1.5 requires the opposite, and because nothing in this repo is wrong, nothing in this repo could catch it. The block itself is a zone-level dashboard setting and cannot be fixed from here. What this commit fixes is the silence: - scripts/check-ai-crawlers.mjs parses the LIVE robots.txt and exits non-zero when a watched answer-engine crawler is disallowed from / - an "AI crawler access" workflow runs it daily; kept out of ci.yml on purpose, since it tests production and the remedy is not a code change - DEPLOYMENT.md gains the dashboard procedure; roadmap 1.5 records the blocker and swaps its falsifiability check for the script Verified against production (fails, 9 crawlers) and against a permissive robots.txt (passes). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01STvEejFVZBywHPFsppjp2U
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Refs #82.
What this does — and what it deliberately does not
The block itself is not fixable from this repo.
public/robots.txtis already correct; Cloudflare prepends theDisallowrules at the edge, and an origin cannot override an edge-injected block. Flipping it is a zone-level dashboard action (documented below, still to be done by hand).What this PR fixes is the silence. Nine AI crawlers have been disallowed on production while every check in this repo stayed green, because nothing here was wrong.
Changes
scripts/check-ai-crawlers.mjsrobots.txt(RFC 9309 group semantics) and exits non-zero when a watched answer-engine crawler is disallowed from/. Also flags a blanketUser-agent: *block and echoes anyContent-Signal..github/workflows/ai-crawler-check.ymlpackage.jsonnpm run check:ai-crawlersdocs/DEPLOYMENT.mddocs/seo/IMPLEMENTATION-ROADMAP.mdllms.txtshipped, records the blocker, and swaps its falsifiability check to the script.Why it is not in
ci.ymlIt tests production, not the pull request, and the remedy is a dashboard toggle rather than a code change. Wiring it into CI would block merges on something no contributor can fix in a branch. It runs daily instead, so the regression stays visible until the zone setting is corrected.
This workflow will be red until the Cloudflare setting is flipped. That is the intended behaviour, not a broken build.
Verification
Against production — correctly fails:
Against a permissive
robots.txt— correctly passes:Unreachable origin exits 1 with a distinct message.
PerplexityBotandOAI-SearchBotare watched but absent from the served file, so they correctly fall through toUser-agent: * Allow: /and do not trip the check.Still to do by hand
Cloudflare dashboard →
keeltrading.comzone → the AI crawler control that mentions managedrobots.txt/ content signals (shipped as AI Crawl Control, previously AI Audit / "Block AI bots"). Turning it off closes #82 and turns this workflow green.🤖 Generated with Claude Code
https://claude.ai/code/session_01STvEejFVZBywHPFsppjp2U