llms.txt: an example file, the format and a checklist for your site
llms.txt is a plain-text Markdown file in the site root: a title, a short summary and lists of links to the main pages with notes. It helps language models understand a site quickly, but it does not replace a sitemap or structured data and does not guarantee use. It is convenient to generate from the same data as the site.
The llms.txt file is a short guide to your site for language models. It lives in the root (/llms.txt) and is written in Markdown. Here are the structure, an example and the limits.
File format
The common format has these parts:
- A first-level heading: the name of the site or project (the required part).
- A blockquote with a short summary: one or two sentences about what the site is.
- Optional paragraphs with important notes.
- Second-level sections with link lists:
- Name: a short note. - An
Optionalsection for secondary material that can be skipped if there is not enough room.
Example
# OneSwitch
> Development and automation: websites, Telegram bots and Mini Apps, integrations, 1C and AI agents.
Author: Vladimir Kalianov. Language: English. Contact: the /en/kontakty/ page.
## Services
- [Telegram bots and Mini Apps](https://oneswitch.ru/en/uslugi/telegram-boty-i-mini-app/): bots, catalogs, subscriptions, notifications.
- [1C and accounting systems](https://oneswitch.ru/en/uslugi/1c/): extensions, site exchange, AI document recognition.
## Work
- [HotTrip](https://oneswitch.ru/en/raboty/hottrip/): a portal, an AI bot, a Mini App and an automated channel.
## Blog
- [Validating Mini App initData](https://oneswitch.ru/en/blog/proverka-initdata-telegram-mini-app-python/): code and mistakes.
## Optional
- [Full site text](https://oneswitch.ru/en/llms-full.txt)
How to write a good file
- Only important pages. Services, key articles, documentation, contacts. Do not paste the whole sitemap.
- A note for every link. A short phrase about what is on the page helps a model pick the right one.
- Full addresses with protocol and domain, without redirects.
- Freshness. The file must update with the site, otherwise it will list pages that no longer exist.
- Keep it short. It is a reference, not a copy of the site. For the full text make a separate
llms-full.txt.
Generating with a script
It is convenient to build the file from the same data as the site. A Python example:
def build_llms_txt(title: str, summary: str, sections: dict[str, list[tuple[str, str, str]]]) -> str:
"""sections: {"Services": [(title, url, note), ...]}"""
lines = [f"# {title}", "", f"> {summary}", ""]
for name, links in sections.items():
lines.append(f"## {name}")
lines += [f"- [{t}]({u}): {d}" for t, u, d in links]
lines.append("")
return "\n".join(lines)
That is how the file on this site is made: it is generated on every build from the list of services, work and articles, so it always matches the content.
How it differs from other files
| File | Purpose |
|---|---|
robots.txt | Access rules for crawlers: what may and may not be crawled |
sitemap.xml | A full list of pages for search engines |
llms.txt | A short meaning-level overview of the site for language models |
They complement each other. Structured data in JSON-LD, which describes pages for search engines and AI, is also useful.
What to expect
llms.txt is a community proposal, not a standard every system must support. Not all models and crawlers read it, so it does not guarantee mentions in answers. But it costs nothing, helps those who use it and forces you to describe your site clearly. Add it along with the rest of the preparation: GEO and llms.txt. Service: SEO and AI optimization.
FAQ
Where should llms.txt live?
In the site root at `https://your-domain/llms.txt`, like `robots.txt`.
Should I allow AI bots to crawl my site?
If you want to be found through AI, do not block them in `robots.txt`. For paid or private content set up restrictions.
Does llms.txt replace the sitemap?
No. A sitemap is for search engines, llms.txt gives models a short overview. It is best to have both.
What is llms-full.txt?
An additional file with the full text of key pages in one document. It is useful when a model needs to read the whole site without following links.
Plain version for AI and reading without styling: Markdown.