How to make your SaaS docs show up in ChatGPT and Claude
How to get your SaaS docs read and cited by ChatGPT and Claude: the six crawlers to allow, docs that load without JavaScript, llms.txt, .md copies, tests.
In this note11 sections
- In short
- How ChatGPT and Claude find your docs
- Step 1: let the right bots in
- Step 2: make every page readable without JavaScript
- Step 3: one page per question, answer first
- Step 4: publish llms.txt and Markdown copies
- Step 5: handle versions and canonical URLs
- Step 6: test with a fixed set of questions
- What doesn’t matter (for Google)
- FAQ
- Want your docs in AI answers?
To make your SaaS docs show up in ChatGPT and Claude, let the right crawlers in, make every docs page readable without JavaScript, and write one page per question with the answer and a working code sample at the top. Then publish an llms.txt and Markdown copies for the tools that use them, keep one canonical URL per page, and test with a fixed set of questions.
Neither OpenAI nor Anthropic publishes how it picks which pages to quote, so nobody can promise your docs will be used. What both publish is which crawlers they run and what each one does. That is the part you control, and it is where this guide starts.
In short
- OpenAI and Anthropic each run three agents: one to index for search, one that fetches a page when a user asks, and one that collects training data. Each is set separately in robots.txt (OpenAI, Anthropic).
- Blocking the training crawlers (GPTBot, ClaudeBot) does not block the search ones (OAI-SearchBot, Claude-SearchBot).
- Docs that only render in the browser are a risk. Google says “not all bots can run JavaScript” (Google).
- OpenAI, Anthropic and Perplexity publish llms.txt files for their own developer docs. Neither OpenAI nor Anthropic says llms.txt changes what ChatGPT or Claude cite.
- Google says llms.txt isn’t needed for Google Search, and neither is content split into small chunks. That is about Google Search only (Google).
- Test with the same questions every week and log which pages get used.
How ChatGPT and Claude find your docs
There are three separate ways your docs can end up in an answer, and each has its own crawler.
Search indexing. OpenAI says OAI-SearchBot “is used to surface websites in search results in ChatGPT’s search features”. Anthropic says Claude-SearchBot “navigates the web to improve search result quality for users”. If these can’t reach your docs, the search features have less to work with.
User fetches. When someone asks ChatGPT or Claude a question, it may visit a page to answer it. OpenAI uses ChatGPT-User for this and Anthropic uses Claude-User. These run when a user asks, not on a crawl schedule.
Training. GPTBot and ClaudeBot collect content that may be used to train future models. This is the slowest path and the one you have least control over, since you can’t see what a model learned.
For docs, the first two matter most. They decide whether ChatGPT and Claude can read today’s version of your docs while they answer, instead of whatever a model remembers.
Step 1: let the right bots in
Here are the six agents, from each vendor’s own page.
| Agent | Vendor | What it’s for | Follows robots.txt? |
|---|---|---|---|
| OAI-SearchBot | OpenAI | Surfacing sites in ChatGPT search | Yes |
| ChatGPT-User | OpenAI | Visiting a page when a user asks | OpenAI says robots.txt rules “may not apply” |
| GPTBot | OpenAI | Training data | Yes |
| Claude-SearchBot | Anthropic | Indexing to improve Claude’s search results | Yes |
| Claude-User | Anthropic | Visiting a page when a user asks | Yes |
| ClaudeBot | Anthropic | Training data | Yes |
Each setting is independent. OpenAI says a site can allow OAI-SearchBot and block GPTBot, and that it can take about 24 hours for a robots.txt change to show in its search results. Anthropic says disabling Claude-SearchBot or Claude-User “may reduce your site’s visibility”.
If your docs live on a subdomain like docs.example.com, it needs its own robots.txt. Anthropic’s page tells site owners to add their rules “for every subdomain” they want to opt out. The free AI crawler checker shows what a robots.txt allows for each agent, and AI crawlers in robots.txt covers the choices in more depth.
Check your firewall too. A CDN bot rule can block a crawler that robots.txt allows. OpenAI publishes IP lists for its agents (for example searchbot.json), and Anthropic publishes bots.json.
Step 2: make every page readable without JavaScript
Many docs sites render the text in the browser. A crawler that doesn’t run JavaScript sees an empty page. Google’s own guide says server-side or pre-rendering is “still a great idea” because “not all bots can run JavaScript”.
To test it, fetch a docs page with curl and search the raw HTML for a sentence from the page. If the sentence isn’t there, the page depends on JavaScript. Fix it with server rendering or static generation for docs pages. Our devtools page covers the docs setups we see most often.
Step 3: one page per question, answer first
When ChatGPT or Claude reads a page to answer a question, a page that answers that question in its first lines is easier to use than a long page where the answer sits halfway down.
- Give each task its own page: “Authenticate with an API key”, not “Getting started” with ten tasks inside.
- Put the answer in the first two or three sentences, then the detail.
- Include a working code sample that runs as written, with the imports and the real package name.
- Name the product, the version and the language, so the page still makes sense when quoted on its own.
- Keep the error messages people paste into chat as plain text on the page, with the fix next to them.
Step 4: publish llms.txt and Markdown copies
llms.txt is a proposed file at the root of your site that lists your key pages in Markdown for language models. The llmstxt.org proposal also suggests a clean Markdown copy of each page at the same URL with .md added.
The AI companies use this for their own docs. OpenAI’s crawler page says “Markdown versions of documentation pages are available by appending .md to the page URL”, and OpenAI, Anthropic and Perplexity each publish an llms.txt for their developer docs.
Be clear about what that shows. None of the three says ChatGPT, Claude or Perplexity uses llms.txt to decide what to cite. Publishing your own costs little, and it helps people who paste your docs into a chat or point a coding agent at them. You can draft one with the llms.txt generator.
Step 5: handle versions and canonical URLs
Docs often have the same page under v1, v2 and latest. If all of them are crawlable and look alike, a crawler may read the old one.
- Pick one URL per page as the current version, usually /latest or the unversioned path.
- Add a
rel="canonical"link from old versions to the current page where the content is the same. Google calls it “a strong signal” for which URL to show (Google). OpenAI and Anthropic don’t say whether their crawlers use it. - Put the version number in the page text, so a quoted answer says which version it applies to.
- Keep old versions online for users who need them, but link the current one first.
Step 6: test with a fixed set of questions
Write 20 to 30 questions your users ask, such as “how do I authenticate with the Acme API” or “Acme webhook retry policy”. Ask them in ChatGPT and Claude with web search on, every week, and log whether your docs are used and which page.
Answers change from run to run, so look at the trend across weeks. How to track AI visibility has the method and a template. Your server logs show the other half: requests from ChatGPT-User or Claude-User mean someone’s question just led to your docs.
What doesn’t matter (for Google)
Google’s AI optimization guide says you don’t need “new machine readable files, AI text files, markup, or Markdown to appear in Google Search (including its generative AI capabilities)”, and that an llms.txt file “will neither harm nor help your site’s visibility or rankings in Google Search”. It also says “there’s no requirement to break your content into tiny pieces”.
That is Google’s statement about Google Search, including AI Overviews. It doesn’t tell you what OpenAI or Anthropic do. For ChatGPT and Claude, the steps above are about access and clarity, and those help every engine.
FAQ
Do ChatGPT and Claude read llms.txt?
Neither OpenAI nor Anthropic says ChatGPT or Claude uses llms.txt to choose sources. Both publish llms.txt files for their own developer docs, and OpenAI also offers .md copies of its doc pages. Treat llms.txt as a cheap extra, not a fix.
If I block GPTBot or ClaudeBot, will my docs disappear from answers?
Not on their own. GPTBot and ClaudeBot are the training crawlers. Search and user fetches use OAI-SearchBot, ChatGPT-User, Claude-SearchBot and Claude-User, which you set separately. Block those and your docs can drop out of search answers.
What about docs behind a login?
A crawler sees what a logged-out visitor sees. If your docs need a login, ChatGPT and Claude can’t read them from the web. Many teams keep reference docs public and put account-specific pages behind the login.
Is an MCP server the same thing?
No. An MCP server lets an AI agent call your product or search your docs as a tool, once a user has connected it. It doesn’t make your docs show up in ChatGPT or Claude answers for people who haven’t. Agent discoverability covers that side.
Should docs live on a subdomain or a subfolder?
Both work. A subdomain needs its own robots.txt, firewall rules and sitemap, so it is easier to block a crawler there by mistake. A subfolder shares the main site’s rules, which makes one mistake affect both. Pick the one your team can keep in order.
How do I know if ChatGPT or Claude is reading my docs?
Check your server logs for the ChatGPT-User, OAI-SearchBot, Claude-User and Claude-SearchBot agents, and run your question set every week. Visits from chat answers can also show up as referrals in your analytics.
Want your docs in AI answers?
Ignura automates SEO and GEO, and you approve what goes out. Our devtools page covers docs-led products, technical SEO covers crawl access, and how we price it is on the pricing page.



