«SEO» в большинстве голов — это про ключевые слова и тексты. На деле половина результата — техническая обвязка: правильные мета-теги, robots, sitemap, разметка Schema.org. Без них хороший контент не доходит до поисковика. Разберём минимум, который должен быть на любом сайте.
robots.txt
Файл лежит по /robots.txt, открывает или закрывает обход сайта поисковиками. Минимум: разрешить полезные краулеры (Yandex, Googlebot, Bingbot), запретить служебные пути (/api/, /admin/, /_next/).
В Next.js 15 файл генерируется через app/robots.ts. Это удобно: контент зависит от окружения (на staging закрываем всё), Next автоматически кладёт файл в правильное место.
Отдельная история — AI-краулеры (GPTBot, ClaudeBot, CCBot, PerplexityBot). Их можно разрешить, если хотите попасть в обучающие данные и AI-ответы, или запретить, если содержание уникально и его ценность падает при пересказе LLM.
sitemap.xml
Карта сайта в формате XML — список всех публичных URL с приоритетом и датой обновления. Поисковики используют её, чтобы быстрее находить новые и обновлённые страницы.
В Next.js 15 — app/sitemap.ts, экспортирует функцию, возвращающую массив объектов с url, lastModified, changeFrequency, priority. Для блога подтягиваем список постов, для каталога — товары, для статических страниц — фиксированный список.
Правило: один sitemap на 50000 URL и менее 50 МБ. На крупных каталогах разбиваем на несколько и собираем sitemap-index. Адрес sitemap указываем в robots.txt — поисковик найдёт сам.
RSS / Atom для блога
RSS не умер, и Yandex по-прежнему индексирует его быстрее, чем sitemap. Для блогов и новостных разделов это must-have. Дополнительный плюс — пользователи в Feedly и аналогах подписываются и регулярно возвращаются.
Реализация: статический feed.xml или динамический роут с правильным Content-Type. Включаем последние 20–30 материалов с заголовком, описанием, датой, ссылкой и автором. Картинку и полный текст по желанию.
JSON-LD: Schema.org
Структурированные данные — самый важный элемент технического SEO в 2026. Именно они дают rich snippets в выдаче: рейтинг, цена, FAQ, хлебные крошки.
Минимальный набор для коммерческого сайта: Organization (на главной), WebSite с SearchAction, BreadcrumbList на каждой странице, FAQPage где есть FAQ, Product/Offer в каталоге, Article в блоге.
В Next.js рендерим JSON-LD на сервере (<script type="application/ld+json">), не клиентом. Серверный рендер гарантирует, что краулеры увидят разметку даже без выполнения JS.
Open Graph и Twitter Cards
OG-теги управляют тем, как ссылка выглядит при шаринге в соцсетях и мессенджерах. Без них в превью либо ничего не видно, либо случайный кусок текста — и кликабельность падает в разы.
Минимум: og:title, og:description, og:image, og:url, og:type. Картинка — 1200x630, оптимизированная (PNG или JPEG менее 300 КБ). Twitter Cards дублируют то же через twitter:* теги.
В Next.js — генерация через generateMetadata и app/opengraph-image.tsx. Edge-runtime рендерит превью динамически на лету, можно подставлять заголовок статьи и брендинг.
Канонические URL и hreflang
<link rel="canonical"> указывает поисковику основную версию страницы — спасает от штрафа за дубли (фильтры, UTM, разные сортировки). Ставим всегда, даже если кажется, что дублей нет.
hreflang — для мультиязычных и мультирегиональных сайтов. Указывает связь между языковыми/региональными версиями одной страницы. Yandex и Google используют это для показа пользователю правильной версии.
Скорость как SEO-фактор
Core Web Vitals — официальный фактор ранжирования с 2021. LCP менее 2.5 секунды, CLS менее 0.1, INP менее 200 мс. Сайт, не проходящий эти метрики, теряет позиции в выдаче на конкурентных запросах.
Next.js 15 со Server Components даёт CWV в зелёной зоне без ручной оптимизации. Главное — не убить это: тяжёлые сторонние скрипты, шрифты без font-display: swap, неоптимизированные картинки.
Типичные ошибки
noindex забыли убрать со staging-окружения после релиза — сайт пропадает из выдачи. Дубли страниц на разных URL без canonical. Sitemap содержит 500-страницы или 404. JSON-LD с ошибками валидации (Schema Markup Validator от Yandex и Rich Results Test от Google).
Проверяйте сайт после релиза через Yandex Webmaster и Google Search Console. Большинство технических проблем оба показывают в первые сутки после краула.
Итого
SEO-обвязка — это не «один день перед релизом», а система, которая собирается с самого старта. Robots, sitemap, RSS, JSON-LD, OG, hreflang, CWV — каждый элемент закрывает свою задачу. На современном Next.js всё это автоматизируется и ломается редко. Главное — не забыть проверить после релиза в Webmaster и Search Console.
Частые вопросы
Как правильно настроить robots.txt для сайта в 2026?
Файл лежит по /robots.txt, открывает или закрывает обход сайта поисковиками. Минимум: разрешить полезные краулеры (Yandex, Googlebot, Bingbot), запретить служебные пути (/api/, /admin/, /_next/). В Next.js 15 файл генерируется через app/robots.ts. Это удобно: контент зависит от окружения (на staging закрываем всё), Next автоматически кладёт файл в правильное место. AI-краулеры (GPTBot, ClaudeBot, CCBot, PerplexityBot) можно разрешить для попадания в AI-ответы или запретить для уникального контента.
Зачем нужен sitemap.xml и как его делать?
Карта сайта в формате XML — список всех публичных URL с приоритетом и датой обновления. Поисковики используют её, чтобы быстрее находить новые и обновлённые страницы. В Next.js 15 — app/sitemap.ts, экспортирует функцию, возвращающую массив объектов с url, lastModified, changeFrequency, priority. Правило: один sitemap на 50000 URL и менее 50 МБ. На крупных каталогах разбиваем на несколько и собираем sitemap-index. Адрес sitemap указываем в robots.txt — поисковик найдёт сам.
Какие схемы JSON-LD обязательны для коммерческого сайта?
Минимальный набор: Organization (на главной), WebSite с SearchAction, BreadcrumbList на каждой странице, FAQPage где есть FAQ, Product/Offer в каталоге, Article в блоге. Структурированные данные — самый важный элемент технического SEO в 2026. Именно они дают rich snippets в выдаче: рейтинг, цена, FAQ, хлебные крошки. В Next.js рендерим JSON-LD на сервере (script type="application/ld+json"), не клиентом. Серверный рендер гарантирует, что краулеры увидят разметку даже без выполнения JS.
Зачем нужен RSS на современном сайте?
RSS не умер, и Yandex по-прежнему индексирует его быстрее, чем sitemap. Для блогов и новостных разделов это must-have. Дополнительный плюс — пользователи в Feedly и аналогах подписываются и регулярно возвращаются. Реализация: статический feed.xml или динамический роут с правильным Content-Type. Включаем последние 20–30 материалов с заголовком, описанием, датой, ссылкой и автором. Картинку и полный текст по желанию. Особенно важно для AI-краулеров и сторонних агрегаторов контента.
Как настроить Open Graph и Twitter Cards?
OG-теги управляют тем, как ссылка выглядит при шаринге в соцсетях и мессенджерах. Без них в превью либо ничего не видно, либо случайный кусок текста — и кликабельность падает в разы. Минимум: og:title, og:description, og:image, og:url, og:type. Картинка — 1200x630, оптимизированная (PNG или JPEG менее 300 КБ). Twitter Cards дублируют то же через twitter:* теги. В Next.js — генерация через generateMetadata и app/opengraph-image.tsx. Edge-runtime рендерит превью динамически.
Какие типичные ошибки SEO-обвязки?
Noindex забыли убрать со staging-окружения после релиза — сайт пропадает из выдачи. Дубли страниц на разных URL без canonical — поисковики штрафуют. Sitemap содержит 500-страницы или 404. JSON-LD с ошибками валидации (проверяйте Schema Markup Validator от Yandex и Rich Results Test от Google). Проверяйте сайт после релиза через Yandex Webmaster и Google Search Console. Большинство технических проблем оба показывают в первые сутки после краула. Также не забывайте про Core Web Vitals — это фактор ранжирования.