Почему ChatGPT не видит текст сайта: проверка HTML вместо браузера
Разбираю три причины, почему текст не попадает в ответы ИИ: блокировка ботов, клиентский рендеринг и неверная структура. Даю команды curl для проверки и рабочие настройки SSR.

Открываете страницу в Chrome, текст читается. Открываете исходный код через Ctrl+U или запрашиваете её curl -A "GPTBot" и видите пустой div с id="root". Для ChatGPT, Claude и Perplexity этот контент не существует, пока JavaScript не выполнится в браузере. Проверка занимает 2 минуты.
Почему браузер показывает текст, а поисковый бот получает пустой каркас?
Большинство AI-краулеров, включая GPTBot и ClaudeBot, используют упрощённые HTTP-клиенты без выполнения JavaScript. Они парсят HTML-ответ сервера как есть. Если сайт собран на React, Vue или Angular с клиентским рендерингом (CSR), сервер отдаёт только оболочку и ссылку на bundle.js. В исходном коде такой страницы нет ни заголовков, ни текста, ни цен.
Сравнение типов рендеринга:
| Тип | Что получает бот | Стоимость внедрения | Когда использовать |
|---|---|---|---|
| CSR | Пустой каркас, текст только после JS | Низкая, ничего менять не надо | Только если не нужна индексация ИИ |
| SSR | Готовый HTML с текстом | Средняя, нужен серверный рендеринг | Динамические страницы: каталоги, блоги |
| SSG | Готовый HTML заранее | Низкая, генерируется при сборке | Статичные страницы, документация |
| Пререндеринг | Снимок HTML через headless-браузер | Средняя, настраивается отдельно | Точечно для критичных URL |
Источник: Rush Agency, 3 сентября 2026.
Запустите проверку для своей страницы:
curl -A "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)" -s https://yourdomain.com/page/ | head -50Если в выводе только <div id="root"></div> и подключение скриптов, причина найдена.
Какие боты ходят на сайт и как понять, что их блокирует WAF или robots.txt
robots.txt может явно запрещать GPTBot, ClaudeBot, PerplexityBot. Частая причина: после обновления CMS в файл попадают директивы Disallow для новых агентов. Проверьте:
User-agent: GPTBot
Disallow: /Эта директива закрывает сайт для OpenAI. Аналогично для ClaudeBot и PerplexityBot.
Серверный WAF и защита от ботов иногда отдают 403 или капчу по user-agent, даже если robots.txt открыт. В логах запросы от этих ботов отсутствуют, хотя трафик с других источников есть.
Скрипт сравнивает ответ сервера для браузера и трёх ботов:
for UA in "Mozilla/5.0" "GPTBot/1.0" "ClaudeBot/1.0" "PerplexityBot/1.0"; do
CODE=$(curl -s -o body.html -w "%{http_code}" -A "$UA" "https://example.com/page/")
SIZE=$(wc -c < body.html)
HAS=$(grep -c "Ключевой текст" body.html)
echo "$UA код $CODE, $SIZE байт, фрагмент: $HAS"
doneЕсли у браузерного user-agent код 200, а у ботов 403, блокирует WAF. Если коды одинаковые, но размер HTML меньше 5 КБ и фрагмент не найден, рендеринг не включён.
Что делать, если сайт на React, Vue или Angular: точечный SSR или пререндеринг
Полный переезд на другой стек не обязателен. Достаточно обеспечить серверный рендеринг для страниц, которые должны цитироваться: цены, контакты, составы услуг, ключевые абзацы описаний. Остальные страницы могут подгружаться скриптами.
Для Next.js добавьте в страницу:
export async function getServerSideProps() {
const res = await fetch('https://api.example.com/data')
const data = await res.json()
return { props: { data } }
}После этого HTML будет содержать текст и данные. Для Vue используйте Nuxt с универсальным режимом или prerender для статичных маршрутов. Для Angular настройте Angular/ssr.
Пререндеринг только критичных страниц: цены, контакты, описания услуг
Если полный SSR нецелесообразен, можно настроить пререндеринг через headless-браузер: он сохраняет HTML-снимок страницы после выполнения JS и отдаёт его ботам по user-agent. При этом бот получает тот же контент, что и человек, без выполнения скриптов. Важно не допускать клоакинга: содержание для бота и человека должно совпадать.
Почему сайт индексируется в Google, но не попадает в ответы ChatGPT: три разных канала
Google давно рендерит JavaScript при индексации. AI-краулеры часто не ждут выполнения скриптов. Это разные каналы: Google Search Console показывает индексацию Google, но не гарантирует видимость для ChatGPT.
По данным RESONEO на сентябрь 2026, ChatGPT открывает страницу только в 7% быстрых ответов, в остальных 93% использует сниппет из индекса или внешних источников. Сниппет берётся из текста страницы, а не из meta description, который игнорируется в одном случае из трёх.
Кроме того, JSON-LD разметка вырезается при передаче в модель, alt-текст картинок сохраняется. Жёсткий лимит страницы 4 МБ, превышение даёт HTTP 400.
Как убедиться, что починка сработала: повторный curl и серверные логи
После включения SSR повторно запустите проверку с user-agent бота. Сравните размер HTML до и после, поищите контрольные фрагменты. В серверных логах по каждому AI-агенту смотрите коды ответов, размер тела и время ответа: рост среднего размера тела показывает, что изменения доехали до продакшена.
Учтите кэш ChatGPT: прочитанная страница хранится около 30 минут, дальше отдаётся устаревшая копия, обновление в фоне. Поэтому результаты могут появиться с задержкой.
Типичные ошибки при проверке и что сделать завтра утром
- Проверять сайт глазами в браузере: браузер показывает результат скриптов, бот его не увидит. Нужен просмотр исходного кода или curl.
- Считать, что раз сайт в индексе Google, его видят все ИИ: индекс лишь один из трёх путей.
- Переписывать фронтенд, не проверив коды ответа: при 403 никакой SSR не поможет.
- Закрывать задачу после включения SSR: гидрация, потоковая отдача и кэш на периметре могут оставлять бота с каркасом.
- Забыть про окно неактуальности: человеку цену дорисовывает скрипт, а бот цитирует застывшую в HTML прошлую сборку.
Завтра утром откройте исходный код трёх ключевых страниц и поищите цену, ответ на частый вопрос и пункты меню. Пятнадцать минут без бюджета.
