
To get cited by ChatGPT and Perplexity, first make sure their search bots can fetch your pages, then give every post something worth quoting: a direct answer, sourced numbers, headings that match real questions, an FAQ and a named, dated author. The platforms themselves document only the first part. The rest is cheap and unproven, and the checklist below says which is which.
I run pilcrino.com, and before writing this I checked the site against every step: the robots.txt and post template below are the real files, not examples.
Being cited is step one. A citation puts your link under someone else’s answer, while getting ChatGPT to name and recommend your product is a separate job.
Below: what the platforms document, two site steps you do once, five post steps you repeat, and one way to check it worked, each step rated by how much evidence stands behind it.
What ChatGPT and Perplexity Actually Cite
ChatGPT search and Perplexity fetch pages live when they answer a question, through named bots, and link the pages they used. So the job has two halves: be fetchable, and have a passage worth lifting.

Drop one myth first. You don’t need to “get into the training data”. OpenAI runs one bot for training and a different one for search, and citations come from the search one.
What do those citations point at? Ahrefs looked at the top 1,000 pages ChatGPT cited in September 2025:
- Wikipedia: 29.7%
- Homepages and landing pages: 23.8%
- Educational pages: 19.4%
- Blog articles: 1.9%
- Cited pages with zero organic keywords: 28.3%
That’s from Ahrefs’ study of ChatGPT’s most-cited pages. A post competes with reference pages, so it has to read like one. The last number is the hopeful one: more than a quarter of cited pages had no organic keywords in Ahrefs’ data.
Google is a different case. Google’s guide to its AI features says “You don’t need to create new machine readable files, AI text files, markup, or Markdown to appear in Google Search.” This checklist is about how to get cited by ChatGPT and Perplexity specifically. Most of the post steps also help the humans reading, which is why I’d do them even unproven.
| Step | What you do | Evidence | Cost |
|---|---|---|---|
| 1 | Let OAI-SearchBot and PerplexityBot in | Documented by OpenAI and Perplexity | Low, once |
| 2 | Add llms.txt and pricing.md | Cheap, unproven | Low, once |
| 3 | Open every post with a direct answer | Cheap, unproven | Low, per post |
| 4 | Put sourced numbers where they can be quoted | One lab study | Medium, per post |
| 5 | Write headings as the questions people ask | Cheap, unproven | Low, per post |
| 6 | End with an FAQ and FAQPage schema | Cheap, unproven | Low, per post (template once) |
| 7 | Name and date the author | One study on freshness | Low, template once |
| 8 | Check whether it worked | Method, not a result | Medium, on a schedule |
Step 1: Let OAI-SearchBot and PerplexityBot In
Evidence: documented by OpenAI and Perplexity
This is the one step with a hard rule behind it. OpenAI’s crawler docs say it plainly: “Sites that are opted out of OAI-SearchBot will not be shown in ChatGPT search answers.”

Here’s what each bot does, in the platforms’ own words:
- OAI-SearchBot: “used to surface websites in search results in ChatGPT’s search features”. This is the one citations depend on.
- GPTBot: “used to crawl content that may be used in training our generative AI foundation models”. Blocking it is a separate choice and doesn’t touch search.
- ChatGPT-User: “used for certain user actions in ChatGPT and Custom GPTs”, and “robots.txt rules may not apply”.
- PerplexityBot: “designed to surface and link websites in search results on Perplexity”, per Perplexity’s crawler docs.
- Perplexity-User: fetches on a user’s request, and “this fetcher generally ignores robots.txt rules”.
Changes aren’t instant. OpenAI says about 24 hours; Perplexity says “it may take up to 24 hours for our systems to reflect changes”.
This is pilcrino.com’s robots.txt, as it ships:
# Everything is public. The AI search and citation crawlers are named so the
# intent is on record: Pilcrino wants to be read and cited by them.
User-agent: *
Allow: /
User-agent: GPTBot
User-agent: ChatGPT-User
User-agent: OAI-SearchBot
User-agent: PerplexityBot
User-agent: ClaudeBot
User-agent: Google-Extended
Allow: /
Sitemap: https://pilcrino.com/sitemap-index.xml
The first block already lets everyone in. Naming the bots adds nothing technically; it puts the intent on record. I let GPTBot in too, which is my call, not a citation requirement.
A friendly robots.txt can still lose to your CDN. One founder on r/micro_saas found that “Perplexity & Claude were blocked due to a CF configuration mistake”, CF being Cloudflare.
How to check your bots are let in
- Open yoursite.com/robots.txt and read it. Look for a
Disallowunder*or under any of the bot names above. - Check your CDN or firewall for bot rules. A setting that blocks AI crawlers overrides whatever robots.txt says.
- After 24 hours, ask Perplexity a question one of your pages answers, and see whether it can open that page.
Step 2: Add llms.txt and pricing.md, but Expect Little
Evidence: cheap, unproven
llms.txt is a plain-text file at your site root that tells AI tools what the site is and which pages matter. pricing.md is a plain Markdown copy of your price list next to it.
Google is blunt about the first one. Adding such files “will neither harm nor help your site’s visibility or rankings in Google Search, as Google Search ignores them,” per Google’s guide to its AI features.
So why do they show up on every AI-search checklist? A commenter on r/DigitalMarketing had the honest answer: they’re binary, you have them or you don’t, so they make “a nice checkbox on a report”.
pilcrino.com serves both anyway, as routes generated from the site’s own data. They cost little once built. I wrote up what I put in llms.txt and pricing.md and how I’m testing them.
Do this after Step 1. Never instead of it.
Step 3: Open Every Post With a Direct Answer
Evidence: cheap, unproven
Make the first paragraph a 2–3 sentence answer to the question in your title. No preamble, no product mention. That’s the passage an assistant can lift whole, and it’s what a human skimming from a search result wanted anyway.

