JavaScript-сайт в поиске: что увидит робот до того, как выполнится интерфейс

Как проверить JavaScript-сайт для поиска, выбрать SSR, SSG, пререндеринг или CSR по роли страницы и принять результат по контрольным URL.

Обновлено: Автор: Вадим Федоров12 минут чтения
Мураз КакиловЕлизавета ГырбуАнтон ШевцовСевочка ГусейноваАлександр Зимаков+5
Команда Медиакод

У JavaScript-сайта для поиска есть один практический вопрос: получит ли робот содержимое важной страницы как понятный документ или только оболочку, из которой его еще нужно собрать. Наличие React, Vue, Next.js или другого фреймворка само по себе ничего не решает. Один и тот же стек может отдавать готовую статью, услугу и карточку товара в HTML, а может оставлять на старте только контейнер, загрузчик и сценарий, зависящий от браузерного действия.

Google обрабатывает JavaScript-приложения в последовательности «обход — рендеринг — индексирование», но полезно проектировать публичные страницы так, чтобы ключевой смысл не зависел от того, успеет ли робот выполнить дополнительный сценарий. Для SEO важен не выбор модного способа рендеринга, а доступность критического текста, ссылок и метаданных на каждом важном маршруте. Основные правила обработки JavaScript описаны в документации Google.

Разговор о JavaScript я перевожу из плоскости «какой у нас фреймворк» в плоскость конкретных страниц. Если услуга, категория или статья важны для спроса, у команды должен быть проверяемый ответ: что приходит по ее URL, что видно после рендеринга и кто отвечает за исправление расхождения. Тогда технический спор превращается в понятную задачу развития сайта.

Вадим ФедоровВадим ФедоровМенеджер по развитию клиентов

Начните с маршрутов, а не с технологии

Ошибочный порядок выглядит так: сначала выбрать SSR, SSG или пререндеринг как общую идеологию, а потом искать, что с ней делать. Рабочий порядок обратный. Сначала разделите маршруты по бизнес-роли: какие приводят органический спрос, какие объясняют услугу, какие помогают навигации, а какие существуют только внутри личного кабинета или интерфейса.

У страницы, которая должна участвовать в поиске, есть минимальный набор: понятный URL, ответ сервера, заголовок, основной текст, ссылки на следующие документы, canonical и индексируемое состояние. Интерфейс вокруг этого набора может быть динамичным. Но если смысл услуги появляется только после клика по вкладке, бесконечной прокрутки или ответа стороннего API, его нельзя считать доступным только потому, что пользователь увидит его в своем браузере.

Тип маршрутаЧто поиску нужно увидетьЧто проверять первым
Статья или экспертный материалH1, текст, FAQ, ссылки, метаданныеHTML и рендеринговый результат по точному URL
Страница услугиСодержание предложения, блоки доверия, путь к следующему действиюСтартовый ответ, canonical, отсутствие загрузчика вместо текста
Категория или листингНазвание категории, доступные карточки и ссылки на нихСсылки в HTML, пагинацию и поведение фильтров
Карточка товара или кейсУникальное содержание, цена или характеристики, изображения с текстовым контекстомДоступность данных без пользовательского действия
Личный кабинетОбычно не является посадочной для поискаЗащиту доступа и отсутствие случайной индексации

Такой реестр снимает лишнюю работу. Не нужно переносить весь сайт на другую модель только потому, что одна категория плохо отдается роботу. Сначала найдите класс страниц, на котором есть риск для спроса, и опишите ожидаемый результат: «по этим URL основной текст и ссылки доступны в проверяемом HTML или после разрешенного рендеринга».

Что робот видит до и после выполнения JavaScript

Первый ответ сервера и итог после выполнения скриптов - разные контрольные точки. В первом может быть уже готовая страница, а может быть только каркас. Во втором браузероподобный рендерер может собрать больше содержания, но и здесь важны ресурсы, время, ошибки запросов и сценарий загрузки.

