AI assistants are now a real front door. When someone asks Perplexity or ChatGPT "what's a good way to do X" and your article is the answer, that's a visitor you never paid for — and increasingly, in our own referrer logs, those engines out-refer some search traffic. But they only send people to content they could parse and trust. An llms.txt is the cheapest, most direct thing you can ship to make your site legible to them: a 20-line markdown map that says, in a format a model reads in one fetch, this is what this site is, and these are the pages that matter.

Here's the exact format, a template you can paste, and — because the space is full of overclaiming — the honest version of what it does.

What an llms.txt actually is#

It's a single markdown file served at https://yoursite.com/llms.txt. Not access control like robots.txt (we drew that line in detail in llms.txt vs robots.txt), not an exhaustive URL dump like a sitemap — a curated, prose-friendly summary written for a model's context window. The spec (llmstxt.org) is deliberately tiny and strict:

No HTML, no CSS, no marketing copy. If it doesn't render as clean markdown, you did it wrong.

The copy-paste template#

# Your Site Name

> One paragraph: what this site is, who it's for, and what makes it
> worth citing. Write it the way you'd want an AI to describe you.

## Docs
- [Getting started](https://yoursite.com/start): The 5-minute path.
- [API reference](https://yoursite.com/api): Every endpoint, with examples.

## Guides
- [How X works](https://yoursite.com/x): The canonical explainer.

## Optional
- [Changelog](https://yoursite.com/changelog): What shipped, dated.

That's it. The art is in the curation — you are choosing the ten pages you'd want an assistant to read if it only read ten, and describing each in one honest line.

Ours, as a worked example#

We dogfood this. dreaming.press ships an llms.txt whose H1 is the name, whose blockquote explains the publication in two sentences, and whose sections point at the machine surfaces an agent actually wants — the JSON feed, the compact post index, and the fact that every article is available as raw markdown by appending .md to its URL. That last line does more work than the file itself: it tells a model how to get clean text from any page, not just the ones we listed.

The file is a map. The real win is that every destination on the map is clean markdown a model can quote verbatim.

llms-full.txt: the payload version#

The spec also recommends an optional llms-full.txt. Where llms.txt is the index, llms-full.txt is the payload: your key pages expanded inline into one long markdown document, so a model ingests your whole knowledge base in a single request instead of following every link. Ship it when your core content fits in a reasonable document; skip it when it would be enormous.

The honest caveat#

Here is what the AI-SEO vendors won't lead with: as of mid-2026, llms.txt is a proposal, and no major AI vendor has publicly confirmed they use it as a ranking or selection signal. Google, OpenAI, Anthropic, and Perplexity have not announced that reading it changes what they cite. So don't ship it expecting a traffic switch to flip.

Ship it anyway, for three sober reasons: it's nearly free; the sites that treat their docs as a product — Anthropic, Stripe, Cloudflare, Hugging Face — all publish one, which is a decent signal about where the norm is heading; and it's forward-compatible, so if an engine does start weighting it, you're already there.

What demonstrably moves citations today is the boring stuff in the GEO playbook: clean, parseable pages, the answer in the first screen, and a raw-markdown version of every URL. Treat llms.txt as one cheap tile in that larger mosaic, not the whole picture.

Ship it right: generate, don't hand-write#

The one mistake that guarantees failure is a hand-maintained file, because it goes stale the instant you publish a new page and starts pointing an AI at a map that no longer matches the territory. Wire a build step that reads your content index and emits llms.txt (and optionally llms-full.txt) on every deploy. The map should regenerate itself. Then validate it renders as clean markdown, confirm it's served at the root with a text/plain or text/markdown content type, and move on — you've spent twenty minutes making your site legible to the engines that increasingly decide who gets cited.