Community Скиллы Российские сервисы

Яндекс Метрика Core

Установка
composer require (см. README)

Описание

yandex-metrika-core — фундамент для скиллов аналитики Яндекс Метрики: PHP-клиент с OAuth-авторизацией и обёрткой над API Метрики — отчёты, счётчики и цели, единая основа, на которой собрана линейка узких скиллов автора, изначально заточен под OpenCode, но клиент применим и в других инструментах. Для разработчиков на PHP, строящих аналитические интеграции с Метрикой.

Что умеет:
— авторизоваться в Метрике через OAuth;
— запрашивать отчёты и управлять счётчиками;
— служить базой для своих скиллов;
— работать в связке с OpenCode.

Полная документация ниже — автоматически из репозитория prikotov/yandex-metrika-core (ветка master). Оригинальные материалы проекта распространяются на условиях его лицензии.

Yandex Metrika Core

Библиотека и каталог skills для работы с Яндекс.Метрикой

Этот пакет содержит MetrikaClient — общий API-клиент для всех skills Яндекс.Метрики:

  • OAuth авторизация
  • Запросы к API Метрики
  • Экспорт в CSV/Markdown

Skills на основе этого пакета

Skill Описание Репозиторий
yandex-metrika-search Поисковые фразы с метриками github.com/prikotov/yandex-metrika-search
yandex-metrika-visitors Анализ посетителей по срезам github.com/prikotov/yandex-metrika-visitors
yandex-metrika-pages Статистика по страницам github.com/prikotov/yandex-metrika-pages
yandex-metrika-traffic Источники трафика github.com/prikotov/yandex-metrika-traffic

Установка

Skills совместимы с различными AI-агентами. Примеры ниже даны для OpenCode — для других инструментов смотрите их документацию по установке skills.

1. Установите core

git clone https://github.com/prikotov/yandex-metrika-core.git .opencode/skills/yandex-metrika-core

2. Создайте OAuth-приложение Яндекс

  1. Перейдите на https://oauth.yandex.ru/client/new
  2. Заполните:
    • Название: Metrika Stats
    • Платформа: Веб-сервисы
    • Redirect URI: https://oauth.yandex.ru/verification_code
    • Доступы: Яндекс.Метрика → Чтение
  3. Скопируйте:
    • ClientID → client_id
    • Client secret → client_secret

3. Узнайте номер счётчика

В настройках Яндекс.Метрики или в коде: ym(XXXXXX, 'init'...)

4. Создайте конфигурацию

cp .opencode/skills/yandex-metrika-core/yandex_metrika_config.example.json ./yandex_metrika_config.json

Заполните:

{
    "client_id": "ваш_client_id",
    "client_secret": "ваш_client_secret",
    "counters": {
        "site1.ru": 12345678,
        "site2.ru": 87654321
    },
    "default_counter": "site1.ru"
}

Параметр default_counter определяет сайт, который используется если не указан --site.

5. Установите нужные skills

git clone https://github.com/prikotov/yandex-metrika-search.git .opencode/skills/yandex-metrika-search
git clone https://github.com/prikotov/yandex-metrika-visitors.git .opencode/skills/yandex-metrika-visitors
git clone https://github.com/prikotov/yandex-metrika-pages.git .opencode/skills/yandex-metrika-pages
git clone https://github.com/prikotov/yandex-metrika-traffic.git .opencode/skills/yandex-metrika-traffic

Структура

your-project/
├── yandex_metrika_config.json   # Общий конфиг (создаётся вручную в корне проекта)
├── yandex_metrika_token.json    # Создаётся автоматически при первом запуске
├── yandex_metrika_reports/      # Создаётся автоматически при запуске отчёта
│   └── YYYY-MM-DD/              # Папка с отчётами за день
│       └── yandex_metrika_*     # Файлы отчётов
└── .opencode/skills/
    ├── yandex-metrika-core/     # Библиотека
    ├── yandex-metrika-search/   # Поисковые фразы
    ├── yandex-metrika-visitors/ # Посетители
    ├── yandex-metrika-pages/    # Страницы
    └── yandex-metrika-traffic/  # Источники трафика

Безопасность

MetrikaClient автоматически защищает конфиденциальные данные от случайной публикации в git. При первом запуске он проверяет .gitignore и добавляет недостающие записи.

Защищаемые файлы:

  • yandex_metrika_config.json — OAuth-данные приложения
  • yandex_metrika_token.json — токен авторизации
  • yandex_metrika_reports/ — папка с отчётами

