yandex-metrika
Работа с Yandex Metrika Reporting API v1. Отчёты по трафику, конверсиям, UTM-меткам, поисковым системам.
Config
Требуется YANDEX_METRIKA_TOKEN в config/.env.
Инструкция: config/README.md.
Philosophy
- Cache-first — конфигурационные данные (счётчики, цели, инфо) кешируются надолго. Отчёты кешируются по ключу counter+dates+params. Перед API-запросом всегда проверяем кеш.
- Context window hygiene — stdout ограничен 30 строками. Полные данные в CSV/файл. Кеш доступен через grep/rg для поиска без загрузки в контекст.
- Точные данные — accuracy=1 (без сэмплирования), фильтр isRobot по умолчанию.
- Атрибуция — дефолт
lastsign (последний значимый источник). Спрашиваем пользователя при первом запуске.
Workflow
STOP! Перед любым анализом:
Получи список счётчиков:
bash scripts/counters.sh
Спроси пользователя (если счётчик не очевиден из контекста):
"О каком счётчике/сайте идёт речь?
Укажите ID, название или домен."
Если пользователь назвал сайт/домен — ищи через --search:
bash scripts/counters.sh --search "metallik"
Это grep по TSV (id + name + site), поэтому находит и по домену.
Получи инфо о счётчике и его цели:
bash scripts/counter_info.sh --counter <ID>
bash scripts/goals.sh --counter <ID>
Спроси про конверсионные цели:
"Какие из этих целей являются конверсионными для вашего бизнеса?
[список целей из goals.sh]
Сохраню выбранные для будущих отчётов."
Сохрани конфигурацию в cache/counter_<id>/config.json:
{
"attribution": "lastsign",
"conversion_goals": [
{"id": 12345, "name": "Заказ оформлен"},
{"id": 67890, "name": "Заявка отправлена"}
]
}
Запускай отчёты по задаче пользователя.
Scripts
Общий паттерн вызова:
bash scripts/<script>.sh --counter <ID> --date1 YYYY-MM-DD [--date2 ...] [--group month] [--csv path]
| Script |
Description |
Special params |
counters.sh |
Список счётчиков |
--search "query" |
goals.sh |
Цели счётчика |
— |
counter_info.sh |
Метаданные счётчика |
— |
traffic_summary.sh |
Трафик по источникам |
— |
conversions.sh |
Достижение целей |
--goals "ID,ID" / --all-goals; по умолчанию из config.json |
utm_report.sh |
UTM-разбивка |
— |
search_engines.sh |
Поисковые системы (organic) |
— |
ecommerce.sh |
Покупки, выручка, средний чек |
--currency RUB|USD|EUR; авто из counter_info |
direct_clients.sh |
Логины Директа |
— |
direct_costs.sh |
Расходы Директа (ym:ad:*) |
--direct-client-logins "login"; нет --group/--device/--source |
comparison.sh |
Сравнение двух периодов |
--date1a/--date2a/--date1b/--date2b; --dimension, --metrics |
Не все скрипты поддерживают все общие параметры — см. Special params.
Отчёт по целям
conversions.sh автоматически запрашивает цели частями по шесть и объединяет их
в один CSV. Это работает для --all-goals, --goals и целей из config.json.
При --all-goals список целей сначала обновляется через Management API.
Объединение выполняется обычным awk; для запуска отчётов Python и uv не нужны.
На каждую цель сохраняются три метрики: визиты с достижением, достижения и конверсия.
Порядок целей в колонках соответствует выбранному списку.
В запросы добавляется общий показатель визитов, чтобы источники с нулевыми
достижениями не исчезали из отдельных частей. В итоговом CSV служебных метрик нет,
но источники без конверсий сохраняются; итоговая конверсия учитывает их визиты.
Источники сортируются по визитам с достижением первой выбранной цели,
при равенстве — по источнику.
--limit ограничивает число источников: без --group допустимо 1–100000
(по умолчанию 100); с --group — 1–30 (по умолчанию 30, параметр API top_keys).
Даты при этом не сокращаются. Отчёт попадает в кеш и --csv только после
успешного получения и объединения всех частей.
Общие параметры отчётных скриптов
| Param |
Required |
Default |
Values |
--counter |
yes |
- |
ID счётчика |
--date1 |
yes |
- |
YYYY-MM-DD |
--date2 |
no |
today |
YYYY-MM-DD |
--group |
no |
- |
day, week, month |
--device |
no |
all |
desktop, mobile, tablet |
--source |
no |
all |
organic, ad, referral, direct, social |
--attribution |
no |
lastsign |
lastsign, last, first |
--limit |
no |
API default |
число строк |
--csv |
no |
- |
путь для экспорта |
--no-cache |
no |
- |
пропустить кеш |
Кеш-стратегия
Кеш хранится в cache/:
counters.json + counters.tsv — все счётчики
counter_<id>/info.json — метаданные (permanent)
counter_<id>/goals.json + goals.tsv — цели
counter_<id>/config.json — атрибуция, конверсионные цели
counter_<id>/direct_clients.json — логины Директа
counter_<id>/reports/*.csv — результаты отчётов
Для поиска по кешу: grep "text" cache/counters.tsv или rg "text" cache/.
Расширенные сценарии
- Популярные поисковые запросы
- Произвольные отчёты и JSON-запросы (drilldown, metrika_get и др.)
- Справочник dimensions/metrics
- Сравнение периодов год-к-году
- Расходы Директа и PnL
- Ограничения API (bytime, scope mixing, drilldown CSV)
Лимиты API
- Reporting API: ~200 запросов / 5 минут (при превышении — ждите ~5 минут)
- Скрипты автоматически обрабатывают 429 (Retry-After ≤ 60s → retry, иначе fail с сообщением)
1---2name: yandex-metrika3description: Аналитика Yandex Metrika: трафик, конверсии, UTM, поисковые системы. Cache-first подход для гигиены контекстного окна. Triggers: яндекс метрика, yandex metrika, metrika analytics, метрика трафик, метрика конверсии, метрика отчёт.4---56# yandex-metrika78Работа с Yandex Metrika Reporting API v1. Отчёты по трафику, конверсиям, UTM-меткам, поисковым системам.910## Config1112Требуется `YANDEX_METRIKA_TOKEN` в `config/.env`.13Инструкция: `config/README.md`.1415## Philosophy16171. **Cache-first** — конфигурационные данные (счётчики, цели, инфо) кешируются надолго. Отчёты кешируются по ключу counter+dates+params. Перед API-запросом всегда проверяем кеш.182. **Context window hygiene** — stdout ограничен 30 строками. Полные данные в CSV/файл. Кеш доступен через grep/rg для поиска без загрузки в контекст.193. **Точные данные** — accuracy=1 (без сэмплирования), фильтр isRobot по умолчанию.204. **Атрибуция** — дефолт `lastsign` (последний значимый источник). Спрашиваем пользователя при первом запуске.2122## Workflow2324### STOP! Перед любым анализом:25261. **Получи список счётчиков:**27 ```bash28 bash scripts/counters.sh29 ```30312. **Спроси пользователя** (если счётчик не очевиден из контекста):32 ```33 "О каком счётчике/сайте идёт речь?34 Укажите ID, название или домен."35 ```36 Если пользователь назвал сайт/домен — ищи через `--search`:37 ```bash38 bash scripts/counters.sh --search "metallik"39 ```40 Это grep по TSV (id + name + site), поэтому находит и по домену.41423. **Получи инфо о счётчике и его цели:**43 ```bash44 bash scripts/counter_info.sh --counter <ID>45 bash scripts/goals.sh --counter <ID>46 ```47484. **Спроси про конверсионные цели:**49 ```50 "Какие из этих целей являются конверсионными для вашего бизнеса?51 [список целей из goals.sh]52 Сохраню выбранные для будущих отчётов."53 ```54555. **Сохрани конфигурацию** в `cache/counter_<id>/config.json`:56 ```json57 {58 "attribution": "lastsign",59 "conversion_goals": [60 {"id": 12345, "name": "Заказ оформлен"},61 {"id": 67890, "name": "Заявка отправлена"}62 ]63 }64 ```65666. **Запускай отчёты** по задаче пользователя.6768## Scripts6970Общий паттерн вызова:71```bash72bash scripts/<script>.sh --counter <ID> --date1 YYYY-MM-DD [--date2 ...] [--group month] [--csv path]73```7475| Script | Description | Special params |76|--------|-------------|----------------|77| `counters.sh` | Список счётчиков | `--search "query"` |78| `goals.sh` | Цели счётчика | — |79| `counter_info.sh` | Метаданные счётчика | — |80| `traffic_summary.sh` | Трафик по источникам | — |81| `conversions.sh` | Достижение целей | `--goals "ID,ID"` / `--all-goals`; по умолчанию из `config.json` |82| `utm_report.sh` | UTM-разбивка | — |83| `search_engines.sh` | Поисковые системы (organic) | — |84| `ecommerce.sh` | Покупки, выручка, средний чек | `--currency RUB\|USD\|EUR`; авто из counter_info |85| `direct_clients.sh` | Логины Директа | — |86| `direct_costs.sh` | Расходы Директа (`ym:ad:*`) | `--direct-client-logins "login"`; нет `--group`/`--device`/`--source` |87| `comparison.sh` | Сравнение двух периодов | `--date1a/--date2a/--date1b/--date2b`; `--dimension`, `--metrics` |8889Не все скрипты поддерживают все общие параметры — см. **Special params**.9091### Отчёт по целям9293`conversions.sh` автоматически запрашивает цели частями по шесть и объединяет их94в один CSV. Это работает для `--all-goals`, `--goals` и целей из `config.json`.95При `--all-goals` список целей сначала обновляется через Management API.96Объединение выполняется обычным `awk`; для запуска отчётов Python и `uv` не нужны.97На каждую цель сохраняются три метрики: визиты с достижением, достижения и конверсия.98Порядок целей в колонках соответствует выбранному списку.99100В запросы добавляется общий показатель визитов, чтобы источники с нулевыми101достижениями не исчезали из отдельных частей. В итоговом CSV служебных метрик нет,102но источники без конверсий сохраняются; итоговая конверсия учитывает их визиты.103Источники сортируются по визитам с достижением первой выбранной цели,104при равенстве — по источнику.105106`--limit` ограничивает число источников: без `--group` допустимо 1–100000107(по умолчанию 100); с `--group` — 1–30 (по умолчанию 30, параметр API `top_keys`).108Даты при этом не сокращаются. Отчёт попадает в кеш и `--csv` только после109успешного получения и объединения всех частей.110111## Общие параметры отчётных скриптов112113| Param | Required | Default | Values |114|-------|----------|---------|--------|115| `--counter` | yes | - | ID счётчика |116| `--date1` | yes | - | YYYY-MM-DD |117| `--date2` | no | today | YYYY-MM-DD |118| `--group` | no | - | day, week, month |119| `--device` | no | all | desktop, mobile, tablet |120| `--source` | no | all | organic, ad, referral, direct, social |121| `--attribution` | no | lastsign | lastsign, last, first |122| `--limit` | no | API default | число строк |123| `--csv` | no | - | путь для экспорта |124| `--no-cache` | no | - | пропустить кеш |125126## Кеш-стратегия127128Кеш хранится в `cache/`:129- `counters.json` + `counters.tsv` — все счётчики130- `counter_<id>/info.json` — метаданные (permanent)131- `counter_<id>/goals.json` + `goals.tsv` — цели132- `counter_<id>/config.json` — атрибуция, конверсионные цели133- `counter_<id>/direct_clients.json` — логины Директа134- `counter_<id>/reports/*.csv` — результаты отчётов135136Для поиска по кешу: `grep "text" cache/counters.tsv` или `rg "text" cache/`.137138## Расширенные сценарии139140- [Популярные поисковые запросы](references/SEARCH_QUERIES.md)141- [Произвольные отчёты и JSON-запросы](references/CUSTOM_REPORTS.md) (drilldown, metrika_get и др.)142- [Справочник dimensions/metrics](references/API_REFERENCE.md)143- [Сравнение периодов год-к-году](references/PERIOD_COMPARISON.md)144- [Расходы Директа и PnL](references/DIRECT_COSTS.md)145- [Ограничения API](references/API_REFERENCE.md#known-api-limitations) (bytime, scope mixing, drilldown CSV)146147## Лимиты API148149- **Reporting API**: ~200 запросов / 5 минут (при превышении — ждите ~5 минут)150- Скрипты автоматически обрабатывают 429 (Retry-After ≤ 60s → retry, иначе fail с сообщением)