Seo Monitoring
ASecurityМониторинг (Phase 9): ежедневный pulse (GSC + Я.Вебмастер) в единую схему snapshot.json; GA4/PSI/Метрика Stats (`ga4-fetch`/`psi-fetch`/`metrika-fetch`) — отдельными командами в тот же snapshot через `snapshot-build.py --merge`; Метрика Logs cohorts (`cohorts`) — отдельный офлайн-отчёт вне snapshot. Ни одно из них не часть pulse. Потерянные ключи, AI-visibility (GEO), конкурентный бенчмарк. Используй когда просят «сними позиции», «что с трафиком», «обнови мониторинг» — отдельно или как стадию...
- 2 stars
- 0 votes
- 0 copies
- 2 views
- Added September 19, 2026
Works with
Security analysis
100/100Pro scans all 5 files and shows the line behind each finding
npx -y skills add turvodnik/seo-cycle --skill seo-monitoring --agent claude-codeAre you the author of Seo Monitoring?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/turvodnik-seo-monitoring)---
name: seo-monitoring
description: Мониторинг (Phase 9): ежедневный pulse (GSC + Я.Вебмастер) в единую схему snapshot.json; GA4/PSI/Метрика Stats (`ga4-fetch`/`psi-fetch`/`metrika-fetch`) — отдельными командами в тот же snapshot через `snapshot-build.py --merge`; Метрика Logs cohorts (`cohorts`) — отдельный офлайн-отчёт вне snapshot. Ни одно из них не часть pulse. Потерянные ключи, AI-visibility (GEO), конкурентный бенчмарк. Используй когда просят «сними позиции», «что с трафиком», «обнови мониторинг» — отдельно или как стадию цикла.
---
# Monitoring — снапшоты позиций и поведения
Модуль seo-cycle v2 · **Фазы: 9** · запуск **отдельно** или **стадией конвейера**.
## Контракт модуля
- **Входы:** API-токены источников (Keychain через ai-secret), машинный реестр проектов (`~/.seo-cycle/projects-registry.yaml` по умолчанию) для `pulse --global`
- **Конвейер:** `_state.json` цикла (`scripts/cycle-state.py`) — предыдущая фаза `done`; **standalone:** state нет → `seo-cycle cycle init --topic "<тема>"`, работай по этому файлу, state обнови на выходе.
- **Выходы:** `seo/monitoring/webmaster-snapshot-<дата>.json` (пишет `pulse`; каталог — `monitoring.path` в `seo-cycle.yaml`, дефолт `seo/monitoring`; оттуда же читают `doctor`/`status`) + markdown-отчёт; `seo.db` через `db-sync`
- **Gate:** freshness: снапшоту < 3 дней (warn) / < 7 дней (error) — проверяется в `doctor`
- **Делегаты:** `delegate.google_data` (`claude-seo:seo-google`), `delegate.yandex_specialist`
- **Общие правила:** `../_shared/policy-intake.md` (политики/бюджеты проекта — прочитать до платных действий), `../_shared/scorecard.md` (самооценка после задачи), `../_shared/rag-usage.md` (переиспользуй накопленное).
---
## Phase 9 — Monitoring
**Цель:** регулярные снапшоты позиций / трафика / поведения.
**Делегировать:**
- `delegate.google_data` (`claude-seo:seo-google`) — GSC + GA4 + CrUX (если включено)
- `delegate.yandex_specialist` — Я.Вебмастер + Метрика (если включено)
**Cadence (единая, v2):** позиции собираются **ежедневно** — `seo-cycle pulse` (или `pulse --global` daily-джобом): fetch (GSC + Я.Вебмастер, только эти два источника — `scripts/pulse.py`) → snapshot → db-sync → position-progress + алерты. GA4, PSI (CWV) и Метрика Stats (посещения/behavior по URL) в `pulse` не входят — это отдельные команды (`seo-cycle run script ga4-fetch`, `seo-cycle run script psi-fetch`, `seo-cycle run script metrika-fetch`), совместимые с `snapshot-build.py --source ga4|psi|metrika --merge` (пишут в тот же `snapshot.json`, но отдельным шагом и по своему расписанию). Только Метрика Logs cohorts (`seo-cycle cohorts`, когортный анализ по TSV из `metrika-logs-fetch.py` — другой API той же Метрики) в snapshot вообще не пишет — это самостоятельный офлайн-отчёт. **Раз в 2 недели** поверх ежедневных снапшотов строится человеческий отчёт по `templates/monitoring-report.template.md`. Свежесть снапшота проверяет `seo-cycle doctor` (warn ≥3 дн., fail ≥7 дн.). Важно: Вебмастер-выгрузка — это `query_sample` (обычно топ-500 запросов, `sitewide: false`); все производные цифры (forecast, KPI, триггеры) наследуют этот потолок.
**Граница выборки (T-096).** Срез — это топ-N запросов **по показам** (`monitoring.sample.size`, дефолт 500), а не сайт: у gsse.ru 500 из ~2400 запросов ловят ~13 % кликов. Поэтому каждый отчёт (`pulse`, `position-progress`, `kpi-contract`, `seo-forecast`) печатает строку «выборка N из M запросов сайта» (M — из сводки источника; GSC и старые снапшоты его не отдают → «M неизвестно»), дельты топ-3/10/30 и алерт `top10_drop` считаются **только по пересечению** двух срезов, а запрос, выпавший из топ-N, помечается «выбыл из выборки», а не «потеря». Сырая разница составов печатается отдельно и подписана. Факты KPI (`monthly_organic_clicks`, `keywords_in_top10`) — «по выборке топ-N»; полная выгрузка сайта по умолчанию не делается (отдельное решение).
**Локальный мониторинг (если локальный бизнес):** раз в месяц снимать прогресс vs конкуренты на обеих картах — скорость отзывов (`review-velocity.py`), новые категории/рубрики, частота постов, прирост фото. Промпты — `prompts/local/`. Отставание → задача в Phase 10.
**Потерянные ключи:** сравнить текущий снапшот с прошлым — `scripts/lost-keywords.py --old <prev> --new <cur>` (выпавшие/просевшие ключи → refresh + перелинковка).
**AI-visibility (GEO):** свод присутствия в Яндекс Нейро / Google AI Overviews / ChatGPT / Perplexity — промпт `prompts/ai-visibility.md` (+ плагины `seo-geo`/`seo-seranking`).
**Медианный бенчмарк по конкурентам:** `scripts/competitor-benchmark.py` — где мы ниже медианы топ-N (ключи/бэклинки/отзывы/посты/фото) → приоритеты в roadmap (ICE).
**Реклама + соцсети:** разведка платной выдачи и соцактивности конкурентов + генерация объявлений/постов (Директ/VK/TG/Дзен) — промпт `prompts/ad-and-social.md`.
**Pipeline (observability hub):**
```
delegate(claude-seo:seo-google) → GSC/GA4 JSON ┐
delegate(yandex-seo-specialist) → Webmaster/ ├→ snapshot-build.py --source X
Metrika данные │ (нормализация в единую schema)
psi-fetch.py URL → PSI JSON ┘ ↓
seo/monitoring/YYYY-MM-DD-snapshot.json (--output)
```
**Единая schema `snapshot.json`:** см. `scripts/snapshot-build.py --help`. Поля: `queries[]`, `pages[]`, `cwv{}`, `behavior{}`, `sources[]`. Скрипт умеет мердж нескольких источников в один snapshot через `--merge`.
**Что собирать:**
- Топ-100 запросов: impressions, clicks, CTR, position, дельты
- Топ-страниц: то же + behavior (bounce, time, conversions)
- CWV per URL (PSI) с статусом good/needs_improvement/poor
- Изменения vs прошлый снапшот
- Сезонные сравнения (если есть данные за прошлый период)
**Выход:** `seo/monitoring/YYYY-MM-DD-snapshot.json` (в `snapshot-build.py` каталог задавай `--output` явно — `doctor`/`status` ищут снапшоты только в `monitoring.path`) + `*.md` отчёт по шаблону.
Files in this skill
- SKILL.md
- prompts/ad-and-social.md
- prompts/ai-visibility.md
- prompts/serp-news.md
- templates/monitoring-report.template.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.