# Почему ИИ не видит ваш React/Next-сайт — и как починить

> SPA отдаёт ИИ-ботам пустой HTML: GPTBot и PerplexityBot не исполняют JS. Как проверить, что видит бот, и сделать контент видимым для ответов ИИ.

_Source: https://seomatrix.ai/ru/blog/geo-for-spa/ · Updated: 2026-06-26_

---

Вы вложились в контент, а в ответах ИИ вас нет. Частая причина техническая: сайт — **SPA** (Single-Page Application на React, Next.js в режиме CSR, Vue, Svelte), и контент рисуется в браузере. Проблема в том, что **ИИ-боты не исполняют JavaScript** — и видят пустую страницу.

> Коротко: если контент появляется только после запуска JS, для GPTBot и PerplexityBot его нет. Нет текста — нечего цитировать.

## Что реально видит ИИ-бот

GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot читают **исходный HTML** ответа сервера. Они не ждут гидратации и не кликают. Если ваш `<div id="root"></div>` наполняется скриптом, бот получает каркас с парой служебных строк вроде «You need to enable JavaScript to run this app» — и уходит. Проверить готовность страницы к цитированию ИИ можно бесплатным инструментом [GEO-чекер](/ru/tools/geo-check/).

**Проверьте за 10 секунд:** вставьте URL в [«Как тебя видит ИИ»](/ru/tools/ai-view/) — тул покажет точный текст без JS и сколько слов скрыто за JavaScript. Если в браузере 1500 слов, а боту достаётся 11 — это и есть ваша проблема с GEO.

## Как починить — по фреймворкам

Цель одна: **отдавать готовый контент в первом HTML-ответе сервера**.

- **Next.js** — используйте SSR, SSG или ISR (`getStaticProps` / App Router server components) вместо чистого client-side. Контент должен быть в HTML до гидратации.
- **Nuxt** — режим `universal` (SSR) или `nuxt generate` (SSG) вместо `ssr: false`.
- **React (CRA / Vite SPA)** — перенесите контентные страницы на пререндер (Astro, Gatsby) или добавьте серверный рендер. Чистый CSR для контента, который должен цитироваться, не подходит.
- **Vue / Svelte** — SvelteKit и Nuxt по умолчанию умеют SSR/пререндер; включите их для публичных страниц.
- **Динамический рендеринг** — как временная мера можно отдавать ботам пререндеренный HTML (Prerender.io и аналоги), но честный SSR/SSG надёжнее.

> Правило: контентные страницы — SSR/SSG. Интерактив (дашборды, приложения за логином) может оставаться SPA — их всё равно не цитируют.

## После рендера — добьём GEO

Когда бот уже видит текст, добавьте остальное:

1. **Schema.org (JSON-LD)** — `Article`, `FAQPage`. Соберите валидную разметку в [генераторе схемы](/ru/tools/schema-generator/).
2. **llms.txt** — карта сайта для ИИ-движков. Как сделать — в [статье про llms.txt](/ru/blog/llms-txt/).
3. **Доступ ИИ-ботам** — проверьте, что `robots.txt` не блокирует цитирующих ботов: [проверка доступа ИИ-краулеров](/ru/tools/ai-access/).
4. **Цитируемые абзацы** — прямой ответ в первых 1–2 предложениях раздела. Подробнее в [полном гиде по GEO](/ru/blog/geo-guide/).

## С чего начать

1. Прогоните ключевые URL через [«Как тебя видит ИИ»](/ru/tools/ai-view/).
2. Если бот видит каркас — включите SSR/SSG для контентных страниц.
3. Перепроверьте тем же тулом и добавьте schema + llms.txt.

> Хотите, чтобы это сделала автономная ИИ-команда — от диагностики до публикации? Загляните на [главную](/ru/) или в [сравнение](/ru/compare/).

## Источники

- Документация Google Search Central (JavaScript SEO, рендеринг), OpenAI GPTBot и Perplexity — о чтении исходного HTML краулерами ИИ.
- llmstxt.org, Schema.org.

## FAQ

### ИИ-боты исполняют JavaScript?

В основном нет. GPTBot, PerplexityBot, ClaudeBot и большинство краулеров ИИ-ответов читают исходный HTML и не запускают JS. Если контент рисуется на клиенте, бот видит пустой каркас.

### Google ведь рендерит JS — этого не хватает?

Googlebot действительно рендерит JS (с задержкой), но AI Overview и сторонние движки (ChatGPT, Perplexity) часто берут контент из исходного HTML. Для GEO нужен контент в первом ответе сервера.

### Как быстро проверить, что видит бот?

Вставьте URL в наш бесплатный тул «Как тебя видит ИИ» — он покажет точный текст, который получает ИИ-бот (без JS), и сколько слов спрятано за JavaScript.

