tabteca
Sign in
ES EN

How to get AI assistants to cite your site

ChatGPT, Perplexity and Google's AI summaries cite specific sources. What makes them pick yours: direct answers, HTML without JavaScript, structured data and an llms.txt.

Getting an AI assistant to cite your site takes three things, and none of them is a trick: its crawler has to be able to read you, the answer to the question has to be in one or two clear sentences, and those sentences have to be in the HTML without running JavaScript. Everything else — authority, links, brand — counts as much as it does in a search engine, but those three points decide whether your page is even in the running.

The underlying difference from classic SEO is what wins. A search engine sends people to your page; an assistant extracts a fragment and cites it. If your content has no extractable fragments, there is nothing to cite however good the article is.

Let in the ones that cite, and decide about the rest

Start with robots.txt, because if you block by default the rest is moot. Not all AI crawlers are the same:

  • The ones that read to answer and cite the source belong to assistants with live search. They bring real visits and appear as a link in the answer.
  • The ones that harvest for training consume bandwidth and return nothing measurable.

You can treat them differently, agent by agent. We give the first group the same access as Google — the content is already public, there is nothing to gain by closing it — and block the second. How to write that is in sitemap.xml and robots.txt.

And a warning that saves grief: many AI crawlers do not execute JavaScript. Google at least renders on a second pass; several of these don’t render at all. If your content appears after hydration, your page is empty to them.

Write the answer before the hook

This is the writing change you notice most, and it runs against classic copywriting.

An article written for a person can open with a story and reach the conclusion three minutes in. An assistant doesn’t wait: it looks for the piece that answers and quotes it. If your first paragraph is a rhetorical question, there is nothing to extract.

The fix isn’t to write worse, it is to put the direct answer in the first or second paragraph and leave the development for after. Look at how this article opens: the full answer is in the first sentence. The hook can follow, and the human reader loses nothing — usually they gain.

The same applies per section: a heading that asks a question and a first paragraph that answers it produces one citable fragment per section.

Structure that can be sliced

What a model extracts well:

  • Headings that are questions. “How long does Google take to index?” can be quoted whole; “On timing” cannot.
  • FAQ sections. They are already-delimited question-and-answer pairs. It is the format with the best effort-to-citation ratio there is.
  • Comparison tables. Models read them very well and they are hard to paraphrase wrongly.
  • Lists where each bullet holds a complete idea, not three words that only make sense with the paragraph above.

What extracts badly: long paragraphs with the conclusion at the end, irony, and anything that needs an image to be understood.

Structured data, now paying twice

JSON-LD was written for search engines and it turns out models like it just as much: it is clean data instead of HTML to guess from. A well-built FAQPage is literally question-and-answer pairs ready to use.

The rule is the usual one — mark up only what is visible — and the way to guarantee it is generating the schema from the content itself rather than writing it separately. It is covered in structured data: what to mark up and what not.

Add an llms.txt

It is a simple convention: a Markdown file at the root of the domain that summarises the site for a language model. The idea is that an assistant wanting to answer questions about your site shouldn’t have to crawl a hundred pages of HTML with menus and CSS to work out what is there.

What goes in it:

  • A title and one sentence saying what the site is.
  • The main sections, each with a link and a one-line description.
  • The content you actually want cited, with its link.
  • What is not there: anything behind an account is not yours to publish.

And a practical recommendation: generate it from the real source, not by hand. Ours is built from the catalogue and the blog index on each request, so it includes what was published yesterday and cannot go stale. An out-of-date llms.txt is worse than none, because it describes a site that no longer exists.

Note: it is a convention, not a standard backed by anyone. It costs little, does no harm, and some assistants already make use of it. Treat it that way and not as a silver bullet.

What doesn’t change

None of this replaces the fundamentals. Assistants lean on search indexes to know what exists, so if you aren’t indexed, you don’t get cited. Everything in technical SEO for developers is still the floor all of this stands on.

And there is one thing you cannot optimise: saying concrete, checkable things. A model will more readily cite “free-plan retention is what decides whether it can be operated on” than “it is important to choose your provider well”. Concrete facts are citable; filler isn’t.

How to tell whether it is working

There is no dashboard for this yet, so it is hands-on:

  • Just ask. Put the questions you wrote for to several assistants and see what they cite.
  • Read your server logs. AI crawlers identify themselves in the user agent.
  • Watch referral traffic from assistant domains in your analytics.

The numbers are small next to traditional search. They are growing, and the work required is mostly the work you should be doing anyway.

Frequently asked questions

Should I block AI crawlers? It depends what you publish. If your content is public and you want visits, blocking the ones that cite means giving up that traffic. The ones that only harvest for training are a separate conversation, and blocking those is reasonable. What matters is deciding rather than inheriting a default.

Is llms.txt worth anything? It is cheap to maintain if it generates itself, and some assistants do fetch it. It is not an official standard and there is no guarantee anyone reads it. Worth it as a complement, never as a substitute for having the content right in HTML.

Does Google penalise AI-written content? What it penalises is content with no value, written by anyone. A generated article that says something concrete and checkable is fine; a thousand generic articles published in a week are not, and they give themselves away by the pattern.

Does appearing in an AI summary cost me visits? Sometimes: if the full answer is in the summary, many people don’t click. The realistic defence is writing so the short answer leaves you wanting more — concrete data, tools, detail that doesn’t fit in two sentences — and being the cited source rather than the ignored one.

How long does it take to show? Assistants with live search can cite you within days if you are already indexed. Anything relying on training data takes months or never happens. Optimise for the former, which are also the ones that leave a link.

The directory is the other half of this

115 services with a genuinely free plan, each one with its limits spelled out. No sign-up needed to start looking.

Explore the directory

← All articles

Keep reading

5 min read

Scraping to feed a RAG

A step-by-step guide to turning public documentation into clean text, chunking it by section, and putting it into a semantic search without writing a custom scraper.

ScrapingAIGuides

5 min read

Free SEO tools for a small project

The seven pieces you need to measure and fix the SEO of a small project without paying anything, and what to check in each one's free plan before you set it up.

SEOFree planGuides

5 min read

Structured data: what to mark up and what not

JSON-LD without the hype: which types actually do something, how to stop the schema promising things the page doesn't show, and why it doesn't raise rankings but does raise clicks.

SEOStructured dataGuides