Описание
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-приложение Яндекс
- Перейдите на https://oauth.yandex.ru/client/new
- Заполните:
- Название:
Metrika Stats - Платформа: Веб-сервисы
- Redirect URI:
https://oauth.yandex.ru/verification_code - Доступы: Яндекс.Метрика → Чтение
- Название:
- Скопируйте:
- ClientID →
client_id - Client secret →
client_secret
- ClientID →
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
- Создайте репозиторий
yandex-metrika-XXX - Подключите 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