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.
Общие параметры отчётных скриптов
| 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| Param | Required | Default | Values |94|-------|----------|---------|--------|95| `--counter` | yes | - | ID счётчика |96| `--date1` | yes | - | YYYY-MM-DD |97| `--date2` | no | today | YYYY-MM-DD |98| `--group` | no | - | day, week, month |99| `--device` | no | all | desktop, mobile, tablet |100| `--source` | no | all | organic, ad, referral, direct, social |101| `--attribution` | no | lastsign | lastsign, last, first |102| `--limit` | no | API default | число строк |103| `--csv` | no | - | путь для экспорта |104| `--no-cache` | no | - | пропустить кеш |105106## Кеш-стратегия107108Кеш хранится в `cache/`:109- `counters.json` + `counters.tsv` — все счётчики110- `counter_<id>/info.json` — метаданные (permanent)111- `counter_<id>/goals.json` + `goals.tsv` — цели112- `counter_<id>/config.json` — атрибуция, конверсионные цели113- `counter_<id>/direct_clients.json` — логины Директа114- `counter_<id>/reports/*.csv` — результаты отчётов115116Для поиска по кешу: `grep "text" cache/counters.tsv` или `rg "text" cache/`.117118## Расширенные сценарии119120- [Популярные поисковые запросы](references/SEARCH_QUERIES.md)121- [Произвольные отчёты и JSON-запросы](references/CUSTOM_REPORTS.md) (drilldown, metrika_get и др.)122- [Справочник dimensions/metrics](references/API_REFERENCE.md)123- [Сравнение периодов год-к-году](references/PERIOD_COMPARISON.md)124- [Расходы Директа и PnL](references/DIRECT_COSTS.md)125- [Ограничения API](references/API_REFERENCE.md#known-api-limitations) (bytime, scope mixing, drilldown CSV)126127## Лимиты API128129- **Reporting API**: ~200 запросов / 5 минут (при превышении — ждите ~5 минут)130- Скрипты автоматически обрабатывают 429 (Retry-After ≤ 60s → retry, иначе fail с сообщением)