С 2019 года Google по умолчанию индексирует мобильную версию сайта, а не десктопную — для ранжирования, сниппетов и структурированных данных смотрит на то, что отдаётся телефону. Если на мобильной версии текста меньше, микроразметка не продублирована или часть контента спрятана скриптом без серверного рендера — для Google этого контента официально не существует. Ниже — что именно проверять и как сделать это за 20 минут в URL Inspection, без платных тулз.
Задаю на аудитах один и тот же вопрос: «Открой свой сайт с телефона рядом с десктопом — одинаковый ли текст в карточке услуги?» В девяти случаях из десяти владелец сайта смотрел последний раз на мобильную версию глазами клиента, а не глазами бота.
Что вообще значит mobile-first индексация
До 2016 года Google сканировал десктопную версию сайта и на её основе решал, о чём страница и как её ранжировать. Мобильный трафик к тому моменту давно перевалил за половину, а индекс жил по старым правилам. Google начал переход на mobile-first в 2016-м, и с июля 2024 это единственный режим для всех сайтов без исключений — десктопного краулинга в чистом виде больше нет. Официальное описание и чек-лист готовности — в документации Search Central.
Смысл простой: тот HTML, который твой сервер отдаёт Googlebot Smartphone, — это теперь единственная версия страницы, которую Google понимает, оценивает и кладёт в индекс. Десктопная версия для ранжирования не участвует вообще, даже если она у тебя богаче контентом.
Контент, который «есть», но не виден боту
Самый частый косяк — не отсутствие адаптива, а усечённая мобильная версия «для скорости». Из лучших побуждений с мобильной верстки убирают часть текста, пару абзацев «для не перегруженности», блок с характеристиками переносят в выпадающее меню, которое подгружается по клику через JS без серверного рендера. Для живого человека — ничего страшного, прокрутил или нажал. Для Googlebot, если контент реально не в DOM до взаимодействия или спрятан за условием, которое требует клика и подгрузки с сервера, — равно тому, что этого текста нет.
Проверка: открой страницу в режиме инкогнито, отключи JS (расширение или DevTools → Settings → Debugger → Disable JavaScript) и посмотри, что осталось. Если карточка товара превратилась в заголовок и картинку — у тебя проблема шире, чем просто мобильная парность.
Микроразметка и метатеги должны совпадать 1:1
Это правило из документации Google бьёт чаще, чем кажется: если структурированные данные (Schema.org) или метатеги есть на десктопе, но не продублированы на мобильной версии — Google их просто не увидит, потому что индексирует только мобильный HTML. Отдельно обидно с robots-мета: видел сайт, где по ошибке на мобильном шаблоне тег noindex остался от старой заглушки «страница в разработке» — десктоп был чист, а Google индексировал мобильную версию с noindex и тихо выкидывал страницы из выдачи месяцами.
- JSON-LD схема — тот же блок, с тем же набором полей, на мобильной вёрстке.
- Title, description, canonical, robots — идентичны на обеих версиях, без «мобильного» urlencode-мусора в URL.
- Alt-тексты у изображений — если на мобильной версии часть картинок заменена на иконки-плейсхолдеры без alt, Google Images теряет эти страницы для визуального поиска.
Аккордеоны и табы — это не наказание, это проверка видимости
Миф живёт с 2018 года: «Google занижает вес контента, спрятанного за аккордеоном». Нет, не занижает — если контент есть в HTML и просто визуально свёрнут через CSS display или атрибут hidden, который убирается кликом, Google его читает и учитывает полностью, это подтверждено официально. Проблема не в аккордеоне как паттерне, а в реализации: если контент вообще не рендерится на сервере и появляется в DOM только после фетча по клику — вот тут его для бота не существует. Разница между «визуально свёрнуто» и «физически не выгружено» — это разница между нормальной мобильной практикой и дырой в индексации.
Lazy-load и картинки на мобильной версии
Ленивая загрузка критична для LCP на мобильном — это разбирал в статье про Core Web Vitals. Но у lazy-load своя ловушка именно в контексте mobile-first: если библиотека грузит картинку только по скроллу и срабатывает от события, которое требует реального взаимодействия пользователя, а не просто «попал в viewport», Googlebot может не дождаться и проиндексировать страницу без изображений вовсе. Нативный loading="lazy" в современных браузерах эту проблему в основном решает, самописные JS-решения на IntersectionObserver — не всегда, особенно старые версии без запасного <noscript>.
Как проверить свой сайт за 20 минут
| Шаг | Что делаешь | На что смотришь |
|---|---|---|
| 1 | GSC → URL Inspection → «Просмотреть просканированную страницу» → HTML | Весь ли текст карточки/услуги реально в HTML, который получил Googlebot |
| 2 | Там же → «Снимок экрана» | Совпадает ли отрендеренный вид с тем, что видит живой пользователь на телефоне |
| 3 | Сравнить JSON-LD на десктопной и мобильной вёрстке | Один и тот же набор полей, без «урезанной» версии на мобиле |
| 4 | Отключить JS в DevTools, перезагрузить | Остаётся ли основной контент читаемым без скриптов |
| 5 | Проверить meta robots на мобильном шаблоне отдельно от десктопного | Нет ли забытого noindex только на одной из версий |
Своя ошибка на сайте автосалона
В 2024 вёл сайт автосалона — карточки авто были построены на отдельном «облегчённом» мобильном шаблоне, собранном другим подрядчиком до меня. Характеристики (год, пробег, двигатель, комплектация) на десктопе лежали прямым текстом в таблице, на мобильной версии — в табе «Характеристики», который подгружался AJAX-запросом по клику пользователя, без серверного рендера и без noscript-запасного варианта. Трафик на карточки конкретных моделей за два месяца просел на треть, а я сначала грешил на сезонность и конкурентов. Разобрался только через снимок рендера в URL Inspection — там таб с характеристиками был физически пуст. Переписали на серверный рендер таба — трафик на карточки вернулся за полтора месяца, без единой новой ссылки или текста. Урок обошёлся дорого именно потому, что я не проверил рендер сразу, а два месяца искал причину не в том месте.
Чеклист перед запуском нового шаблона
- Весь текстовый контент карточки/страницы есть в HTML без обязательного клика пользователя.
- JSON-LD идентичен на обеих версиях вёрстки, поля не урезаны на мобильной.
- Title, description, canonical, robots совпадают между версиями — проверяется в URL Inspection, а не на глаз.
- Изображения с alt грузятся так, чтобы Googlebot успел их увидеть без обязательного взаимодействия.
- Снимок рендера в GSC соответствует тому, что видит пользователь с телефона — не «примерно», а один в один.
Пройтись по этому списку один раз при запуске нового шаблона дешевле, чем два месяца гадать, почему трафик на раздел карточек встал на паузу без видимой причины.