How to get your website to show up in ChatGPT
ChatGPT does not keep a private copy of the web. When it answers with sources, it has searched an index, read a few pages and quoted the ones that answered the question. Here is what has to be true for one of those pages to be yours, in the order it usually goes wrong.
Know which crawler you are dealing with
OpenAI runs three. OAI-SearchBot builds the index behind ChatGPT search. ChatGPT-User fetches a page on the spot when someone asks about it. GPTBot collects training data, and training does not give you citations. If your goal is to be found and linked, the one you care about is OAI-SearchBot. OpenAI also says ChatGPT search uses third-party search providers, which is generally understood to mean Bing, so being in Bing's index helps as well.
1. Let it in
Open yourdomain.com/robots.txt and look for those three names. A crawler follows the most specific group that names it. If nothing names it, the catch-all group (User-agent: *) applies. So a file that only mentions GPTBot, with a catch-all that disallows everything, blocks OAI-SearchBot too.
This is the most common way sites lose ChatGPT without noticing. In my September census of the top 5,000 sites, 2,778 had a robots.txt, 560 of those block GPTBot, and 258 of the 560 also block OAI-SearchBot. Nearly all of them were trying to opt out of training. They opted out of being cited at the same time. The full numbers per crawler are here.
If you want to be cited and not trained on, this does it:
User-agent: GPTBot Disallow: / User-agent: OAI-SearchBot Allow: / User-agent: * Allow: /
The explicit group for OAI-SearchBot is the point. Without it, the crawler falls into the catch-all and inherits whatever that says.
One more place to look: a firewall or bot-protection product in front of the site can refuse anything that is not a browser before robots.txt is ever read. If your logs never show OAI-SearchBot even though robots.txt allows it, that is where to look.
2. Send the words in the HTML
A crawler reads what your server sends. If that is an empty shell that fills in later with JavaScript, the crawler sees a blank page. OpenAI has not documented whether its crawlers run JavaScript, and pages that depend on it are the ones that go missing, so the safe assumption is that they do not.
In the census, 16% of 607 homepages sent under 250 characters of readable text, and another 5% sent under 800. Those sites are invisible to any tool that reads HTML, whatever their robots.txt says.
To check yours, view the page source (the raw source, not the inspector) and search for a sentence from the page. If it is not there, the page renders in the browser. Server-side rendering or a static build fixes it, and every major framework has a mode for it. The checker on the home page runs this test for you.
3. Answer the question on the page
When ChatGPT searches, it is trying to answer one specific question. The pages it quotes tend to state the answer directly, near the top, in plain sentences, with the concrete details that make it usable: numbers, names, dates, the actual steps. A page that opens with three paragraphs of background, or keeps the answer inside an image or a slideshow, gets passed over for one that says it outright.
The practical version: one clear question per page, the answer in the first paragraph, headings that use the words people actually ask with, and a visible date. None of this fights good writing. It is what a hurried reader wants too.
4. Get indexed at all
OAI-SearchBot has to find the page before any of the above matters. List a sitemap in robots.txt. Submit new and changed pages through IndexNow, which feeds Bing directly and costs nothing. If Bing Webmaster Tools can see a page, ChatGPT can usually reach it.
What matters less than people think
llms.txt. It is a proposed convention, and OpenAI has not said it reads one. It does no harm, and some tools use it, but it will not get you cited. There is a generator and validator on this site if you want one anyway.
Writing "for AI". The models read the way a careful person does. Text stuffed with phrases to game them reads as spam to them too.
Schema markup on its own. Structured data is worth having because it makes a page easier to understand, but a page nobody can read is still invisible with perfect schema.
How to tell it worked
Ask ChatGPT, with search on, a question your page answers, and see whether your site is in the sources. Then ask what it knows about your domain. In your server logs, look for the user agents OAI-SearchBot and ChatGPT-User. If neither has ever shown up, go back to step 1. For the two checks that can be automated, paste your address into the checker.