
Красивый сайт на JavaScript, который робот видит пустой страницей, — самая незаметная из дорогих проблем: для человека всё переливается анимациями и мгновенно подгружает карточки, а поисковая система получает голый контейнер с парой скриптов. Заказчик открывает — работает. Дизайнер гордится. Трафика из поиска нет, и полгода никто не может объяснить почему.
За двадцать лет практики я видел десятки таких проектов, и почти всегда решение принималось на этапе выбора движка, когда о поиске никто не думал. Сразу оговорюсь: претензий к JavaScript у меня нет, претензия одна — когда им закрывают от робота сам смысл страницы. Ниже — что происходит при встрече модного фреймворка с индексирующим роботом, как за десять минут проверить, что он видит на самом деле, какие есть способы это починить и чего стоит каждый.
Что такое клиентский рендеринг
Чтобы понять проблему, надо разобраться, как собирается страница. Классический сайт работает так: браузер запрашивает адрес, сервер отдаёт готовый документ со всем текстом, заголовками и ссылками. Робот получает ровно то же самое — полностью собранную страницу, которую остаётся прочитать.
Приложения на популярных фронтенд-фреймворках по умолчанию работают иначе. Сервер отдаёт почти пустой документ — по сути, один пустой контейнер и подключённые скрипты. Дальше уже в браузере скрипт выполняется, запрашивает данные, собирает разметку и вставляет её в этот контейнер. Это и называется клиентским рендерингом: страница рисуется на стороне того, кто её открыл.
Для человека переход бесшовный, доли секунды он не замечает. Но робот работает не как человек. Он получает первый ответ сервера — а там пусто. Ни текста, ни заголовков, ни ссылок. Чтобы увидеть содержимое, ему нужно самому запустить скрипты, дождаться ответов от источника данных и собрать страницу. И делает он это далеко не всегда и далеко не сразу.
Почему робот действительно видит пустоту
Распространённое возражение звучит так: поисковые системы давно умеют выполнять скрипты, проблемы нет. Умеют — с оговорками, о которых обычно молчат.
Обход идёт в две волны. Сначала робот забирает исходный ответ сервера. Если там пусто, страница отправляется в очередь на отрисовку. Вторая волна наступает позже — иногда через дни, иногда через недели, а на больших сайтах может не наступить вовсе, потому что отрисовка ресурсоёмка и очередь бесконечна.
Бюджет обхода конечен. На каждый сайт выделяется ограниченный объём ресурсов. Страница, которую нужно ещё и собрать, стоит дороже обычной в разы. Чем больше сайт, тем меньше документов успевает пройти вторую волну.
Ошибка скрипта равна пустой странице. Если при выполнении что-то пошло не так — не ответил источник данных, скрипт упал на неподдерживаемой конструкции, истёк таймаут, — робот не увидит ничего. У человека при этом всё может работать, потому что его браузер новее и терпеливее.
Подробнее об этом — в статье «Проверка мобильной версии: что видит робот, открывая сайт с телефона».
Разные системы ведут себя по-разному. Для аудитории в России ориентироваться нужно в первую очередь на поведение отечественного поиска, а он клиентский рендеринг переваривает заметно осторожнее. Полагаться на то, что «где-то это работает», нельзя: работает там, где не ваша аудитория.
Помогу с продвижением: раскрутка сайта белыми методами — вывожу сайты в топ Яндекса белыми методами.
Итог предсказуемый: часть страниц в индекс не попадает вовсе, часть попадает пустыми — с заголовком и без содержимого, — а те, что попали полностью, обновляются с большой задержкой. Владелец видит, что сайт вроде бы проиндексирован, и не понимает, почему нет позиций.
Что теряется, кроме текста
Отсутствие текста — самое очевидное, но не единственное следствие. Вместе с ним пропадает всё остальное.
- Ссылки. Если навигация собирается скриптом, робот не видит путей вглубь сайта. Внутренние разделы становятся недостижимыми, и весь каталог существует только для человека.
- Заголовки и описания страниц. Когда они подставляются скриптом после загрузки, в первом ответе стоит одно и то же значение для всех адресов — обычно название приложения. В выдаче это выглядит как сотни одинаковых строчек.
- Структурированные данные. Разметка цен, отзывов и характеристик, добавляемая динамически, чаще всего не учитывается, и расширенный вид в выдаче не появляется.
- Изображения. Отложенная загрузка, реализованная только через скрипт без обычной разметки, приводит к тому, что картинок для поиска не существует.
- Скорость по метрикам. Появление основного содержимого сдвигается на время выполнения скриптов, и показатели скорости ухудшаются даже там, где сайт субъективно быстрый.
Отдельная неприятность — иллюзия благополучия. Инструменты, показывающие итоговое состояние страницы в браузере, покажут вам полный документ, потому что они смотрят после отрисовки. Смотреть надо на первый ответ сервера, а его большинство владельцев не открывало никогда.
Как проверить, что видит робот
- Отключите выполнение скриптов в браузере и откройте свою страницу. То, что осталось на экране, примерно и есть то, с чем работает первая волна обхода. Пусто — диагноз поставлен.
- Посмотрите исходный код страницы — именно исходный, а не итоговое состояние в инструментах разработчика. Найдите в нём поиском любой абзац своего текста и заголовок страницы. Не нашлись — их нет в ответе сервера.
- Проверьте страницу через инструмент проверки в панели вебмастера. Он показывает содержимое так, как его получил робот, и это самый честный ответ.
- Сравните число страниц на сайте с числом страниц в индексе. Разрыв в разы при исправной карте сайта — типичный признак проблем с отрисовкой.
- Поищите в выдаче фрагмент своего текста в кавычках. Если система не находит текст, который на сайте точно есть, значит, она его не получила.
- Проверьте, одинаковые ли заголовки у разных страниц в выдаче. Одинаковые — заголовки подставляются скриптом.
Эти шесть проверок занимают минут пятнадцать и не требуют ни доступа к серверу, ни платных инструментов. Их стоит делать до подписания акта с разработчиком, а не через полгода после запуска.
Способы решения и их цена
Вариантов несколько, и выбор зависит от того, что за сайт и на каком этапе он находится.
| Способ | Как работает | Кому подходит |
|---|---|---|
| Серверный рендеринг | Сервер собирает готовую разметку и отдаёт её сразу, скрипт «оживляет» страницу после загрузки | Проекты с часто меняющимися данными: каталоги, личные кабинеты, витрины |
| Предварительная сборка страниц | Все страницы собираются заранее и лежат готовыми файлами | Сайты с редко меняющимся содержимым: услуги, блог, документация |
| Пререндер для роботов | Отдельный сервис собирает страницу и отдаёт готовую версию роботу | Быстрая заплатка на существующем приложении, когда переделка невозможна |
| Гибридный подход | Важные для поиска разделы собираются на сервере, интерфейсные части — в браузере | Большинство коммерческих проектов: разумный компромисс |
| Обычная разметка для контента | Текст и ссылки присутствуют в исходном ответе, скрипты добавляют интерактив поверх | Новые проекты — самый дешёвый вариант, если решить это на старте |
Про пререндер стоит предупредить отдельно. Технически это отдача роботу одной версии страницы, а человеку — другой, и здесь важно, чтобы содержимое совпадало. Пока версии идентичны по смыслу, вопросов не возникает. Как только в версии для робота появляется что-то, чего не видит человек, это уже подмена содержимого, и заканчивается она санкциями.
Тему разбирал отдельно: «Сделали красивый сайт на Tilda — а Яндекс его в упор не видит».
Что делать, если сайт уже сделан
Ситуация типичная: приложение написано, деньги потрачены, переписывать никто не даст. Порядок действий такой.
Шаг первый — определить масштаб. Не весь сайт одинаково страдает. Составьте список страниц, которые должны приводить трафик: услуги, категории, карточки, статьи. Проверьте по ним первый ответ сервера. Часто выясняется, что часть разделов отдаётся нормально, а проблема локализована в одном шаблоне.
Шаг второй — вынести критичное в разметку. Заголовок страницы, описание, основной текст первого экрана, навигационные ссылки и структурированные данные технически можно отдавать сервером даже в приложении с клиентской сборкой. Это не полная переделка, а работа с конкретными местами шаблона, и она закрывает большую часть проблемы.
Шаг третий — сделать ссылки настоящими. Переходы, реализованные обработчиком нажатия на элементе без обычной ссылки, для робота не существуют. Замена их на нормальные ссылки с адресом — часто самая дешёвая правка с самым заметным эффектом: у сайта появляется структура.
Шаг четвёртый — проверить адреса. В приложениях адрес нередко меняется без перезагрузки страницы, и разные состояния интерфейса живут по одному адресу. Каждый документ, который должен ранжироваться, обязан иметь собственный постоянный адрес, отдающий корректный ответ сервера при прямом заходе.
Шаг пятый — договориться о регламенте. Дальше правило простое: любая новая функциональность проверяется на первый ответ сервера до выкатки. Иначе через полгода вы вернётесь в ту же точку с новыми разделами.
Как ставить задачу разработчику
Большая часть проблем возникает не от злого умысла, а от того, что в задании про поиск не было ни слова. Разработчик сделал ровно то, что просили: быстрый интерфейс и красивые переходы. Поэтому требования нужно формулировать заранее и проверяемо.
Смежный материал по теме — «Робот видит ваш сайт совсем не таким, как вы: разрыв между картинкой в браузере и реальностью».
Формулировка, которую стоит внести в техническое задание, звучит так: содержимое, которое должно ранжироваться, обязано присутствовать в ответе сервера при запросе без выполнения скриптов. Дальше — конкретный список, который можно проверить построчно.
- Уникальные заголовок и описание страницы приходят с сервера, а не подставляются после загрузки.
- Основной текст и заголовки разделов присутствуют в исходной разметке.
- Все навигационные переходы сделаны обычными ссылками с адресами, а не обработчиками нажатия.
- У каждой страницы, которая должна ранжироваться, есть постоянный адрес, открывающийся напрямую.
- Несуществующие адреса отдают код ошибки, а не успешный ответ с пустым интерфейсом.
- Структурированные данные присутствуют в исходной разметке.
- Карта сайта формируется автоматически и содержит только адреса, отдающие корректный ответ.
Каждый пункт этого списка проверяется за минуту и не допускает толкований. Именно поэтому его стоит включать в приёмку: спор «индексируется или нет» превращается в проверку по семи строчкам.
Частые ошибки при переходе на серверную сборку
Переход сам по себе проблему не решает, если сделать его невнимательно. Вот на чём спотыкаются чаще всего.
- Разное содержимое на сервере и в браузере. Сервер собрал одно, скрипт после загрузки перерисовал другое. Робот индексирует первое, человек видит второе, и сигналы расходятся.
- Заголовки страниц остались динамическими. Разметка собирается на сервере, а заголовок и описание по-прежнему подставляются скриптом. Половина проблемы остаётся.
- Потеря адресов при переезде. Структура адресов меняется, старые не переадресуются, накопленная история обнуляется. Это отдельная большая потеря, не связанная со скриптами.
- Ответ сервера двести на несуществующих страницах. Приложение отдаёт «всё в порядке» вместо ошибки, и в индекс уходят тысячи пустых адресов.
- Медленный сервер вместо медленного браузера. Сборка на сервере без кэширования превращает скорость ответа в новое узкое место.
- Отсутствие проверки после выкатки. Никто не смотрит на первый ответ после релиза, и регресс замечают через месяцы.
Частые вопросы
Значит ли это, что на современных фреймворках нельзя делать сайты для поиска? Можно, и многие делают. Вопрос не в инструменте, а в режиме его работы: тот же фреймворк умеет собирать страницы на сервере или заранее. Проблема возникает только при выборе по умолчанию, когда о поиске не подумали. Требование к разработчику формулируется одной фразой: содержимое должно присутствовать в первом ответе сервера.
Как объяснить это разработчику, если он утверждает, что всё индексируется? Не спорьте словами, покажите факты. Откройте исходный код страницы и попробуйте найти в нём свой текст. Покажите разрыв между числом страниц и числом документов в индексе. Приведите результат проверки в панели вебмастера. Это проверяемые вещи, и после них дискуссия обычно заканчивается.
Сколько времени занимает исправление? Точечный вынос заголовков, описаний и текста первого экрана в серверную разметку — от одной до трёх недель на типичном проекте. Полноценный переход на серверную сборку — месяцы, в зависимости от размера приложения. Пререндер как временная мера настраивается за несколько дней, но это заплатка, а не решение.
Через сколько после исправления вернётся трафик? Сначала растёт число страниц в индексе — это видно в течение двух-четырёх недель. Затем появляются показы по запросам, до которых сайт раньше не доходил. Позиции и трафик подтягиваются в течение двух-трёх месяцев, потому что документам нужно накопить историю. Мгновенного эффекта не будет, но динамика проиндексированных страниц покажет, что дело пошло, уже через месяц.
Что делать, если бюджета на переделку нет вообще? Начните с бесплатного: превратите поддельные переходы в настоящие ссылки, задайте уникальные заголовки и описания хотя бы на серверном уровне, проверьте, что каждая важная страница открывается по прямому адресу и отдаёт корректный ответ. Эти три вещи не требуют смены архитектуры и закрывают заметную часть проблемы. Полноценное решение планируйте на следующий этап развития сайта.
Коротко
- При клиентской сборке сервер отдаёт роботу пустой контейнер: текст, ссылки и заголовки появляются только после выполнения скриптов.
- Отрисовка идёт второй волной, стоит дорого и на больших сайтах доходит не до всех страниц, а ошибка скрипта равна пустой странице.
- Вместе с текстом теряются ссылки, уникальные заголовки, структурированные данные и изображения.
- Проверка занимает пятнадцать минут: отключить скрипты, посмотреть исходный код, сверить число страниц с индексом, поискать свой текст в выдаче.
- Решения разной цены: серверная сборка, предварительная генерация, пререндер как заплатка и гибридный вариант для большинства проектов.
- Если переделка невозможна, начните с настоящих ссылок, уникальных заголовков в ответе сервера и корректных адресов — это закрывает большую часть проблемы.
Если не уверены, что именно видит робот на вашем сайте, и хотите понять, во что обойдётся исправление, приходите на SEO-консультацию: посмотрим первый ответ сервера по ключевым шаблонам, оценим масштаб потерь и составим список правок в порядке отдачи.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →Комментарии
Валерьян Гущинский
Отключил скрипты, открыл наш новый сайт — белый экран и одна кнопка. Мы за него заплатили как за годовой бюджет продвижения. Разговор с подрядчиком предстоит тяжёлый.
Полина Ярыгина
Разработчик говорит, что серверный рендеринг убьёт скорость и «сайт станет тормозить как обычный». Есть ли смысл в этом аргументе или это отговорка?
Анатолий Кузнецов автор
Аргумент не пустой, но он про реализацию, а не про подход. Сборка на сервере действительно добавляет время к ответу, и если её сделать без кэширования, каждая страница будет заново собираться под каждый запрос — вот тогда сервер и станет узким местом. Решается это стандартно: готовый результат кэшируется и отдаётся из кэша, пересобираясь только при изменении данных. Для страниц, которые меняются редко, вообще имеет смысл предварительная генерация — тогда отдаётся готовый файл, и быстрее уже некуда. Второе: посмотрите на метрику появления основного содержимого у себя сейчас. Почти всегда выясняется, что клиентская сборка проигрывает именно по ней, потому что человек ждёт загрузки скриптов, выполнения кода и ответа от источника данных. То есть спор идёт не «быстро против медленно», а о том, где именно происходит задержка. Попросите разработчика показать замеры для обоих вариантов, а не рассуждения.
Максимилиан Требухов
Пункт про одинаковые заголовки страниц в выдаче — это был наш случай. Двести карточек товара, и у всех в поиске одно и то же название приложения. Полгода не могли понять причину.
Жанна Салтыкова
Не понимаю про поддельные ссылки. У нас переходы работают, человек нажимает и попадает куда надо. Почему для робота это не ссылка, если она визуально ссылка?
Анатолий Кузнецов автор
Потому что робот не нажимает. Он разбирает разметку и ищет в ней элементы ссылок с указанным адресом — по ним он и строит карту сайта в своём представлении. Если у вас на месте ссылки стоит блок с обработчиком нажатия, который вызывает переход средствами приложения, в разметке никакого адреса нет: для робота это просто текст в рамочке. Внешне и по поведению для человека разницы никакой, а структура сайта для поиска при этом отсутствует. Проверить легко: наведите курсор и посмотрите, показывает ли браузер адрес в строке состояния внизу, и попробуйте открыть элемент в новой вкладке средним щелчком. Если адреса нет и вкладка не открывается — это не ссылка. Исправление обычно несложное: элемент заменяется на обычную ссылку с реальным адресом, а обработчик перехода остаётся поверх, чтобы приложение по-прежнему работало без перезагрузки. Получаете и то, и другое.
Никита Козодоев
Проверка через поиск фрагмента текста в кавычках — самый простой способ объяснить проблему нетехническому руководителю. Пять секунд, и всем всё понятно без терминов.
Лариса Ерёменко
У нас интернет-магазин, где каталог собирается скриптом с фильтрами. Карточки в индексе есть, а страниц категорий почти нет. Это та же проблема или что-то другое?
Анатолий Кузнецов автор
Похоже на комбинацию двух проблем, и разбирать их надо по отдельности. Первая — та самая: если список товаров в категории собирается скриптом, робот видит категорию как пустую страницу с заголовком, и ранжировать её не за что. Карточки при этом могут попадать в индекс через карту сайта, поэтому картина выглядит перевёрнутой. Вторая — фильтры: очень часто путь к категории существует только через параметры адреса, а такие адреса либо закрыты от индексации, либо не считаются самостоятельными страницами. Проверьте по шагам: откройте категорию по прямому адресу с отключёнными скриптами и посмотрите, есть ли в ответе список товаров и ссылки на них. Дальше убедитесь, что у каждой категории свой постоянный адрес без параметров, что она есть в карте сайта и что на неё ведут обычные ссылки из меню или каталога. Категории обычно приносят больше трафика, чем карточки, так что чинить в первую очередь стоит именно их.
Артемий Свиридовский
Добавлю к списку ошибок при переезде: у нас приложение отдавало код успешного ответа на любой несуществующий адрес, и в индекс улетело несколько тысяч пустых страниц. Чистили потом месяц.
Эвелина Хрусталёва
Пререндер поставили как временную меру два года назад, с тех пор так и живём. Работает, но постоянно ловим расхождения между версиями. Стоит ли переезжать на серверную сборку?
Анатолий Кузнецов автор
Расхождения между версиями — это и есть главный риск пререндера, и он со временем только растёт: приложение развивается, а сервис сборки отстаёт и отдаёт устаревшую разметку. Пока расхождение касается мелочей, ничего страшного, но когда в версии для робота остаются старые цены или отсутствующие товары, это уже прямая проблема. Решение зависит от того, сколько у вас разделов, которые должны ранжироваться. Если это десяток шаблонов, переезд на серверную сборку окупится: вы уберёте лишний узел, который надо поддерживать и который тихо ломается. Если ранжироваться должны единицы страниц, а остальное — закрытый личный кабинет, оставьте как есть, но поставьте регулярную проверку: раз в неделю автоматически сравнивайте версию для робота с версией в браузере по нескольким ключевым страницам и получайте уведомление при расхождении. Это дешевле переезда и снимает основной риск.
Марк Ольховиков
Требование «содержимое должно быть в первом ответе сервера» вписали в техническое задание на новый сайт. Одна фраза, а разговор с подрядчиками сразу стал другим.
Тамара Сазонтьева
Сравнили число страниц с индексом: на сайте около девятисот, в индексе сто двадцать. Списывали на молодость домена, а домену четыре года.
Леонтий Ушаков
Вопрос про регламент проверки после релизов. Как это организовать, если релизы каждую неделю и никто не будет вручную смотреть исходный код по всем шаблонам?
Анатолий Кузнецов автор
Вручную и не надо — это как раз задача для автоматической проверки, и она несложная. Заведите список эталонных адресов: по одному на каждый важный шаблон, то есть категория, карточка, услуга, статья, главная. Для каждого пропишите, что обязано присутствовать в ответе сервера: непустой заголовок страницы, уникальное описание, фрагмент основного текста, хотя бы несколько ссылок с адресами, блок структурированных данных. Дальше простой скрипт запрашивает эти адреса после каждой выкатки и проверяет наличие перечисленного, а при несовпадении шлёт уведомление. Пишется это за день и встраивается в тот же процесс, где у вас уже идут остальные проверки перед релизом. Важно, чтобы проверка запрашивала страницу как обычный клиент без выполнения скриптов, — иначе она будет проверять итоговое состояние и всегда показывать, что всё в порядке.
Вера Дубровина
Про иллюзию благополучия очень точно. Мы смотрели через инструменты разработчика, видели полный код и были уверены, что проблем нет. Разница между исходным ответом и итоговым состоянием оказалась откровением.
Забрала чеклист: проверить исходный HTML и страницу в Вебмастере, для SPA — SSR или пререндер, ссылки нормальными href, важный контент в HTML а не по скроллу, мета на сервере. Красота не должна прятать сайт от робота. Спасибо!
Популярные конструкторы обычно отдают нормальный HTML, там с базовой индексацией порядок. Проблема именно у самописных SPA на голых фреймворках без SSR. Но проверить исходник стоит в любом случае, независимо от платформы.
А лендинг на конструкторе вроде Тильды тоже этим страдает? Или там с рендерингом всё в порядке и контент отдаётся роботу нормально?
Виктория, популярные конструкторы вроде Тильды обычно отдают нормальный серверный HTML, там с базовой индексацией порядок. Проблема именно у самописных SPA на голых фреймворках без SSR. Но проверить исходник стоит в любом случае, независимо от платформы — правой кнопкой посмотреть код и убедиться, что контент там есть. Конструктор снижает риск, но не отменяет проверку.
Добавлю: даже мета-теги и Title на чистом JS могут не подхватываться Яндексом корректно. Title, description, canonical, разметка — всё это должно быть в серверном HTML. На SPA часто и мета генерится скриптом, и робот берёт дефолтные.
Спасибо, вот почему наш новый модный сайт не даёт трафика при всей красоте. Разработчики сделали на клиентском рендеринге, а про робота никто не подумал. Пойду требовать SSR или пререндер, пока не поздно.
Совет на этапе выбора: если делаете контентный или коммерческий сайт под поиск, ставьте вопрос про SEO и рендеринг ДО разработки. Переделывать готовый SPA на SSR — дорого и больно. Заложить сразу — копейки по сравнению с переделкой.
Ленивая подгрузка контента при скролле тоже риск: если товары или текст догружаются JS по мере прокрутки, робот может не долистать и не увидеть их. Важное должно быть в исходном HTML сразу, а не подгружаться скриптом.
Не только текст, но и внутренние ссылки на JS — беда. Если навигация и ссылки генерятся скриптом, робот не может пройти по сайту и обнаружить страницы. Ссылки должны быть нормальными href в HTML, а не onclick на JS.
Покажите разработчикам исходный HTML и инструмент проверки в Вебмастере рядом. Наглядно: в браузере контент есть, а роботу отдаётся пустой div. Аргумент это разработчиков обычно отрезвляет лучше любых слов про SEO.
А как объяснить это разработчикам, которые уверены, что всё ок, потому что в браузере всё отображается? Они не понимают разницы между тем, что видит человек, и тем, что забирает робот.
Артём, покажите разработчикам исходный HTML и инструмент проверки в Вебмастере рядом. Наглядно: в браузере контент есть, а роботу отдаётся пустой div. Этот аргумент отрезвляет лучше любых слов про SEO — они видят своими глазами разницу между тем, что рендерит браузер, и тем, что забирает робот. Абстрактные разговоры про индексацию их не убеждают, а пустой исходник — да.
Мы наступили на эти грабли с интернет-магазином на SPA. Красиво, быстро для пользователя, а карточки товаров в индекс не попадали. Внедрили пререндер для роботов — карточки начали индексироваться, трафик пошёл. Дорогая была ошибка.
SSR или SSG — вот правильный ответ для SPA. Next.js, Nuxt и подобные умеют отдавать серверный HTML, который робот видит сразу, а интерактив навешивается сверху. Красота фреймворка плюс индексируемость. Клиентский рендеринг для контентного сайта — ошибка.
Google JS рендерит неплохо, а вот Яндекс исторически с этим хуже. Для российского сайта на клиентском рендеринге это боль. Решение — SSR (серверный рендеринг) или пререндер, чтобы робот получал готовый HTML, а не пустышку.
Простейший тест: правой кнопкой — просмотр исходного кода страницы (не инспектор, а именно исходник). Если там пусто, а текст появляется только в инспекторе после отработки JS — робот тоже может его не увидеть. Ещё есть инструмент проверки страницы в Вебмастере, он показывает, что забрал робот.
А как проверить, видит робот мой контент или нет? Сайт вроде на современном фреймворке, красивый, а трафика нет. Как понять, дело в JS-рендеринге или в чём-то другом?
Елена, простейший тест — правой кнопкой просмотр исходного кода страницы (именно исходник, не инспектор). Если там пусто, а текст появляется только в инспекторе после отработки JS, робот тоже может его не увидеть. Плюс инструмент проверки страницы в Вебмастере показывает, что реально забрал робот. Сравните: видит ли робот тот же контент, что вы в браузере.
Классическая трагедия: дизайнеры и разработчики сделали красивый сайт на React или Vue, а весь контент подгружается скриптами. Открываешь исходный код — а там пустой div и куча JS. Робот видит пустую страницу, индексировать нечего, трафика ноль при идеальном дизайне.