# llms.txt og llms-full.txt: et sitemap, skrevet om for språkmodeller

I tjue år har det maskinlesbare kartet over et nettsted vært `sitemap.xml`: en flat
XML-liste over hver eneste URL, hver med en sist-endret-dato og et hint om
crawl-prioritet. Den ble bygget for én konsument, søkemotor-crawleren, og for én jobb: å
fortelle den crawleren hvilke sider som finnes og hvor ofte den bør komme tilbake. Den jobben
gjør den godt. Den gjør ingenting annet.

Språkmodeller kom med et annet sett spørsmål, og `sitemap.xml` svarer ikke på noen av dem. En
crawler som mater en modell vil ikke først og fremst ha en uttømmende URL-liste å planlegge
etter; den vil vite **hva nettstedet handler om, hvilken håndfull dokumenter som faktisk
betyr noe, og om den kan få innholdet uten å rendre en side full av navigasjon, skript og
informasjonskapsel-bannere.** Av flere forslag for å fylle det tomrommet har to filer seilt
opp og festet seg: `llms.txt` og `llms-full.txt`.

## Hva sitemap.xml er, og hvor den stopper

`sitemap.xml` er en indeks *over plasseringer*. Enheten dens er URL-en. Den er skrevet i XML
for maskiner, er aldri ment å leses av et menneske, og bærer verken innhold eller redaksjonell
vurdering: hver URL ligger i den samme flate listen, og `<priority>` er et crawl-hint, ikke en
uttalelse om hva en leser bør se på først. Avgjørende: hver oppføring peker på en **HTML-side**,
den dyre, krom-innpakkede representasjonen en modell deretter må hente og strippe ned før den
kan bruke ett eneste ord av den.

For en søkemotor er det helt riktig. For en modell som setter sammen kontekst, er det feil
form på hver akse: feil format, ingen kuratering, intet innhold, og den peker på den tyngst
mulige representasjonen av hver side.

## Hva llms.txt faktisk er

`llms.txt` er én enkelt Markdown-fil i **roten av domenet**, `/llms.txt`, foreslått sent i
2024 (konvensjonen bor på `llmstxt.org`). Den er ikke en uttømmende URL-dump. Den er en
**kuratert indeks**, skrevet i Markdown slik at den er like lesbar for et menneske og triviell
å parse for en modell. En minimal en ser slik ut:

```markdown
# Holmen Innovative Solutions AS

> Programvarestudio som bygger retro-inspirerte, standardførste websystemer.

## Sider
- [Hjem](https://innovativesolutions.no/index.md): Selskapsoversikt, tjenester og stack.
- [Personvern og vilkår](https://innovativesolutions.no/terms.md): Retningslinjer og registrering.

## Feltnotater
- [GEO vs. SEO](https://innovativesolutions.no/notes/geo-vs-seo.md): Hvor grensen går.
- [Servere Markdown til boter](https://innovativesolutions.no/notes/markdown-content-negotiation.md)
```

Tre ting gjør den til en annen artefakt enn `sitemap.xml`, ikke en omformatering av den:

1. **Den er kuratert, ikke uttømmende.** Den lister dokumentene som er verdt å lese, med en
   enlinjes beskrivelse av hvert, i en rekkefølge som gjenspeiler viktighet. Det redaksjonelle
   laget er hele poenget; en vilkårlig liste ville undergravd det.
2. **Den er menneske-først Markdown.** Den samme filen en modell parser, er en et menneske kan
   åpne og forstå. Ingen XML-skjema, ingen verktøy nødvendig.
3. **Den lenker til rent innhold, ikke krom.** Konvensjonen er å peke på Markdown-følgefiler
   (`.md`-representasjonene av hver side), slik at en crawler følger indeksen rett inn i
   fordøyelig prosa fremfor inn i et rendret HTML-skall.

## Hva llms-full.txt legger til

