GEO / AEO guide
How to write an llms.txt file
A practical walkthrough, using a real, live file as the example.
What it is
An llms.txt file is a plain-text index at a site's root, written for AI systems rather than search crawlers — the equivalent of sitemap.xml, but aimed at large language models instead of search engines. It gives an AI system a fast, structured way to understand what a site covers and which pages matter most, rather than having to infer it from a full crawl.
Where it goes and how big it should be
It's served as plain text at /llms.txt, the same way robots.txt and sitemap.xml already are. Keep it concise — a few kilobytes is enough for most sites. A separate, deeper llms-full.txt is worth adding only once a site has enough content to justify it.
What to include
Four sections cover most of what matters:
- A one-paragraph summary of who or what the site is, in plain, direct language — the first thing an AI system reads.
- A list of key pages, each with a link and a one-line description of what it covers — this is the part that actually functions like a sitemap for the model.
- A short list of core verified facts, written as plain statements rather than marketing copy — dates, numbers, roles, whatever is true and citable.
- Links to authoritative profiles elsewhere (LinkedIn, GitHub, etc.), so the model has somewhere to cross-check.
A real example
This site's own llms.txt follows exactly this structure — a positioning summary, a list of key page sections, links to case studies and writing, a core-facts block, and a link out to LinkedIn. It's short, current, and kept in sync by hand whenever the site changes. Reading it directly is a better example than a hypothetical one:
View the live file at andrewfear.com/llms.txt
The part that matters most: consistency
An llms.txt file is only useful if what it says matches what's actually on the page, and what's on the page matches what's said elsewhere (LinkedIn, other profiles). Inconsistent facts don't just fail to help — they reduce an AI system's confidence enough that it may omit a site entirely rather than risk citing something wrong. Write it, then keep it updated every time the underlying content changes.