Кратко

В 2026 Googlebot выполняет JavaScript, но большинство AI-краулеров (ChatGPT, Perplexity, Claude) — нет. Чтобы быть видимым и в поиске, и в ответах ИИ, отдавайте основной контент в серверном HTML, а не полагайтесь на клиентский рендеринг.

Десять лет вопрос JavaScript SEO звучал просто: "Отрендерит ли Googlebot мою страницу?" В 2026 у него появилась вторая половина, не менее важная: "А AI-краулеры смогут?" И для большинства из них ответ — нет. Вот как на самом деле работает рендеринг сейчас и что с этим делать.

Разрыв в рендеринге между Google и AI-краулерами

Googlebot рендерит JavaScript. Он берёт ваш HTML, ставит страницу в очередь, запускает современный Chromium и индексирует полученный DOM. Этот двухэтапный процесс надёжен уже годами, так что хорошо сделанное клиентское приложение может ранжироваться в обычном поиске Google.

С AI-краулерами история другая. Боты, питающие ChatGPT, Perplexity, Claude и собственные AI-системы Google, в основном берут сырой HTML и не выполняют JavaScript. Они созданы для скорости и масштаба на миллиардах URL, а запускать полноценный браузер для каждой — дорого. Так что они читают то, что отдаёт сервер, и двигаются дальше.

Это создаёт разрыв в рендеринге. Страница, которую Googlebot терпеливо рендерит, может выглядеть совершенно пустой для LLM-краулера. Если ваш контент, заголовки и ссылки существуют лишь после выполнения JavaScript, вы можете ранжироваться в Google, но быть невидимыми в ответах ИИ — именно там, где видимость в 2026 растёт быстрее всего.

Два семейства краулеров, которые стоит различать:

  • Краулеры обучения/индексации (например, GPTBot, ClaudeBot), собирающие контент для моделей и поиска.
  • Живые retrieval-фетчеры, тянущие страницу в реальном времени под конкретный запрос. Они самые нетерпеливые из всех и почти никогда не ждут рендеринга.

SSR против CSR: выбирайте безопасный вариант по умолчанию

Выбор архитектуры решает, переживёт ли ваш контент этот разрыв.

  • Клиентский рендеринг (CSR). Сервер отдаёт почти пустую HTML-оболочку плюс JavaScript-бандл; страницу строит браузер. Отлично для интерактивности уровня приложения, опасно для доступности краулерам. Боты без рендеринга видят пустую оболочку.
  • Серверный рендеринг (SSR). Сервер возвращает полностью сформированный HTML на каждый запрос, а JavaScript затем гидратирует его для интерактивности. Каждый краулер сразу получает контент.
  • Статическая генерация (SSG). Страницы пререндерятся в HTML на этапе сборки. Самый быстрый и дружелюбный к краулерам вариант для контента, не меняющегося от запроса к запросу.

Моя рекомендация по умолчанию прямая: отдавайте основной контент в исходном HTML, через SSR или SSG. Чистый CSR оставляйте для по-настоящему интерактивных, залогиненных или неиндексируемых поверхностей. Если ваша ценность — это контент и вы хотите видеть его в ответах ИИ, он должен быть в HTML, который отдаёт сервер.

Ловушки гидратации, что тихо всё вам ломают

Даже команды, внедрившие SSR, спотыкаются о гидратацию — шаг, где клиентский JavaScript "перехватывает" серверный HTML. Следите за таким:

  • Контент, появляющийся лишь после гидратации. Если вкладки, аккордеоны или блоки "читать далее" подгружают настоящий текст через JavaScript, краулеры без рендеринга его не видят. Кладите полный текст в серверный HTML и управляйте видимостью через CSS.
  • Расхождения гидратации. Когда серверный и клиентский HTML не совпадают, некоторые фреймворки отбрасывают серверную разметку и перерендеривают на клиенте, на мгновение воссоздавая проблему CSR. Держите вывод сервера и клиента идентичным.
  • Крайние случаи стриминга и частичной гидратации. Современные фреймворки стримят HTML частями. Убедитесь, что значимый контент идёт в исходном документе, а не в асинхронном блоке, прибывающем поздно.
  • Клиентская маршрутизация. Если внутренняя навигация происходит полностью в JavaScript без настоящих <a href>, краулеры не могут по ней идти. Всегда рендерите настоящие теги-якоря с реальными URL.

Сделайте контент доступным для обоих

