Install
openclaw skills install yandex-metrika-assistantOpenClaw + Яндекс.Метрика API — stat/Logs/management, OAuth, presets, UTM, цели, CSV, квоты; плагин yandex-metrika-assistant.
openclaw skills install yandex-metrika-assistantПлагин: yandex-metrika-assistant (openclaw.plugin.json в этой папке).
Цель: ноль сюрпризов — сначала конфиг и секреты, потом правильный endpoint, без выдуманных метрик и без утечки токена.
Если токена ещё нет (пользователь только ставит навык или не настроил ключ):
{baseDir}/docs/INSTALL-FOR-HUMANS-RU.md (шаги OpenClaw + OAuth + куда вставить ключ).{baseDir}/docs/INSTRUCTION-GET-TOKEN-RU.md (или ссылка authorize с oauthClientId из конфига).oauthToken плагина или в YANDEX_METRIKA_OAUTH_TOKEN, не в чате.После того как ключ добавлен (пользователь сообщил, что сохранил токен в конфиг, или токен уже есть в конфиге/окружении):
Полный список идей — {baseDir}/docs/INSTALL-FOR-HUMANS-RU.md (раздел «После добавления ключа») и {baseDir}/docs/10-user-intents-matrix.md.
Типовые формулировки пользователей («откуда трафик», «цели», «UTM», «география», «сравни периоды», «выгрузи CSV», «сырые логи») — смотри матрицу: {baseDir}/docs/10-user-intents-matrix.md (разбивка по разделам A–J + ссылки на официальные примеры и пресеты).
oauthToken (см. configSchema в openclaw.plugin.json), илиYANDEX_METRIKA_OAUTH_TOKEN (если хост OpenClaw так настроен), или{baseDir}/docs/INSTALL-FOR-HUMANS-RU.md, галочки OAuth, @maya_pro, затем {baseDir}/docs/INSTRUCTION-GET-TOKEN-RU.md; при наличии oauthClientId — ссылка authorize?response_type=token&client_id=....defaultCounterId из конфига: если пользователь не назвал счётчик — используй это значение и одной строкой напиши: «использую счётчик по умолчанию из конфига OpenClaw».curl/команды в чат — только с плейсхолдером $env:YANDEX_METRIKA_OAUTH_TOKEN или «подставь токен из секрета OpenClaw», не вставляй токен целиком.curl -H "Authorization: OAuth …" даёт ошибки из‑за кавычек — используй Invoke-RestMethod с -Headers @{ Authorization = 'OAuth ' + $env:YANDEX_METRIKA_OAUTH_TOKEN }** или заголовок через конкатенацию в скобках: -H ('Authorization: OAuth ' + $env:YANDEX_METRIKA_OAUTH_TOKEN). Подробно: {baseDir}/docs/OPENCLAW-AGENT.md, {baseDir}/docs/EXAMPLES.md.Подстановка токена из env (удобно рядом с OpenClaw):
$env:YANDEX_METRIKA_OAUTH_TOKEN = "<секрет, не коммитить>"
$cid = "<COUNTER_ID>"
# Надёжнее без вложенных кавычек вокруг токена:
curl.exe -s -H ('Authorization: OAuth ' + $env:YANDEX_METRIKA_OAUTH_TOKEN) `
"https://api-metrika.yandex.net/management/v1/counters?per_page=20"
Отчёт «визиты за последние 7 дней» (проверь ids и метрики по задаче):
curl.exe -s -G "https://api-metrika.yandex.net/stat/v1/data" `
--data-urlencode "ids=$cid" `
--data-urlencode "metrics=ym:s:visits" `
--data-urlencode "date1=7daysAgo" `
--data-urlencode "date2=yesterday" `
-H ('Authorization: OAuth ' + $env:YANDEX_METRIKA_OAUTH_TOKEN)
Так OpenClaw должен отработать запрос (и что увидит человек в ответе).
oauthToken / YANDEX_METRIKA_OAUTH_TOKEN. Нет токена → стоп, ссылка на {baseDir}/docs/INSTRUCTION-GET-TOKEN-RU.md.defaultCounterId и пользователь не просил другой сайт, можно спросить: «использовать счётчик по умолчанию?» или сразу использовать, если контекст однозначен.GET /management/v1/counters с search_string=maya (или фрагмент домена: mayai, blog.mayai). Если несколько счётчиков — перечислить id, name, site и попросить выбрать один id.GET .../stat/v1/data с группировкой по дню визита dimensions=ym:s:date, metrics по задаче (часто ym:s:visits, при необходимости ym:s:pageviews, ym:s:users — имена проверять в справочнике);GET .../stat/v1/data/bytime — если удобнее именно «по времени» (см. openapi в доке stat).contains_sensitive_data": true — кратко предупредить про ограничение раскрытия данных.Агент пишет короткое резюме, затем таблицу или список по дням (дата → визиты / просмотры / и т.д.), без сырого JSON на экран целиком, если пользователь не просил сырой вывод.
Пример формулировки:
id …), сайт blog.mayai.ru, период …. Ниже визиты по дням. Данные из API Метрики, токен из конфига OpenClaw.»2025-03-01 — визиты: 120, …{baseDir}/docs/04-quotas.md).# 1) Найти счётчик по подстроке (maya / mayai)
curl.exe -s -G "https://api-metrika.yandex.net/management/v1/counters" `
--data-urlencode "search_string=maya" `
--data-urlencode "per_page=50" `
-H ('Authorization: OAuth ' + $env:YANDEX_METRIKA_OAUTH_TOKEN)
# 2) Ежедневные визиты (подставь $cid из шага 1)
curl.exe -s -G "https://api-metrika.yandex.net/stat/v1/data" `
--data-urlencode "ids=$cid" `
--data-urlencode "dimensions=ym:s:date" `
--data-urlencode "metrics=ym:s:visits" `
--data-urlencode "date1=30daysAgo" `
--data-urlencode "date2=yesterday" `
--data-urlencode "sort=ym:s:date" `
-H ('Authorization: OAuth ' + $env:YANDEX_METRIKA_OAUTH_TOKEN)
Точные metrics/dimensions при спорных отчётах — только из официальной доки, не по памяти модели.
Запрос про страницы — это снова API отчётов GET .../stat/v1/data, после того же разрешения счётчика (id / defaultCounterId / search_string), что и в сценарии выше.
ym:pv: (визиты и хиты в основном наборе не смешивать).ym:s:...), другие метрики — уточнить у пользователя или дать оба коротко («по просмотрам лидирует …, по визитам на входе …»), опираясь на справочник группировок.Параметры (имена перепроверять в доке при смене версии API):
dimensions — URL страницы на уровне хита, например ym:pv:URL.metrics — ym:pv:pageviews (и при необходимости ещё метрики из того же множества ym:pv:).sort — по убыванию просмотров, в доке Метрики для сортировки по убыванию часто используется - перед метрикой (см. {baseDir}/docs/05-reports-api-stat.md).limit — топ 10–20 URL, чтобы ответ был читаемым.date1 / date2 — как в других сценариях (если не заданы — default или вопрос пользователю).Коротко: период, счётчик, что считали (просмотры по URL). Затем список: URL → число просмотров (топ N). Длинные URL можно обрезать визуально с «…», полный URL — по наведению или второй строкой при необходимости.
curl (PowerShell)curl.exe -s -G "https://api-metrika.yandex.net/stat/v1/data" `
--data-urlencode "ids=$cid" `
--data-urlencode "dimensions=ym:pv:URL" `
--data-urlencode "metrics=ym:pv:pageviews" `
--data-urlencode "sort=-ym:pv:pageviews" `
--data-urlencode "limit=15" `
--data-urlencode "date1=30daysAgo" `
--data-urlencode "date2=yesterday" `
-H ('Authorization: OAuth ' + $env:YANDEX_METRIKA_OAUTH_TOKEN)
Если API вернёт ошибку совместимости группировки и метрики — не «угадывать» замену, а свериться с актуальным openapi для /stat/v1/data на сайте Метрики.
| Запрос пользователя | Куда | Файл |
|---|---|---|
| Отчёт, метрики, период, сегменты | GET .../stat/v1/data (и др. из stat) | {baseDir}/docs/05-reports-api-stat.md |
| Топ страниц, «куда больше трафика» | stat/v1/data, группировка URL (ym:pv:) | сценарий ниже, {baseDir}/docs/05-reports-api-stat.md |
| Сырые логи, выгрузка | management/v1/counter/{id}/logrequests... | {baseDir}/docs/06-logs-api.md |
| Список счётчиков, цели, настройки | management/v1/... | {baseDir}/docs/08-management-quickstart.md |
| Загрузка расходов, CRM, офлайн | data-import | {baseDir}/docs/07-data-import.md |
| 401/403, scope | OAuth | {baseDir}/docs/03-auth-oauth.md, {baseDir}/docs/INSTRUCTION-GET-TOKEN-RU.md |
| 429 | Квоты | {baseDir}/docs/04-quotas.md |
| «Что ещё спрашивают / не знаю какой отчёт» | Матрица намерений | {baseDir}/docs/10-user-intents-matrix.md |
Смешанная задача: сначала counters или defaultCounterId, потом stat/logs.
Authorization: OAuth <access_token> (слово OAuth и пробел обязательны).https://api-metrika.yandex.netym:s: и ym:pv: в основных metrics/dimensions (детали в {baseDir}/docs/05-reports-api-stat.md)./stat/v1/data; 200 запросов / 5 мин на этот endpoint на пользователя; Logs с IP — 10/с.{baseDir}/docs/01-links-and-hub.md).clean, квота хранилища 10 ГБ на счётчик ({baseDir}/docs/06-logs-api.md).contains_sensitive_data, 429.| Файл | Назначение |
|---|---|
openclaw.plugin.json | Контракт OpenClaw: oauthToken, defaultCounterId, oauthClientId |
{baseDir}/docs/INSTALL-FOR-HUMANS-RU.md | Установка: OpenClaw, OAuth-галочки, TG, после ключа — с чего начать |
{baseDir}/docs/INSTRUCTION-GET-TOKEN-RU.md | Токен для людей |
{baseDir}/docs/OPENCLAW-AGENT.md | Установка: нет HOOK.md; PowerShell без ловушек кавычек |
GitHub: Horosheff/yandex-metrika-assistant → scripts/exchange-yandex-oauth-code.ps1 | Обмен code → token (в этом пакете не включён) |
{baseDir}/docs/01–09 | Справка по разделам API |
{baseDir}/docs/10-user-intents-matrix.md | Матрица вопросов пользователей → API (ресёрч по примерам и пресетам) |
Официальный хаб: https://yandex.ru/dev/metrika