Framework How-To Guide aiknowledgesignal.io

How to Write an llms.txt File

/llms.txt is a curated, machine-readable map of your best content — designed to point AI systems to the pages, concepts, and sources that represent your canonical knowledge. It is an emerging convention, not a requirement.

Why it matters

A sitemap lists every URL; llms.txt does the opposite — it is a deliberately curated shortlist of the pages that actually carry your knowledge, written for an AI reader. Placed at /llms.txt, it is meant to let a crawler skip the navigation, marketing, and boilerplate and go straight to the concepts, methods, proof, and tools you most want cited. Be clear-eyed, though: it is an open proposal, and no major AI provider has confirmed it reads the file — Google explicitly lists AI-specific text files like llms.txt as not required.

So why do it? Two reasons that don't depend on any crawler consuming the file. First, writing a good llms.txt forces you to identify and articulate your canonical pages — the same curation discipline that sharpens everything else in the framework. Second, if the convention is picked up by emerging AI tools, a substantive file is ready to help them where a near-empty stub would not. Set expectations honestly with clients: it is cheap insurance and a useful exercise, not a confirmed source of AI visibility — the fundamentals in Phases 2–6 are what actually earn citations.

What good looks like

A strong llms.txt reads like a well-organised table of contents for a machine — Markdown, grouped by content type, every link annotated:

Step by step

  1. Create the file at the domain root Save a plain-text/Markdown file as llms.txt and serve it from the root so it resolves at https://yourdomain.com/llms.txt. Like robots.txt, it must be at the root — not in a subfolder.
  2. Open with an H1 and a one-line summary Start with # Your Organisation and a single sentence describing what you publish and who it's for. This is the orientation line an AI reads first — make it a direct, complete statement (the Phase 2.1 direct-answer habit).
  3. Group links by content type Use ## headings to sort entries into Concepts (definitions, frameworks), Methods (how-to, process), Proof (research, case studies, data), and Tools (calculators, templates, products). Typed grouping tells the AI what role each page plays.
  4. Annotate each link Write each entry as a Markdown link followed by a short description: - [Page title](https://…): one line on what it is and why it's canonical. The annotation is what lifts a link from a URL to a usable signal.
  5. Cross-reference the sitemap and keep it current The high-signal pages in llms.txt should match the priorities in your sitemap.xml — if they diverge, the AI gets a partial map of your authority (Phase 5.5). Revisit the file whenever you publish or retire a canonical page.

Worked examples

1 A comprehensive, typed llms.txt

The target shape: an H1, a one-line summary, and links grouped by content type with annotations. Trimmed here for length — a real file would list every canonical page.

# AI Knowledge Signal
> The AI Knowledge Signal Publication Framework: a 6-phase method for structuring content so AI systems can find, trust, and cite it.

## Methods
- [Configure robots.txt for AI crawlers](https://aiknowledgesignal.io/framework-guides/phase1-crawlability/robots-txt.html): separate training, search and user-fetch agents; declare the sitemap.
- [Implement JSON-LD schema](https://aiknowledgesignal.io/framework-guides/phase5-ai-usability/json-ld.html): mark up entities so AI can disambiguate them.

## Concepts
- [Framework How-To Guides](https://aiknowledgesignal.io/framework-guides/): all 30 subdomains across the six phases.

## Tools
- [Free AI visibility audit](https://aiknowledgesignal.io/): score any URL across five dimensions.

## Optional
- [Newsletter](https://aiknowledgesignal.io/newsletter): monthly GEO and AI-search research digest.
2 Before / after: stub vs. comprehensive

Same site, two versions. The "before" technically has a file; the "after" is the one that actually moves the signal.

Before A stub: # Acme and two bare links with no descriptions and no grouping. The file exists, but there's no substance to it — it conveys almost nothing a crawler couldn't already infer, and isn't worth publishing as-is.
After Every canonical page, annotated, under typed sections, matching the sitemap's priority pages. If any AI tool does read the file, it gets a typed, curated map of what to cite and why — and either way you've done the curation work that pays off across the framework.

Common mistakes

MistakeFix
Publishing a near-empty stubAdd real substance — your canonical pages, grouped and annotated; presence alone adds little.
One flat, undifferentiated link listGroup by content type (Concepts, Methods, Proof, Tools) so the AI knows each page's role.
Bare URLs with no annotationsAdd a one-line description to each link saying what it is and why it's canonical.
Dumping every URL (a second sitemap)Curate — llms.txt is your best pages, not all of them.
llms.txt and sitemap disagreeKeep the high-signal pages consistent across both (Phase 5.5) or the AI gets a partial map.
Letting it go staleUpdate when canonical pages are published or retired; recency is a maintenance signal (Phase 6).

Limits of this advice

Checklist

  • File served at https://yourdomain.com/llms.txt, returns 200
  • Opens with an H1 and a one-sentence summary of what you publish
  • Links grouped under typed headings (Concepts / Methods / Proof / Tools)
  • Every link annotated with what the page is and why it's canonical
  • Covers your canonical pages across 2+ sections (comprehensive, not a stub)
  • High-signal pages match the priorities in sitemap.xml (Phase 5.5)
  • Reviewed for currency whenever canonical content changes