Практический чек-лист, который я применяю к каждому насыщенному JavaScript сайту:

  1. Кладите основной контент на сервер. Главный текст, H1–H3, детали товара и внутренние ссылки должны быть в сыром HTML.
  2. Используйте настоящие ссылки. <a href="/real-url">, а не <div onclick>. Именно так и Google, и LLM-краулеры находят ваш сайт.
  3. Рендерите метаданные на сервере. Title, meta description, canonical и структурированные данные (JSON-LD) должны присутствовать без JavaScript.
  4. Не блокируйте ресурсы в robots.txt. Если вы полагаетесь на рендеринг Googlebot, ему нужны ваши CSS и JS. Блокировка ломает рендер.
  5. Добавляйте структурированные данные. Разметка Schema.org помогает каждому парсеру, а чистый, хорошо размеченный HTML — это то, что LLM извлекают надёжнее всего.
  6. Следите за доступом краулеров. Осознанно решайте, пускать ли AI-краулеров. Блокировка их в robots.txt — это компромисс по видимости, а не нейтральный выбор по умолчанию.

Как проверить, что краулеры действительно видят

Перестаньте доверять рендеренному виду в DevTools. Он показывает DOM после JavaScript — то, что видит Googlebot, но не сырые фетчеры. Вместо этого:

  • Смотрите сырой код. Используйте curl -A "Mozilla/5.0" https://yoursite.com/page или Просмотр кода страницы в браузере (не Inspect). Убедитесь, что ваш основной текст, заголовки и ссылки присутствуют в этом HTML.
  • Сравнивайте с рендеренным DOM. Разница между сырым кодом и рендеренным DOM — это именно то, что пропускают краулеры, зависящие от JavaScript.
  • Используйте инструмент проверки URL в Search Console, чтобы увидеть рендеренный HTML Googlebot, и отключите JavaScript в браузере, чтобы сымитировать бота без рендеринга.
  • Проверяйте логи сервера на user-agent AI-краулеров, чтобы узнать, кто вас действительно фетчит и как часто.

Разрыв между "Просмотром кода" и рендеренным DOM — это ваш риск видимости в ИИ в одном измерении. Если ваш контент живёт лишь в рендеренном DOM, у вас есть над чем работать.

Что делать с существующим CSR-сайтом

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

  • Динамический рендеринг для ботов. Отдавайте краулерам пререндеренный HTML, а пользователям — привычное приложение. Google когда-то называл это обходным решением, но для видимости в ИИ это часто спасает ситуацию, пока идёт миграция.
  • Гибридный рендеринг по маршрутам. Переведите на SSR или SSG сначала самые важные контентные шаблоны — главную, категории, статьи, — а панель управления или личный кабинет оставьте на CSR.
  • Прегенерация ключевых страниц. Даже простой билд-шаг, сохраняющий статический HTML для топовых URL, делает их доступными каждому краулеру.
  • Приоритизация по ценности. Начните со страниц, которые приносят трафик и фигурируют в запросах, где вы хотите появляться в ответах ИИ. Не мигрируйте всё сразу.

Цель — не архитектурная чистота, а то, чтобы ваш настоящий контент оказался в исходном HTML там, где это приносит деньги.

Главный вывод

В 2026 рендеринг больше не забота одного лишь Google. Googlebot выполнит ваш JavaScript, но AI-краулеры, решающие, появитесь ли вы в ответах ChatGPT и Perplexity, обычно нет. Отдавайте настоящий контент в серверном HTML, используйте настоящие ссылки и серверные метаданные и тестируйте через "Просмотр кода", а не DevTools. Сделайте это — и вы будете понятны каждой системе, которая имеет значение, а не только той, что случайно запускает браузер.

FAQ

Выполняют ли AI-краулеры JavaScript в 2026?

В основном нет. Googlebot рендерит JavaScript, но краулеры ChatGPT, Perplexity и Claude обычно берут сырой HTML и пропускают клиентский рендеринг. Контент, появляющийся лишь после выполнения JS, часто для них невидим.

Что лучше для SEO и видимости в ИИ — SSR или CSR?

Серверный рендеринг (SSR) или статическая генерация безопаснее, так как полный контент есть в исходном HTML для любого краулера. Клиентский рендеринг (CSR) рискует пустыми страницами для ботов без JS, включая большинство LLM-краулеров.

Как проверить, доступен ли контент без JavaScript?

Смотрите сырой HTML через curl или "Просмотр кода страницы" в браузере, а не рендеренный DOM в DevTools. Если основной текст, ссылки и заголовки отсутствуют в этом коде, краулеры без JS их не видят.

Комментарии · 0