hugoで生成しているサイトにllms.txtを作成する

しむどん 2025-05-18

llms.txtは、大規模言語モデルで使用するためのデータを回収するためのボットに対し、どのデータにアクセスしてよいかという事の意思を伝えるために策定されている。robots.txt同様、これに従うかどうかは、ボットの挙動に委ねられているが、まあないよりはマシといった所だろう。

llms.txtにはサイトとその構造についての要約、各ページへのリンクを記載する。もう一つ、同じようなllms-full.txtというファイルがある。こちらには、より詳細な情報を梱包し、LLMに渡しやすくしたデータを提供するもののようだ。今回はllms.txtのみ対応する。

このサイトは静的サイトジェネレータHugoを使用して構築している。そのためHugoの作法に則って作業をする。このサイトは別に隠さなければならないような内容を掲載しているわけではない。そのため全ページをllms.txtに掲載する。

まず hugo.toml に出力フォーマットの設定を追加する。

[outputFormats]
  [outputFormats.llms]
    baseName = "llms"
    ext = "txt"
    mediaType = "text/plain"
    isPlainText = true
    ugly = true
hugo.toml

この出力フォーマットを利用し、ファイルを出力するためのコンテンツファイルを追加する。

---
layout: llms
outputs: llms
---
content/llms.md

そしてこのコンテンツファイルが利用するレイアウトを追加する。

# Symdon's House

## Languages

- [English](/)
- [日本語](/ja)
- [Português](/pt)
- [Indonesia](/id)
- [Türkçe](/tr)

## Articles

{{- $pages := where .Site.AllPages "Kind" "==" "page" }}
{{ range $pages }}
- [{{ .Title }}]({{ .RelPermalink }} {{ .LinkTitle }})
{{ end }}
layouts/_default/llms.txt

準備は完了した。この状態でビルドすると、publicディレクトリ配下に llms.txt が生成されるようになった。