Мониторинг website_url, аудит, IndexNow, GSC/Yandex, PageSpeed — в админке CMS Сайт.
Здоровье / SEO сайта
Раздел CMS Сайт → Здоровье / SEO (staff) следит за живым website_url: crawl, score, issues, готовность блога/KB, IndexNow, органический поиск и PageSpeed.
Публикация с низким SEO score — предупреждение, без блокировки. Публичный badge в MVP нет.
Что автоматизировано (и что нет)
| Есть | Где |
|---|---|
sitemap.xml (fetch + список URL) | Аудит |
robots.txt (доступность, Disallow: /, Sitemap:) | Аудит |
| On-page HTML (title, H1, meta, canonical, JSON-LD, alt, TTFB) | Аудит |
Чеклист blog/KB → seo_score + checks | Аудит / Контент / редактор |
| PageSpeed / CWV главной | Аудит + Дополнительно → Скорость |
| IndexNow ping | при публикации / ручной ping |
| Клики / impressions / запросы | Дополнительно → Поиск после OAuth + «Синк» |
| ИИ-комментарий | Дополнительно → Настройки → ИИ, поверх фактов отчёта |
| План: починить / дописать / добавить | кнопка Проверить сайт → три списка |
Аудит не меняет живой сайт и не парсит SERP Яндекса/Google. Organic и средняя позиция — из GSC / Вебмастера. Семантика: кластер ↔ страница (пробел / есть URL / каннибал). Внедрение на вашей стороне.
Что нужно
- В обзоре сайта укажите Website URL (или
base_urlв настройках SEO). - Включите мониторинг и при необходимости задайте sitemap / расписание.
- Примените миграции SEO на Supabase (профили, issues, отчёты, интеграции).
Экран (без вкладок)
- Проверить сайт — аудит, затем автоматически список дел.
- Три списка: Починить / Дописать / Добавить. Откройте пункт: куда, что вставить, «Сделано».
- Platform сайт сам не меняет.
Подключения GSC/Яндекс, PageSpeed, отчёты и настройки — блок Дополнительно (свёрнут).
| Дополнительно | Назначение |
|---|---|
| Поиск | IndexNow, OAuth GSC / Яндекс.Вебмастер, organic sync |
| Сырой аудит | Issues, страницы crawl |
| Контент CMS | Блог/KB: score + чеклист |
| Скорость | PageSpeed / CWV (главная) |
| Отчёты | План исправлений + runbook (MD) + опц. ИИ |
| Настройки | URL, schedule, уведомления, IndexNow |
API (admin)
База: YOUR_API_URL, сессия админки.
GET /v1/cms/sites/{siteId}/seo/verdict
POST /v1/cms/sites/{siteId}/seo/scans
GET /v1/cms/sites/{siteId}/seo/issues?status=open
GET /v1/cms/sites/{siteId}/seo/pages
POST /v1/cms/sites/{siteId}/seo/readiness/blog
POST /v1/cms/sites/{siteId}/seo/readiness/kb
POST /v1/cms/sites/{siteId}/seo/indexnow
POST /v1/cms/sites/{siteId}/seo/psi
POST /v1/cms/sites/{siteId}/seo/digest
GET /v1/cms/sites/{siteId}/seo/content
GET /v1/cms/sites/{siteId}/seo/tasks
GET /v1/cms/sites/{siteId}/seo/dashboard
GET /v1/cms/sites/{siteId}/seo/work-plan
POST /v1/cms/sites/{siteId}/seo/work-plan/generate
GET /v1/cms/sites/{siteId}/seo/work-plan/markdown
PATCH /v1/cms/sites/{siteId}/seo/clusters/{clusterId}
POST /v1/cms/sites/{siteId}/seo/competitors
GET/PUT /v1/settings/ai
OAuth:
Google Redirect URI (ровно как в UI Поиск):
{YOUR_API_URL}/v1/cms/seo/oauth/google/callback
→ Google Cloud → Authorized redirect URIs (хост API, не админки)
Яндекс (типичный кабинет): Callback только
https://oauth.yandex.ru/verification_code
→ «Открыть Яндекс» → скопировать код → «Подтвердить код»
(POST /v1/cms/sites/{siteId}/seo/search/connect/yandex/code)
Свой callback `{YOUR_API_URL}/v1/cms/seo/oauth/yandex/callback` —
только если Яндекс явно разрешил Callback URI и задан YANDEX_OAUTH_REDIRECT_URI.
Расписание: worker → POST /v1/internal/seo/tick (WORKER_SECRET).
IndexNow
- «Сгенерировать ключ» в Поиск / Настройки.
- Разместить
{key}.txtна корне живого сайта (тело = ключ). - При публикации блога/KB Platform шлёт ping (если ключ есть) и soft-recheck URL.
PageSpeed
Вкладка Производительность вызывает PageSpeed Insights API для Website URL сайта. Без ключа Google почти сразу режет по IP (429) — поэтому на проде ключ обязателен.
Для чайника: что сделать, чтобы заработало
-
Website URL на сайте
CMS Сайт → Обзор → поле Website URL =https://твой-сайт.ru(открывается из интернета, неlocalhost). -
Включить API в Google Cloud
Открой: PageSpeed Insights API — Enable
Выбери проект (или создай новый) → Enable. -
Создать API key
Открой: Credentials → Create credentials → API key.
Скопируй ключ. (Опционально: Restrict key → только «PageSpeed Insights API».) -
Прописать на сервере API
В env процесса Platform API (Dokploy / Docker /.env):PAGESPEED_API_KEY=AIza...твой_ключПерезапусти контейнер/процесс API. Ключ читается только при старте.
-
Проверить
GET YOUR_API_URL/v1/health→seo.pagespeedдолжно быть"configured"(не"missing_env").- CMS Сайт → Здоровье / SEO → Производительность → «Запустить PSI».
- Либо полный аудит главной (PSI входит в чеклист).
Ручная проверка без Platform: pagespeed.web.dev — вставь тот же URL.
Частые ошибки
| Симптом | Что делать |
|---|---|
missing_env / «ключ нет» | Нет PAGESPEED_API_KEY или API не перезапущен |
| 429 / лимит | Нет ключа или квота; поставь ключ |
| 403 | Ключ неверный / API не включён / restriction режет |
website_url_required | Нет Website URL на обзоре сайта |
| Score «—», ошибка про URL | Сайт недоступен снаружи или неверный https |
Ключ не вводится в админке — только env API. В Дополнительно → Скорость есть чеклист и статус ключа с /v1/health.
SEO-мета в контенте
В редакторе блога и KB: meta title/description, alt обложки, карточка готовности. Score взвешенный (не грубые ступеньки 0/17/33…). Публичный KB отдаёт meta_title, meta_description, cover_alt в GET …/kb/articles/{slug}.
Отчёты и ИИ-стратег
После аудита в Отчёты: блок «что проверено», полный план (не только топ-5) с полями «кто / где в коде / шаги / acceptance», кнопка Копировать runbook (MD) для тикета разработчику, опционально ИИ.
Каталог типов проблем и инструкции: SEO — runbook для разработчика.
GET /v1/cms/sites/{siteId}/seo/reports
GET /v1/cms/sites/{siteId}/seo/reports/{reportId}
GET /v1/cms/sites/{siteId}/seo/reports/{reportId}/developer-doc
POST /v1/cms/sites/{siteId}/seo/reports/{reportId}/ai
POST /v1/cms/sites/{siteId}/seo/digest
Ключи ИИ: Настройки → ИИ (не env). Провайдеры: Claude, OpenAI, Timeweb AI Gateway (base_url https://api.timeweb.ai/v1, модели вида openai/gpt-4o). API: GET/PUT /v1/settings/ai.
В редакторе блога/KB: кнопка Сгенерировать SEO заполняет только пустые meta_title, meta_description, body (с # H1), cover_alt — POST /v1/cms/sites/{id}/seo/generate-fields.
GSC / Яндекс — env на API
Без GOOGLE_OAUTH_CLIENT_ID/SECRET и YANDEX_OAUTH_CLIENT_ID/SECRET кнопки «Подключить» неактивны (platform_oauth_missing). Redirect URI в UI совпадает с тем, что уходит в OAuth authorize.
См. также CMS Сайт.