Вы спрашиваете у ChatGPT про свою компанию и получаете описание конкурента или три предложения из профиля, который не трогали два года. Сайт работает, в Google индексируется, на нём есть цены, отзывы и большой блок FAQ. Только бот смотрит на страницу не так, как человек. Он забирает HTML-файл и на этом заканчивает. Если цены дорисовываются после клика по вкладке, а ответы FAQ - после раскрытия аккордеона, для бота этого нет.
Это не проблема на будущее. Google запустил AI Mode в Польше и на польском 8 октября 2025 года, Senuto приводит цифру 24,17% польских запросов в Google с ответом от ИИ, а ChatGPT в Польше пользуются больше 10 миллионов человек. Ahrefs на выборке из 300 000 ключевых слов посчитал, что там, где показывается AI Overview, CTR падает примерно на 34,5%. Цифры польские, потому что именно по Польше их и посчитали, но механика одинаковая на любом рынке. Эту сторону я разбирал отдельно в тексте о том, почему трафик из Google упал при тех же позициях. Здесь речь о слое ниже: есть ли боту что читать вообще.
Какие боты реально читают ваш сайт
Состояние на июнь 2026 года: ни один из основных ИИ-краулеров не выполняет JavaScript. Исключение - Google, потому что Gemini и AI Mode пользуются той же службой рендеринга, что и Googlebot.
| User-agent в логах | Владелец | Выполняет JavaScript | Зачем приходит |
|---|---|---|---|
| GPTBot | OpenAI | нет | собирает данные для обучения моделей |
| OAI-SearchBot | OpenAI | нет | строит поисковый индекс ChatGPT |
| ChatGPT-User | OpenAI | нет | забирает страницу вживую, когда пользователь задал вопрос |
| ClaudeBot | Anthropic | нет | собирает данные для обучения |
| Claude-SearchBot | Anthropic | нет | поиск под конкретный ответ |
| PerplexityBot | Perplexity | нет | индекс Perplexity |
| Meta-ExternalAgent | Meta | нет | обход для систем Meta |
| Bytespider | ByteDance | нет | обход для систем ByteDance |
| Googlebot (Gemini, AI Mode) | да | наследует службу рендеринга Googlebot |
У этой таблицы есть практическое применение: это список строк для grep по логам сервера. Прежде чем что-то чинить, стоит выяснить, приходят ли эти боты к вам вообще и на какие адреса.
Почему бот скачивает файл JS и ничего с ним не делает
В исследовании трафика краулеров Vercel есть деталь, которая сбивает с толку всех, кто смотрит в логи: GPTBot скачивает файлы JavaScript примерно в 11,5% запросов, ClaudeBot - примерно в 23,8%. Скачивает и ничего с ними не делает. Файл попадает в набор данных как текст, а не как код, который надо исполнить.
Причина - стоимость. Скачать файл - это один HTTP-запрос. Выполнить его - это headless Chrome, движок JS, ожидание гидратации, таймауты и память. Google строил этот конвейер годами, потому что иначе половина интернета выглядела бы для него пустой. ИИ-краулеры работают в масштабе, где рендеринг каждой страницы стоил бы кратно дороже самого обхода, а для обучения модели текста из первого ответа сервера обычно достаточно.
Отсюда один жёсткий вывод: считается только то, что сервер отдал на первый запрос. Всё, что браузер дорисовывает после гидратации, вне досягаемости.
Что пропадает чаще всего
Ниже то, что я вижу в аудитах регулярно. Правая колонка - буквально то, что остаётся в HTML.
| Элемент страницы | Типичная реализация | Что достаётся боту |
|---|---|---|
| Прайс с переключателем месяц/год | состояние компонента, суммы из API | пустой контейнер, ноль цифр |
| FAQ в аккордеоне, монтируемом по клику | UI-библиотека, текст в JS | только заголовки вопросов или ничего |
| Виджет отзывов Google или Trustpilot | внешний скрипт, iframe | ничего |
Список услуг из CMS через useEffect | запрос со стороны клиента | пустая секция |
| Каталог с фильтрами и клиентским роутингом | SPA | один пустой <div id="root"> |
| Калькулятор стоимости, конфигуратор | целиком на JS | заголовок и больше ничего |
Здесь есть важный нюанс, который спасает многие проекты. Аккордеон, собранный на CSS или на теге details, боту виден, потому что текст лежит в HTML и только визуально скрыт. Ломается ровно тот аккордеон, который монтирует содержимое по клику. С вкладками так же: если все панели есть в HTML, а переключатель только меняет класс, всё в порядке. Убирать интерактив не нужно, нужно перенести момент, в который появляется текст.
Проверка за десять минут без единого SEO-инструмента
Три теста, порядок важен.
1. Просмотр исходного кода, а не DevTools. В браузере Ctrl+U, потом Ctrl+F и ищете конкретную сумму из прайса или первую фразу ответа из FAQ. Вкладка Elements в DevTools для этого теста не годится: она показывает DOM уже после выполнения скриптов. Это самая частая ошибка при самостоятельной проверке.
2. curl с user-agent бота. Ближе всего к тому, что видит краулер:
curl -sA "GPTBot/1.2 (+https://openai.com/gptbot)" https://vashsite.com/ceny > ceny.html
wc -c ceny.html
grep -c "1 500" ceny.html
Если файл весит два килобайта, а grep по сумме возвращает ноль, прайса для ChatGPT не существует. Тот же тест прогоните по главной, по одной странице услуги и по одной статье блога.
3. Отключённый JavaScript. В настройках браузера блокируете JS для своего домена и проходите путь клиента. Это показывает не только пропавший текст, но и навигацию, которая перестаёт работать, потому что ссылки обрабатываются скриптом вместо обычного тега a href.
И одна команда по логам, чтобы понимать, за кого вы вообще боретесь:
grep -icE "GPTBot|OAI-SearchBot|ClaudeBot|PerplexityBot" access.log
SSR, SSG и ISR: чего реально хватит
ИИ-ботам всё равно, какую технику вы выберете. Важно одно: есть ли текст в ответе сервера.
- SSG, генерация на этапе сборки. Для корпоративного сайта, оферты, прайса и блога это вариант по умолчанию и самый дешёвый в обслуживании. HTML готов, бот получает всё сразу, хостинг стоит копейки.
- ISR, регенерация по расписанию. Разумно, когда контент приходит из CMS и меняется раз в несколько дней. Бот всегда получает готовый HTML, а редактор не ждёт деплоя.
- SSR на каждый запрос. Нужен для персонализированного или быстро меняющегося контента, например доступности слотов. Для ботов работает, но стоит времени ответа, а ИИ-краулеры держат таймауты короткими.
- Рендеринг на стороне клиента. Оставьте его для личного кабинета, корзины, чата и всего, что за авторизацией. Боты туда не попадают, оптимизировать нечего.
Правило, которым я пользуюсь: всё, что должно попасть в цитату ИИ-ответа - суммы, сроки, определения, условия - обязано выходить из сервера. Остальное может быть интерактивным сколько угодно.
Видимый HTML против JSON-LD
Обычная реакция на такой аудит: «добавим schema и закроем вопрос». Не закроете.
Данные тут довольно однозначные. SE Ranking приводит, что примерно 71% страниц, цитируемых ChatGPT, и примерно 65% страниц, цитируемых Google AI Mode, содержат структурированные данные. Но эксперимент Ahrefs, где отслеживали 1 885 страниц после добавления JSON-LD, показал изменение цитируемости на -4,6% для AI Overviews, +2,4% для AI Mode и +2,2% для ChatGPT. Все эти значения статистически неотличимы от нуля. Google прямо говорит, что для AI Overviews и AI Mode никакой особой разметки не нужно.
Вывод не в том, чтобы выбросить JSON-LD. Разметка - это инфраструктура: дешёвая, её стоит иметь, она помогает системам понимать структуру. Но это не рычаг и не замена тексту в видимом HTML. Если сумма 900 € лежит в JSON-LD, а на странице её рисует JavaScript, модель получает сигнал без контекста вокруг.
С файлом llms.txt та же история. Ahrefs проанализировал 137 000 сайтов и обнаружил, что 97% файлов llms.txt в мае 2026 года не получили никакого трафика, а обращения по этому адресу статистически пренебрежимы в данных о трафике ботов. Google публично говорит, что формат не поддерживает и не планирует. Файл стоит пять минут, пусть лежит, но на проблему из этой статьи он не отвечает.
Правки по фреймворкам: Next.js, Nuxt, Astro
Next.js, App Router. По умолчанию компоненты серверные, и всё хорошо ровно до момента, когда кто-то ставит 'use client' в начало целой страницы: интерактивным становится всё поддерево. Три вещи для проверки: dynamic(..., { ssr: false }) вокруг компонентов с текстом, загрузка данных в useEffect вместо сервера и UI-библиотеки, монтирующие панели вкладок только после взаимодействия. Целевой шаблон: данные забирает серверный компонент и передаёт их пропсами в маленький клиентский кусок, который отвечает только за клики.
Nuxt 3. Проверьте, что ssr не выставлен в false в конфиге: один этот флаг превращает проект в SPA. Данные забирайте через useFetch или useAsyncData, а не в onMounted. Каждый <ClientOnly> считайте объявлением «этот текст бот не увидит» и оставляйте внутри только виджеты.
Astro. Здесь по умолчанию всё хорошо, потому что в браузер не уезжает ни строчки JS. Следите за двумя вещами: директива client:only полностью пропускает серверный рендер, а острова могут тянуть данные из API на клиенте.
Отдельная категория - сайты на WordPress, Webflow и Tilda. Там HTML обычно полный и этой проблемы нет, стоит только проверить виджеты отзывов и секции, добавленные плагинами. Если вы только планируете разработку сайта, вопрос про рендеринг надо задать подрядчику до подписания договора, вместе с остальными пунктами из текста о том, как выбрать разработчика сайта.
Когда это трата времени
Честно: переписывать сайт на SSR не всегда приоритет.
Не имеет смысла, если ваш HTML уже содержит текст, а проблема в другом месте. В исследовании 278 B2B-промптов от июля 2026 года (position.digital) 66% рекомендаций брендов прошли вообще без цитирования сайта этого бренда - модель советовала компании по упоминаниям в чужих подборках и обсуждениях. Там же медианный возраст страницы, которую цитирует ChatGPT, - 3,9 месяца. Если HTML корректный, но о вас нигде не пишут, а последняя публикация двухлетней давности, рендеринг ничего не изменит.
Не имеет смысла и тогда, когда сайт за авторизацией, это внутренний инструмент или вы сознательно закрываете ИИ-ботов в robots.txt. И не имеет смысла, когда у сайта пятьдесят визитов в месяц: тогда вы чините дистрибуцию текста, который никто не ищет.
Зато чинится дёшево, если проект на Next.js, Nuxt или Astro. Обычно это один рабочий день: перенести загрузку данных на сервер, убрать два-три ssr: false и перебрать аккордеон так, чтобы текст лежал в HTML, а скрипт только раскрывал его.
Что с этим делать
Начните с теста через curl. Он занимает десять минут и отвечает на единственный важный вопрос: есть ли у вас эта проблема. Если окажется, что прайса и FAQ в HTML нет, у вас появится конкретный и конечный список задач для себя или для подрядчика.
Если удобнее, чтобы это прошёл кто-то другой, я делаю аудит видимости в ИИ-поиске от 900 € (3 900 zł): прохожу сайт под user-agent разных ботов, показываю, что именно пропадает, смотрю по логам, какие боты приходят и куда, и отдаю список правок, отсортированный по стоимости внедрения. Если нужно просто понять, ваш ли это случай, напишите и дайте адрес сайта - ответ уровня «проблема есть / проблемы нет» занимает у меня несколько минут. Для недавно запущенного сайта это стоит совместить со списком из текста о первых 90 днях после запуска, потому что обе задачи делаются в одну неделю.
FAQ
Выполняют ли ИИ-краулеры JavaScript? Нет. На июнь 2026 года ни один из основных ИИ-краулеров - GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Meta-ExternalAgent и Bytespider - не запускает JavaScript. Они читают только тот HTML, который сервер вернул на первый запрос. Единственное исключение - Google: Gemini и AI Mode пользуются службой рендеринга Googlebot и видят страницу после выполнения скриптов.
GPTBot скачивает мои файлы JavaScript, значит, он их читает? Скачивает, но не выполняет. Исследование трафика краулеров от Vercel показало, что GPTBot забирает файлы JS примерно в 11,5% запросов, а ClaudeBot - примерно в 23,8%. Файл попадает в набор данных как исходный текст, а не как код, который строит страницу. Контент, который должен был создать этот код, не появляется вообще.
Как проверить, что бот видит на моём сайте?
Проще всего открыть исходный код страницы сочетанием Ctrl+U и поискать в нём конкретную сумму из прайса или фразу из FAQ. Вкладка Elements в DevTools для этого не подходит, потому что показывает страницу уже после выполнения скриптов. Более точный вариант - curl -sA "GPTBot/1.2" https://vashsite.com/ceny и поиск по выводу. Третий тест: отключить JavaScript в браузере и пройти путь клиента.
Решит ли проблему JSON-LD и разметка schema? Нет. Эксперимент Ahrefs на 1 885 страницах, которым добавили JSON-LD, дал изменение цитируемости на -4,6% в AI Overviews, +2,4% в AI Mode и +2,2% в ChatGPT, то есть значения, статистически неотличимые от нуля. Google прямо говорит, что для AI Overviews и AI Mode специальная разметка не нужна. Структурированные данные стоит иметь как инфраструктуру, но текст в видимом HTML они не заменяют.
Нужно ли переписывать весь сайт на SSR? Обычно нет. Достаточно, чтобы с сервера выходил тот контент, который должен попадать в цитаты: суммы, условия, ответы FAQ, описания услуг. Интерактивные части вроде корзины, чата и личного кабинета могут остаться на клиенте, боты туда всё равно не заходят. На проекте под Next.js, Nuxt или Astro правка обычно занимает один рабочий день, а не недели перестройки.
Нужно ли убирать вкладки и аккордеоны?
Нет, меняется только момент появления текста. Аккордеон на CSS или на теге details ботам виден, потому что текст лежит в HTML и лишь визуально скрыт. Проблема касается только компонентов, которые монтируют содержимое после клика пользователя. С вкладками то же правило: отрисовывайте все панели, а скриптом переключайте видимость.
Помогает ли файл llms.txt ботам понять сайт? На практике нет. Ahrefs проанализировал 137 000 сайтов и выяснил, что 97% файлов llms.txt в мае 2026 года не получили никакого трафика, а обращения по этому адресу статистически пренебрежимы в данных о трафике ботов. Google публично говорит, что формат не поддерживает и не планирует. Файл можно добавить, он стоит несколько минут, но контент в HTML он не заменяет.
Сколько стоит починка и с чего начать?
Начните с бесплатного теста: curl с user-agent бота по трём самым важным адресам. Если текст есть в HTML, этой проблемы у вас нет. Если нет, правка на проекте под Next.js, Nuxt или Astro - это обычно один день работы разработчика. Полный аудит видимости в ИИ-поиске, с обходом сайта под user-agent ботов, разбором логов и упорядоченным списком правок, я делаю от 900 € (3 900 zł).




