llms.txt для Hugo
Два подхода: статический файл в static/ (без настройки, работает везде) или пользовательский формат вывода, автоматически создающий llms.txt из вашего content во время сборки.
Последнее обновление:
Вариант 1: статический файл (рекомендуется)
Hugo копирует всё из static/ каталог напрямую в public/ результат сборки.
Разместите llms.txt
там, и он будет доступен по адресу /llms.txt на любой платформе хостинга, изменения конфигурации
Hugo не требуются.
# Hugo, zero-config static approach
#
# Place your file at: static/llms.txt
# Hugo copies everything in static/ directly to the public/ output directory.
# Your file will be served at /llms.txt on any host.
#
# Project structure:
# your-hugo-site/
# ├── static/
# │ └── llms.txt ← add this
# ├── content/
# ├── layouts/
# └── hugo.toml
#
# No config changes needed. Run "hugo" and it appears in public/llms.txt.
После выполнения hugo, вы найдёте public/llms.txt
в результатах сборки. Разверните public/ в Cloudflare Pages, Vercel, GitHub Pages или
на любом статическом хостинге.
Вариант 2: пользовательский формат вывода
Система выходных форматов Hugo позволяет создавать файлы любого типа из содержимого с помощью
шаблонов Go. Определите новый LLMSTXT формат в конфигурации, затем создайте шаблон, Hugo
создаёт public/llms.txt
автоматически при каждом hugo запуск.
Шаг 1: добавьте формат вывода в конфигурацию
# hugo.toml, define the llmstxt custom output format
[outputs]
home = ["HTML", "RSS", "LLMSTXT"]
[outputFormats.LLMSTXT]
mediaType = "text/plain"
baseName = "llms"
isPlainText = true
notAlternative = true
Используете YAML? Конфигурация та же:
# hugo.yaml, same config in YAML
outputs:
home:
- HTML
- RSS
- LLMSTXT
outputFormats:
LLMSTXT:
mediaType: text/plain
baseName: llms
isPlainText: true
notAlternative: true
Ключевые настройки: mediaType = "text/plain" (чтобы Hugo записал обычный текстовый файл),
baseName = "llms" (создаёт
llms.txt), и notAlternative = true (подавляет нежелательный <link rel="alternate"> тег в вашем HTML).
Написание шаблона
Создайте шаблон в layouts/index.llmstxt.txt. Hugo использует главная шаблон
для вывода в корне. Вот простая версия, перечисляющая все обычные страницы:
{{/* layouts/index.llmstxt.txt */}}
{{/* Hugo home template for the llmstxt output format */}}
# {{ .Site.Title }}
> {{ .Site.Params.description }}
{{ with .Site.Params.llmstxtContext }}{{ . }}
{{ end -}}
## Pages
{{ range .Site.RegularPages -}}
- [{{ .Title }}]({{ .Permalink }}): {{ with .Description }}{{ . }}{{ else }}{{ .Summary | plainify | truncate 120 }}{{ end }}
{{ end }}
Для сайта с несколькими разделами содержимого (блог, документация, руководства) организуйте их по разделам:
{{/* layouts/index.llmstxt.txt, organized by section */}}
# {{ .Site.Title }}
> {{ .Site.Params.description }}
{{ range .Site.Sections -}}
## {{ .Title }}
{{ range .Pages -}}
- [{{ .Title }}]({{ .Permalink }}): {{ with .Description }}{{ . }}{{ else }}{{ .Summary | plainify | truncate 100 }}{{ end }}
{{ end }}
{{ end -}}
## Optional
- [Homepage]({{ .Site.BaseURL }}): site entry point.
---
# content/docs/getting-started.md
title: "Getting started"
description: "Install the CLI, run your first command, and deploy in under 5 minutes."
draft: false
---
Your content here...
Развёртывание
- Cloudflare Pages, задайте команду сборки как
hugoи каталог публикации вpublic. Cloudflare Pages будет отдаватьpublic/llms.txtв/llms.txtиз глобальной CDN. См. Руководство по Cloudflare Pages для рекомендаций по заголовкам кэша. - Vercel, Hugo определяется автоматически. Укажите команду сборки как
hugoи каталог вывода вpublic. См. Руководство Vercel для вариантов кэширования на периферии. - GitHub Pages, используйте рабочий процесс GitHub Actions, который запускает
hugoи развёртываетpublic/вgh-pagesветке. Файл будет доступен по адресуhttps://your-org.github.io/llms.txt. - Любой статический хостинг, разверните
public/каталог. Файл окажется в корневом каталоге и будет обслуживаться корректно.
Проверить
Сначала проверьте локально:
hugo
ls public/llms.txt # should exist
cat public/llms.txt # check content
https_proxy="" hugo server
curl http://localhost:1313/llms.txt После развёртывания:
curl -I https://yoursite.com/llms.txt
# Expected:
# HTTP/2 200
# content-type: text/plain; charset=utf-8 Затем вставьте URL в валидатор для полной проверки соответствия спецификации.
Связанные руководства
- Как создать llms.txt, шаблоны, контрольный список и все стеки.
- Руководство по Cloudflare Pages, развёртывание Hugo на CF Pages.
- Руководство SvelteKit, ещё один подход SSG.
- Руководство по Astro, конечная точка коллекции содержимого.
- Лучшие практики, что включать и что исключать.
- Валидатор · Генератор.