Включение нативной поддержки LLMs.txt в Discourse

:bookmark: В этом руководстве объясняется, как сделать ваше сообщество доступным и удобным для использования AI-агентами и LLM-краулерами с помощью стандарта llms.txt. В нем рассматриваются как автоматически создаваемый документ по умолчанию, так и пользовательские загруженные файлы.

:person_raising_hand: Требуемый уровень пользователя: Администратор

Краткое содержание

Discourse поддерживает стандарт llms.txt, который предлагает соглашение о предоставлении LLM-совместимого обзора веб-сайта. Представьте это как «robots.txt для ИИ»: небольшой Markdown-файл в /llms.txt, который помогает большим языковым моделям (LLM) и AI-агентам понять, о чем ваш сайт и как к нему обращаться ответственно.

Вы можете выбрать один из двух подходов или объединить их:

  1. Позволить Discourse автоматически генерировать документ по умолчанию на основе настроек вашего сайта
  2. Загрузить собственный пользовательский файл llms.txt для полного контроля над содержимым

Пользовательская загрузка всегда имеет приоритет над сгенерированным документом.

Что такое llms.txt?

llms.txt — это предложенный стандарт, который предоставляет отобранный, удобный для агентов обзор веб-сайта. Он предоставляется в корне сайта (/llms.txt) и следует строгому формату Markdown:

  • Заголовок H1 с названием сайта (единственный обязательный раздел)
  • Блок цитаты с кратким резюме
  • Необязательные разделы Markdown с более подробной информацией
  • Разделы, разделенные заголовками H2, содержащие списки полезных ссылок

В отличие от sitemap.xml, который перечисляет страницы для поисковых систем, llms.txt представляет собой краткий обзор, созданный для размещения в контекстном окне LLM. Детали находятся за ссылками, которые извлекаются только при необходимости.

Начиная с Discourse v2026.1.0, Discourse может предоставлять llms.txt из корня сайта.

Как Discourse предоставляет /llms.txt

Discourse обрабатывает запросы к /llms.txt в следующем порядке:

  1. Если вы загрузили пользовательский файл, Discourse предоставляет его без изменений как text/plain
  2. Если пользовательский файл не загружен, а сгенерированный документ по умолчанию включен, Discourse генерирует и предоставляет этот документ
  3. В противном случае Discourse возвращает 404

Сгенерированный документ идентичен для анонимных посетителей и пользователей, вошедших в систему, и не подвергается влиянию перенаправлений login required.

Сгенерированный документ по умолчанию

Когда пользовательский файл не загружен, а функция включена, Discourse формирует краткий документ, используя существующие настройки вашего сайта и язык по умолчанию сайта. Он включает:

  • Название сайта (из настройки title), с именем хоста в качестве резервного варианта
  • Блок цитаты с резюме, использующий ваш site_description или short_site_description в качестве резервного варианта
  • Политику для людей, утверждающую, что сайт предназначен для обсуждения людьми, и что агенты должны писать только в том случае, если человек явно попросит их об этом
  • Политику доступа для агентов, просящую агентов извлекать только то, что им нужно, соблюдать robots.txt и параметры управления краулерами, а также учитывать HTTP 429 с интервалом Retry-After
  • Ссылку на Discourse MCP, направляющую агентов на сервер Discourse MCP как на предпочтительный интерфейс с учетом разрешений
  • Раздел Предпочтительный интерфейс агента со ссылкой на настройку Discourse MCP
  • Раздел Публичный веб-доступ со ссылками на /search, /filter, /latest и /categories, а также на /sitemap.xml, если включена настройка enable_sitemap
  • Раздел Дополнительно со ссылками на /about, /guidelines, /tos и /privacy

Если на вашем сайте включена настройка login_required, в документ добавляется примечание о том, что контент доступен только аутентифицированным участникам, и ссылки для публичного обнаружения, описанные выше, опускаются. Ссылки учитывают базовый путь, поэтому они корректно работают при установке в подпапку.

Вы можете ознакомиться с объявлением и обсудить сгенерированный шаблон в Автоматически сгенерированный llms.txt. Сам Meta в настоящее время предоставляет пользовательский файл, специфичный для сайта.

Включение сгенерированного документа по умолчанию

Сгенерированный документ по умолчанию доставляется через систему Upcoming Changes в качестве бета-изменения, которое администраторы могут включать или отключать.

  1. Перейдите в Администрирование → Настройка → Upcoming Changes или посетите /admin/config/upcoming-changes
  2. Найдите изменение, которое генерирует документ /llms.txt по умолчанию, если пользовательский файл не загружен
  3. В выпадающем списке Включено для выберите Все, чтобы включить его для всех посетителей
  4. Чтобы отключить, выберите Никто

Продвинутые изменения появляются здесь автоматически, когда они готовы, и администраторы уведомляются на панели управления. Если вы предпочитаете, чтобы файл llms.txt вообще не предоставлялся, установите это изменение в Никто или загрузите минимальный пользовательский файл.

Загрузка пользовательского llms.txt

Если вы предпочитаете точно контролировать содержимое, вы можете загрузить свой собственный файл.

  1. Подготовьте файл llms.txt в формате .txt или .md (максимальный размер файла составляет 512 КБ)
  2. Перейдите в Администрирование → Настройки → Безопасность или посетите /admin/config/security и найдите LLMs TXT
  3. Загрузите ваш файл и сохраните конфигурацию

После настройки Discourse предоставляет ваш файл без изменений по адресу:

