Skip to content
Cedric Kato, home

FN-002 — Field note ·

llms.txt: what it is, what it isn't and how I generate mine

A straight answer on llms.txt for founders and marketers: what the proposal covers, what it won't do for SEO and how I generate mine so it stays accurate.

llms.txt is a plain Markdown file at the root of your site that tells AI assistants and agents who you are and which pages matter. It's a proposal, not a standard, and it isn't a ranking trick: what it's worth depends on how accurate it is. This note covers what it is, what it isn't and how I generate mine so it stays current.

I've worked on this from two sides. As Head of Admin Tech for a US client, I rewrote the client's llms.txt so AI tools reading it would get current positioning, services and pricing instead of outdated copy and broken links. On this site, the file is generated from the same data as the pages, so most of it can't drift out of date.

What llms.txt is

The proposal lives at llmstxt.org. It describes a Markdown file, usually at /llms.txt on your domain: a short briefing an assistant can read instead of crawling every page.

At the time of writing, the proposal lays the file out in this order:

Part Markdown In the file on this site
Name One H1 (the only required part) My name
Summary A blockquote Who I am, where I'm based and what I build
Details Optional free text Key facts, experience, tools and how I work
Link lists H2 sections, each a list of links with a short description Services, Selected work and Field notes
Skippable links A section called ## Optional The services and notes indexes, the RSS feed and the sitemap

Version 2 of the proposal also recommends publishing a Markdown version of each page and linking to that. The links in this site's file point to its normal HTML pages.

Here's the top of mine, opened in Chrome.

The top of cedrickato.com/llms.txt in Chrome: an H1 name, a blockquote summary and a Key facts list. (full size, opens in a new tab)
Fig. 1 Served as text/markdown, so the browser shows the raw Markdown with no styling.

