Someone asks ChatGPT which accounting firm to choose in their city, or asks Perplexity what the difference is between two types of insurance. The answer comes with three or four sources. Your site is not among them, even though you have good pages on exactly that topic. Your competitor shows up.
The first reflex is to look for a place where you “submit your site to ChatGPT”. There is no such thing. There is no console where you register your domain. What does exist are three technical conditions that your site either meets or does not, plus a way of writing that makes content easy to cite.
Below you will see where these models get their answers from, which bots they send to your site, where those bots get blocked without you knowing, what you need to do in Bing and how to check whether you are being cited.
Where ChatGPT, Claude, Perplexity and Copilot get their answers
A language model has two sources of information. The first is what it learned during training, a huge body of text collected months earlier, from which it cannot cite a precise page. The second is real-time search: the model searches the web, reads a few pages and answers with links to them. The sources in the answer come from here.
Search is not built from scratch by each company. ChatGPT, when it uses web search, relies on the Bing index. Copilot, the Microsoft product, also uses Bing. Perplexity has its own bot and its own index, but fills in with results from traditional search engines. Claude, from Anthropic, also has its own bot and uses existing search engines when it answers with sources.
This leads to three things to check, in this order:
- AI bots must not be blocked on the site, neither by mistake nor by a setting you did not put there yourself.
- Content must be readable without JavaScript and clearly structured, so a bot understands it in a single pass.
- The site must be indexed in Bing, not only in Google. Without Bing, ChatGPT and Copilot have nowhere to pick you up from.
Which bots visit your site and what each one does
Each company sends several bots, with different roles. They identify themselves through the user agent, the name they declare with every request.
| Bot | Who sends it | What it is used for |
|---|---|---|
GPTBot |
OpenAI | Model training |
OAI-SearchBot |
OpenAI | Search in ChatGPT; without it you do not appear as a source |
ChatGPT-User |
OpenAI | When a user requests a page during a conversation |
ClaudeBot |
Anthropic | Collection for training |
Claude-User |
Anthropic | When Claude opens a page for a user |
PerplexityBot |
Perplexity | Its own search index |
Perplexity-User |
Perplexity | When a user requests a specific page |
Bingbot |
Microsoft | The Bing index, and therefore Copilot and ChatGPT search |
Google-Extended |
Controls use for Gemini; does not affect Google Search | |
Applebot-Extended |
Apple | Controls use for Apple’s models |
CCBot |
Common Crawl | Public archive that many models are trained on |
Meta-ExternalAgent |
Meta | Training and Meta’s AI products |
Amazonbot |
Amazon | Alexa and Amazon products |
Training or search: you can block one and allow the other
Each company has a separate training bot and search bot, so you can decide differently for each. If you do not want your texts to end up in training data, block GPTBot and ClaudeBot. If you want to appear in answers when someone searches, leave OAI-SearchBot, ChatGPT-User, Claude-User, PerplexityBot and Perplexity-User open.
In robots.txt, that means a User-agent: GPTBot block with Disallow: /, the same for ClaudeBot, and one block with Allow: / for each search bot. The up-to-date list of OpenAI bots, with the IP addresses for verification, is in the OpenAI documentation on bots.
Where bots get blocked without you knowing
Most sites that do not appear in AI answers never decided that. They were blocked by a default setting or by a plugin installed long ago. Where it happens:
- robots.txt. A
Disallow: /left over from the development phase, or rules added “just in case” by an SEO plugin. - Cloudflare. Two settings matter: “AI bots blocking”, which cuts off all known AI bots, including the search ones, and “Managed robots.txt”, which automatically adds blocking rules to your file without you seeing them in WordPress. Both are switched on by default on many accounts.
- WAF rules. A rule that rejects requests whose user agent contains “bot” also catches the good bots.
- Security plugins. They have lists of blocked user agents. Someone once added “GPTBot” after an alarmist article and forgot about it.
How to check in ten minutes
- Open
yourdomain.ro/robots.txtin the browser. If you see blocks for GPTBot or ClaudeBot that you do not recognise, they come from Cloudflare or from a plugin. - Make a request with an AI bot user agent, from a terminal:
curl -A "OAI-SearchBot" -I https://yourdomain.ro/. If you get 200, you are fine. If you get 403 or a Cloudflare challenge page, you are blocked. - Repeat with
PerplexityBot,Claude-Userandbingbot. - Search for these names in the server logs or in Cloudflare Analytics. If there is not a single request from
bingbotin the last 30 days, you have an indexing problem, not a content problem. - In Cloudflare, under Security and then Bots, check “AI bots” and “Managed robots.txt”. Switch them off, or leave only the training bots blocked.
Cloudflare can overwrite robots.txt without the file in WordPress changing. Always check the public address, not what you have in the editor.
Bing: the index that ChatGPT and Copilot use
Many companies have their site verified in Google Search Console and nowhere else. For ChatGPT and Copilot that is not enough, because they do not read the Google index. If Bing does not have you, you do not exist for them.
What to do in Bing Webmaster Tools:
- Create an account with the company’s Microsoft or Google address.
- When adding the site, choose the import from Google Search Console. Bing takes over the properties verified there, with no extra verification file.
- Submit the sitemap. In WordPress it is usually at
/sitemap.xmlor/sitemap_index.xml, depending on the SEO plugin. - After a few days, check in the indexing report how many pages went in and whether any access errors show up.
IndexNow: the site announces on its own when it publishes something
IndexNow is a protocol through which the site sends a signal on every page publish or change, instead of waiting for the bot to come back. The signal reaches Bing, Yandex, Naver and Seznam from a single request. It works like this: you generate a key, put it in a text file at the root of the domain (for example /abc123.txt, with the key inside), then on every publish the site sends a POST request to api.indexnow.org with the changed addresses. The details are on the official IndexNow site.
In WordPress you get it through plugins (several SEO plugins include it, plus the official one from Bing) or through a few lines of your own code. It does not guarantee indexing, but it greatly shortens the time until Bing learns about a new page. It deserves a place in the site’s optimization routine.
What llms.txt is and what you put in it
llms.txt is a text file at yourdomain.ro/llms.txt, proposed in 2024 as a kind of robots.txt for language models: it does not say what is forbidden, but what is important. The goal is for a model that lands on the site to quickly understand what it is about, without wading through menus, cookie banners and footers.
The content is simple, written in Markdown:
- A heading with the name of the company or the site.
- A short paragraph: what you do, for whom, where.
- Lists of links to the main pages, grouped by topic (services, guides, contact), each with a one-sentence description.
- Optionally, a section with secondary links, marked as less important.
Honestly: neither OpenAI nor Google has stated that they use llms.txt. It is a proposal, not a standard. You add it because it takes a quarter of an hour and does no harm. Treat it as a good summary of the site, not as a visibility solution.
Which pages the models cite and what gets lost along the way
A model that searches receives a few pages and has to pull an answer out of them in a few seconds. It cites the pages from which it can easily extract a clear statement. In practice:
- Direct answers. A section titled “How long does boiler certification take” that starts with the answer, not with the company’s history.
- Headings that say something. H2 and H3 that can be read as a list of questions and answers.
- Definitions, lists, tables. A table with prices or lead times is easier to cite than three paragraphs describing them.
- Explicit facts. Who, when, how much, where. “Since 2015, in Bucharest, a team of 12 people” beats “vast experience, dedicated team”.
- An identifiable author and organization.
Organizationschema on the site,Personfor authors,Articleon articles. - A credible “About” page, with real names, address, year founded, what the company concretely does.
- Consistency with public profiles. The name, address and description on the site should match the Google Business profile, LinkedIn and the Trade Register (in Romania).
What often gets lost:
- Content rendered only from JavaScript. Many themes and page builders load the text after the page has opened. The models’ bots usually read the raw HTML; if the text is not there, the page is empty for them.
- Complicated accordions and tabs. An accordion with the text present in the HTML is fine. One that loads the text on click, through a separate request, is not.
- Text in images. Prices, opening hours or lists placed as an image cannot be read.
All of these are also good principles for content for Google. You do not write differently for AI: you write clearly, with facts and structure.
A quick test: run curl -A "OAI-SearchBot" https://yourdomain.ro/important-page/ and look for the main paragraph in the response. What you see there is what the bot sees. If you only get a skeleton with scripts, the content does not reach the model.
How to check whether you are being cited
There is no official Search Console-style report for ChatGPT or Perplexity yet. What you can do:
- Ask the models directly. Put the questions one of your customers would ask into ChatGPT (with search switched on), Claude, Perplexity and Copilot. Do not ask about your company, ask about the problem you solve. Look for your domain in the text and in the sources panel. Repeat monthly, with the same questions.
- Track the referrer in Analytics. Traffic from AI answers shows up with the source
chatgpt.com,perplexity.aiorcopilot.microsoft.com. Filter sessions by these domains and save the report. - Watch the logs. Requests from
ChatGPT-UserorPerplexity-Usermean that users are opening your pages from conversations.
Results come slowly, over weeks. If you have done everything below and see nothing after two months, the problem is content, not access.
Checklist
- Read
robots.txtat the public address and remove the blocks you did not want. - In Cloudflare, switch off “AI bots blocking” and “Managed robots.txt”, or leave only the training bots blocked.
- Check the lists of blocked user agents in the security plugin and in the WAF rules.
- Test with
curl -AforOAI-SearchBot,PerplexityBot,Claude-Userandbingbot; all of them must get 200. - Add the site to Bing Webmaster Tools through the import from Google Search Console and submit the sitemap.
- Enable IndexNow through a plugin or your own code.
- Put
Organizationschema on the site andArticlewith an author on articles. - Check the “About” page: name, address, year, team, details that match the public profiles.
- Open the source of the important pages and confirm that the text is in the HTML, not only loaded from JavaScript.
- Publish
llms.txtwith the site description and the main pages.
Open yourdomain.ro/robots.txt in the browser and read it line by line. Then go into Cloudflare, under Security and Bots, and look at whether “AI bots blocking” and “Managed robots.txt” are switched on. If you find a block that you did not put there yourself, you have also found the reason you do not appear.