SEO best practices for AI search: getting cited by ChatGPT, Claude and Perplexity

SEO best practices for AI search are the practices that make a page retrievable and quotable by ChatGPT, Claude, Perplexity and Google's AI Overviews: allow their crawlers, write passages that stand alone, state facts about your organisation consistently everywhere, earn mentions in the sources models already cite, and measure with a repeatable prompt panel rather than a screenshot.

Allow the AI crawlers on purpose, and confirm that you have

The first practice for AI search is to allow the crawlers that feed it, by name, in robots.txt: GPTBot and OAI-SearchBot for ChatGPT, ClaudeBot and Claude-SearchBot for Claude, PerplexityBot for Perplexity. Google's AI Overviews use ordinary Googlebot, so blocking Google-Extended affects Gemini's use of your content rather than your presence in Overviews.

Allowing by accident is not the same as allowing on purpose. Templates and security plugins ship blanket blocks, and a site can lose its presence in every assistant because someone copied a default. The decision belongs in writing, with the reasons, and the site's own robots.txt should list the agents so that removing one requires a deliberate edit. Our piece on llms.txt and robots.txt covers the contradiction we find most often: a careful llms.txt behind a blanket block.

The user-triggered fetchers matter too. ChatGPT-User, Claude-User and Perplexity-User retrieve a page when a person asks about it in the moment, so a block on those removes you from live answers even where the training crawlers are allowed.

  • List every AI agent explicitly in robots.txt, so a template cannot block one silently.
  • Fetch your own robots.txt and read it as a crawler would; do not trust the plugin's summary.
  • Never disallow a page that also carries noindex; the blocked page can never show the tag.
  • Check that a firewall or bot-management layer is not blocking the same agents robots.txt allows.
  • Record the decision and its reasons somewhere the next developer will read.

Write passages that survive being lifted out of the page

Retrieval works at the level of the passage, not the page. A model that answers a question pulls a few hundred words from somewhere in a document, so each section should open with a complete statement that names its subject, makes sense with nothing around it, and carries its own caveat rather than relying on one three paragraphs below.

The discipline is the same as the answer-first pattern for snippets, with one addition: pronouns are the enemy. "It", "this approach" and "as noted above" all refer to something the retrieved chunk does not contain. Naming the subject every time reads as repetitive to a human editor and is exactly what allows a model to quote the passage without misattributing it.

Headings should be the question in the words a person would use with an assistant, because the match is often made between the query and the heading before the body is read at all.

Answer the question as it is asked to an assistant, not as it is typed into a search box

Prompts are longer, more specific and more situational than search queries. Someone asks an assistant for an SEO agency that understands regulated industries and works across time zones, not for "seo agency". Pages that answer the situational version, with the constraint named in the passage, are the ones a model can match to that prompt.

The raw material for those prompts is not a keyword tool. It is the language buyers use on sales calls, in support tickets and in the questions they ask before they buy. A panel of a hundred or two of those, phrased as they were said, tells you which situations your pages currently answer and which they do not, and that gap is the content plan.

Comparison and "best for" questions deserve particular attention, because assistants are asked them constantly and answer them from whatever pages are willing to compare honestly. A page that says which option is better for whom, including when the answer is not you, is the page that gets used.

State the same facts about your organisation everywhere

Entity consistency means that your name, what you do, where you are and when you were founded read identically on your site, in your structured data, on the directories and profiles that list you, and in any public knowledge base. A model resolving contradictions between sources hedges or omits, and a hedged mention is not a recommendation.

The failure is rarely dramatic. It is a founding year typed three different ways, an old office still listed on a directory, a service described as one thing on the site and another on a profile. This site states its founding year once in code and derives it everywhere else for exactly this reason, and marks up a business location only for the city where it has a transcribed address.

  • Write the canonical description of the organisation once, and paste it rather than paraphrase it on every profile.
  • Connect the Organization node to every profile with sameAs, so the identifiers resolve to one entity.
  • Claim or correct the entries on the directories and knowledge bases models draw on, and remove the ones that describe a business you no longer are.
  • Mark up a location only where you have premises, and say plainly on every other city page that there is no office.
  • Re-check the profiles after any change of name, address or service, because stale entries outlive the change.

Earn presence in the sources the models already cite

Models cite what they have already learned to trust for a category: comparison articles, industry lists, review platforms, forums, documentation and the press. Being present there, described accurately, is the off-page practice for AI search. It is earned by giving those sources something worth saying, not by asking for a link.

Find the sources by asking. Run the prompt panel and record which domains the assistants cite for your category, then treat that list as the target rather than a generic authority score. The list is usually shorter and stranger than expected, and it differs by engine: what Perplexity cites for a query is not what ChatGPT cites, and neither is what an AI Overview draws on.

What earns a mention is the same thing that earns a journalist's attention: a method, a finding you can show your working for, a comparison that is willing to be unflattering, a tool that does something. The reason this site publishes its measurement methodology rather than only numbers is that a method is citable and a claim is not.

Publish comparisons and methods, because those are what get quoted

The page types assistants tend to quote are the ones that settle a question a buyer would otherwise have to research: a comparison that says which option suits which situation, a definition that a model can lift whole, a method that someone could reproduce. Promotional copy is retrieved and discarded, because it answers nothing.

