---
title: SEO — runbook для разработчика
description: Что чинить по типам проблем Health / SEO, где в коде или CMS, как проверить.
---

# SEO — runbook для разработчика

После аудита в **CMS Сайт → Здоровье / SEO** отчёт содержит:

1. **Топ-5** на Обзоре — срочные задачи (краткий фокус).
2. **Полный план** на вкладке **Отчёты** — **все** open issues из Аудита (не «смотрите бэклог во вкладке Аудит»), с инструкциями и acceptance.
3. Кнопка **«Копировать runbook (MD)»** — markdown со всеми задачами.

Новый полный текст появляется после **нового аудита** (или «Создать digest»). Старые отчёты API дообогащает playbook’ами по `issue_type`.

См. также [Здоровье / SEO сайта](/guides/cms-seo-health).

## Как читать отчёт

| Поле | Смысл |
| --- | --- |
| `issue_type` | Стабильный код проблемы (ниже каталог) |
| Ответственный | Роль: разработчик лендинга / редактор CMS / DevOps / контент |
| Где править (dev) | Конкретный слой: шаблон `<head>`, sitemap, CMS-поле… |
| Инструкция разработчику | Пошаговые действия |
| Готово, когда | Критерии приёмки перед повторным аудитом |
| URL / CMS | Где воспроизвести |

После фиксов: **Запустить аудит** и сравните score / список issues.

## API

```http
GET  /v1/cms/sites/{siteId}/seo/reports/{reportId}
GET  /v1/cms/sites/{siteId}/seo/reports/{reportId}/developer-doc
POST /v1/cms/sites/{siteId}/seo/digest
POST /v1/cms/sites/{siteId}/seo/scans
```

`developer-doc` → `{ data: { markdown, items, report_id } }`.

## Каталог `issue_type`

### Индексация / crawl

| Тип | Кто | Где править | Суть |
| --- | --- | --- | --- |
| `sitemap_unreachable` | Dev лендинга | Генератор `/sitemap.xml` или URL в Health | Отдайте валидный sitemap 200 |
| `robots_unreachable` | Ops | `public/robots.txt` / route | robots.txt по HTTPS |
| `robots_blocks_all` | Ops | robots prod vs staging | Уберите `Disallow: /` на prod |
| `robots_sitemap_missing` | Dev | robots.txt | Строка `Sitemap: https://…` |
| `noindex_in_sitemap` | Dev | meta robots + фильтр sitemap | Либо index, либо вне sitemap |
| `missing_canonical` | Dev | `<link rel=canonical>` / metadata | Абсолютный self-URL |
| `canonical_to_home` | Dev | Шаблон canonical | Не хардкодьте главную на все URL |
| `http_4xx` | Dev | Роуты + редиректы + sitemap | 200/301 или убрать URL |
| `http_5xx` | Ops | Логи / деплой | Устранить падения |
| `http_unreachable` | Ops | DNS / TLS / WAF | Страница должна открываться |

### On-page / контент лендинга

| Тип | Кто | Где править | Суть |
| --- | --- | --- | --- |
| `missing_title` | Dev / CMS | `<title>` или `meta_title` | 20–70 символов, уникально |
| `duplicate_title` | Dev | metadata по роуту | Разные title на URL |
| `missing_description` | Контент | meta description / CMS | 50–160 символов |
| `missing_h1` | Dev / CMS | один `<h1>` или `#` в markdown | Видимый H1 |
| `multiple_h1` | Dev / CMS | лишние h1 → h2 | Ровно один H1 |
| `thin_content` | Контент | body страницы | ≥200–400 слов или noindex |
| `dirty_url_slug` | CMS | slug | ascii + дефисы |
| `images_without_alt` | CMS / Dev | `alt` / `cover_alt` | Осмысленный alt |
| `missing_json_ld` | Dev | `application/ld+json` | Organization / WebSite / Article |
| `schema_invalid` | Dev | сборка JSON-LD | `JSON.stringify`, валидатор |

### CMS

| Тип | Кто | Где править | Суть |
| --- | --- | --- | --- |
| `cms_seo_readiness` | Редактор CMS | Блог/KB → meta, H1, alt | Чеклист + «Сгенерировать SEO» |
| `cms_no_website_url` | Редактор | Обзор → Website URL | HTTPS публичный URL |

### Производительность

| Тип | Кто | Где править | Суть |
| --- | --- | --- | --- |
| `psi_low_score` | Dev | бандл, hero, CDN | PSI Opportunities |
| `cwv_lcp` | Dev | LCP media + TTFB | Preload / WebP |
| `cwv_cls` | Dev | sizes, шрифты, баннеры | Резерв места |
| `cwv_inp` | Dev | JS / handlers | Меньше long tasks |
| `slow_ttfb` | Ops | SSR / edge cache | TTFB &lt; ~800–1000 мс |

## Типичный порядок работ

1. **Ops:** `robots_*`, `http_5xx` / unreachable, TTFB.
2. **Dev лендинга:** sitemap, canonical, title/H1 шаблон, JSON-LD, CWV.
3. **Редактор CMS:** `cms_seo_readiness`, alt, meta статей (кнопка ИИ в редакторе).
4. Повторный аудит → score ↑, issues закрыты.

## Что аудит не делает

Позиции в SERP «сам по себе» аудит не парсит. Organic и средняя позиция — GSC / Яндекс.Вебмастер. Список дел — кнопка **Проверить сайт** (рекомендации, внедрение на вашей стороне).
