How to get cited by ChatGPT — and what earns the citation
Executive Summary & Core Definition
What an answer engine does with your page, the four things it can act on, and the part no markup can do.
- #Where a citation is lost
- #Step 1 · Decide, per crawler, who may fetch you
- #Step 2 · Declare the facts where a machine can lift them
- #Step 3 · Say how the content may be used
- #Step 4 · Ship the text, not a promise of it
- #The part no markup can do
- #The manifest is housekeeping, not a lever
- #The checklist
- #Sources
How to get cited by ChatGPT — and what earns the citation
An answer engine's answer carries links back to the pages it used. That link is a citation. There is no leaderboard in ChatGPT: an answer is composed, and its sources are attached to the sentences that used them. So "how to get cited by ChatGPT" and "how to rank in ChatGPT" are the same question, and it is not about position. It is about whether the engine can reach your page, read it, and find the fact it needs inside it.
Where a citation is lost
Three steps, and each one can lose it:
- The fetch. A crawler fetches the page. Whether a named AI crawler may
fetch it is decided in robots.txt (RFC 9309).
- The read. The page is parsed as text. A page whose content only
appears after JavaScript runs needs that script to run first, and a crawler with a socket budget may not wait.
- The lift. The engine selects passages and composes an answer,
attributing the pages it used.
A citation is the third step succeeding. Everything before it is a place to lose it, and Google's own guide to generative AI features in Search puts the bar for AI Overviews and AI Mode no higher than this: be indexed, and be eligible for a snippet.
Step 1 · Decide, per crawler, who may fetch you
The named AI crawlers are declared by user agent, and the decision is yours, per crawler. This is a live file:
bash$ curl -s https://yourbrand.com/robots.txt User-Agent: * Allow: / Disallow: /api/ Disallow: /studio/ Disallow: /preview/ User-Agent: GPTBot User-Agent: OAI-SearchBot User-Agent: Claude-Web User-Agent: ClaudeBot User-Agent: PerplexityBot User-Agent: Google-Extended User-Agent: Applebot-Extended Allow: / User-Agent: CCBot User-Agent: Bytespider Disallow: /
Blocking a crawler removes that engine's ability to fetch your pages, and with it its ability to cite them. A crawler that is allowed but finds nothing to quote has nothing to cite.
Step 2 · Declare the facts where a machine can lift them
A citation quotes a fact, and the fact has to be findable in the page. The cheapest way to make it findable is to say it once, in a machine-readable place, in the same words the page shows.
This is the block the platform emits for a business of a given trade — the type, the address, the hours, the price band, the area covered, the services and the licence — with the reader's own values left to fill in:
json{ "@context": "https://schema.org", "@type": "Dentist", "@id": "https://yourbusiness.com/#organization", "name": "Your Business Name", "url": "https://yourbusiness.com/", "telephone": "+1-555-0100", "address": { "@type": "PostalAddress", "streetAddress": "18 Example Street", "addressLocality": "Portland", "addressRegion": "OR", "postalCode": "97204", "addressCountry": "US" }, "areaServed": [ { "@type": "City", "name": "Portland" } ], "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "08:00", "closes": "18:00" } ], "priceRange": "$$", "hasOfferCatalog": { "@type": "OfferCatalog", "name": "Services", "itemListElement": [ { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Emergency dental appointments" } }, { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Routine check-ups and cleanings" } }, { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Cosmetic and whitening treatments" } }, { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Children's dentistry and orthodontics" } } ] }, "hasCredential": [ { "@type": "EducationalOccupationalCredential", "credentialCategory": "license", "name": "Dental licence" }, { "@type": "EducationalOccupationalCredential", "credentialCategory": "insurance", "name": "Professional liability insurance" } ] }
The same fields ride on the page itself in a application/ld+json block, so a crawler that only reads the page still finds them. How to check that block is described in How to verify your LocalBusiness structured data.
Step 3 · Say how the content may be used
A site can also declare the use it permits. This platform sends a content signal with its responses:
bash$ curl -s -D - -o /dev/null https://yourbrand.com/ | grep -i content-signal content-signal: search=yes, ai-input=yes, ai-train=no
Read it as three permissions: search engines may use the content, AI applications may use it as input, and it is not for training. The first two are what a citation needs; the third is a decision only the owner can make.
Step 4 · Ship the text, not a promise of it
A crawler that has to wait for a script to run is a crawler that may give up, so the page should be HTML before it is anything else. This platform serves pre-compiled HTML from its edge, at a measured median TTFB of <50ms across 330+ edge locations. Measure your own from where your customers are — the number that matters is the one a reader in your city gets.
The part no markup can do
The markup declares your facts. It cannot make anyone corroborate them, and corroboration is what a local answer leans on: the Business Profile, the reviews, and the other places that name the business and the address in the same words. Google's guide says an AI answer needs the page to be indexed and eligible for a snippet; what makes a local page eligible is the profile and the reviews, not the JSON-LD.
The manifest is housekeeping, not a lever
The llms.txt file is worth publishing, and it is not what earns the citation. Four measurements say so: Google's own guide calls the file neither harmful nor helpful to Search visibility, a study across roughly 300,000 domains found no relationship between publishing it and being cited, a second study across 37,894 AI-cited domains measured 6.8 citations with the file against 6.7 without it, and no AI service has said it fetches the file at all. The format, the second version's changes and the measurements are in What is llms.txt. On this platform the file is generated from the published site, so it cannot disagree with the site.
The checklist
- Decide, per crawler, who may fetch you.
- Declare your facts once, in a machine-readable place, in the page's own
words.
- Say how the content may be used.
- Serve pre-compiled HTML, close to the reader.
- Publish the manifest as housekeeping, not as a strategy.
- Get corroborated where you do not control the copy.
Sources
Experience edge-native speed on your domain
Sub-50ms TTFB, Anycast BGP routing, and automatic Let's Encrypt certificates across 330+ locations.
Related guides & connected surfaces
- Lexicon & Q&A
What is llms.txt — the proposal, the format, and what the evidence says about it
The manifest is good housekeeping, not a citation lever — the measurements are in here.
- Lexicon & Q&A
AI SEO, GEO and AEO: the same practice under three names
The same practice under its other two names.
- Lexicon & Q&A
What is a local business schema? LocalBusiness Schema markup, and what it has to contain
Why the entity type changes what a machine can read.
- Solution Architecture
AI Search & AEO Discovery
The platform surface this guide describes: the schema graph, the manifest, and the edge.
- Data Pod
Pods
The surfaces a published site's facts are attached to.
- Lexicon & Q&A
What is Time to First Byte (TTFB) — the thresholds, and what the number is not
Time to First Byte measures the latency from a browser's initial request to the arrival of the first byte of HTML. Why sub-50ms TTFB is essential for search rankings and AI crawler indexing.