Playbook

How to Get Your Brand Cited by ChatGPT, Perplexity, and Claude: A Practical GEO Checklist

July 12, 2026 · By Italo Campilii

How to Get Your Brand Cited by ChatGPT, Perplexity, and Claude: A Practical GEO Checklist

Your customers stopped asking Google and started asking ChatGPT, and most brands are invisible in the answer. Ranking on page one no longer guarantees you exist in an AI-generated response. This is the checklist I actually run across the five brands whose infrastructure I operate — over 500 GEO-optimized articles live, published by scheduled agents, built to be citable by machines as much as readable by people.

TL;DR

To get cited by ChatGPT, Perplexity, and Claude: (1) verify AI crawlers actually get 200 responses — CDN "AI bot" defaults silently block them, including on my own site until I fixed it on July 14; (2) ship llms.txt at your domain root; (3) add validated Article and Person JSON-LD with entity-consistent sameAs links; (4) publish an RSS feed; (5) wire IndexNow into your deploy pipeline; (6) write answer-first, self-contained passages with an FAQ block. Then re-test monthly by asking the engines your customers' questions.

This is not theory. Every item below is something I've implemented, broken, and fixed in production — including on the site you're reading right now.

The short answer#

To get cited by AI engines, make your pages machine-readable, machine-reachable, and quotable in isolation. Reachable means the AI crawlers are actually allowed in — GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, ClaudeBot, Google-Extended and CCBot — and that you have verified it at the edge with a real request per user agent rather than trusting your robots.txt, because a CDN or firewall rule can block a crawler your robots.txt welcomes. Readable means the page is fully server-rendered, carries accurate structured data, and names its sources. Quotable means each section answers one specific question completely enough to be lifted out of the page and still make sense, with the answer in the opening sentence rather than after three paragraphs of preamble. Those three properties are what an answer engine needs in order to use you, and they are checkable — every item on the list below can be verified with a request you run yourself.

What is the difference between GEO and SEO?#

Traditional SEO optimizes for a ranked list of links. Generative Engine Optimization (GEO) optimizes for being quoted inside an answer. If you want the full conceptual grounding, I wrote a primer: what GEO actually is and why it's diverging from SEO. The mechanics overlap — crawlability, structure, authority — but the failure modes are different. An AI engine that can't fetch your page doesn't show you lower; it shows you never. An answer engine that can't lift a clean, self-contained passage from your article will paraphrase your competitor instead.

The shift in mindset: stop asking "what position am I?" and start asking "can a language model retrieve, parse, and attribute my content?"

How do you let AI crawlers in and verify they are not blocked?#

The single most common GEO failure is self-inflicted: robots.txt or a bot-protection layer silently blocking the crawlers that feed AI engines. Many CDN and firewall defaults block "AI bots" wholesale — which means you've opted out of the answer layer without knowing it.

Here's the embarrassing proof that verification matters. On July 14, 2026, I audited campilii.com — my own personal site, whose entire purpose is being cited when someone asks an AI about me — and found Cloudflare's managed robots.txt for AI crawlers was live. ClaudeBot, GPTBot, Google-Extended, CCBot, Applebot-Extended, and Bytespider were all Disallowed at the edge, plus an ai-train=no content signal, injected on top of my actual robots.txt. The confusing part: the "Block AI bots" policies in the Security dashboard were already set to Allow. The block came from a separate "Managed robots.txt" toggle under AI Crawl Control. I turned it off, and curl https://campilii.com/robots.txt went from a wall of Disallow lines to zero within seconds. Full write-up in the Cloudflare AI-bot block postmortem.

If the person who runs GEO for five brands shipped his own site blocked, assume yours is too until you've read the response with your own eyes.

Explicitly allow, at minimum:

Crawler Operator Feeds
GPTBot OpenAI Model training
OAI-SearchBot OpenAI ChatGPT search
ClaudeBot / Claude-User Anthropic Claude training and user-triggered fetches
PerplexityBot Perplexity Perplexity's index
Google-Extended Google Gemini grounding
Bingbot Microsoft Bing → Copilot and parts of ChatGPT search

Then verify two layers:

  1. robots.txt as servedcurl https://yourdomain.com/robots.txt from outside your network. Not the file in your repo; the file at the edge. Managed rules inject directives your repo never sees.
  2. Actual responses — server logs or CDN bot analytics showing these user agents getting 200s, not challenge pages or 403s.

What is llms.txt and do you need one?#

llms.txt is a plain-markdown file at your domain root that gives language models a curated map of your site: who you are, what you do, and links to your most important pages with one-line descriptions. Think of it as a sitemap written for a reader with no patience.

Keep it honest and short: your positioning in two sentences, then your cornerstone pages grouped by topic. On this site, the blog build script regenerates the llms.txt post list on every build, so it never drifts from what's actually published. It costs twenty minutes to set up and it's the cheapest "here's how to understand my brand" signal you can hand to a retrieval system.

What structured data do AI engines actually use?#

Schema markup (JSON-LD) is how you tell engines what a thing is instead of hoping they infer it. My baseline stack on every content site:

Two rules that matter more than the type list. First, dates must be real. Backdating datePublished to fake an established archive is a trap: engines timestamp content by first crawl and discovery — sitemap lastmod, Search Console, the Wayback Machine — not by the date printed on the page. A post claiming January that first appears in the index in July reads as July content, and the mismatch is a trust signal against you on the exact channel where you're claiming precision. Second, validate everything. Broken schema is worse than none.

On this site every post's schema is generated by the build script, not written by hand — the template is correct once, so it's correct five hundred times.

How do you make your entity consistent across the web?#

AI engines resolve entities, not just keywords. If your brand is "Acme Labs" on your site, "Acme Labs Inc." on LinkedIn, and "AcmeLabsHQ" on a directory, you've split your identity into three weak entities instead of one strong one.

