Термос Беспалова

Оптимизация сайта под нейросети: техническая часть

Только техника, без советов про тексты: каких сборщиков пускать и каких нет, чем робот для обучения отличается от робота для поиска, что проверить в коде страницы и как по журналу сервера узнать, приходили ли к вам ассистенты вообще.

Термос Беспалова 11 минут

Обложка статьи: оптимизация сайта под нейросети

Коротко. Техническая оптимизация сайта под нейросети сводится к четырём вещам: пустить нужных сборщиков, отдать текст в HTML, разметить данные и проверить журнал сервера. Главное различие, которое путают, — роботы для обучения моделей и роботы для поиска в ответах. Первых можно закрыть без потерь, вторых закрывать нельзя: запрет на поискового сборщика убирает сайт из ответов ассистента. Полная проверка небольшого сайта занимает 1–2 часа.

Разговоры о попадании в ответы ассистентов почти всегда уходят в тексты: какой длины абзац, сколько цифр, нужны ли вопросы в заголовках. Всё это важно, но бессмысленно, если ассистент до страницы не добрался.

Добраться он может не суметь по чисто техническим причинам, которые не видны ни владельцу, ни посетителю: сайт открывается, выглядит нормально, в поиске есть — а сборщик ассистента получает отказ. Ниже только про это.

Где граница между техникой и текстом

Удобно разделить работу на 2 слоя. Технический слой отвечает на вопрос, может ли ассистент получить страницу и прочитать её содержимое. Содержательный — захочет ли он её процитировать, когда получил.

Технический слой работает как выключатель: либо доступ есть, либо нет. Содержательный — как регулятор: можно быть процитированным чаще или реже. Поэтому порядок работ всегда один — сначала выключатель, потом регулятор. На технический слой уходит 1–2 часа, на содержательный — недели.

Содержательной части мы посвятили отдельные материалы: признаки цитируемого текста разобраны в статье про продвижение в ИИ-поиске, а различия между ассистентами — в разборе продвижения в ChatGPT. Здесь только выключатель.

Какие сборщики бывают и кого пускать

Крупные разработчики ассистентов держат не одного робота, а несколько, с разными задачами. И это самое важное различие во всей технической части: робот для обучения модели и робот для поиска в ответах — разные программы с разными именами.

Имя в robots.txtЧейЗачем приходитЕсли запретить
GPTBotOpenAIсбор текстов для обученияответы с поиском не страдают
OAI-SearchBotOpenAIиндекс для поиска в ChatGPTсайт пропадает из ответов
ChatGPT-UserOpenAIоткрытие страницы по запросу человекассылку из ответа не прочитать
PerplexityBotPerplexityсобственный поисковый индекссайт пропадает из ответов
Google-ExtendedGoogleиспользование в моделях Geminiобычный поиск не затрагивается
ClaudeBotAnthropicсбор текстов для обученияответы с поиском не страдают
CCBotCommon Crawlоткрытый архив, на нём учат многие моделивыпадаете из этого архива
YandexBotЯндексосновной индекс, из него берёт нейропоискпропадаете из Яндекса целиком

Имена роботов разработчики время от времени меняют и дополняют — только у OpenAI их сейчас 3, — поэтому перед правкой файла стоит сверить список с их актуальной документацией. Логика при этом остаётся прежней: обучение и поиск разведены.

Типичная ошибка, которую мы встречаем чаще других, выглядит так. В 2023 году многие сайты закрыли GPTBot, чтобы их тексты не шли в обучение, — решение осознанное и законное. Но заодно под общее правило «запретить всех незнакомых роботов» попадал и поисковый сборщик. Сайт при этом формально работает, в обычном поиске есть, а в ответах ассистента отсутствует — и владелец об этом не знает.

Разумная позиция для коммерческого сайта: поисковых сборщиков пускать всегда, насчёт обучающих решать по ситуации. Закрытие обучающих роботов ничего не стоит с точки зрения видимости и защищает тексты от использования без спроса, если это для вас важно. Правка занимает 2 строки в robots.txt на каждого робота.

