llms.txt, robots.txt и страницы в формате markdown
Агенты читают иначе, чем браузеры. Что получает каждый сайт: llms.txt, явная политика для ИИ-краулеров и каждая страница в виде markdown.
Всё большая часть людей, которые узнают о малом бизнесе, никогда не зайдёт на его сайт. Они спросят модель, а модель ответит по тому, что смогла прочитать.
Поэтому вопрос «может ли агент прочитать этот сайт?» - это вопрос распространения, а не техническое любопытство. Отсюда следуют три вещи, и каждый созданный здесь сайт получает все три без просьб.
В robots.txt нужно назвать ИИ-краулеры по именам
Если о них ничего не сказать, они подпадают под User-agent: *. Это не политика, а умолчание, которое вам досталось.
Поэтому мы называем их по именам. Поисковые и ответные агенты, которые возвращают ссылки на источники, - OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot - и краулеры для обучения GPTBot, ClaudeBot, Google-Extended, meta-externalagent. Каждый получает в точности тот же список Disallow, что и все остальные: ни один бот не получает API и ни один бот не получает страницу только для участников.
Назвать их - не значит быть уступчивым. Это значит, что политика записана там, где её можно изменить осознанно.
llms.txt - это оглавление, а не реклама
Соглашение llms.txt простое: заголовок, краткое описание в одном абзаце в виде цитаты, затем разделы со ссылками. Модель, попавшая на него, должна за один запрос понять, что это за сайт и где лежат важные страницы, ничего не рендеря.
Наш файл создаётся из описания сайта, и это важнее, чем кажется. Список фильтруется тем же правилом «публичное/приватное», что и карта сайта:
# Piekarnia Lune
> A sourdough bakery in Kraków. Bread baked daily, cakes to order,
> open from seven.
## Pages
- [Menu](https://...): What we bake, and what it costs.
- [Order a cake](https://...): Wedding and birthday cakes, two weeks' notice.Один список, прочитанный трижды - картой сайта, llms.txt и метатегом robots. Три файла не могут разойтись, потому что синхронизировать нечего.
Каждая страница - в виде markdown
Быстрее всего исказить смысл, заставив читателя разбирать страницу вёрстки ради трёх предложений. Поэтому каждая страница каждого созданного сайта отвечает и в markdown, и в HTML:
- Отправьте
Accept: text/markdown- и получите страницу в markdown по тому же URL. - Или добавьте
.mdк пути - для многих агентов, которые не согласуют формат.
Правила, которые держат это честным, стоит назвать. Это перезапись, а не редирект. Она срабатывает только при явном запросе text/markdown, но никогда на */* - браузер, приславший «что угодно», хочет страницу. Оба ответа несут Vary: Accept, поэтому общий кэш не отдаст одно тело всем. А markdown-вариант помечен noindex, поэтому он никогда не конкурирует в поиске со страницей, копией которой является.
Сериализатор идёт по описанию сайта, а не по готовому HTML, поэтому результат получается чистым: раздел преимуществ становится списком, FAQ - заголовками и ответами, таблица цен - таблицей. Карта или календарь записи превращается в одну честную строку о том, что там есть, а не в выдумку о том, что там было бы показано.
Это касается и нас
Эта статья доступна по тому же URL с .md на конце. Как и любая другая страница crea.site, а наш собственный llms.txt их перечисляет.
Конструктор сайтов, чьи страницы агент не может прочитать, сам выступает против себя.