A comparison must be able to recommend the option you do not sell, which is the editorial rule every comparison on this site is written to. A comparison that always concludes in favour of its author is recognised as advertising by readers and, increasingly, by models, and is not used. The willingness to lose the comparison is what makes winning it credible.

Glossary-style definitions work for the same reason. A term defined in one clean paragraph, with what it is not to be confused with, is the shape a model reaches for when it has to explain something, and it carries your name with it.

Keep structured data and visible text in agreement

Structured data helps a model confirm what a page is about, provided it says the same thing the page does. FAQPage must carry the questions and the full answers the reader can see, and Organization must match the facts stated everywhere else. Markup that claims what the page does not show damages trust in both.

Schema is not a back channel. A model does not read the JSON-LD instead of the page, so the practical rule is that every answer in a FAQ block is rendered into the HTML, visible or collapsed, and the markup is generated from the same data, so the two cannot drift. Which nodes to emit, and which never to, is the technical chapter's subject.

Link the graph. An Article, a FAQPage and an Organization that reference one another by identifier resolve into a single entity a model can reason about; three unconnected nodes are three assertions with no owner.

Serve the content in the HTML, and date it only when the date is real

Fetchers used by assistants often read raw HTML without executing JavaScript, so content that appears only after client-side rendering may not exist for them. Server-render anything that must be quoted. Publish a date only where it is true: a fabricated freshness signal is a fabricated claim, and a source that cannot be dated is easier to discount.

This site's original articles carry no publication date at all, because nobody recorded one, and a guessed date would have been a small lie in a machine-readable field. The series this article belongs to records the day each piece was written. That is the whole rule: emit the date when it is a fact, omit it when it is not.

The same applies to the text file conventions. A plain-text version of the site's content, generated from the same source as the pages, is cheap to publish and harmless. It is not a strategy, and no engine has committed to reading it; the pages themselves are what get retrieved.

Measure with a prompt panel, not a screenshot

Visibility in AI search is measured by running a fixed panel of buyer prompts, cold, on each engine at a regular interval, and scoring whether the brand is named, whether it is cited with a link, and how it is characterised, against a fixed competitor set. A single favourable answer is one sample from a distribution and proves nothing.

Cold means fresh sessions with no account memory and no prior turns, because a signed-in browser measures its own history rather than the market. Regular means boring: weekly is usually right, daily invites reading noise as signal. The full method, including the traps that make most published claims untestable, is set out in our piece on measuring who gets cited.

What the panel supports is a statement about direction and share over a period. What it does not support is attributing a change to a single action, and any report that does so is ahead of its evidence.

What not to expect from any of this

No practice guarantees a citation. Assistant answers vary between runs, differ by engine and change as models are updated, so the honest promise is a higher and more stable share of the answers over time, measured, rather than a named position. Anyone offering a one-click visibility score or a guaranteed placement is selling the screenshot.

The other thing not to expect is a separate discipline. Every practice above is a stricter version of something classic SEO already asked for: be crawlable, answer the question, be consistent, be corroborated, measure. Sites that were doing that well are already visible in assistants; sites that were ranking on domain strength alone are the ones finding that a model, forced to choose a passage rather than a URL, chooses someone else's.

Takeaways

  • Allow GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot and PerplexityBot by name, and verify the block is not elsewhere.
  • Every section opens with a passage that names its subject and stands alone; pronouns and back-references break retrieval.
  • Build pages around the situational prompts buyers actually use, collected from calls and tickets, not from a keyword tool.
  • State the organisation's facts identically everywhere, and mark up a location only where there are premises.
  • Earn accurate mentions in the sources each engine already cites for the category; a method or an honest comparison is what earns them.
  • Measure with a cold, fixed prompt panel at a regular interval. A screenshot is one sample and proves nothing.

Questions

How do I get my website cited by ChatGPT?

Allow OAI-SearchBot and GPTBot in robots.txt, server-render the content, and write each section so its opening passage names the subject and stands alone. Then earn accurate mentions in the sources ChatGPT already cites for your category, which you find by running your buyers' prompts and recording the domains that appear. Measure with a fixed panel, not a screenshot.

Does Claude use my website when it answers questions?

Claude can retrieve a page when a question calls for current information and the site allows Claude-SearchBot and Claude-User, and its training may include pages ClaudeBot was permitted to crawl. Whether a specific page is used depends on the question, on whether the passage stands alone, and on whether other sources corroborate what the page says about you.

Is optimising for AI search different from SEO?

It is a stricter version of the same work rather than a separate discipline. Classic SEO gets a page crawled, indexed and ranked; AI search requires that a passage from the page can be quoted on its own, that the facts about the organisation agree across the web, and that the brand appears in the sources models already cite.

Does llms.txt help with AI search?

Not measurably, and no major engine has committed to reading it. llms.txt is a plain-text index of a site's useful content; it grants nothing, blocks nothing and substitutes for nothing. Publish one if it is generated automatically and costs nothing to maintain, but the practices that move visibility are crawler access, standalone passages and presence in cited sources.

Can anyone guarantee my brand will appear in AI answers?

No. Assistant answers vary between runs, differ by engine and shift when models are updated, so no placement can be guaranteed and no one-off screenshot demonstrates one. What can be promised is a method: a fixed prompt panel run cold at a regular interval, a fixed competitor set, and a reported share of answers that moves over time.

In this series

Related services

More reading