ai-visibility
Whether AI assistants can fetch and read your pages, and the several things people get wrong about the controls.
Save as .claude/skills/ai-visibility/SKILL.md in a repository, or under ~/.claude/skills/ai-visibility/SKILL.md to have it everywhere. The copy button takes the whole file, frontmatter included.
---
name: ai-visibility
description: Audit whether AI assistants and AI search crawlers can read a site, and whether its content is usable once fetched. Use when asked about GPTBot, ClaudeBot, PerplexityBot, AI crawlers, llms.txt, blocking AI training, appearing in AI search results, or why an assistant cannot read a page.
---
# AI visibility audit
Fetch the real files before concluding anything. Never describe a site's
robots.txt from memory or from how similar sites are configured.
## Requires
The toolhq MCP server, for `http_headers` and `dns_lookup`:
claude mcp add --transport http toolhq https://toolhq.io/api/mcp
## 1. Separate the two questions
People conflate these and the answers differ:
- **Can a crawler fetch the page.** Governed by robots.txt, response status,
authentication and blocking at the edge.
- **Can the fetched page be understood.** Governed by whether the content is in
the HTML or requires JavaScript.
Establish which the user is actually asking about. A site can be fully allowed
and still unreadable, and that is the more common fault.
## 2. Fetch robots.txt
Get `https://<domain>/robots.txt` and read the real contents.
Record, per user agent token, whether it is allowed or disallowed. Matching is
on the token and is case insensitive, and a `User-agent: *` block applies only
where no more specific block matches that crawler.
Check these tokens specifically:
| Token | Operator | What it governs |
| --- | --- | --- |
| `GPTBot` | OpenAI | Crawling for training |
| `OAI-SearchBot` | OpenAI | Indexing for ChatGPT search |
| `ChatGPT-User` | OpenAI | Fetches made when a user asks |
| `ClaudeBot` | Anthropic | Crawling |
| `PerplexityBot` | Perplexity | Indexing |
| `Google-Extended` | Google | Gemini and Vertex AI training |
| `Bingbot` | Microsoft | The Bing index, which feeds Copilot |
| `CCBot` | Common Crawl | A corpus many models train on |
| `Applebot-Extended` | Apple | Apple Intelligence training |
## 3. State these correctly
These are the points most often got wrong. Do not restate the common
misconceptions.
- **`Google-Extended` is not a crawler.** It is a robots.txt token controlling
whether content already crawled by Google is used for Gemini and Vertex AI
training. Disallowing it does not remove the site from Google Search and does
not stop Googlebot.
- **Blocking Bingbot affects Microsoft Copilot**, because Copilot draws on the
Bing index. People block Bingbot for crawl budget reasons and are surprised.
- **User initiated fetchers are separate from training crawlers.**
`ChatGPT-User` is the fetch made when a person pastes a link. Blocking it
means a user who explicitly asks about the page gets nothing, which is
usually not the intent.
- **robots.txt is voluntary.** It is a request. Well behaved crawlers honour
it. If the requirement is enforcement, the answer is blocking at the edge by
user agent and address, not a robots.txt line.
- **`llms.txt` is a proposal, not a standard.** No major search engine has
committed to reading it. It is harmless to publish and must not be presented
as something that affects ranking or inclusion.
## 4. Is the content actually readable
Fetch the page and check whether the main text is in the returned HTML.
Most crawlers do not execute JavaScript. A page that renders its content client
side returns an empty shell, so the site is allowed, reachable and invisible.
This is the most common real cause of an assistant being unable to read a page.
Also check:
- The response status on the canonical URL, after redirects.
- Whether a redirect chain ends where it should. More than two hops is worth
reporting.
- Whether the page requires cookies or a session to show content.
## Report back
1. Allowed or blocked, per crawler, from the real file.
2. Whether the content survives without JavaScript.
3. Anything that contradicts what the user believed, stated plainly.
4. Changes to make, separating "stops crawling" from "stops training use",
because people routinely ask for one and mean the other.what it needs
This one looks things up rather than describing them, so it needs live checks. Instructions cannot reach the network on their own, and a skill running through the Claude API has no network access at all. Add the toolhq MCP server and these become real: http_headers, dns_lookup.
the instructions, in full
AI visibility audit
Fetch the real files before concluding anything. Never describe a site's robots.txt from memory or from how similar sites are configured.
Requires
The toolhq MCP server, for http_headers and dns_lookup:
claude mcp add --transport http toolhq https://toolhq.io/api/mcp
1. Separate the two questions
People conflate these and the answers differ:
- Can a crawler fetch the page. Governed by robots.txt, response status, authentication and blocking at the edge.
- Can the fetched page be understood. Governed by whether the content is in the HTML or requires JavaScript.
Establish which the user is actually asking about. A site can be fully allowed and still unreadable, and that is the more common fault.
2. Fetch robots.txt
Get https://<domain>/robots.txt and read the real contents.
Record, per user agent token, whether it is allowed or disallowed. Matching is
on the token and is case insensitive, and a User-agent: * block applies only
where no more specific block matches that crawler.
Check these tokens specifically:
| Token | Operator | What it governs |
|---|---|---|
GPTBot | OpenAI | Crawling for training |
OAI-SearchBot | OpenAI | Indexing for ChatGPT search |
ChatGPT-User | OpenAI | Fetches made when a user asks |
ClaudeBot | Anthropic | Crawling |
PerplexityBot | Perplexity | Indexing |
Google-Extended | Gemini and Vertex AI training | |
Bingbot | Microsoft | The Bing index, which feeds Copilot |
CCBot | Common Crawl | A corpus many models train on |
Applebot-Extended | Apple | Apple Intelligence training |
3. State these correctly
These are the points most often got wrong. Do not restate the common misconceptions.
Google-Extendedis not a crawler. It is a robots.txt token controlling whether content already crawled by Google is used for Gemini and Vertex AI training. Disallowing it does not remove the site from Google Search and does not stop Googlebot.- Blocking Bingbot affects Microsoft Copilot, because Copilot draws on the Bing index. People block Bingbot for crawl budget reasons and are surprised.
- User initiated fetchers are separate from training crawlers.
ChatGPT-Useris the fetch made when a person pastes a link. Blocking it means a user who explicitly asks about the page gets nothing, which is usually not the intent. - robots.txt is voluntary. It is a request. Well behaved crawlers honour it. If the requirement is enforcement, the answer is blocking at the edge by user agent and address, not a robots.txt line.
llms.txtis a proposal, not a standard. No major search engine has committed to reading it. It is harmless to publish and must not be presented as something that affects ranking or inclusion.
4. Is the content actually readable
Fetch the page and check whether the main text is in the returned HTML.
Most crawlers do not execute JavaScript. A page that renders its content client side returns an empty shell, so the site is allowed, reachable and invisible. This is the most common real cause of an assistant being unable to read a page.
Also check:
- The response status on the canonical URL, after redirects.
- Whether a redirect chain ends where it should. More than two hops is worth reporting.
- Whether the page requires cookies or a session to show content.
Report back
- Allowed or blocked, per crawler, from the real file.
- Whether the content survives without JavaScript.
- Anything that contradicts what the user believed, stated plainly.
- Changes to make, separating "stops crawling" from "stops training use", because people routinely ask for one and mean the other.
check its answers by hand
A skill that reasons well about wrong data is still wrong. For the first few cases, run the same question through a tool that cannot be mistaken.
See whether GPTBot, ClaudeBot, PerplexityBot, Google-Extended, and other AI crawlers are allowed by a site’s robots.txt.
Open the toolFetch a URL from the server, follow redirects, and inspect response and security headers.
Open the toolFollow every redirect hop with status, timing, HSTS, and cookies, and see what is wrong with the chain.
Open the toolwhy it is written this way
A SKILL.md for auditing whether AI assistants can read your site: which crawlers to check, what robots.txt controls, and the claims not to make.
An agent skill for AI crawler and visibility checks