Навайбкодили сайт — а в выдачу он не попадёт
Продолжаю историю с лендингом. Codex красиво разложил макет, я мысленно писал победный пост. И тут пришёл техдир со словами: «открой исходник!».
Открываю — и куча JavaScript (см. скриншот). Для пользователя ок: браузер скачал скрипты, React нарисовал карточки. Для робота — пустая страница.
🔗 Ссылка на чужой кейс
Поговорим про SSR или Server-Side Rendering
🔍 Кто что видит в SPA без SSR
🔸 Яндекс — есть настройка «Рендеринг JavaScript», она в бете. По умолчанию «На усмотрение робота» — лотерея. Сам Яндекс пишет: «Запретите рендеринг, если на сайте реализован SSR».
🔸 Google — формально рендерит через headless Chromium. На практике это отдельная очередь, страницы могут торчать в ней неделями. Старый dynamic rendering сам Google теперь называет «workaround, not recommended».
🔸 AI-боты (ChatGPT, Claude, Perplexity) — не рендерят JS вообще. В эпоху AI-search это ноль шансов попасть в их ответы.
🔸 Превью для соцсетей (Telegram, LinkedIn, X) — они тоже не рендерят. Open Graph должен лежать в первичном HTML, иначе превью при шаринге пустое.
🛠 Что попросить агента
Короче когда сделали классный сайт на Codex или Cursor — закиньте перед продакшеном промпт:
Сделай индексацию React SPA лучше без перехода на SSR.
Сначала оцени текущую структуру проекта и выбери минимально безопасный вариант.
Если в проекте нет сборки и роутера, не добавляй Vite/react-snap без отдельного согласования.
Нужно:
1. Добавить корректные ``, ``, canonical.
2. Добавить Open Graph и Twitter Card.
3. Добавить JSON-LD по schema.org.
4. Добавить статический HTML-фоллбек с основным текстом, разделами и контактами, видимый в исходном HTML до выполнения React.
5. Добавить `window.YandexRotorSettings` по документации Яндекса.
6. Добавить или обновить `sitemap.xml` и `robots.txt`, если это уместно для текущей структуры.
7. Описать в README/AGENTS, что SEO-фоллбек нельзя удалять без замены на SSR или пререндеринг.
Если для нескольких роутов нужен build-time prerendering, сначала предложи план миграции на сборку отдельным шагом.
описание настроек для Яндекса https://yandex.ru/support/webmaster/ru/yandex-indexing/rendering
💭 Мораль
Перед продом три скучных проверки: открыть исходный код (там должен быть текст, а не пустой div), прогнать URL через Search Console и «Проверить страницу» в Вебмастере, кинуть ссылку в чат и посмотреть превью.
Если у вас тоже были шишки с навайбкоженными сайтами — делитесь в комментариях.
----
Поляков считает — AI, код и кейсы
Продолжаю историю с лендингом. Codex красиво разложил макет, я мысленно писал победный пост. И тут пришёл техдир со словами: «открой исходник!».
Открываю — и куча JavaScript (см. скриншот). Для пользователя ок: браузер скачал скрипты, React нарисовал карточки. Для робота — пустая страница.
⚠️ Чужой кейс из марта 2026: React SPA на 198 страниц. За шесть месяцев Google проиндексировал 20 из 198. Не пенальти, не малополезный контент — страницы застряли в очереди на рендеринг.
🔗 Ссылка на чужой кейс
Поговорим про SSR или Server-Side Rendering
🔍 Кто что видит в SPA без SSR
🔸 Яндекс — есть настройка «Рендеринг JavaScript», она в бете. По умолчанию «На усмотрение робота» — лотерея. Сам Яндекс пишет: «Запретите рендеринг, если на сайте реализован SSR».
🔸 Google — формально рендерит через headless Chromium. На практике это отдельная очередь, страницы могут торчать в ней неделями. Старый dynamic rendering сам Google теперь называет «workaround, not recommended».
🔸 AI-боты (ChatGPT, Claude, Perplexity) — не рендерят JS вообще. В эпоху AI-search это ноль шансов попасть в их ответы.
🔸 Превью для соцсетей (Telegram, LinkedIn, X) — они тоже не рендерят. Open Graph должен лежать в первичном HTML, иначе превью при шаринге пустое.
🛠 Что попросить агента
Короче когда сделали классный сайт на Codex или Cursor — закиньте перед продакшеном промпт:
Сделай индексацию React SPA лучше без перехода на SSR.
Сначала оцени текущую структуру проекта и выбери минимально безопасный вариант.
Если в проекте нет сборки и роутера, не добавляй Vite/react-snap без отдельного согласования.
Нужно:
1. Добавить корректные ``, ``, canonical.
2. Добавить Open Graph и Twitter Card.
3. Добавить JSON-LD по schema.org.
4. Добавить статический HTML-фоллбек с основным текстом, разделами и контактами, видимый в исходном HTML до выполнения React.
5. Добавить `window.YandexRotorSettings` по документации Яндекса.
6. Добавить или обновить `sitemap.xml` и `robots.txt`, если это уместно для текущей структуры.
7. Описать в README/AGENTS, что SEO-фоллбек нельзя удалять без замены на SSR или пререндеринг.
Если для нескольких роутов нужен build-time prerendering, сначала предложи план миграции на сборку отдельным шагом.
описание настроек для Яндекса https://yandex.ru/support/webmaster/ru/yandex-indexing/rendering
💭 Мораль
Перед продом три скучных проверки: открыть исходный код (там должен быть текст, а не пустой div), прогнать URL через Search Console и «Проверить страницу» в Вебмастере, кинуть ссылку в чат и посмотреть превью.
💡 ИИ-инструмент даёт красивый просмотрщик сайта. Продакшен начинается там, где сайт видят не только люди, но и роботы, AI-боты, мессенджеры и аналитика.
Если у вас тоже были шишки с навайбкоженными сайтами — делитесь в комментариях.
----
Поляков считает — AI, код и кейсы