`llms.txt` er fortsatt en *indeks*: en modell som leser den lærer formen på nettstedet og må
deretter hente hvert lenket dokument. `llms-full.txt` slår sammen det andre steget. Den er
**hele nettstedet, slått sammen til ett Markdown-dokument**: hver side og artikkel inlinet, i
leserekkefølge, i én enkelt fil.

Grunnen til at den finnes er måten modeller fordøyer informasjon på. En modell blar ikke; den
fyller et kontekstvindu. Å gi den én fil som allerede inneholder alt betyr:

- **Én henting i stedet for dusinvis.** Ingen crawl, ingen lenkefølging, ingen rendring per
  side. Hele korpuset ankommer i én forespørsel.
- **Ingen rekonstruksjon.** Modellen trenger ikke å sy sammen et nettsted fra fragmenter; det
  er allerede satt sammen i rekkefølge.
- **Token-effektiv inndata.** Ren Markdown uten markup, skript eller styling er en brøkdel av
  tokenene som tilsvarende rendret HTML ville kostet.

Arbeidsdelingen er ren: `llms.txt` er **innholdsfortegnelsen**, for når en modell eller agent
vil velge hva den skal lese; `llms-full.txt` er **hele boken**, for når den bare vil ha alt på
én gang.

## sitemap.xml vs. llms.txt, side om side

| | `sitemap.xml` | `llms.txt` / `llms-full.txt` |
|---|---|---|
| Konsument | Søkecrawler | Språkmodell / KI-agent |
| Format | XML | Markdown |
| Menneskelesbar | Nei | Ja |
| Innhold | Ingen (kun URL-er) | Beskrivelser; full tekst i `-full` |
| Utvalg | Uttømmende | Kuratert etter viktighet |
| Peker på | HTML-sider | Ren Markdown |
| Jobb | Crawl-planlegging | Forståelse og fordøyelse |

De er ikke rivaler. Et nettsted bør levere begge: `sitemap.xml` gjør fortsatt jobben sin for
søk, og `llms.txt` gjør jobben søk aldri ba om.

## Det ærlige forbeholdet om utbredelse

Dette er en konvensjon som har fått reelt fotfeste, ikke en ratifisert standard med garanterte
konsumenter. Mange nettsteder og dokumentasjonsplattformer genererer nå `llms.txt`
automatisk, og formatet er stabilt nok til å stole på. Men i skrivende stund har **ingen stor
modellleverandør offentlig forpliktet seg til å fordøye `llms.txt` ved inferens eller
trening**, og enkelte stemmer innen søk har vært åpent skeptiske og sammenlignet det med den
forlengst døde keywords-metataggen. Behandle oppsiden som reell, men ugarantert: du publiserer
en ren, billig, velstrukturert inngangsdør for de crawlerne som velger å bruke den, til
tilnærmet null kostnad, fremfor å satse nettstedet på den.

Forholdet mellom kostnad og nytte er det som gjør det til et enkelt valg. Filene genereres fra
innhold du allerede har, de kan ikke skade deg, og i det øyeblikket en crawler bestemmer seg
for å foretrekke en kuratert Markdown-indeks fremfor å skrape rendret HTML, er du allerede
der.

## Hvordan dette nettstedet gjør det

Begge filene er byggeartefakter her, regenerert ved hvert bygg fra det samme innholdet
nettstedet rendrer. Etter at hver lokalitet er bygget, leser et skript den lokalitetens
innholdsbunt og feltnotater og skriver `llms.txt` (den kuraterte indeksen) og `llms-full.txt`
(hele korpuset) inn i nettstedets rot, sammen med `.md`-følgefiler per side som indeksen lenker
til. `robots.txt` peker crawlere mot `llms.txt`, akkurat slik den peker søkemotorer mot
`sitemap.xml`. De to kartene ligger side om side i roten av domenet, hvert adressert til den
konsumenten det ble designet for.