Отдельная ловушка — плагины безопасности, сетевые экраны и защита на стороне хостинга. Они могут отказывать сборщикам не через robots.txt, а на уровне сервера, возвращая ошибку 403 или 503. В файле всё открыто, а доступа нет. Проверить это можно по журналу сервера — об этом ниже.

Мы нашли такое у себя, пока писали эту статью. robots.txt на нашем сайте открыт для всех, кроме служебного раздела. Но при запросе страниц от имени GPTBot внешний сервер хостинга примерно в трети случаев отвечал 503 — при том что OAI-SearchBot, ChatGPT-User и PerplexityBot получали 200 на всех 13 проверенных запросах подряд. Ограничение стоит у хостинга, а не в настройках сайта, и касается только обучающего робота, поэтому на ответы с поиском не влияет. Но ни robots.txt, ни админка его не показывают.

Содержимое в коде, а не в скриптах

Современные сайты часто собирают страницу прямо в браузере: сервер отдаёт пустой каркас, а текст подгружается и дорисовывается скриптом. Человек разницы не замечает. Поисковые роботы крупных систем научились выполнять скрипты, хотя и с задержкой от нескольких часов до нескольких дней. Сборщики ассистентов делают это хуже или не делают вовсе.

Проверка занимает 1 минуту: откройте страницу, нажмите «Просмотр кода страницы» — не инструменты разработчика, а именно исходный код, — и найдите поиском фразу из середины основного текста. Если нашлась, всё в порядке. Если нет, сборщик ассистента видит пустую страницу.

Особенно часто это встречается в 3 местах. Конструкторы сайтов с блочной сборкой. Одностраничные приложения на современных фреймворках без серверной отрисовки. И вкладки, аккордеоны, всплывающие окна, чьё содержимое подгружается при клике, а не лежит в коде изначально.

Блоки вопросов и ответов нужно проверить отдельно. Внешне они одинаковы, но в одном случае ответ лежит в коде и просто скрыт, а в другом появляется только после нажатия. Первый вариант читается сборщиками, второй нет. У нас все блоки вопросов сделаны на стандартном элементе раскрытия, где текст ответа всегда в коде.

Разметка данных: что даёт, а что нет

Разметка — это машиночитаемое описание страницы, спрятанное в код: это статья, у неё такой-то автор и дата, вот вопросы и ответы, вот организация с адресом и телефоном. Человек её не видит.

Что она даёт. Однозначность. Ассистенту не нужно угадывать, где на странице дата публикации, а где дата последнего отзыва, где цена услуги, а где цена в примере. Для страниц организации, статей и блоков вопросов разметка помогает правильно понять содержимое.

Чего она не даёт. Цитирования самого по себе. Размеченная пустая страница остаётся пустой. Разметка — подсказка о структуре, а не сигнал качества, и никакой набор типов не заменит отсутствия конкретики в тексте.

Минимальный набор для коммерческого сайта — 3 типа разметки: организация на всём сайте, статья — на материалах блога, вопросы и ответы — там, где есть такой блок. Проверяется валидатором разметки поисковых систем, ошибки видны сразу.

Одна деталь, на которой мы споткнулись сами: дата в разметке должна совпадать с датой, которую видит человек. У нас 14 статей показывали в подписи завтрашнее число, хотя разметка отдавала верное, — расхождение, которое выглядит как небрежность и для людей, и для машин.

Журнал сервера — единственный объективный замер

Всё, что написано выше, можно проверить косвенно. Журнал сервера позволяет проверить напрямую: в нём записан каждый запрос к сайту вместе с именем того, кто пришёл.

Журнал доступен на большинстве хостингов в панели управления или по SSH, обычно в каталоге logs. Если по SSH его нет — так бывает на части тарифов, — есть обходной путь на пять минут: запросить свои страницы, подставив в заголовок запроса имя сборщика, и посмотреть на код ответа. Именно так мы и нашли ограничение у себя. Достаточно найти в нём строки с именами 8 сборщиков из таблицы выше и посмотреть на 2 вещи: приходят ли они вообще и какой код ответа получают.

