Техническое SEO / AEO

Проверка риска SEO при рендеринге JavaScript

Вставьте полный исходный HTML-код страницы (результат View Page Source / Ctrl+U), чтобы точно увидеть, что видит краулер, не выполняющий JavaScript — включая все AI-краулеры ответов — в сравнении с тем, что появляется только после того, как ваш фреймворк выполнит гидратацию страницы.

Используйте «View Page Source» (Ctrl+U), а не панель Elements в DevTools — Elements показывает DOM ПОСЛЕ выполнения JavaScript, что сводит на нет смысл этой проверки. Ничего никуда не отправляется, кроме нашего сервера, для этого одноразового анализа.

Что проверяет этот инструмент

Googlebot в конечном итоге выполняет JavaScript, но только во второй, ограниченной по ресурсам волне рендеринга, которая может задерживаться на дни или вовсе пропускаться на сайтах с низким crawl budget. Большинство других важных сегодня краулеров — Bingbot в уменьшенном масштабе, а также почти все AI-краулеры (GPTBot, ClaudeBot, PerplexityBot, CCBot) и боты предпросмотра соцсетей (Twitterbot, facebookexternalhit, LinkedInBot) — вообще никогда не выполняют JavaScript. Этот инструмент разбирает вставленный вами статический HTML настоящим DOM-парсером и сообщает, действительно ли ваши title, meta description, тег canonical, H1, структурированные данные и реальный текст страницы существуют в этой статической разметке, или появляются только после того, как ваш JS-фреймворк выполнит гидратацию страницы.

Как работает анализ

Вставленный HTML разбирается в настоящий DOM (а не примитивным regex-сканированием), после чего проверяется по тем же самым сигналам, которые использует не рендерящий краулер для понимания и индексации страницы.

Наличие статических SEO-тегов

Title, meta description и rel="canonical" считываются напрямую из разобранной разметки. Фреймворк, вставляющий их через JavaScript (распространённый паттерн роутера React/Vue), покажет их здесь как отсутствующие — именно так, как их видит не рендерящий краулер.

Текст страницы против размера документа

Содержимое script, style и noscript удаляется, после чего оставшийся видимый текст сравнивается с общим размером документа. Страница, состоящая в основном из <script>-бандла вокруг почти пустого body, — классический признак клиентского рендеринга (CSR).

Обнаружение корневого контейнера фреймворка

Определяются распространённые точки монтирования SPA — #root, #app, #__next, #__nuxt, #___gatsby, #svelte, атрибут ng-version у Angular, data-reactroot у React — и измеряется их внутренний текст. Пустой корневой контейнер вместе с почти пустым body — веское доказательство того, что вся страница строится на клиенте после загрузки.

Качество запасного содержимого noscript

Блок <noscript> проверяется на наличие реального запасного содержимого, а не просто общего сообщения «включите JavaScript», поскольку этот блок — буквально единственное, что увидит не выполняющий JS посетитель или краулер, помимо необработанного HTML.

Какие краулеры на самом деле выполняют JavaScript

Именно поэтому статические, видимые на сервере SEO-сигналы по-прежнему важны в 2026 году — большинство краулеров, решающих судьбу цитирования в AI-ответах и предпросмотров в соцсетях, вообще никогда не запускают скрипты.

Googlebot С задержкой Выполняет JavaScript, но только во второй волне рендеринга с ограниченным ресурсным бюджетом — индексация контента, зависящего только от JS, может задерживаться на дни или пропускаться на сайтах с ограниченным crawl budget.
Bingbot Ограниченно Рендерит JavaScript в меньшем масштабе и с более жёстким бюджетом, чем Google. Статический контент — более безопасный выбор.
GPTBot / ChatGPT-User (OpenAI) Нет Получает только необработанный HTML. Контент, появляющийся лишь после выполнения JavaScript, ему не виден — это напрямую влияет на то, сможет ли ChatGPT цитировать вашу страницу.
ClaudeBot (Anthropic) Нет Получает только необработанный HTML, то же ограничение, что и у других AI-краулеров — напрямую влияет на то, сможет ли Claude цитировать вашу страницу.
PerplexityBot Нет Получает только необработанный HTML — это напрямую влияет на право попасть в AI-ответы Perplexity.
CCBot (Common Crawl) Нет Поставляет данные для множества обучающих датасетов ИИ; сканирует только необработанный HTML, без выполнения JavaScript.
facebookexternalhit / Twitterbot / LinkedInBot Нет Предпросмотры ссылок в соцсетях (Facebook, Twitter/X, LinkedIn) полностью строятся из статических meta-тегов, полученных без выполнения JavaScript.
Most SEO / backlink crawlers Нет Большинство SEO/ссылочных краулеров (Ahrefs, Semrush и подобные) разбирают только необработанный HTML — ради скорости и экономии.

Часто задаваемые вопросы

Мой сайт использует Next.js/Nuxt с серверным рендерингом — будет ли это помечено как рискованное?

Нет. Серверный рендеринг (SSR) и статическая генерация (SSG) выводят title, meta-теги, H1 и текст страницы прямо в HTML-ответ, поэтому инструмент прочитает их как присутствующие, а корневой контейнер фреймворка будет содержать настоящий текст вместо пустой оболочки. Этот инструмент специально помечает случаи чисто клиентского рендеринга (CSR), когда начальный HTML-ответ представляет собой почти пустую оболочку, заполняемую только после загрузки и выполнения JavaScript-бандла.

Почему «View Page Source» здесь важнее панели Elements в DevTools?

Панель Elements показывает живой DOM уже после того, как браузер выполнил все скрипты — она всегда выглядит полной, даже на чисто CSR-сайте, потому что браузер только что её отрендерил. «View Page Source» (или обычный запрос через curl/wget) показывает реальные байты, которые получает не рендерящий краулер, до выполнения какого-либо JavaScript. Это единственное представление, совпадающее с тем, что реально видят GPTBot, ClaudeBot, Twitterbot и большинство SEO-краулеров.

Действительно ли Google плохо видит мой контент, отрендеренный через JavaScript?

Googlebot обычно действительно рендерит JavaScript, но в отдельной, отложенной волне рендеринга с реальным ограничением ресурсного бюджета — сама Google документировала задержки индексации и периодические сбои рендеринга для страниц с большим объёмом JS. Для контента, который нужно индексировать надёжно и быстро, а также для любого AI-ответного или соцсетевого краулера предпросмотра, вообще не рендерящего JavaScript, именно наличие статического HTML реально гарантирует видимость.

Хранит ли или передаёт ли этот инструмент вставленный мной HTML?

Вставленный вами HTML отправляется один раз, по HTTPS, на наш сервер для выполнения этого одноразового разбора и анализа (это необходимо, чтобы логика разбора DOM оставалась согласованной и не была раскрыта как копируемый клиентский код), и не хранится после этого запроса.