This article is part of the Zeso Technical Knowledge Base. You can also inspect this topic in Documentation.
Learning Center & Lexicon6 min read·1069 words

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.

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:

  1. The fetch. A crawler fetches the page. Whether a named AI crawler may

fetch it is decided in robots.txt (RFC 9309).

  1. 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.

  1. 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

  1. Decide, per crawler, who may fetch you.
  2. Declare your facts once, in a machine-readable place, in the page's own

words.

  1. Say how the content may be used.
  2. Serve pre-compiled HTML, close to the reader.
  3. Publish the manifest as housekeeping, not as a strategy.
  4. 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.

Deploy in 60 seconds

Related guides & connected surfaces