https://yourforum.com/llms.txt

Обратитесь к llmstxt.org за справкой по синтаксису и формату. Пользовательская загрузка всегда заменяет сгенерированный документ. Для справки вы можете просмотреть файл Meta.

Проверка вашей настройки

Вы можете проверить, что увидят агенты, запросив файл в браузере или с помощью curl:

curl https://yourforum.com/llms.txt

Лучшие практики

  • Держите файл кратким. llms.txt — это карта, а не манифест; каждый токен стоит контекста, и огромный файл приводит к путанице у агентов и ухудшению результатов
  • Предоставляйте сгенерированный документ по умолчанию только в том случае, если его содержимое соответствует вашим политикам. Если вам нужны другие формулировки, скопируйте сгенерированный текст, отредактируйте его под ваше сообщество и загрузите как пользовательский файл
  • Структурируйте пользовательские файлы в соответствии со спецификацией: заголовок H1, блок цитаты с резюме, затем разделы H2 со списками ссылок, используя раздел Optional для второстепенных ссылок
  • Сочетайте llms.txt с параметрами управления краулерами. Для настройки автоматического доступа сконфигурируйте настройки slow_down_crawler_user_agents и slow_down_crawler_rate (Администрирование → Настройки → Безопасность)
  • Помните, что llms.txt описывает ваш сайт, в то время как robots.txt контролирует доступ. Они служат разным целям и дополняют друг друга

Частые проблемы и решения

Я получаю 404 на /llms.txt

Это происходит, когда пользовательский файл не загружен, а сгенерированный документ по умолчанию не включен. Загрузите пользовательский файл, включите сгенерированный документ по умолчанию в Администрирование → Upcoming Changes или сделайте и то, и другое.

Я использую плагин llms.txt Generator, и основной файл перестал работать

Ядро Discourse предоставляет путь /llms.txt, поэтому оно имеет приоритет над плагинами, которые его генерируют. Если вы полагаетесь на динамически сгенерированные файлы плагина (например, полный индекс тем), практическим решением является загрузка минимального пользовательского llms.txt, который направляет агентов на контент, сгенерированный плагином, например:

# [Название вашего сайта]

Перейдите на https://yourforum.com/llms-full.txt

Плагин также генерирует файлы по категориям, темам и тегам, которые не затрагиваются.

Я загрузил файл, но /llms.txt возвращает 404

Если загруженный файл не может быть прочитан из хранилища (например, он отсутствует во внешнем объектном хранилище), Discourse возвращает 404 и не переключается на сгенерированный документ. Перезагрузите файл, чтобы решить эту проблему.

Мой сайт требует входа, как это работает?

Сгенерированный документ по-прежнему работает: он содержит уведомление о необходимости аккаунта и опускает ссылки для публичного обнаружения. Пользовательская загрузка всегда предоставляется без изменений. Если вы хотите, чтобы агенты имели доступ к контенту, подумайте о том, как ваши настройки входа влияют на возможность обхода краулерами.

Частые вопросы

Перечисляет ли Discourse автоматически все мои темы в llms.txt?

Сгенерированный документ по умолчанию намеренно не перечисляет отдельные темы. Это минимальная карта, которая описывает ваш сайт, указывает политики доступа и направляет агентов на интерфейс Discourse MCP и несколько маршрутов обнаружения.

На каком языке сгенерирован документ?

Он генерируется на языке по умолчанию вашего сайта (настройка default_locale), независимо от языка запроса.

Могу ли я отказаться от этого?

Да. Установите изменение в Никто в Администрирование → Upcoming Changes. Альтернативно, загрузите пользовательский файл с вашим собственным содержимым.

Почему сгенерированный документ ссылается на Discourse MCP?

Сервер Discourse MCP предоставляет инструменты с учетом разрешений для тем, сообщений, поиска, пользователей, категорий и поддерживаемых действий сообщества. Это предпочтительный способ для агентов работать с вашим сообществом, поэтому, когда это возможно, в разделе «Предпочтительный интерфейс агента» приводится ссылка на локальную настройку MCP.

Дополнительные ресурсы

14 лайков

Разве невозможно, чтобы Discourse динамически создавал llms.txt для сайта? Это казалось бы гораздо более полезной функцией и привело бы её в соответствие с 🤖 Discourse llms.txt Generator Plugin - #2 by Ivan_Rapekas, с которой этот новый функционал конфликтует, переопределяя путь /llms.txt и возвращая 404, даже если плагин настроен правильно.

Запланировано ли где-то в дорожной карте добавление этой функции?

5 лайков

Мое решение этой проблемы заключалось в следующем:

  • Создайте файл llms.txt в VS Code, содержащий только:

    Перейдите по ссылке [https://<YOUR-BASEURL>/llms-full.txt](https://<YOUR-BASEURL>/llms-full.txt)
    
  • Загрузите этот файл в раздел llms.txt ядра Discourse по адресу admin/config/security?filter=LLMs%20TXT. Сохраните изменения.

  • Проверьте, что при переходе по ссылке https://<YOUR-BASEURL>/llms.txt отображается содержимое указанного выше текстового файла.

  • Теперь, надеюсь, LLM, попадающие на llms.txt, будут перенаправлены на llms-full.txt, который динамически генерируется плагином 🤖 Discourse llms.txt Generator Plugin

1 лайк

Гид обновлён с учётом изменений, объявленных в автоматически сгенерированном файле llms.txt.

3 лайка