2026-03-07
llms.txt: what it is good for (and what is not proven)
Machine-readable site summary, narrative control, extended text. Disclaimer: no public proof that llms.txt changes ranking in ChatGPT or Perplexity. How Snowinch serves it (Nitro, not public/).
Problem you solve: you want a canonical plain-text file with links and blurbs that automated tools (crawlers, assistants, internal pipelines) can read without heavy HTML parsing.
What is not proven (being explicit): as of 2026 there is no public vendor documentation proving that /llms.txt alone changes ranking or how often a consumer model (ChatGPT, Perplexity, Gemini, …) cites your brand. There is no published “llms.txt ranking factor”.
What is still worth doing: keep a summary + long-form artefact updated as a source of truth for people building datasets, support flows, or proprietary integrations — and to reduce ambiguity when a system reads your site.
What to put in the file (content)
- Who you are, what you do, links to marketing pages with one-line descriptions.
- Contacts and legal lines if partners/compliance need them.
- A link to
/llms-full.txt(or equivalent) if you ship a long transcript. - Blog / portfolio entries that are actually public, with short meta (like a sitemap, but plain text).
Typical Markdown-ish structure (plain text is fine):
# Brand name
One line on what you do.
## Pages
- /en/services — …
- /it/services — …
## Blog
- /en/blog/slug — title and SERP description
llms.txt vs classic SEO
| Aspect | SEO (Google Search) | llms.txt |
|---|---|---|
| Goal | Indexing + ranking on SERPs | Text corpus reusable by tools |
| Evidence of impact | Public Google guidance | No public consumer-LLM ranking standard |
| Format | HTML + structured data | Plain text / light Markdown |
| Maintenance | Ongoing (content + technical) | When key pages change |
llms.txt does not replace meta tags, canonicals, hreflang, or performance — it complements them.
Implementation on Nuxt / Nitro (Snowinch)
On this site /llms.txt is not a public/ file: it is a Nitro route that generates text at runtime so it stays aligned with blog, portfolio, and i18n (see server/routes/llms.txt.get.ts and utils/buildLlmsSnowinch.ts in the repo). Same pattern for /llms-full.txt.
Why avoid a duplicate public/llms.txt: it conflicts with the dynamic route and risks stale content vs deploy.
Real example (Snowinch)
The public summary is served at:
https://www.snowinch.com/llms.txt
Open it in a browser: UTF-8 text, sensible Cache-Control, no auth. The extended transcript is /llms-full.txt on the same host.
Operational checklist
- 200 OK on
/llms.txt,Content-Type: text/plain; charset=utf-8. - Consistency with the sitemap and pages that are actually public (no drafts).
- Update when services, pricing, team, or blog slugs change.
- Do not promise unmeasurable effects on consumer LLMs in sales decks.
Summary
llms.txt= machine-readable site documentation — cheap and useful.- Do not sell it as a guaranteed AI-search SEO lever.
- On stacks like Nuxt: prefer server-side generation (or a build step) over a forgotten static file in
public/.