The difference is easiest to see side by side. I invented both examples below for a made-up help post titled “How to Send Form Responses to Slack”.
Before:
Your team lives in Slack, and forms are how customers talk to you. So why keep the two apart? In this guide, we’ll explore everything you need to know.
After:
To send form responses to Slack, open the form’s Integrations tab, connect your Slack workspace, and pick a channel. Every new response then posts to that channel with the answers as a message.
The first opener could sit on a thousand posts. The second one answers a question.
Does this mean chopping the post into tiny answer fragments? No. Google’s guide says “There’s no requirement to break your content into tiny pieces for AI to better understand it.” One clear answer at the top, then a normal post. The first paragraph of this post is its answer block.
Step 4: Put Sourced Numbers Where They Can Be Quoted
Evidence: one lab study
The best evidence here is the generative engine optimization (GEO) paper from KDD 2024. Its authors tested nine ways of rewriting a page, and the best three were citing sources, adding quotations and adding statistics. They report that “GEO can boost visibility by up to 40% in generative engine responses.” The authors measured that in a research setup, on their own engine and benchmark, not in production ChatGPT or Perplexity. It’s a lab result, and I treat it as one.
What does that look like in a post? A short stats box: 3–5 numbers, each with its source linked, placed near the top of the section that makes the claim. The Ahrefs list in the first section of this post is one.
Three rules for the numbers in it:
- Your own numbers beat recycled ones. A count from your product, your logs or your own test is something no one else can publish.
- Link the original study, not the blog that repeated it. Every hop adds a chance of error.
- Open the source before you quote it. Researching this post, I found a top-ranking guide crediting Ahrefs with a “67% original research” figure. The Ahrefs study it names doesn’t report that category at all.
A line on r/DigitalMarketing sums up why this matters: “if an AI can write your article on its own, it’ll never cite you.” It’s the same reason sourced, first-hand posts hold up in Google.
Step 5: Write Headings as the Questions People Ask
Evidence: cheap, unproven
Phrase your H2s the way a buyer types the question, then answer it in the first sentence underneath. Where do the questions come from?
- Google’s People Also Ask box for your keyword
- Questions from sales calls and demos
- Support tickets and onboarding emails
For this post’s keyword, People Also Ask showed “How to get cited by AI?” and “Can ChatGPT find references?” The second one became a question in the FAQ below, word for word.
Sales and support questions are the better source for a founder. They’re phrased by people who were about to buy, and nobody else ranking for your keyword has them.
Step 6: End With an FAQ and FAQPage Schema
Evidence: cheap, unproven (Google says no special schema is needed for its AI features)
Close each post with 3–5 real follow-up questions, each answered in one short paragraph. Then mark the FAQ up as FAQPage structured data, the JSON-LD block that labels each question and answer for machines.
Is the schema required? Not for Google. Its guide says “Structured data isn’t required for generative AI search, and there’s no special schema.org markup you need to add.” A commenter on r/aeo put the right expectation on it: structured data “is useful representation, not a citation button.”
The one rule that matters is that the markup matches what’s on the page. The simplest way to guarantee that is to generate it from the visible FAQ instead of writing it by hand. pilcrino.com’s post template reads each post’s FAQ section and builds the FAQPage node from it, alongside BlogPosting and Person:
export function faqNode(pairs: { question: string; answer: string }[]) {
return {
'@type': 'FAQPage',
mainEntity: pairs.map((p) => ({
'@type': 'Question',
name: p.question,
acceptedAnswer: { '@type': 'Answer', text: p.answer },
})),
};
}
Edit a question in the post and the schema follows on the next build. They can’t drift.
Step 7: Name and Date the Author
Evidence: one study on freshness; authorship is unproven
Every post needs three things near the title:
- A real, named author, linked to an about page
- A visible publish date
- An “Updated” date, shown only when the content really changed
On pilcrino.com the byline shows the author, linked to the about page, and the publish date. “Updated” appears only when the post has an updatedDate set. The BlogPosting schema carries both dates, published and modified.
Why the dates? Assistants lean toward recent pages: AI-cited URLs are 25.7% fresher than organic results, in Ahrefs’ study of 16.975 million cited URLs, and “ChatGPT shows the strongest preference for fresh content.” That study measured page age, not whether a visible date gets a page cited. A date just lets a reader, and an assistant, see how recent the page is.
That invites a shortcut: bump the date and change nothing. Don’t. An “Updated” label on an unchanged post misleads the reader, and the reader is who the date is for. Update the date when you update the facts.
Step 8: Check Whether It Worked
Evidence: a method, not a result
Nobody can promise a timeline, so measure instead of waiting. Write a fixed set of 10–20 buyer questions and ask them in ChatGPT and Perplexity on a schedule.
A commenter on r/aeo described the routine well: “run the same 20 buyer prompts weekly and separate presence, citation, accurate description, and recommendation.” Log each one on its own line:
- Presence: does your product appear at all?
- Citation: is your page linked as a source?
- Accurate description: does the answer describe you correctly?
- Recommendation: are you named as the answer?
Run the same questions for two competitors. If all three of you move at once, the engine changed, not your site.
Log ChatGPT and Perplexity separately too. Another r/DigitalMarketing commenter, comparing ChatGPT, Perplexity and Google’s AI Overviews, found “the overlap between all three is surprisingly small”, meaning content that does well on one engine can barely register on another.
A new blog should keep its expectations modest. I wrote about what a new blog should expect from AI search, including the bet I’m running on this one.
How Pilcrino Runs the Per-Post Checks
Steps 1 and 2 are one-time site work. The per-post half is where discipline slips, because it has to happen on every draft. Pilcrino is the app I’m building to run that half: it researches, writes and stages posts about your product, in your voice, and nothing publishes until you approve it.

