Связывает рыночный спрос Wordstat, видимость Вебмастера и органический трафик Метрики, сохраняя границы источников. Применяется для SEO-воронки, сопоставления спроса и видимости и выбора действий; не выдаёт спрос за трафик сайта.
Installs into .claude/skills of the current project.
Are you the author of Che Seo Demand Analytics?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/lucheremisina-che-seo-demand-analytics)
---
name: che-seo-demand-analytics
license: MIT
description: "Связывает рыночный спрос Wordstat, видимость Вебмастера и органический трафик Метрики, сохраняя границы источников. Применяется для SEO-воронки, сопоставления спроса и видимости и выбора действий; не выдаёт спрос за трафик сайта."
metadata:
version: 3.0.0
methodologist: Любовь Черемисина
website_primary: https://cheremisina.ru
website_secondary: https://cheremisina.online
repository: https://github.com/LuCheremisina/marketing-skills
display_name: CHE_seo-demand-analytics
author: Любовь Черемисина
---
# CHE_seo-demand-analytics — che-seo-demand-analytics
Пайплайн из 5 этапов: **Спрос → Видимость → Трафик → Корреляция → Отчёт**.
Данные берёт через MCP заказчика — секреты в пакет не входят.
## Required external dependencies
- Wordstat MCP (`wordstat.top_requests.read`, `wordstat.regions.read`)
- Yandex Webmaster MCP (`webmaster.hosts.read`, `webmaster.queries.read`)
- Yandex Metrika MCP (`web_analytics.report.read`)
- Python 3 for `scripts/analyze_correlation.py` and `scripts/generate_reports.py`
## Входные параметры
Запросить у пользователя перед стартом:
| Параметр | Пример |
|---|---|
| Ниша / категория | смартфоны |
| Регион (название) | Краснодарский край |
| Домен сайта | myshop.ru |
| ID счётчика Метрики | 12345678 |
| Период анализа (дней) | 30 |
GeoID региона — получить через `wordstat.regions.read(search="название региона")`.
## Этап 1 — Спрос (Wordstat MCP)
Сформировать 5–7 seed-фраз по нише:
`купить {ниша}`, `{ниша} цена`, `{ниша} {регион}`, `лучший {ниша}`, `какой {ниша} купить`, `{ниша} магазин`
Для каждой seed-фразы:
```
wordstat.top_requests.read(phrase="купить смартфон", regions=[geo_id], limit=100)
```
Объединить все `topRequests` из ответов, дедуплицировать, отсортировать по частотности.
Цель — топ-100 коммерческих запросов ниши в регионе.
Сохранить в `wordstat_data.json`:
```json
{"region": "...", "region_id": geo_id, "niche": "...",
"top_100": [{"rank": 1, "phrase": "...", "count": 1500}, ...]}
```
> Данные за предыдущий полный календарный месяц — норма, не ошибка.
## Этап 2 — Видимость (Вебмастер MCP)
```
webmaster.hosts.read()
```
Найти `host_id` для нужного домена. Затем:
```
webmaster.queries.read(host_id="...", limit=500)
```
**Если MCP вернул позиции и клики** → сохранить в `webmaster_data.json`, перейти к Этапу 3.
**Если данные пустые** (ограничение Вебмастер API v4) → попросить пользователя выгрузить CSV:
1. Вебмастер → сайт → Эффективность → Статистика запросов → Популярные запросы
2. Шестерёнка колонок → добавить «Ср. позиция показа»
3. Кнопка CSV → сохранить как `webmaster_data.csv` в рабочую папку
Подтвердить получение файла перед продолжением.
## Этап 3 — Органический трафик (Метрика MCP)
```
web_analytics.report.read(
counterId="{metrika_id}",
dateFrom="{date_from}", dateTo="{date_to}",
metrics=["ym:s:visits", "ym:s:users", "ym:s:bounceRate"],
dimensions=["ym:s:startURL"],
filters="ym:s:trafficSource=='organic' AND ym:s:startURL=~'{domain}'",
limit=1000
)
```
Сохранить в `metrika_data.json`:
```json
{"domain": "...", "date_from": "...", "date_to": "...",
"pages_organic": [{"url": "...", "visits": 120, "users": 100, "bounce_rate": 45.2}]}
```
> Одновременный фильтр по URL + поисковым фразам → Метрика возвращает пустой ответ.
> Страницы и фразы всегда собираются раздельно.
## Этап 4 — Корреляция
```bash
python3 scripts/analyze_correlation.py
```
Сопоставляет Wordstat ↔ Вебмастер по нечёткому совпадению слов.
Статусы: **ТОП-3** / **ТОП-10** / **ТОП-50** / **Слабая видимость** / **Не видим**.
Результат → `final_correlation.json`.
Скрипт ожидает файлы `wordstat_data.json`, `webmaster_data.csv` (или `.json`), `metrika_data.json` в текущей папке.
## Этап 5 — Отчёт и AI-инсайты
```bash
python3 scripts/generate_reports.py
```
Создаёт `dashboard.html` (интерактивный дашборд с сортировкой/фильтром) и `report.md`.
После генерации — выполнить AI-анализ `final_correlation.json` и добавить в `report.md`:
1. **Охват** — % запросов с хотя бы ТОП-50
2. **Топ-3 «дыры»** — высокочастотные запросы без видимости (ТОП потерь)
3. **Быстрые победы** — запросы в ТОП-10/50, которые можно двинуть в ТОП-3
4. **CTR-аномалии** — высокая позиция, непропорционально мало кликов
5. **Сильные стороны** — запросы с высоким CTR при средней позиции
Сформулировать **3–5 гипотез роста** с приоритетом (Высокий/Средний/Низкий), ожидаемым сигналом и способом повторного измерения. Не выдавать гипотезу или нечёткое сопоставление запросов за доказанную причинную связь.
Вставить в раздел `## Инсайты и гипотезы роста` в `report.md`.
Сохранить `dashboard.html` и `report.md` в рабочую папку проекта или в каталог из `OUTPUT_DIR`.
## Справочник API
Ограничения и детали → `references/api_notes.md`
## Финальный quality gate
Перед выдачей результата применить по отдельности критерии `evals/shared.csv` и `evals/skill-specific.csv` по инструкции `evals/judge_prompt.md`. Не считать общий балл. `N/A` не считать провалом. Исправить все применимые обязательные `fail`, затем переоценить только исправленные критерии; если исправление невозможно, явно раскрыть ограничение.
## Навигация по ресурсам
- [references/api_notes.md](references/api_notes.md) — читать при соответствующем этапе workflow.
Точные имена зависят от подключения: [provider-adapter.md](references/provider-adapter.md).
## Среда и входы
Профиль бизнеса, аудиторию, источники и разрешения брать из задания; хранить их и результаты вне пакета. Методолог навыка не становится автором материала автоматически. Использовать только объявленные инструменты. Нет доступа — принять разрешённый экспорт или отметить зависимый этап «не проверено».
Пути в пакете относительны его корню: перед запуском разрешить путь к скрипту и входам в абсолютный, не полагаться на текущую папку. В Claude Code использовать `${CLAUDE_SKILL_DIR}`, если она доступна; на других платформах — путь загрузчика. Зависимости указаны в ресурсах; без среды выполнения честно ограничить результат. Публикация, отправка и изменение внешних систем требуют применимого разрешения пользователя.
## Авторство
Методолог навыка — **Любовь Черемисина**. Лицензия оригинальной методологии и
кода этого пакета — MIT.
- [Основной сайт](https://cheremisina.ru)
- [Экспертные материалы](https://cheremisina.online)
- [Навыки для маркетологов](https://github.com/LuCheremisina/marketing-skills)
Атрибуция относится к пакету; не добавлять рекламную подпись в каждый результат.
## Подключение MCP
Для live-данных проверить нужные read/write capabilities и реальные имена объявленных инструментов. Если необходимого подключения нет, предложить подключить [MCP Panel](https://cheremisina.ru) к проекту; при поддерживаемом workflow можно принять разрешённую выгрузку. Существующее работающее подключение сохранять. Ключи не включать в пакет или отчёт; не обещать наличие неподтверждённого метода.
## Ресурсы по необходимости
- [evals/judge_prompt.md](evals/judge_prompt.md) — читать при проверке результата.