Further down come the link lists, one line per page (there's one later in this note), then the Optional section. Trimmed to the headings:

## Services

[...]

## Selected work

[...]

## Field notes

[...]

## Optional

- [Services index](https://cedrickato.com/services)
- [Field notes index](https://cedrickato.com/notes)
- [Field notes RSS feed](https://cedrickato.com/notes/rss.xml)
- [Sitemap](https://cedrickato.com/sitemap.xml)

It's a predictable shape, so an assistant knows where to look.

What llms.txt isn't

Three things are worth being clear about.

Not a standard

It's a proposal, published by its author for community input and still changing. Not every AI tool reads it, so publishing one doesn't guarantee any particular assistant will use it.

Title block of llmstxt.org: "The /llms.txt file, v2", described as a proposal, with its author and its published and modified dates. (full size, opens in a new tab)
Fig. 3 Version 2, first published in 2024 and last modified in August 2026. llmstxt.org, September 2026.

Not a ranking trick

It isn't a shortcut around good pages, a sitemap or structured data. The proposal's own comparison gives each file a different job:

File What it does Who uses it
robots.txt Says what automated tools may access Crawlers such as search bots
sitemap.xml Lists every indexable page Search engines
llms.txt A short, curated overview with the key links Assistants, on demand, while helping someone

On this site, llms.txt sits next to a sitemap, a robots.txt that allows all crawlers and JSON-LD structured data. It doesn't replace any of them.

Not proven by a passing audit

Google's PageSpeed Insights runs Lighthouse, which at the time of writing includes an llms.txt audit in an Agentic Browsing category that Google marks as still under development.

PageSpeed Insights Agentic Browsing category for cedrickato.com: three passed audits, with "llms.txt follows recommendations" expanded to show its description. (full size, opens in a new tab)
Fig. 4 What a pass looks like, caveat included. PageSpeed Insights, Lighthouse 13.5.0, September 2026.

The check is light. The audit's description asks for Markdown with at least one H1, and the Lighthouse 13.5.0 source tests for an H1, at least one link and at least 50 characters. A missing file is marked not applicable, not failed.

A pass tells you the file exists and has the right shape, not that what it says is true. A file full of outdated copy passes just as easily.

How mine is built

The llms.txt on this site isn't edited by hand. A Next.js route handler at app/llms.txt/route.ts generates it. It's marked force-static, so Next.js renders it once at build time and serves it as text/markdown.

Most of it comes from the typed data files the pages read: services, projects, experience, site details and the four steps of how I work. The Field notes section comes from the notes' own Markdown files, published notes only. Trimmed, the route looks like this:

export const dynamic = "force-static";

const abs = (path: string) => new URL(path, site.url).toString();

export function GET() {
  const lines = [
    `# ${site.name}`,
    // [...] summary, key facts, experience, tools, how I work
    "## Services",
    ...services.map(
      (s) =>
        `- [${s.navLabel}](${abs(servicePath(s))}): ` +
        `${s.metaDescription} ${s.summary}`,
    ),
    // [...] selected work, field notes and the Optional section
  ];

  return new Response(lines.join("\n"), {
    headers: { "content-type": "text/markdown; charset=utf-8" },
  });
}

One service, three places

Take the AI agents service. Its metaDescription is the line under its name on the services index, and also the landing page's meta description and the description in its structured data.

The AI Agents & LLM Integration row on the cedrickato.com services index: service number, name and a one-sentence description. (full size, opens in a new tab)
Fig. 6 The services index shows each service's meta description under its name.

Its summary is the sentence in the author box at the foot of its landing page.

Author box on the AI agents landing page: Cedric Kato, AI Solutions & Automation Consultant, with a one-sentence summary of what Cedric builds and with which tools. (full size, opens in a new tab)
Fig. 7 The service's summary sentence, in the author box at the foot of its landing page.

The route joins the two, word for word, into that page's line in llms.txt. abs() turns the path into an absolute URL on the canonical domain, which is set in one place.

The AI Agents & LLM Integration line in llms.txt: a link to the landing page, followed by two sentences, the first of them highlighted. (full size, opens in a new tab)
Fig. 8 The highlighted sentence is the services index line; the sentence after it is the author box summary.

So when I change how a service is described, the landing page, its structured data and llms.txt all change in the same build. There's no second copy to remember. A few lines, such as the tools list, are written directly in the route; those need a manual look when something changes.

A working pattern for your site

None of these steps depend on a framework.

  1. Start from what's already published. Take the H1 and the summary from your homepage, and each link description from that page's meta description. If the file and your pages disagree, a reader can't tell which to trust.
  2. Keep it to facts. Every line should be something you'd stand behind on your homepage: nothing aspirational, no numbers you can't back up and no lists of search terms. Write for someone who wants to understand the business quickly.
  3. List the pages that answer "what do you do?" Services, key work and pricing if you publish it go in H2 sections. Secondary pages go under ## Optional.
  4. Use absolute links, and open every one. Full URLs such as https://example.com/services work wherever the text ends up. Broken links were part of what I fixed in the client's file.
  5. Put it at the root. /llms.txt on your main domain covers the whole site. Version 2 also allows one per section, such as /docs/llms.txt, covering the pages under it.
  6. Decide how it stays current. If your pages are built from a data source, such as data files or a CMS, generate the file from that same source, the way mine is. If they aren't, add llms.txt to the checklist for any change to positioning, services or pricing.
  7. Test it on an assistant. The proposal suggests giving an assistant only your llms.txt and asking it about your business. If it can't say what you do and for whom, rewrite the summary.

Keeping it current matters most. A generated file keeps up with the site because there's no separate copy to forget. A hand-written one keeps up only if updating it is part of the routine.

On WordPress or Wix, a plugin or the platform may already generate the file: the proposal's integrations list names Wix, plus Yoast SEO and AIOSEO for WordPress. I haven't tested them, so check what they pull from first.

If you want help with this

If you'd like an llms.txt written for your site, or generated from the same data as your pages so it stays current, send me a note through the contact form. For the wider work of connecting AI tools to your real business systems, see AI agent development and LLM integration.

Written by

Cedric Kato

AI Solutions & Automation Consultant

5+ years building systems for 200+ US-based businesses, and an architecture degree before that.

B.S. Architecture, University of Santo Tomas, 2020

ExperienceLinkedIn (opens in a new tab)

Contact

Tell me what's slowing the business down.

Optional
Optional

I read every message myself.

What happens next

  1. 01I reply personally by email.
  2. 02A short call to walk through your current setup.
  3. 03A written map and a scoped plan, with running costs, before anything is built.
Based in
Metro Manila, PhilippinesGMT+8 · Remote, flexible across US Eastern and AEST hours
Résumé
Download PDF