Код 200 — страница отдана, всё работает. 403 или 503 — отказ, чаще всего от плагина безопасности, сетевого экрана или защиты хостинга, при том что robots.txt может быть открыт. 404 — сборщик пришёл по несуществующему адресу, обычно по устаревшей ссылке. Отсутствие строк вовсе — сборщик до вас не доходит, и тогда дело скорее в том, что страниц нет в поисковой выдаче.

Разумная периодичность — 1 раз в месяц, и обязательно после любых изменений в настройках безопасности или хостинга. Это единственная проверка, которая показывает реальное положение дел, а не то, как оно выглядит в настройках.

В каком порядке всё это делать

Первое — robots.txt, 5 минут. Убедиться, что поисковые сборщики не запрещены ни по имени, ни общим правилом. Решить, пускать ли обучающих.

Второе — журнал сервера, 15 минут. Проверить, что сборщики получают код 200, а не 403. Это ловит то, что не видно в robots.txt.

Третье — текст в коде, по 1 минуте на страницу. Пройти 10 важнейших страниц, включая блоки вопросов.

Четвёртое — разметка, 30 минут. Организация, статьи, вопросы, совпадение дат.

Пятое — всё остальное: скорость, карта сайта, отсутствие дублей. Это общая техническая оптимизация, и ассистентам она важна ровно настолько же, насколько поисковым системам. Полный перечень — в чек-листе на 60 пунктов, а наш подход к обоим направлениям — на странице SEO и GEO-продвижения.

Файл llms.txt, который часто советуют, в этот список не входит сознательно: это предложение отдельных энтузиастов, а не стандарт, и крупные ассистенты его сегодня не используют. Сделать не вредно, рассчитывать на него не стоит.

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

Что входит в оптимизацию сайта под нейросети
Технически — четыре вещи: пустить поисковых сборщиков ассистентов в robots.txt, отдать основной текст в HTML, а не дорисовывать скриптом, разметить данные и проверить журнал сервера на коды ответов. Полная проверка небольшого сайта занимает 1–2 часа и не требует платных сервисов.
Если закрыть GPTBot, сайт пропадёт из ChatGPT
Нет. GPTBot собирает тексты для обучения моделей, а для поиска в ответах ChatGPT используется другой сборщик — OAI-SearchBot. Закрыть первого можно без потерь видимости. Опасно закрывать второго: тогда сайт пропадает из ответов с поиском, при том что в обычной выдаче остаётся.
Закрывать ли сайт от обучения моделей
Решать по ситуации. Закрытие обучающих роботов не влияет на присутствие в ответах с поиском и защищает тексты от использования без спроса. Для коммерческого сайта обычно нет ни большого вреда, ни большой пользы от любого решения. Поисковых сборщиков при этом нужно пускать всегда.
Почему robots.txt открыт, а ассистента нет
Чаще всего из-за плагина безопасности или сетевого экрана: они отказывают незнакомым роботам на уровне сервера, возвращая ошибку 403, и robots.txt этого не показывает. Проверить можно только по журналу сервера — найти строки с именами сборщиков и посмотреть на код ответа.
Как проверить, что текст не рисуется скриптом
Открыть «Просмотр кода страницы» — именно исходный код, не инструменты разработчика — и найти поиском фразу из середины текста. Если нашлась, всё в порядке. Отдельно проверить вкладки и блоки вопросов: их содержимое иногда подгружается только по клику.
Помогает ли разметка попасть в ответы
Помогает правильно понять страницу, но не заставляет её цитировать. Разметка — подсказка о структуре: где дата, где цена, где вопрос и ответ. Размеченная страница без конкретики в тексте останется непроцитированной. Минимум для коммерческого сайта — организация, статьи и блоки вопросов.
Что смотреть в журнале сервера
Строки с именами сборщиков ассистентов и код ответа. 200 — всё работает. 403 — отказ, обычно от защиты. 404 — пришли по несуществующему адресу. Если строк нет вовсе, сборщик до вас не доходит — скорее всего, потому что страниц нет в поисковой выдаче.
Нужен ли файл llms.txt
Это предложение отдельных энтузиастов, а не признанный стандарт, и крупные ассистенты его сегодня не используют. Сделать не вредно, но рассчитывать на эффект не стоит. Намного важнее проверить robots.txt и журнал сервера — там находится большинство реальных технических проблем.