Lock down one canonical name, one description, one founder story — and repeat them verbatim across your site footer, About page, schema, social profiles, and directory listings. Then close the loop in both directions: your Person/Organization schema's sameAs array lists every official profile, and every one of those profiles links back to your canonical domain in its bio. That two-way linkage is what lets a model say "I know who this is" with enough confidence to cite you.

Does an RSS feed still matter for AI citation?#

RSS feels like 2009, but AI engines and the aggregators that feed them still consume it. A feed is a machine-readable, chronologically honest record of what you publish and when — exactly the kind of low-ambiguity signal retrieval systems reward. My build pipeline regenerates feed.xml on every publish alongside the sitemap. If your stack can generate a sitemap, it can generate a feed; there is no excuse to skip it.

How do you write a passage an AI engine will quote?#

Answer engines quote at the passage level, not the page level. Every important claim should live in a self-contained block that makes sense with zero surrounding context:

Read your own article and ask: if a model grabbed any single paragraph, would it stand alone and would it credit me? If not, rewrite.

Why does Bing indexing matter for AI citation?#

Underrated fact: Bing's index powers Copilot and portions of ChatGPT's browsing. Sites that ignore Bing Webmaster Tools are ignoring a direct pipe into two major answer engines.

Register every property in both Google Search Console and Bing Webmaster Tools, and submit sitemaps. When I did this for campilii.com, Bing accepted an import directly from the verified GSC property — the whole thing took minutes, and both tools confirmed the sitemap with every page indexed-eligible. It's leverage most competitors skip.

What is IndexNow and how do you use it?#

IndexNow lets you push URLs to Bing and other participating engines the moment they publish, instead of waiting for a crawl. Drop the key file at your domain root, then ping the endpoint on every deploy. I wired IndexNow pings into my publishing pipelines so that when a scheduled agent ships a post at 3 a.m., the URL is submitted within the same run — no human, no delay. If your CMS or build pipeline can make an HTTP request, you can implement this in an afternoon.

What is the full GEO checklist, in order?#

  1. curl your robots.txt from outside and check for injected Disallow lines — CDN "managed AI bot" toggles override your file at the edge
  2. Explicitly allow GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended, Bingbot
  3. Verify in server logs or bot analytics that AI crawlers get real 200 responses
  4. Publish llms.txt at the domain root with your positioning and cornerstone pages; regenerate it on every build
  5. Add JSON-LD on every post: Article/BlogPosting, Person author, FAQPage, BreadcrumbList — with real dates, and validate it
  6. Point the author entity's sameAs at every official profile, and every profile's bio back at your domain
  7. Publish and maintain an RSS feed
  8. Restructure key articles into self-contained, answer-first passages with question-shaped headings, a TL;DR box, and an FAQ block
  9. Register all properties in Google Search Console and Bing Webmaster Tools; submit sitemaps
  10. Wire IndexNow into your publish pipeline so new URLs are pushed automatically
  11. Re-test monthly — ask ChatGPT, Perplexity, and Claude questions your customers would ask, and log whether you're cited

Item 11 is the one people skip. GEO parameters shift constantly; the engines change how they retrieve and attribute. Treat it as an operating loop, not a launch task.

How do you run GEO across many sites at once?#

I don't do any of this by hand anymore. The checklist above is encoded into the agent workflows that publish for my brands — the same approach I describe in how I run five brands' infrastructure solo and in the 500-post SEO/GEO blog engine. Schema generation, internal linking, FAQ blocks, RSS, and IndexNow pings happen inside the pipeline, on a schedule, while I sleep. The checklist is the standard; the agents are the enforcement.

FAQ#

How do I get my brand cited by ChatGPT?#

Make your content retrievable and attributable: allow OpenAI's crawlers (GPTBot and OAI-SearchBot) and verify they get 200 responses, register with Bing Webmaster Tools (Bing feeds parts of ChatGPT search), add Article and Person schema with consistent entity data, and structure articles as answer-first, self-contained passages. Then test by asking ChatGPT your customers' actual questions and logging whether you appear.

How long does it take to get cited by AI engines?#

Discovery can happen within days once crawlers have access and IndexNow is wired in, but consistent citation typically builds over weeks to months as engines accumulate confidence in your entity. The access and structure fixes are fast; authority compounds slowly.

Does llms.txt actually matter yet?#

Adoption by engines is uneven, but the cost is near zero and the downside is none. It also forces you to articulate your entity clearly — which improves every other item on this list. I ship it on every property as a default, regenerated on every build.

Can I backdate posts to look more established to AI engines?#

No — it backfires. Engines timestamp content by first crawl and discovery, not the date printed on the page, so a backdated post reads as new content with a contradictory label. That mismatch is a trust penalty on a channel where you're asking to be treated as a credible source. Publish forward with real dates; a dense, interlinked cluster published quickly reads as authority legitimately.

Should I block AI crawlers to protect my content instead?#

That's a legitimate business decision, but understand the trade: blocking GPTBot or ClaudeBot removes you from the answer layer where a growing share of buying research now happens. For most brands trying to be found, visibility is worth more than exclusivity. Just make the choice deliberately — as my own Cloudflare incident shows, many sites are blocked by default without ever choosing.

RELATED

Want this checklist installed on your properties — crawler audit, schema, llms.txt, IndexNow, the whole pipeline — by the person who runs it across five brands? Get in touch.

— Italo Campilii. If you're building something that needs this kind of operator, get in touch.

IC

Italo Campilii

AI systems builder and one-person operator. I run the infrastructure for five brands solo with Claude Code agent fleets — SEO, content, e-commerce ops, and the verification layer that keeps it honest. The Build Log is where I write down what actually works.