Google повторно анализирует ссылки из отрендеренного HTML и может поставить найденные URL в очередь обхода. Поэтому навигация не должна состоять из элементов, которые выглядят как ссылки только после обработчика клика. Для важных переходов нужен обычный понятный маршрут, а не имитация ссылки на div или кнопке. Это один из случаев, когда удобный интерфейс и поисковая доступность должны быть согласованы заранее.

ПроверкаПризнак здоровой реализацииСигнал для задачи
Исходный ответВ нем есть ключевой смысл страницы или понятный путь к немуВместо текста отдается пустой контейнер или бесконечный skeleton
РендерингПосле выполнения скриптов видны H1, основной контент и ссылкиКонтент не появляется из-за ошибки, таймаута или запроса к закрытому API
НавигацияВажные переходы имеют настоящие URLПереход возможен только через обработчик клика или состояние приложения
МетаданныеTitle, description, canonical соответствуют финальной страницеМетатеги меняются слишком поздно или одинаковы для разных маршрутов
ИндексированиеПанели поисковых систем показывают ожидаемый вариант страницыВ индексе остается оболочка, старый вариант или не тот canonical

Я не принимаю фразу «в браузере же все работает» как критерий готовности. Пользователь и поисковый робот проходят разный путь: пользователь может нажать, подождать и войти в аккаунт, а поисковой странице нужен самостоятельный маршрут и самостоятельный смысл. Проверка должна воспроизводить именно этот путь, а не только красивое состояние интерфейса.

Вадим ФедоровВадим ФедоровМенеджер по развитию клиентов

Выберите модель рендеринга для задачи страницы

SSR, SSG, пререндеринг и CSR - не четыре уровня качества. Это способы распределить работу между сервером, сборкой и браузером. У каждой модели есть сильная зона, а решение зависит от частоты изменений, количества маршрутов, требований к скорости ответа и того, насколько страница важна для поискового входа.

МодельКогда подходитЧто получает роботЧто обязательно принять
SSGСтатьи, услуги, справочные и другие редко меняющиеся публичные страницыГотовый HTML, созданный при сборкеПроцесс обновления после изменения контента и актуальность страницы
SSRПубличные страницы с данными, которые должны собираться на сервере для запросаHTML формируется при запросеСтабильность ответа, кэширование и отсутствие ошибок зависимостей
ПререндерингОграниченный набор значимых маршрутов в динамичном приложенииСнимок готового HTML для выбранных страницСвежесть снимка и совпадение с тем, что видит пользователь
CSRЗакрытые интерфейсы или второстепенные экраны, не являющиеся поисковыми посадочнымиСодержание собирается в браузереЧто критические публичные маршруты не зависят от этой модели

Google прямо называет динамический рендеринг временным обходным решением, а для долгосрочной архитектуры рекомендует серверный, статический рендеринг или гидратацию. Отдельное руководство Google помогает не путать эти понятия. Это не означает, что любой старый CSR-сайт нужно немедленно переписать. Для начала достаточно назвать страницы, где первичный HTML должен стать частью критериев приемки, и проверить их на фактическом окружении.

Яндекс дает отдельное управление рендерингом JavaScript в Вебмастере. Оно может быть полезно, если на сайте нет SSR или пререндеринга; при SSR или пререндеринге сама справка Яндекса советует отключить выполнение JavaScript для робота. Там же описан сценарий для контента с задержкой загрузки через window.YandexRotorSetting. Эти настройки следует применять после диагностики конкретного шаблона, а не как универсальную замену архитектуре. Детали доступны в справке Яндекс Вебмастера.

Зафиксируйте для каждого поискового шаблона одну модель рендеринга, владельца и событие, после которого страница считается обновленной. Это уменьшает риск, что новая версия приложения поменяет поведение одной категории незаметно для редакции, маркетинга и разработки.

Не прячьте важный контент за действием пользователя

