mcpField
Y
yandex-metrika

yandex-metrika

github.com/artwist-polyakov营销与增长221124 次安装6 天前更新
代码仓库

关于 yandex-metrika

yandex-metrika 是一款通过 Yandex Metrika API 获取网站流量与转化报告的命令行 Skill,面向网站分析和营销工作。它提供来源、UTM、搜索引擎及电商报告,也支持 API 细分受众和计数器访问权限管理。

主要功能

  1. 01分析流量来源与 UTM
  2. 02报告目标转化和电商指标
  3. 03比较不同时间段的数据
  4. 04创建和管理 API 细分
  5. 05查看并管理计数器访问权限
  6. 06导出 CSV 报告

适用场景

  1. 01比较营销渠道的流量表现
  2. 02追踪转化目标与收入指标
  3. 03按条件建立受众细分
  4. 04核查或配置计数器访问权限

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/artwist-polyakov/polyakov-claude-skills --skill yandex-metrika

安装后在 Claude Code 中输入/yandex-metrika确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
cache/
.gitkeep
config/
.env.example
README.md
references/
ACCESS.md
API_REFERENCE.md
CUSTOM_REPORTS.md
DIRECT_COSTS.md
PERIOD_COMPARISON.md
SEARCH_QUERIES.md
SEGMENTS.md
scripts/
common.sh
comparison.sh
conversions.sh
counter_info.sh
counters.sh
direct_clients.sh
direct_costs.sh
ecommerce.sh
goals.sh
grants.sh
management_json.py
merge_conversions.awk
search_engines.sh
segments.sh
traffic_summary.sh
utm_report.sh
scripts/tests/
test_conversions.py
test_management.py

详细介绍

yandex-metrika

Работа с API Яндекс Метрики: детализация трафика по источникам и UTM-меткам, отчёты по конверсиям и поисковым системам, API-сегменты и прямые доступы к счётчикам.

Config

Требуется YANDEX_METRIKA_TOKEN в config/.env. Для чтения нужен доступ metrika:read, для создания сегментов и управления доступами — metrika:write. Инструкция: config/README.md.

Philosophy

  1. Cache-first — конфигурационные данные (счётчики, цели, инфо) кешируются надолго. Отчёты кешируются по ключу counter+dates+params. Перед API-запросом всегда проверяем кеш.
  2. Context window hygiene — stdout ограничен 30 строками. Полные данные в CSV/файл. Кеш доступен через grep/rg для поиска без загрузки в контекст.
  3. Точные данные — accuracy=1 (без сэмплирования), фильтр isRobot по умолчанию.
  4. Атрибуция — дефолт lastsign (последний значимый источник). Спрашиваем пользователя при первом запуске.

Workflow

STOP! Перед любым анализом:
  1. Получи список счётчиков:

    bash scripts/counters.sh
    
  2. Спроси пользователя (если счётчик не очевиден из контекста):

    "О каком счётчике/сайте идёт речь?
    Укажите ID, название или домен."
    

    Если пользователь назвал сайт/домен — ищи через --search:

    bash scripts/counters.sh --search "metallik"
    

    Это grep по TSV (id + name + site), поэтому находит и по домену.

  3. Получи инфо о счётчике и его цели:

    bash scripts/counter_info.sh --counter <ID>
    bash scripts/goals.sh --counter <ID>
    
  4. Спроси про конверсионные цели:

    "Какие из этих целей являются конверсионными для вашего бизнеса?
    [список целей из goals.sh]
    Сохраню выбранные для будущих отчётов."
    
  5. Сохрани конфигурацию в cache/counter_<id>/config.json:

    {
      "attribution": "lastsign",
      "conversion_goals": [
        {"id": 12345, "name": "Заказ оформлен"},
        {"id": 67890, "name": "Заявка отправлена"}
      ]
    }
    
  6. Запускай отчёты по задаче пользователя.

Сегменты и доступы

Для API-сегмента сначала зафиксируй понятное название и выражение filters. Создание и удаление без --apply показывают план и ничего не меняют. Перед записью сценарий читает свежую роль на счётчике; сервер API остаётся окончательным источником прав.

bash scripts/segments.sh --counter <ID> --action create \
  --name "Посетители карточек" \
  --expression "EXISTS(ym:pv:URL=@'/catalog/')"
# после проверки плана повторить с --apply

Получи точный логин от вызывающей задачи, затем проверь прямой доступ к счётчику и при необходимости подготовь минимальную роль:

bash scripts/grants.sh --counter <ID> --action get --login <LOGIN>
bash scripts/grants.sh --counter <ID> --action add \
  --login <LOGIN> --permission view
# после проверки плана повторить с --apply

Для использования сегмента обычно достаточно view. Не выдавай edit, если задача не требует менять счётчик. Если пользователь выбрал analyst или edit, передай эту роль через --permission; существующую роль меняй через update. Список /grants содержит прямые разрешения; владелец выводится отдельно, а представители аккаунта в этот список не входят. После записи верни вызывающей задаче номер счётчика, ID сегмента, логин и подтверждённую роль. Подробности: API-сегменты и прямые доступы к счётчику.

Scripts

Общий паттерн вызова:

bash scripts/<script>.sh --counter <ID> --date1 YYYY-MM-DD [--date2 ...] [--group month] [--csv path]
ScriptDescriptionSpecial params
counters.shСписок счётчиков--search "query"
goals.shЦели счётчика—
counter_info.shМетаданные счётчика—
traffic_summary.shТрафик по источникам—
conversions.shДостижение целей--goals "ID,ID" / --all-goals; по умолчанию из config.json
utm_report.shUTM-разбивка—
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
segments.shСписок, просмотр, создание и удаление API-сегментов--action; запись только с --apply
grants.shВладелец и прямые доступы по логинам; роли view, analyst, edit--action; запись только с --apply

Не все скрипты поддерживают все общие параметры — см. Special params. Сценариям управления segments.sh и grants.sh для надёжного разбора JSON нужен Python 3.10+ либо uv; обычные отчёты по-прежнему работают без них.

目标报告

conversions.sh 会自动分批请求目标,每批 6 个,并将结果合并为一个 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。

报告脚本通用参数

参数必填默认值可选值
--counter是-计数器 ID
--date1是-YYYY-MM-DD
--date2否今天YYYY-MM-DD
--group否-day、week、month
--device否alldesktop、mobile、tablet
--source否allorganic、ad、referral、direct、social
--attribution否lastsignlastsign、last、first
--filters否不含机器人报告 API 的细分表达式
--limit否API 默认值行数
--csv否-导出路径
--no-cache否-跳过缓存

缓存策略

缓存存储在 cache/ 中:

  • counters.json + counters.tsv — 所有计数器
  • counter_<id>/info.json — 元数据(永久)
  • counter_<id>/goals.json + goals.tsv — 目标
  • counter_<id>/config.json — 归因、转化目标
  • counter_<id>/direct_clients.json — Direct 登录名
  • counter_<id>/reports/*.csv — 报告结果

细分和访问权限始终重新读取,不会保存到缓存中:这些数据的变化独立于报告,而且访问权限列表包含用户登录名。

在缓存中搜索:grep "text" cache/counters.tsv 或 rg "text" cache/。

高级用例

API 限额

  • Reporting API:约 200 次请求 / 5 分钟(超出时请等待约 5 分钟)
  • 脚本会自动处理 429(Retry-After ≤ 60s 时重试,否则失败并显示提示)

评论

支持 Markdown