Here’s where it touches this checklist:
- Plan with agent review: you lock the angle and the questions the post answers, and an agent reviews them before any drafting starts (Step 5 starts here).
- Research through your browser: Pilcrino pulls Google results, Reddit threads and X posts through your logged-in browser and cites them in the post (Step 4).
- Fact and link checks: every number has to trace to a source before the draft moves on (Step 4).
- FAQ on every post: each post ends with one (Step 6).
The screens above and below show an illustrative example post, not a real customer. The preview is the last stop: you read the post as it will publish, images included, before you approve it.

Everything above works by hand, with a text editor and a spreadsheet. If you’d rather have every post arrive with sourced numbers, an FAQ and a preview to approve, join the Pilcrino waitlist. The plugin is free and the app is $199 once; both run on the Claude plan you already pay for.
Researched and drafted with Pilcrino. Approved by Slav.
FAQ
How long does it take to get cited by ChatGPT or Perplexity?
Bot access is quick: OpenAI and Perplexity both say robots.txt changes take effect within about 24 hours. Citations themselves have no reliable timeline, because they depend on which questions people ask and what else answers them. Measure with a fixed set of buyer questions asked on a schedule instead of waiting for a date.
Does blocking GPTBot stop ChatGPT from citing my site?
No. GPTBot is OpenAI’s training crawler. ChatGPT search uses OAI-SearchBot, which is a separate switch, so you can block GPTBot and still appear in ChatGPT search answers as long as OAI-SearchBot is allowed.
Do I need llms.txt or schema to get cited?
No platform requires either. Google says it ignores llms.txt and that no special schema is needed for its AI features. Both are cheap extras worth adding only after the ChatGPT and Perplexity search bots can reach your pages.
Can ChatGPT find references?
Yes. With search on, ChatGPT fetches pages live and links the ones it used as sources. That’s why a page has to be fetchable by OpenAI’s search bot and have a clear passage worth quoting.
Is being cited the same as being recommended?
No. A citation is a source link under an answer. A recommendation is when the answer names your product as the thing to use. You can be cited and still watch the answer recommend a competitor, so treat them as two separate results and track both.