Отложенная загрузка полезна для скорости и удобства, особенно для изображений и тяжелых блоков. Но контент, который появляется только после прокрутки, клика по кнопке «показать еще» или выбора в интерфейсе, требует отдельной проверки. Google указывает, что поисковый робот не взаимодействует со страницей как пользователь: для поискового содержимого не стоит рассчитывать на клик или ручной скролл. Руководство по lazy loading советует загружать релевантное содержимое, когда оно находится в области просмотра, а не только после действия человека.

Элемент страницыДопустимый динамический сценарийРискованный сценарий
Изображения ниже первого экранаНативная отложенная загрузка или предсказуемая загрузка при попадании в viewportИзображения и подписи появляются только после ручного клика
ПагинацияУ каждой части есть отдельный URL и ссылка на негоСледующая часть доступна только через бесконечную прокрутку без адреса
FAQ и вкладкиДополнительное раскрытие интерфейса, если основной ответ уже естьЕдинственный важный ответ подгружается только после нажатия
КаталогКарточки доступны по страницам или понятной последовательности URLСписок строится только после взаимодействия с фильтром или скролла
Отзывы и доказательстваВторичные блоки могут быть динамическимиКлючевая информация об услуге зависит от стороннего виджета

Здесь важно не превратить задачу в запрет на интерактивность. Динамическая форма, калькулятор или вкладка могут оставаться частью опыта. Вопрос в другом: сможет ли человек и робот понять тему страницы, ее предложение и следующий маршрут без этого сценария. Если ответ отрицательный, сначала верните основной смысл в страницу, а потом улучшайте взаимодействие.

Согласуйте SEO, разработку и контент до релиза

Проблемы с JavaScript редко живут только в коде. Редактор меняет структуру статьи, разработчик подключает новый блок, маркетолог добавляет виджет, а на приемке проверяют только десктопный экран. Поэтому у поисковых шаблонов нужен короткий, повторяемый контракт между ролями.

РольЧто фиксирует до запускаКакой результат передает
Владелец страницыЦель маршрута и обязательное содержаниеСписок блоков, без которых страница не выполняет роль
Редактор или маркетологТекст, FAQ, связи с другими материаламиФинальная структура и ссылки, а не только макет
РазработчикМодель рендеринга, данные и условия ошибокРеализованный маршрут с предсказуемым ответом
SEO-специалистСостояние обхода, canonical, метаданные и доступность ссылокКритерии проверки по конкретным URL
ПринимающийКонтрольную выборку и дату повторной проверкиРешение «готово» или конкретный список расхождений

Для CMS это особенно важно. Если она умеет создать страницу с правильным текстом, но шаблон выводит его только после клиентского запроса, редакция не может решить проблему одной публикацией. Материал о SEO в CMS помогает разобрать ответственность генератора URL и шаблона, а общий технический SEO-чек-лист нужен, когда JavaScript - лишь один из нескольких найденных рисков.

Хорошая приемка не просит у команды один скриншот и не заканчивается словом «задеплоено». Я бы зафиксировал контрольную выборку маршрутов, ожидаемые блоки и дату проверки в поисковых инструментах. Так изменение можно признать завершенным по факту доступного содержания, а не по количеству закрытых задач.

Вадим ФедоровВадим ФедоровМенеджер по развитию клиентов

Проверяйте результат по контрольной выборке

После релиза не нужно пытаться сразу измерить весь сайт. Достаточно взять несколько представителей каждого поискового шаблона: новую статью, услугу, категорию, карточку и страницу с динамическим блоком. Для каждой страницы сравниваются серверный ответ, отрендеренное состояние и то, что показывают панели поисковых систем.

