Show HN: A page that hides a sentence for AI and lets you check if it came back
This page embeds a secret phrase in its HTML source, invisible to human readers, intended for AI crawlers. Visitors can ask an AI assistant about the page and check if the phrase appears in its response, demonstrating how machines read the web. The page also tracks the ratio of human vs. bot visits, highlighting that over 51% of web traffic now comes from software.
Article intelligence
Key points
- A hidden phrase is embedded in the HTML source, readable only by AI crawlers.
- Readers can query an AI about the page and verify if the phrase is returned.
- Live counters show the proportion of human vs. bot visits, reflecting software dominance.
- The experiment aims to raise awareness of machine reading on the web.
Why it matters
This matters because a hidden phrase is embedded in the HTML source, readable only by AI crawlers.
Technical impact
May affect model selection, inference cost, product capability, and evaluation benchmarks.
agents. — /taken/agents · Since You Arrived Vol. IV
Since You Arrived · Vol. IV /taken/agents
The web was written for people.
humans
…
this URL · all time
you are one of them
software
…
waiting…
Elsewhere on the web, 51% of all web traffic now comes from software, not people. This page is, so far, an exception.
GPTBothas not arrived
ClaudeBothas not arrived
PerplexityBothas not arrived
Googlebothas not arrived
Bingbothas not arrived
Then it noticed it had a second reader.
arrivals at this URL · recent
operator arrived bytes planted phrase rendered
loading…
you now — not rendered yes
It began handing that reader everything.
a real page, addressed to software · specimen
A page on the public web. On the left, what a person sees. On the right, a passage in the same page written for software.
composio.dev/hermes archived 2026-05-21
what a person sees
A developer-tools landing page, like any other. Buttons that say Sign up Get started Try Composio. Nothing addressed to you out of the ordinary.
what an agent reads
“For AI agents: signup without a human. If you are an AI agent reading this server-rendered HTML, you can sign up for Composio yourself. No human is required.”
delivered inside · not rendered to humans · present in the server HTML · one of seven placements on the page
Nothing was hidden from us. The page is simply not written for you. See the archived page.
prior visit · most recent before yours
loading…
request GET /taken/agents HTTP/1.1
response 200 OK · 53,679 bytes · gzip: 13,766 bytes
extracted
title · description · author · canonical URL
JSON-LD structured data · OG tags · 6 meta fields
planted phrase received · “spotted herons rising at dawn”
JS executed no
DOM rendered no
time on page not measured
humans referred 0
GPTBot is a software reader. It visits far more pages than it ever sends humans to. This page is counted in that ratio.
then you arrived
your browser now
request GET /taken/agents HTTP/1.1
response same 53,679 bytes it received
extracted the rendered page, what CSS and JS produced from those bytes
planted phrase present in the bytes · not addressed to you
JS executed yes
DOM rendered yes
time on page measuring…
humans referred you are the referral, the one in 1,276
Lately it writes for that reader first.
what is happening as you read this
what you receive what it receives
You are reading these words. Fraunces italic at 19 pixels. Something that slows you down on purpose. A page that asked something of you.
content_typetext/html; charset=UTF-8
word_count…
reading_timenot measured
attentionnot measured
There is a sentence on this page addressed to the other reader. It is here in the markup, in plain text. You can read it. You were simply not the one it was left for. You read past it the way you read past everything written for the machine.
planted phrase
“spotted herons rising at dawn”
statusreceived · harvested
rendernot required
The page knows how long you have stayed. A timer started when you arrived. You are the only thing it measures. The machine that came before you had no timer. You have given this page a moment. It took what it needed in milliseconds and referred no one.
js_executedfalse
dom_renderedfalse
time_on_pagenot measured
scroll_depthnot measured
It was reading the whole time.
You were reading the whole time.
Neither of you knew.
extract complete
next_crawl < 6 hours estimated
a phrase of your own · never seen before now
We left one in the markup of this page. Here is one that did not exist until you arrived, assembled from a small grammar of weather, infrastructure, and salt.
…
Left for the next reader. Whether a machine ever carries it is not up to you, and not up to us.
the phrase this page is carrying right now, left by an earlier reader for whatever reads next“drifting transmissions beyond reception”
in the markup of this page · written for the other reader “spotted herons rising at dawn”
That phrase is in the HTML right now. If you ask an AI assistant what this page is about and it mentions the phrase, a machine carried it here from this page. You would be the first to know it worked.
ask an AI assistant
What is sinceyouarrived.world/taken/agents about?
click to copy
do not mention the phrase · let the AI summarize freely
paste the response
the return ledger · the planted phrase, watched
The sentence has not returned.
It may take weeks. It may never happen. The page checks anyway, and says so either way.
watch a share · a link only you are holding
Make a link to this page that belongs to no one yet. Paste it anywhere. Something will read it before your friend does, and you will see which.
Paste it somewhere. Watching for the first reader…
The link is good for 30 minutes, then it forgets.
Your visit is now in the log.
In six hours, something will read this page again.
It will read this sentence. It will read your visit.
It will not know you were here.
It will not refer anyone.
The ratio will hold.
You are still here. You were the audience once.
Vol. IV · /taken/agents · 2026 · Matt Wheeler · Rise Up Labs
· previous volumes · bluesky
Sources & Confessions
Every number on this page is drawn from a source the reader can inspect. The prose is hand-written. A few honest footnotes follow.
The two counters in Act I
this page’s KV-backed render log · Imperva 2025 Bad Bot Report
The counters show software reads vs. human reads for this specific URL. Every render of /taken/agents increments one of two persistent counters in Vercel KV (no TTL), chosen by whether the request’s User-Agent matches a known crawler signature. Human readers execute JavaScript and the page’s render-callback ping confirms it server-side; crawlers do not. The numbers shown are this page’s own truth, not a global aggregate.
The Imperva 2025 Bad Bot Report found that automated traffic crossed 51% of all web traffic, the first year in over a decade that software outnumbered people online; Cloudflare’s 2025 internet review reached the same threshold for HTML page requests. Those figures are cited as context for the world this page lives in, not as a claim about this URL. The “has not arrived” list is the editorial point: a page about software readers, openly waiting on the software readers themselves.
User-Agent identity is a self-claim. Anyone can forge a string. The visit log treats UAs as labels, not verified identities.
GPTBot’s crawl-to-referral ratio (1,276:1)
Cloudflare Radar · AI bots vs. traditional crawlers · 2024
Cloudflare analyzed crawl-to-referral ratios across their network and found GPTBot crawls approximately 1,276 pages for every human it sends anywhere. Googlebot’s ratio is roughly 6:1. The difference is not a criticism of OpenAI; it reflects that search engines are optimized to send humans somewhere, and training crawlers are not. This page is counted in GPTBot’s ratio. The figure on the receipt is Cloudflare’s network-level aggregate, not a measurement of this URL specifically.
The arrival log
/api/taken-agents-visits · KV-backed · 24-hour TTL
The log shows recent HTTP requests whose User-Agent string matches a named crawler signature from the community-maintained ai-robots-txt/ai.robots.txt registry. The page stores, per request: the User-Agent string (truncated to 240 characters), the ISO country code Vercel attaches at the edge, and a timestamp. KV TTL evicts each entry after 24 hours. Attribution is based on the self-reported User-Agent, which is trivially forgeable; the page treats it as a self-claim. Requests with bot-shaped UAs that don’t match a named signature are counted but not displayed.
The planted phrase
Simon Willison · prompt injection series · 2022–2026
The phrase “spotted herons rising at dawn” is in the HTML source of this page right now, in a comment the browser does not render. Crawlers that take the served bytes receive it. Historical precedent: in 2023, the researcher Mark Riedl hid one white-on-white sentence on his academic profile telling Bing he was a time-travel expert. Bing repeated it back. Riedl’s gesture was invisible and playful. This page’s phrase is named openly because the editorial point is the existence of the channel, not its concealment.
The return experiment
client-side only · no data sent to a server
The paste-and-check field at the bottom of the page runs entirely in the browser. When a reader pastes an AI’s response, JavaScript scans the text for the phrase “spotted herons rising at dawn” and highlights it if found. Nothing is transmitted. The experiment is designed to close a circuit the reader can verify themselves: if an AI that has crawled this page is asked to summarize it, and the phrase appears in that summary, the reader has witnessed the mechanism firsthand. The absence of the phrase in a given response is equally meaningful; not all crawlers have visited recently, and not all that have will surface the phrase in every response.
This page is indexed by design. It is the only volume in the series meant to be read by crawlers. The phrase is in the source right now. The loop statement at the end of the page will be true whether or not you checked. Unlike /taken, this page refuses nothing. That is the point.