JavaScript SEO в 2026: почему AI-краулер не видит ваш контент
JavaScript SEO — это работа над тем, чтобы значимый текст страницы был доступен роботу без исполнения скриптов. Поисковый робот Google рендерить умеет, но делает это отложенно, а краулеры, которые собирают данные для ChatGPT, Perplexity и нейроответов, о поддержке рендеринга публично не заявляли. Если цена, состав услуги и отзывы появляются только после запроса к API, для нейросети этой информации не существует — она процитирует конкурента, у которого тот же текст лежит в исходном HTML. Ниже — как за десять минут проверить свой сайт, чем CSR отличается от SSR, SSG и пререндера и когда переезд на серверный рендеринг не нужен.
Рендеринг — это отрисовка страницы браузером, а не сервером
Рендеринг сайта — это визуализация страницы: браузер получает HTML, строит из него DOM, выполняет скрипты и только после этого показывает человеку готовый экран. Пока сайты собирались на сервере, робот и человек видели одно и то же — в ответ на запрос приходил документ со всем текстом. В SPA (single page application, во множественном числе в англоязычной документации — SPAs) сервер отдаёт почти пустой каркас вроде <div id="root"></div>, а заголовок, цена, состав услуги и отзывы дорисовываются позже, когда отработает JavaScript и вернутся ответы от API.
JavaScript SEO — это не отдельный вид продвижения, а работа с одним разрывом: между тем, что лежит в исходном ответе сервера, и тем, что в итоге видит пользователь. Всё, что появилось только после скриптов, для части роботов просто не существует. Классический поисковый робот эту разницу умеет закрывать сам — он запускает страницу в браузерном движке. Краулеры, которые собирают данные для нейросетей, о такой возможности публично не заявляли, и разрыв для них остаётся разрывом.
Четыре термина, которые встретятся дальше
CSR (client-side rendering) — отрисовка на стороне клиента: сервер отдаёт каркас, страницу собирает браузер. SSR (server-side rendering) — сервер отдаёт готовый HTML, а скрипты потом «оживляют» его в браузере, это называют гидратацией. SSG — HTML собирается заранее, на этапе сборки проекта, и лежит статикой. Пререндер — отдельная прослойка прогоняет страницу в headless-браузере и складывает готовый HTML в кэш для роботов.
Обновлено: август 2026 — сверили рекомендации по динамическому рендерингу (Google описывает его как обходное решение, а не как долгосрочный путь) и добавили в таблицу краулеры ChatGPT, Perplexity и Claude, которых в прошлой редакции материала не было.
AI-краулер забирает исходный HTML и не ждёт скриптов
У Google обработка страницы разложена на три этапа: сканирование, рендеринг, индексирование. В документации Google Search Central, в разделе про основы JavaScript SEO, это описано прямо: страница, которой нужен рендеринг, попадает в отдельную очередь и ждёт свободных ресурсов. Контент в итоге увидят — но не сразу и не обязательно целиком. Для сводок AI Overviews и для диалогового режима AI Mode это означает, что страница на скриптах попадает в ответ с задержкой на очередь рендеринга, а не сразу после публикации.
Нейросети устроены иначе. Ответ Алисы, ChatGPT или Perplexity собирается из двух источников: того, что модель усвоила при обучении, и живого обхода страниц в момент запроса. Во втором случае у робота нет задачи ждать, пока браузерный движок дорисует интерфейс. Он берёт то, что пришло в ответе сервера, вырезает оттуда текст и отдаёт модели. Если ключевого абзаца в этом ответе не было, в цитату он не попадёт — назовут конкурента, у которого тот же текст лежит в HTML.
| Краулер | Чьи ответы наполняет | Что известно про рендеринг JavaScript |
|---|---|---|
| Googlebot | Поиск Google, AI Overviews | Рендерит, но отложенно: страница ждёт очереди рендеринга (Google Search Central) |
| Bingbot | Bing, Copilot | Microsoft заявляет о поддержке рендеринга, но не обещает его для каждой страницы |
| YandexBot | Яндекс, Алиса, нейроответы | JavaScript исполняет, приоритеты и лимиты Яндекс публично не раскрывает |
| GPTBot, OAI-SearchBot, ChatGPT-User | ChatGPT и поиск OpenAI | Публичных заявлений о рендеринге нет; в аудитах контент из скриптов в ответ не попадает |
| PerplexityBot | Perplexity | Публичных заявлений о рендеринге нет |
| ClaudeBot | Claude | Публичных заявлений о рендеринге нет |
Отсюда следует неприятный вывод для сайтов на фреймворках: даже полная индексация в Google ничего не гарантирует в нейроответах. Это разные конвейеры с разными правилами, и как они устроены, подробно разобрано в материале про индексацию сайта и AI-краулеров. Если бренд не появляется ни в одном ответе, сначала стоит проверить пять признаков невидимости для нейросетей — рендеринг среди них первый по частоте.
Есть и разница в цене ошибки. Классический робот возвращается к сайту регулярно: не увидел текст сегодня — увидит через неделю. Обход ради конкретного вопроса пользователя разовый: если в этот момент на сайте не было нужного абзаца, ответ уже сформирован, и второго шанса в рамках того же диалога не будет.
Проверка за десять минут: что реально видит робот
В техническом аудите мы начинаем с одного сравнения: берём исходный ответ сервера и готовый DOM и смотрим, чем они отличаются. Отсюда правило исходника: если фразы нет в исходном коде страницы, для нейросети её нет. Проверяется это без разработчика и без платных сервисов.
- Исходный код. Ctrl+U, затем поиск по документу (Ctrl+F) по фразе, ради которой страница существует: цена, состав услуги, ключевой абзац. Искать нужно точную формулировку, а не отдельное слово — меню и футер найдутся всегда.
- Отключённый JavaScript. DevTools, Ctrl+Shift+P, команда Disable JavaScript, перезагрузка. То, что осталось на экране, — примерно то, с чем работает краулер без рендеринга.
- Запрос без браузера.
curl -A "GPTBot" https://site.ru/pageвернёт ровно тот HTML, который получает робот: ни один скрипт при этом не выполняется. - Google Search Console. Инструмент проверки URL, кнопка «Изучить просканированную страницу» — там лежит HTML уже после рендеринга Googlebot. Разница с первым пунктом показывает, сколько работы висит на скриптах.
- Вопрос самой нейросети. Задайте ChatGPT или Перплексити отраслевой вопрос вроде «имплантация зубов в Москве» и посмотрите, кого и какими словами процитируют. Это индикатор, а не доказательство: результат зависит от того, каким инструментом модель воспользовалась.
Шестой шаг для тех, у кого есть доступ к логам
Все пять проверок выше отвечают на вопрос «что робот получил бы». Логи сервера отвечают на вопрос «а приходил ли он вообще». Выгрузите записи за месяц и отфильтруйте по названиям краулеров из таблицы: GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, YandexBot. Смотреть надо на две вещи — сам факт визита и код ответа. В аудитах мы регулярно видим, что бот приходил, получал 403 от защиты сайта или редирект на главную и уходил: контент при этом идеальный, а видимости нет, потому что до текста никто не добрался. Если краулеров в логах нет совсем, проблема ещё раньше — на уровне доступа, а не рендеринга.
Как отличить проблему рендеринга от проблемы доступа
Если текст в исходном HTML есть, а страницы всё равно нет ни в поиске, ни в нейроответах, дело не в JavaScript. Тогда разбираться нужно с директивами для роботов, картой сайта и скоростью ответа сервера — рендеринг тут уже ни при чём, и лечение будет другим.
Четыре способа отдать контент: CSR, SSR, SSG и пререндер
Выбор способа рендеринга — не вопрос вкуса фронтендера, а вопрос того, кто и когда собирает HTML. Ниже сравнение по параметрам, которые важны именно для видимости в поиске и в ответах нейросетей.
| Параметр | CSR | SSR | SSG | Пререндер |
|---|---|---|---|---|
| Что получает AI-краулер | Пустой каркас | Полный HTML | Полный HTML | Полный HTML из кэша |
| Кто собирает страницу | Браузер пользователя | Сервер на каждый запрос | Сборщик заранее | Headless-браузер по расписанию |
| Свежесть данных | Всегда актуальные | Всегда актуальные | На момент сборки | На момент прогона кэша |
| Нагрузка на сервер | Минимальная | Высокая, нужен запас мощности | Минимальная | Средняя, плюс отдельный сервис |
| Что придётся сделать | Ничего, это состояние по умолчанию | Переписать фронтенд | Перевести шаблоны на сборку | Настроить прослойку, код не трогая |
| Кому подходит | Личные кабинеты и внутренние сервисы | Каталоги и цены, которые меняются ежедневно | Блог, услуги, отраслевые страницы | Готовый SPA, который переписывать некому |
На практике выбор сводится к двум сценариям. Если фронтенд можно трогать — SSR или SSG для публичных разделов и CSR для всего, что за авторизацией: личный кабинет нейросети всё равно не увидят, и продвигать его не нужно. Если переписывать некому и некогда — пререндер закрывает вопрос за недели, а не за кварталы, но остаётся прослойкой, за которой придётся следить.
Что проверить сразу после переезда на SSR
Переезд не считается завершённым, пока не сошлись четыре пункта. Первый: ключевой текст и цена видны в исходном коде без скриптов — то же правило исходника, что и до работ. Второй: несуществующий адрес отдаёт код 404, а не двухсотый ответ с пустым каркасом, иначе в индекс уедут сотни одинаковых страниц. Третий: canonical, title и разметка Schema.org приходят с сервера, а не дописываются фронтендом. Четвёртый: время ответа сервера не выросло вдвое — SSR собирает страницу на каждый запрос, и без кэширования выигрыш в видимости легко разменять на проигрыш в скорости. Отдельная проверка после переезда — битые ссылки и цепочки редиректов: при смене роутинга старые адреса нередко отвечают двухсотым кодом с пустым каркасом или ведут к нужной странице через две-три промежуточные склейки.
Семь мест, где рендеринг ломается чаще всего
Полностью «слепые» сайты встречаются реже, чем частичные потери. Обычно страницы открываются и даже индексируются, а из ответа выпадает ровно тот фрагмент, который и должен был стать цитатой. Вот что мы находим в технических аудитах чаще остального.
- Контент за кликом. Табы, аккордеоны и кнопка «показать полностью». Если содержимое подгружается по клику, а не спрятано стилями, в исходном HTML его нет.
- Цена и наличие через виджет. Самый дорогой случай: описание услуги в HTML есть, а цифра приходит отдельным запросом. Нейросеть отвечает «цену уточняйте» — и человек уходит к тому, у кого цена в тексте.
- Отзывы из внешнего сервиса. Виджет агрегатора рисуется скриптом, поэтому ни оценок, ни текста отзывов в исходнике не остаётся, а вместе с ними теряется и разметка.
- Роутинг без серверных адресов. Ссылки с решёткой вида
#/uslugi/auditи переходы, которым не соответствует отдельный ответ сервера: краулеру нечего запрашивать. - Бесконечная прокрутка вместо пагинации. Товары и статьи со второго экрана существуют только для того, кто скроллит мышкой.
- Мета-теги и разметка через скрипты. Title, canonical и JSON-LD, которые проставляет фронтенд после загрузки: для рендерящего робота это сработает, для остальных — нет.
- Закрытые бандлы в robots.txt. Классика: закрыли
/static/и/assets/«чтобы не грузили сервер» — и отключили рендеринг даже там, где он был возможен. Что открывать роботам, разобрано в материале про robots.txt и AI-краулеры.
Я не помню технического аудита сайта на React или Vue, где не нашлось бы хотя бы одного блока, который появляется только после запроса к API. Обиднее всего, что это почти всегда цены и отзывы — ровно то, что нейросети цитируют охотнее всего. Владелец сайта при этом уверен, что всё на месте: он же видит эти блоки своими глазами.
Чистый HTML — необходимое условие, но не достаточное
Правило исходника решает задачу доступа, а не задачу выбора. Когда текст наконец виден роботу, задача JavaScript SEO на этом заканчивается и начинается другая: почему модель должна процитировать именно вас. Это уже GEO — Generative Engine Optimization, оптимизация под генеративные движки, которая надстраивается над обычным SEO, а не заменяет его.
- Разметка Schema.org в исходном HTML, а не подставленная скриптом. Типы WebSite, WebPage, Service, FAQPage и Organization дают модели структуру вместо сплошного полотна текста — что и зачем размечать, разобрано в материале Schema.org для GEO.
- Файл llms.txt — короткая карта смыслов сайта, адресованная напрямую AI-краулерам.
- Абзацы, которые можно вырезать и вставить в ответ без потери смысла: определение, цифра, условие. Как они устроены, показано в разборе цитируемых фрагментов.
- Упоминания за пределами сайта: отраслевые каталоги, справочники, отзывы. Модель сверяет, встречается ли бренд где-то ещё, кроме собственного домена.
Когда мы собираем AI Visibility Score, страницы, у которых значимый текст появляется только после скриптов, выносятся в отчёт отдельным списком. Улучшать их по смыслу бессмысленно, пока они физически недоступны краулеру, — это первая группа на переделку и обычно самая быстрая по отдаче.
Пререндер для краулеров — это клоакинг?
Вопрос, который задают почти в каждом проекте, где предлагаешь пререндер, и на который в статьях по теме обычно не отвечают. Коротко: клоакингом считается подмена смысла, а не способа сборки. Если робот получает тот же текст, те же цены и те же ссылки, что и человек, только собранные заранее, — это техническое решение. Если версия «для бота» обогащена ключевыми словами, скрытыми блоками или другим ассортиментом — это подмена, и претензии поисковых систем здесь предсказуемы.
Важная деталь: Google описывает динамический рендеринг как обходное решение, а не как долгосрочную рекомендацию. Причина прагматичная — две ветки сборки дорого поддерживать, и рано или поздно они расходятся. Практический критерий простой: раз в месяц сравнивайте текст из кэша пререндера с тем, что видит человек. Разошлось — у вас уже не прослойка, а вторая версия сайта, и отвечать придётся за обе.
Чего делать точно не стоит
Отдавать краулерам сокращённую версию страницы «чтобы не грузить сервер», прятать в роботную версию дополнительные абзацы с ключами, подставлять в разметку данные, которых нет на экране. Первое портит цитату — модель процитирует огрызок. Второе и третье — повод для санкций и в классическом поиске, и в оценке качества источника.
Когда SSR не нужен и что не сработает
Переезд на серверный рендеринг — дорогая операция, и нужна она не всем. Мы честно отговариваем от неё в пяти случаях.
- Текст и так в исходнике. Проверка по правилу исходника прошла — значит, JavaScript у вас не проблема, и бюджет разумнее потратить на контент и упоминания.
- Сайт закрыт от посторонних. Личный кабинет, внутренний портал, панель управления: краулеры туда не ходят и ходить не должны.
- Трафик приходит не из поиска. Если продажи идут из рекламы, партнёров и рекомендаций, рендеринг сам по себе не изменит выручку — он меняет только доступность текста для роботов.
- Про вас нигде не спрашивают. Нейросеть не назовёт бренд, вокруг которого нет ни запросов, ни упоминаний. Сначала спрос, потом техника.
- Некому поддерживать. SSR — это не галочка в настройках: появляется сервер, который надо мониторить, кэшировать и чинить в пятницу вечером. Без такой команды пререндер честнее.
И то, что не сработает точно. Рендеринг не заменяет ни продвижение, ни раскрутку бренда: он снимает техническое ограничение, а не создаёт причину вас цитировать. Не помогут и обходные трюки: мета-теги, дописанные скриптом после загрузки, копия контента в теге noscript вместо нормального HTML, PDF-версия страницы «специально для роботов». Всё это добавляет сущностей, за которыми нужно следить, и не решает исходную задачу — отдать значимый текст в первом же ответе сервера.
Если непонятно, к какой группе относится ваш сайт, начните с бесплатной диагностики: мы покажем, что видит краулер в исходном HTML и по каким запросам вас уже цитируют нейросети. Полная проверка машиночитаемости — доступ роботов, рендеринг, разметка, скорость — это технический GEO-аудит, от 40 000 ₽.
FAQ
Что такое JavaScript SEO простыми словами?
Это работа над тем, чтобы значимый текст страницы находился в HTML, который отдаёт сервер, а не появлялся только после исполнения скриптов в браузере. Проверка простая: откройте исходный код страницы и найдите поиском фразу, ради которой она существует. Нет в исходнике — значит, для части роботов её нет вообще.
Видит ли ChatGPT сайт, написанный на React?
ChatGPT видит то, что сервер отдал в ответ на запрос его краулера. Если проект собран по схеме CSR и текст дорисовывается скриптами, до модели доходит только каркас: меню, футер и заголовок вкладки. Публичных заявлений о том, что краулеры OpenAI исполняют JavaScript, нет, поэтому единственная надёжная страховка — держать значимый текст в исходном HTML.
Обязательно ли переходить на SSR ради нейросетей?
Нет. Задача — отдать значимый текст в первом ответе сервера, а способ вторичен. Для блога и страниц услуг достаточно SSG, для готового SPA, который некому переписывать, подходит пререндер. SSR оправдан там, где данные меняются постоянно: каталог, остатки, цены.
Как проверить, что AI-краулер видит текст, без разработчика?
Три шага занимают около десяти минут. Откройте исходный код страницы (Ctrl+U) и поищите в нём ключевую фразу; отключите JavaScript в DevTools и перезагрузите страницу; запросите URL через curl с любым user-agent. Если во всех трёх случаях текста нет — проблема в рендеринге, а не в контенте.
Влияет ли рендеринг на попадание в ответы Алисы?
Яндекс исполняет JavaScript, но приоритеты и лимиты рендеринга публично не раскрывает, а нейроответы Алисы собираются в том числе на лету. Полагаться на то, что робот успеет отрисовать SPA, рискованно: текст, который есть в HTML сразу, доступен всегда и всем краулерам.
Сколько стоит проверить рендеринг сайта?
Базовую проверку можно сделать самостоятельно и бесплатно по шагам из раздела «Проверка за десять минут». Бесплатная диагностика GEOAudit.org (0 ₽) показывает, попадает ли сайт в ответы нейросетей. Полный разбор машиночитаемости — доступ роботов, рендеринг, разметка, скорость — это технический GEO-аудит, от 40 000 ₽.