Контрольная точкаЧто сравнитьКакой вывод можно сделать
URL в браузере и исходный HTMLЕсть ли на странице минимальный смысл и корректный статусПонятно, зависит ли содержание от клиентского сценария
Отрендеренная версияПоявились ли H1, текст, ссылки и метаданныеВидно, собрался ли критический контент
Google Search ConsoleДоступность и отображение проверяемого URLМожно проверить, как Google обработал страницу
Яндекс ВебмастерРезультат проверки страницы и настройки JavaScript-рендерингаМожно сопоставить вывод с поведением Яндекса
Логи и мониторинг ошибокОшибки ресурсов, таймауты и неуспешные запросыВидно, не сломал ли релиз путь к контенту

Страница может быть корректной в исходном HTML и все равно не появляться в поиске по другой причине: например, из-за robots, canonical, ответа сервера или дубля. Тогда не стоит продолжать спорить о JavaScript. Перейдите к диагностике индексирования и ведите один URL по его фактическому статусу.

Готовность JavaScript-шаблона подтверждается не тем, что он «отрисовался», а тем, что важное содержание стабильно проходит путь от URL до поисковой проверки.

Один следующий шаг для команды

Не начинайте с миграции всего сайта. Выберите один приоритетный тип страницы, где органический спрос уже есть или планируется: например, услуги или экспертные материалы. Сделайте карту из пяти-десяти URL, отметьте обязательный контент, посмотрите первый ответ и рендеринг, а затем сформулируйте одну задачу с владельцем и критерием приемки.

Перед каждым релизом поискового шаблона сверяйте HTML, рендеринговый результат и контрольный URL в поисковых панелях. Эта короткая привычка полезнее разовой «SEO-проверки JavaScript»: она ловит расхождения до того, как одинаковая ошибка появится на десятках страниц.

Автор: Вадим Федоров

Частые вопросы

Нет. Сначала определите, какие публичные маршруты действительно важны для поиска и какое содержание должно быть доступно на них стабильно. SSG, SSR, пререндеринг и проверенный клиентский рендеринг решают разные задачи. Выбирать стоит по роли страницы, частоте обновлений и результату проверки, а не по названию технологии.

Google умеет выполнять JavaScript и анализировать отрендеренный HTML. Но это не отменяет необходимость проверять конкретные URL, доступность ресурсов, ссылки и сценарии загрузки. Критический текст не стоит привязывать только к клику, прокрутке или закрытому запросу.

Оставьте их как интерфейсный прием, если основной смысл страницы уже доступен. Если в закрытой вкладке находится единственное объяснение услуги, важный ответ или путь к следующему материалу, включите этот блок в контрольную выборку и обеспечьте его предсказуемую доступность.

Это зависит от реализации сайта. Вебмастер может быть полезен для страниц без SSR и пререндеринга; для сайта с SSR или пререндерингом Яндекс рекомендует запретить выполнение JavaScript роботом. Решение принимают после проверки конкретного шаблона и нагрузки на сервер.

Минимум после изменения поискового шаблона, CMS-компонента, маршрутизации, источника данных или механики lazy loading. Для постоянной работы достаточно контрольной выборки ключевых URL и понятного критерия, который команда повторяет на приемке каждого значимого релиза.

Усилить результат

Если выводы из материала совпадают с вашей задачей, эти направления помогают перейти от чтения к действию.

Запишитесь на консультацию —и мы соберём план роста вашего проекта

Мураз Какилов

Что разберём за 45 минут. До встречи изучим ваш продукт, сайт, рекламу и аналитику, чтобы на созвоне сразу перейти к цифрам и пути клиента.

Определим, где теряются заявки и бюджет: в канале, предложении, посадочной странице, форме, аналитике или обработке обращений.

По итогам у вас останется порядок действий: что исправить в первую очередь, какую гипотезу проверить следующей и по каким показателям оценивать эффект.

Мураз КакиловCEO Медиакод. Отвечаю за стратегию агентства и качество работы команды. Каждую задачу разбирают профильные специалисты по рекламе, SEO, SMM, разработке и аналитике. Мы смотрим на маркетинг целиком — от первого касания до заявки и продажи — и находим точки роста, которые можно измерить.

За 45 минут найдём, где теряются заявки и что исправить в первую очередь