Создание нового skill

  1. Создайте репозиторий yandex-metrika-XXX
  2. Подключите MetrikaClient:
<?php
require_once __DIR__ . '/../yandex-metrika-core/MetrikaClient.php';

MetrikaClient::checkGitignore();
$config = MetrikaClient::loadConfig();

$client = new MetrikaClient(
    $config['client_id'],
    $config['client_secret'],
    $config['counter_id']
);

// Ваш код...

Пример использования MetrikaClient API

Ниже — полный пример skill, который запрашивает поисковые фразы и сохраняет отчёт.

<?php
require_once __DIR__ . '/../yandex-metrika-core/MetrikaClient.php';

// 1. Проверка .gitignore и загрузка конфига
MetrikaClient::checkGitignore();
$config = MetrikaClient::loadConfig();

// 2. Получение counter_id (можно указать сайт или использовать default)
$counterId = MetrikaClient::getCounterIdFromConfig($config, 'site1.ru');

// 3. Создание клиента
$client = new MetrikaClient(
    $config['client_id'],
    $config['client_secret'],
    $counterId,
    'site1.ru'  // опционально, для вывода в логах
);

// 4. Запрос к API Метрики
// Документация параметров: https://yandex.ru/dev/metrika/doc/api/createdownstat/createdownstat.html
$data = $client->request([
    'ids' => $client->getCounterId(),
    'metrics' => 'ym:s:visits,ym:s:pageviews',      // что измеряем
    'dimensions' => 'ym:s:lastSearchPhrase',        // по чему группируем
    'date1' => '2026-01-01',
    'date2' => '2026-02-28',
    'limit' => 100
]);

// 5. Преобразование ответа в плоский массив
$rows = [];
foreach ($data['data'] as $item) {
    $rows[] = [
        'Фраза' => $item['dimensions'][0]['name'],
        'Визиты' => $item['metrics'][0],
        'Просмотры' => $item['metrics'][1]
    ];
}

// 6. Сохранение отчёта в CSV и Markdown
$reportDir = MetrikaClient::createReportDir();
MetrikaClient::saveCsv($rows, "$reportDir/report.csv");
MetrikaClient::saveMarkdown($rows, "$reportDir/report.md", 'Поисковые фразы', '2026-01-01', '2026-02-28');

Выбор сайта

Все skills поддерживают параметр --site:

# Использовать default_counter из конфига
php .opencode/skills/yandex-metrika-search/metrika.php

# Указать конкретный сайт
php .opencode/skills/yandex-metrika-search/metrika.php --site task.ai-aid.pro

Требования

  • PHP 7.4+
  • Расширение cURL

Пример работы в AI-агенте

Пользователь:

Проанализируй источники трафика на сайт за последние две недели. Перечисли источники которые дают больше всего качественного трафика. Дай сводку и выводы.

Агент (рассуждения):

Загружаю skill для анализа трафика. Запускаю несколько запросов параллельно: источники трафика, поисковые системы, социальные сети, реферальные домены. Период: последние 14 дней. Анализирую метрики качества: процент отказов, глубина просмотра, время на сайте…

Агент (ответ):


Сводка по источникам трафика (17.02 – 03.03.2026)

Топ источников по качеству трафика

Источник Визиты Отказы % Глубина Время (сек) Качество
Messenger traffic 2 0% 6.0 298.5 ⭐⭐⭐⭐⭐
Yandex Mobile 75 4% 1.16 112.1 ⭐⭐⭐⭐⭐
Link traffic 29 6.9% 1.31 75.8 ⭐⭐⭐⭐
Google (search) 14 7.14% 1.07 28.6 ⭐⭐⭐⭐
Yandex (search) 275 8.73% 1.27 128.8 ⭐⭐⭐⭐
Direct traffic 90 28.89% 1.69 136.5 ⭐⭐⭐

Выводы

Лучшие по качеству:

  • Yandex Mobile — самый качественный массовый источник (4% отказов)
  • Yandex (search) — основной источник (275 визитов, 8.73% отказов, хорошее время)
  • Direct traffic — лояльная аудитория (максимальное время 136 сек, высокая глубина 1.69)

Основной трафик:

  • Яндекс даёт 96% поискового трафика (350/366 визитов)
  • Google почти не представлен (всего 15 визитов)
  • prikotov.pro — крупный реферальный источник (531 визит)

Проблемы:

  • Нет трафика из соцсетей
  • Низкая доля Google
  • Мессенджеры почти не используются (2 визита), но потенциально эффективны

Постановка задач, архитектура, ревью — Dmitry Prikotov, реализация — GLM-5 в OpenCode