Not in the top 1,000 by GitHub stars

ai-hub-open/yandex-direct-manager

Claude skill: Yandex Direct campaign from brief to cabinet draft — semantics, negatives, ads, Metrika goals. Docs in Russian.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 8d25f11b2093

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 8d25f11b20937332b89ac50b99b601472d58b466

git clone --filter=blob:none --no-checkout https://github.com/ai-hub-open/yandex-direct-manager.git .hotskills/ai-hub-open-yandex-direct-manager && git -C .hotskills/ai-hub-open-yandex-direct-manager checkout --detach 8d25f11b20937332b89ac50b99b601472d58b466 # Copy each selected skill directory from .hotskills/ai-hub-open-yandex-direct-manager into .claude/skills/<skill-name>/
14GitHub stars
2stars in 7 days
1skill in this repository
20commits in 30 days

Heat

3.7
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 3, 202614

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

yandex-direct-manager

When your agent uses it

Тактический пайплайн создания рекламной кампании в Яндекс.Директе через MCP — сбор семантики через Wordstat, кластеризация на НЧ/СЧ/ВЧ и Поиск/РСЯ, минусация (3 уровня + кросс), создание объявлений по лимитам Директа, аудит счётчика и настройка целей в Метрике через MCP, выбор стратегии торгов и заливка в DRAFT. Используй когда пользователь говорит «сделай РК в Директе», «собери семантику», «нужны ключи и минусы», «напиши объявления», «запусти кампанию», «залей через MCP». Умеет выполнять отдельный этап — только семантика, только минусы, только объявления — без полного брифа. Не для аналитики, не для оптимизации работающих кампаний, не для стратегии бренда — только создание новой кампании от брифа до DRAFT.

What it loads into context

Frontmatter

219 tokens

Always available to the agent

SKILL.md

26,209 tokens

When the skill is activated

Reference documents

124,043 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Что нужно от среды
  2. Главный принцип
  3. Чего скилл не делает: прямой отказ
  4. Как использовать references
  5. Как использовать scripts
  6. Архитектура: оркестратор + субагенты
  7. Проверка версии (один раз за разговор, до Шага 0)
  8. Шаг 0. Бриф
  9. Шаг 0.5. Разведка аккаунта
  10. Шаг 1. Маски
  11. Шаг 2. Прогноз частотности
  12. Шаг 3. Расширение семантики и пробив частотностей [делегируется субагенту `semantics`]
  13. Шаг 4. Кластеризация (НЧ/СЧ/ВЧ + Поиск/РСЯ) [делегируется субагенту `semantics`]
  14. Шаг 5. Структура кампаний
  15. Шаг 6. Минус-слова и кросс-минусация
  16. Шаг 7. Метрика и цели
  17. Шаг 8. Объявления
  18. Шаг 8.5. Картинки для РСЯ (приём от маркетолога или генерация)
  19. Шаг 9. Стратегия торгов
  20. Шаг 10. Заливка через MCP + финальные артефакты

Scripts executed separately

  • LICENSE
  • install.py
  • package.sh
  • scripts/__init__.py
  • scripts/credentials.py
  • scripts/forecast_cpc.py
  • scripts/generate_ads_xlsx.py
  • scripts/generate_creative_images.py
  • scripts/generate_media_plan.py
  • scripts/keyword_helper.py
  • scripts/manage_credentials.py
  • scripts/package_skill.py
  • scripts/preflight.py
  • scripts/prompt_templates.py
  • scripts/setup_yandex_direct_mcp.py
  • scripts/upload_creatives_to_storage.py
  • scripts/validate_assets.py
  • scripts/wordstat_api.py
  • tests/conftest.py
  • tests/test_credentials.py
  • tests/test_forecast_cpc_backends.py
  • tests/test_forecast_cpc_pure.py
  • tests/test_generate_ads_xlsx.py
  • tests/test_generate_creative_images.py
  • tests/test_preflight.py
  • tests/test_prompt_templates.py
  • tests/test_setup_yandex_direct_mcp.py
  • tests/test_upload_creatives_to_storage.py
  • tests/test_validate_assets.py

Files

  • .claude-plugin/plugin.jsonasset627 bytes
  • .env.exampleasset876 bytes
  • .github/workflows/version-check.ymlasset2,148 bytes
  • .gitignoreasset317 bytes
  • CHANGELOG.mddoc74,668 bytes
  • LICENSEruns11,338 bytes
  • README.mddoc32,081 bytes
  • SKILL.mdcore131,663 bytes
  • VERSIONasset7 bytes
  • assets/creatives_schema_combined_example.jsonasset3,171 bytes
  • docs/hosted-mcp-setup.mddoc14,935 bytes
  • docs/releases/v0.16.0.mddoc8,812 bytes
  • docs/releases/v0.17.0.mddoc6,079 bytes
  • docs/releases/v0.17.1.mddoc2,346 bytes
  • docs/releases/v0.18.0.mddoc2,080 bytes
  • docs/releases/v0.18.1.mddoc2,956 bytes
  • docs/releases/v0.19.0.mddoc3,214 bytes
  • docs/releases/v0.19.1.mddoc1,933 bytes
  • docs/releases/v0.20.0.mddoc3,272 bytes
  • docs/releases/v0.20.1.mddoc2,141 bytes
  • docs/releases/v0.20.2.mddoc2,304 bytes
  • docs/releases/v0.20.3.mddoc1,684 bytes
  • docs/releases/v0.20.4.mddoc1,401 bytes
  • install.pyruns5,049 bytes
  • package.shruns182 bytes
  • pytest.iniasset42 bytes
  • references/ad-copywriting.mddoc16,186 bytes
  • references/ad-legal-topics.mddoc8,670 bytes
  • references/bidding-strategy.mddoc44,918 bytes
  • references/brief.mddoc23,732 bytes
  • references/campaign-structure.mddoc28,155 bytes
  • references/channel-history.mddoc15,824 bytes
  • references/direct-commander-import.mddoc3,996 bytes
  • references/frequency-calculator.mddoc24,936 bytes
  • references/mask-builder.mddoc27,552 bytes
  • references/mcp-account-integration.mddoc39,029 bytes
  • references/metrika-goals-setup.mddoc50,318 bytes
  • references/negative-keywords-builder.mddoc28,902 bytes
  • references/rsya-creatives.mddoc3,892 bytes
  • references/visual-generation.mddoc13,628 bytes
  • references/wordstat-browser.mddoc7,470 bytes
  • references/wordstat-filter.mddoc17,193 bytes
  • references/wordstat-mcp.mddoc14,326 bytes
  • references/yandex-direct-mcp.mddoc52,810 bytes
  • references/yandex-direct-specs.mddoc13,062 bytes
  • requirements-dev.txtdoc159 bytes
  • requirements.txtdoc621 bytes
  • scripts/__init__.pyruns0 bytes
  • scripts/brand_defaults.jsonasset551 bytes
  • scripts/credentials.pyruns7,597 bytes
  • scripts/forecast_cpc.pyruns42,732 bytes
  • scripts/generate_ads_xlsx.pyruns11,419 bytes
  • scripts/generate_creative_images.pyruns12,505 bytes
  • scripts/generate_media_plan.pyruns7,018 bytes
  • scripts/keyword_helper.pyruns4,983 bytes
  • scripts/manage_credentials.pyruns6,708 bytes
  • scripts/package_skill.pyruns13,746 bytes
  • scripts/preflight.pyruns20,022 bytes
  • scripts/prompt_templates.pyruns7,702 bytes
  • scripts/setup_yandex_direct_mcp.pyruns17,780 bytes
  • scripts/upload_creatives_to_storage.pyruns12,137 bytes
  • scripts/validate_assets.pyruns4,729 bytes
  • scripts/wordstat_api.pyruns19,953 bytes
  • subagents/semantics.mddoc13,742 bytes
  • tests/conftest.pyruns1,612 bytes
  • tests/test_credentials.pyruns2,455 bytes
  • tests/test_forecast_cpc_backends.pyruns11,754 bytes
  • tests/test_forecast_cpc_pure.pyruns8,641 bytes
  • tests/test_generate_ads_xlsx.pyruns4,880 bytes
  • tests/test_generate_creative_images.pyruns10,621 bytes
  • tests/test_preflight.pyruns17,001 bytes
  • tests/test_prompt_templates.pyruns3,371 bytes
  • tests/test_setup_yandex_direct_mcp.pyruns5,438 bytes
  • tests/test_upload_creatives_to_storage.pyruns7,296 bytes
  • tests/test_validate_assets.pyruns3,701 bytes
Read SKILL.md

# Yandex Direct — пайплайн создания кампании

Скилл проводит маркетолога от брифа до залитой в **DRAFT** рекламной кампании в Яндекс.Директе. Фокус — только **создание**: семантика → кластеризация → минусы → объявления → заливка. Аналитика, оптимизация уже работающих кампаний, исследования рынка — **не задача этого скилла**.

Пайплайн опирается на три MCP: `yandex-direct` (прогноз CPC, аудит аккаунта, дедупликация, заливка кампании целиком), `yandex-wordstat` (частотности и сбор семантики на Шагах 1 и 3) и **`yandex-metrika`** (счётчик, история трафика и конверсий сайта, аудит и создание целей и сегментов — Шаги 0.5, 7, 10). Все — **хостовые серверы aihub.click.ru**: локально ничего не запускается, Bun и клон репозитория не нужны. Подключение — `scripts/setup_yandex_direct_mcp.py` (пишет конфиги Cursor / Claude Code / Claude Desktop), общий справочник — `docs/hosted-mcp-setup.md` репозитория пакета. Скилл не проверяет подключение MCP заранее — если на каком-то шаге инструмент не отвечает, обрабатываем ошибку по месту: Шаг 2 уходит на справочник CPC, Шаги 1 и 3 — на `scripts/wordstat_api.py` или браузер, Шаг 7 — на Management API с токеном или инструкции для UI, Шаг 10 — на Директ Коммандер.

## Что нужно от среды

**Обязательный минимум — две способности:**

- **Чтение и запись файлов** в рабочей папке `direct-campaigns/<slug>/`. На этом держится весь пайплайн: каждый шаг порождает артефакт, следующий шаг его читает.
- **Диалог с пользователем** — задать вопрос, получить ответ, дождаться подтверждения. Без этого не работают гейты `[GATE: маркетолог]`, а они здесь не формальность: заливка идёт только после явного «ОК».

Больше ничего обязательного нет. Всё перечисленное ниже — **необязательно**: без любой из этих способностей скилл доходит до конца, но часть данных недобрана.
View the complete source on GitHub

Skills included

  • yandex-direct-manager

Repository facts

License
Apache-2.0
Created
Jul 27, 2026
Last pushed
Oct 29, 2026
Forks
0
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Show all 390 signals by file

.claude-plugin/plugin.json

  • Network accessline 4
    "description": "Создание рекламной кампании в Яндекс.Директе от брифа до DRAFT: семантика через Wordstat, минусы, объявления, цели в Метрике, стратегия и заливка через MCP",   "author": { "name": "ai-hub-open" },   "homepage": "https://gith
  • Network accessline 5
    "author": { "name": "ai-hub-open" },   "homepage": "https://github.com/ai-hub-open/yandex-direct-manager",   "repository": "https://github.com/ai-hub-open/yandex-direct-manager",
  • Network accessline 6
    "homepage": "https://github.com/ai-hub-open/yandex-direct-manager",
  • Network accessline 7
    "repository": "https://github.com/ai-hub-open/yandex-direct-manager",

.env.example

  • Access to secretsline 1
    [Credential-related source omitted]
  • Access to secretsline 2
    [Credential-related source omitted]
  • Access to secretsline 6
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]

.gitignore

  • Access to secretsline 2
    [Credential-related source omitted]

CHANGELOG.md

  • Network accessline 3
    Версии — [semver](https://semver.org/lang/ru/): до 1.0 состав шагов и материалов может меняться.
  • Network accessline 360
    Метрики (`accounts_get` → пустой список) — это не «MCP нет»: просим подключить интеграцию,   а не уходим в фолбек молча.   Вместе с просьбой всегда даём ссылку на инструкцию https://help.click.ru/97#connect-yandex-metrica.
  • Network accessline 361
    а не уходим в фолбек молча.   Вместе с просьбой всегда даём ссылку на инструкцию https://help.click.ru/97#connect-yandex-metrica. - **Несколько серверов Метрики в сессии.** Как и у Директа, Шаг 0.5Б опрашивает `accounts_get`
  • Network accessline 362
    Вместе с просьбой всегда даём ссылку на инструкцию https://help.click.ru/97#connect-yandex-metrica.
  • Network accessline 474
    - **Сетевые стратегии ЕПК: только автостратегии.** `MAXIMUM_COVERAGE` («максимальный охват»),   `NETWORK_DEFAULT` и ручные ставки в сетях Директ для ЕПК отклоняет — Яндекс отключил   ручное управление ставками в РСЯ и поиск+РСЯ ещё в 2024 г
  • Network accessline 475
    `NETWORK_DEFAULT` и ручные ставки в сетях Директ для ЕПК отклоняет — Яндекс отключил   ручное управление ставками в РСЯ и поиск+РСЯ ещё в 2024 году ([eLama](https://elama.ru/blog/yandeks-direkt-otklyuchaet-ruchnoe-upravlenie-stavkami-vrsya-
  • Network accessline 476
    ручное управление ставками в РСЯ и поиск+РСЯ ещё в 2024 году ([eLama](https://elama.ru/blog/yandeks-direkt-otklyuchaet-ruchnoe-upravlenie-stavkami-vrsya-kak-podgotovitsya-ichto-delat/)).
  • Network accessline 524
    - **Основной путь — хостовые серверы.** `yandex-direct` (`https://direct-mcp.aihub.click.ru/mcp`) и новый `yandex-wordstat` (`https://wordstat-mcp.aihub.click.ru/mcp`). Авторизация у обоих — один API-токен click.ru (проверено прогоном: без 

LICENSE

  • Network accessline 1
    Apache License                            Version 2.0, January 2004                         http://www.apache.org/licenses/
  • Executable scriptline 1
    Executable file
  • Network accessline 3
    http://www.apache.org/licenses/
  • Network accessline 195
    http://www.apache.org/licenses/LICENSE-2.0

README.md

  • Network accessline 67
    git clone https://github.com/ai-hub-open/yandex-direct-manager.git
  • Network accessline 72
    `install.py` проверяет версию Python, ставит зависимости из `requirements.txt` и прогоняет импорт модулей; запускать повторно безопасно. Альтернативы: архив `yandex-direct-manager.skill` из [релизов](https://github.com/ai-hub-open/yandex-di
  • Network accessline 100
    Скиллу нужны подключения к Яндекс Директу, Вордстату и Метрике. Все открывает один API-токен из профиля click.ru (https://click.ru/userinfo.html → «API Token»); аккаунт Директа должен быть подключён в click.ru, аккаунт Яндекса с Метрикой — 
  • Network accessline 116
    - `https://metrika-mcp.aihub.click.ru/c/<API-токен click.ru>` — через click.ru, все подключённые аккаунты Яндекса с Метрикой;
  • Network accessline 117
    - `https://metrika-mcp.aihub.click.ru/c/<API-токен click.ru>/<аккаунт>` — через click.ru, один аккаунт (логин или ID интеграции Метрики в click.ru);
  • Network accessline 118
    - `https://metrika-mcp.aihub.click.ru/y/<OAuth-токен Яндекса>` — напрямую в Яндекс, без click.ru.
  • Network accessline 203
    Вопросы и ошибки — в [Issues](https://github.com/ai-hub-open/yandex-direct-manager/issues). Лицензия — [Apache-2.0](LICENSE).

SKILL.md

  • Network accessline 62
    | Пустое стоп-поле брифа (Шаг 0, только `mode: full`) и маркетолог не ответил | Скилл не подставляет критичные настройки сам | | Нет доступа к кабинету Директа: MCP не подключён, кабинет не виден, ошибка авторизации | Залить некуда. Выход —
  • Network accessline 63
    | Нет доступа к кабинету Директа: MCP не подключён, кабинет не виден, ошибка авторизации | Залить некуда. Выход — подключить MCP (`docs/hosted-mcp-setup.md`) или выбрать выгрузку в Директ Коммандер: тогда кампанию заливает человек | | Интег
  • Network accessline 64
    | Интеграция Метрики не подключена в click.ru | Без неё цели не видны. Ссылка: https://help.click.ru/97#connect-yandex-metrica |
  • Access to secretsline 155
    [Credential-related source omitted]
  • Network accessline 181
    Версия этого скилла — в файле `VERSION` рядом с этим `SKILL.md`. Прочитай его и одним запросом загрузи актуальную версию: `https://raw.githubusercontent.com/ai-hub-open/yandex-direct-manager/main/VERSION`.
  • Network accessline 182
    загрузи актуальную версию: `https://raw.githubusercontent.com/ai-hub-open/yandex-direct-manager/main/VERSION`.
  • Network accessline 187
    - **На GitHub новее** (сравнивай как semver: 0.18.2 > 0.18.0) — одним коротким сообщением скажи,   что вышла версия X (у пользователя Y), дай ссылку на   [CHANGELOG](https://github.com/ai-hub-open/yandex-direct-manager/blob/main/CHANGELOG.m
  • Network accessline 188
    что вышла версия X (у пользователя Y), дай ссылку на   [CHANGELOG](https://github.com/ai-hub-open/yandex-direct-manager/blob/main/CHANGELOG.md) и как обновиться:   - Claude Code, скилл установлен плагином: `/plugin marketplace update ai-hub
  • Network accessline 189
    [CHANGELOG](https://github.com/ai-hub-open/yandex-direct-manager/blob/main/CHANGELOG.md) и как обновиться:
  • Network accessline 190
    - Claude Code, скилл установлен плагином: `/plugin marketplace update ai-hub-open`, затем перезапустить сессию;   - скилл загружен архивом (Claude Desktop / claude.ai) или папкой: скачать `yandex-direct-manager.skill`     из [релизов](https
  • Network accessline 192
    из [релизов](https://github.com/ai-hub-open/yandex-direct-manager/releases/latest) и заменить старый.
  • Network accessline 330
    подсказкой «не подключена Метрика» на **всех** серверах = интеграция не подключена в    click.ru, а не «MCP нет»: попроси подключить и **обязательно дай ссылку на инструкцию**    https://help.click.ru/97#connect-yandex-metrica — без неё мар
  • Network accessline 331
    click.ru, а не «MCP нет»: попроси подключить и **обязательно дай ссылку на инструкцию**    https://help.click.ru/97#connect-yandex-metrica — без неё маркетолог не найдёт, где это    делается. Не жди: заведи ⛔ блокер «интеграция Метрики не п
  • Network accessline 332
    https://help.click.ru/97#connect-yandex-metrica — без неё маркетолог не найдёт, где это
  • Network accessline 353
    - 🔴 `red` — `CounterIds` у кампаний есть, но счётчик не виден ни на одном сервере      Метрики: интеграция Метрики в click.ru подключена не под тем аккаунтом Яндекса или не      подключена. Ссылка https://help.click.ru/97#connect-yandex-met
  • Network accessline 355
    подключена. Ссылка https://help.click.ru/97#connect-yandex-metrica, дальше с ⛔ блокером.
  • Access to secretsline 485
    [Credential-related source omitted]
  • Access to secretsline 514
    [Credential-related source omitted]
  • Network accessline 597
    **Фолбек:** MCP Метрики нет или интеграция не подключена в click.ru (в последнем случае — сначала ссылка на инструкцию https://help.click.ru/97#connect-yandex-metrica) → Management API с OAuth-токеном (scope `metrika-manage`) → режим «инстр

assets/creatives_schema_combined_example.json

  • Network accessline 3
    "campaign_key": "freelancer",   "campaign_name": "ЕПК — AiSMM Pro — Фрилансер — RU",   "default_url": "https://aismm.pro/?utm_source=yandex&utm_medium=cpc&utm_campaign=aismm-epk&utm_term={keyword}",
  • Network accessline 4
    "campaign_name": "ЕПК — AiSMM Pro — Фрилансер — RU",   "default_url": "https://aismm.pro/?utm_source=yandex&utm_medium=cpc&utm_campaign=aismm-epk&utm_term={keyword}",   "negative_keywords": ["бесплатно", "торрент", "скачать", "вакансия", "р
  • Network accessline 5
    "default_url": "https://aismm.pro/?utm_source=yandex&utm_medium=cpc&utm_campaign=aismm-epk&utm_term={keyword}",
  • Network accessline 8
    {       "name": "SMM-фрилансер — автогенерация контента",       "url": "https://aismm.pro/dlya-frilancera",
  • Network accessline 9
    "name": "SMM-фрилансер — автогенерация контента",       "url": "https://aismm.pro/dlya-frilancera",       "keywords": [
  • Network accessline 10
    "url": "https://aismm.pro/dlya-frilancera",
  • Network accessline 34
    "videos": [],         "sitelinks": [           {"title": "Тарифы", "description": "От 990 ₽/мес для соло", "url": "https://aismm.pro/pricing"},
  • Network accessline 35
    "sitelinks": [           {"title": "Тарифы", "description": "От 990 ₽/мес для соло", "url": "https://aismm.pro/pricing"},           {"title": "Демо генерации", "description": "Без регистрации, сейчас", "url": "https://aismm.pro/demo"},
  • Network accessline 36
    {"title": "Тарифы", "description": "От 990 ₽/мес для соло", "url": "https://aismm.pro/pricing"},
  • Network accessline 37
    {"title": "Демо генерации", "description": "Без регистрации, сейчас", "url": "https://aismm.pro/demo"},
  • Network accessline 38
    {"title": "Кейсы фрилансеров", "description": "Как берут больше клиентов", "url": "https://aismm.pro/cases"},
  • Network accessline 39
    {"title": "FAQ", "description": "Частые вопросы", "url": "https://aismm.pro/faq"}

docs/hosted-mcp-setup.md

  • Network accessline 7
    | Сервер в конфиге | URL | Что даёт | |---|---|---| | `yandex-direct` | `https://direct-mcp.aihub.click.ru/mcp` | 50 инструментов Direct API v501 (кампании, ЕПК, группы, объявления, ключи, ставки, отчёты, справочники) |
  • Network accessline 8
    |---|---|---| | `yandex-direct` | `https://direct-mcp.aihub.click.ru/mcp` | 50 инструментов Direct API v501 (кампании, ЕПК, группы, объявления, ключи, ставки, отчёты, справочники) | | `yandex-wordstat` | `https://wordstat-mcp.aihub.click.ru
  • Network accessline 9
    | `yandex-direct` | `https://direct-mcp.aihub.click.ru/mcp` | 50 инструментов Direct API v501 (кампании, ЕПК, группы, объявления, ключи, ставки, отчёты, справочники) |
  • Network accessline 10
    | `yandex-wordstat` | `https://wordstat-mcp.aihub.click.ru/mcp` | Частотность поисковых запросов пачкой (до 1000 фраз за вызов). Похожих запросов, ассоциаций, регионов и динамики сервер **не отдаёт** |
  • Network accessline 11
    | `vk-ads` | `https://vkads-mcp.aihub.click.ru/mcp` | 44 инструмента VK Ads API (`vk_ads_*`: кампании, группы, объявления, аудитории, статистика) |
  • Network accessline 12
    | `yandex-metrika` (в сессии может называться иначе, напр. `metrikaCM`) | `https://metrika-mcp.aihub.click.ru/c/<CLICK_RU_TOKEN>` (варианты адреса — в «Авторизации») | 13 инструментов `yandex_metrika_*`: счётчики, цели (с достижениями за N 
  • Network accessline 13
    | `KeepImage` (хранилище картинок) | `https://storage.aihub.click.ru/mcp` | Временное файловое хранилище: публикует картинку → публичная ссылка без авторизации, живёт ≤2 ч. Нужно, чтобы заливать локальные креативы в Директ (`adimages_add(im
  • Network accessline 19
    Всё сводится к **одному API-токену click.ru**: профиль https://click.ru/userinfo.html → поле «API Token» → «Создать». Аккаунты Директа и VK Рекламы должны быть подключены в click.ru.
  • Network accessline 24
    [Credential-related source omitted]
  • Network accessline 25
    [Credential-related source omitted]
  • Network accessline 26
    | `yandex-metrika` | Токен — **в адресе**, заголовков нет. Три формы: `https://metrika-mcp.aihub.click.ru/c/<CLICK_RU_TOKEN>` — через click.ru, видны все аккаунты Яндекса с Метрикой, подключённые в click.ru; `https://metrika-mcp.aihub.click
  • Network accessline 31
    - Список инструментов VK Ads открыт без кредов (`GET /mcp/tools`), но вызовы без заголовков возвращают ошибку «Не заданы креды VK Ads…» с перечнем нужных заголовков. - Direct и Wordstat без токена отвечают `401 {"error":"Unauthorized"}`; с 
  • Network accessline 32
    - Direct и Wordstat без токена отвечают `401 {"error":"Unauthorized"}`; с недействительным токеном — `401 click.ru: токен недействителен`. - ID аккаунта VK Рекламы в click.ru: `GET /accounts` в https://api.click.ru/V0/docs/. - Альтернативы 
  • Network accessline 33
    - ID аккаунта VK Рекламы в click.ru: `GET /accounts` в https://api.click.ru/V0/docs/.
  • Network accessline 34
    - Альтернативы click.ru для VK (готовый `X-VK-Ads-Token`, OAuth `X-VK-Ads-Client-Id` + `X-VK-Ads-Client-Secret`) сервер тоже принимает — см. его сообщение об ошибке. - Токен click.ru — секрет. В git не коммитим: в репозитории только плейсхо
  • Network accessline 36
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Network accessline 68
    "mcpServers": {     "yandex-direct": {       "url": "https://direct-mcp.aihub.click.ru/mcp",
  • Network accessline 69
    "yandex-direct": {       "url": "https://direct-mcp.aihub.click.ru/mcp",       "headers": {
  • Network accessline 70
    "url": "https://direct-mcp.aihub.click.ru/mcp",
  • Network accessline 75
    },     "yandex-wordstat": {       "url": "https://wordstat-mcp.aihub.click.ru/mcp",
  • Network accessline 76
    "yandex-wordstat": {       "url": "https://wordstat-mcp.aihub.click.ru/mcp",       "headers": {
  • Network accessline 77
    "url": "https://wordstat-mcp.aihub.click.ru/mcp",
  • Network accessline 81
    },     "vk-ads": {       "url": "https://vkads-mcp.aihub.click.ru/mcp",
  • Network accessline 82
    "vk-ads": {       "url": "https://vkads-mcp.aihub.click.ru/mcp",       "headers": {
  • Network accessline 83
    "url": "https://vkads-mcp.aihub.click.ru/mcp",
  • Network accessline 102
    "yandex-direct": {       "type": "http",       "url": "https://direct-mcp.aihub.click.ru/mcp",
  • Network accessline 103
    [Credential-related source omitted]
  • Network accessline 104
    "url": "https://direct-mcp.aihub.click.ru/mcp",
  • Network accessline 119
    "command": "npx",       "args": [         "-y", "mcp-remote", "https://direct-mcp.aihub.click.ru/mcp",
  • Network accessline 120
    [Credential-related source omitted]
  • Network accessline 121
    "-y", "mcp-remote", "https://direct-mcp.aihub.click.ru/mcp",

docs/releases/v0.16.0.md

  • Network accessline 66
    | Вариант | Адрес | Когда подходит | |---|---|---| | Через click.ru | `https://metrika-mcp.aihub.click.ru/c/<API-токен click.ru>` | Основной вариант. Видны все аккаунты Яндекса с Метрикой, подключённые в ваш click.ru |
  • Network accessline 67
    |---|---|---| | Через click.ru | `https://metrika-mcp.aihub.click.ru/c/<API-токен click.ru>` | Основной вариант. Видны все аккаунты Яндекса с Метрикой, подключённые в ваш click.ru | | Через click.ru, один аккаунт | `https://metrika-mcp.aihu
  • Network accessline 68
    | Через click.ru | `https://metrika-mcp.aihub.click.ru/c/<API-токен click.ru>` | Основной вариант. Видны все аккаунты Яндекса с Метрикой, подключённые в ваш click.ru |
  • Network accessline 69
    | Через click.ru, один аккаунт | `https://metrika-mcp.aihub.click.ru/c/<API-токен click.ru>/<аккаунт>` | В click.ru подключено несколько аккаунтов Яндекса с Метрикой, а нужен один. `<аккаунт>` — логин или ID интеграции Метрики в click.ru |
  • Network accessline 70
    | Напрямую в Яндекс | `https://metrika-mcp.aihub.click.ru/y/<OAuth-токен Яндекса>` | Без click.ru: OAuth-токен Яндекса с доступом к Метрике |
  • Network accessline 72
    Где взять: - **API-токен click.ru** — профиль https://click.ru/userinfo.html → «API Token» → «Создать».
  • Network accessline 73
    - **API-токен click.ru** — профиль https://click.ru/userinfo.html → «API Token» → «Создать».
  • Network accessline 74
    - **Подключить аккаунт Яндекса с Метрикой к click.ru** — инструкция   https://help.click.ru/97#connect-yandex-metrica. Без этого подключение через click.ru   ответит «не подключена Яндекс Метрика».
  • Network accessline 75
    https://help.click.ru/97#connect-yandex-metrica. Без этого подключение через click.ru

install.py

  • Executable scriptline 1
    #!/usr/bin/env python3

package.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

references/bidding-strategy.md

  • Network accessline 215
    Директ принимает не любые пары `search_strategy` + `network_strategy`. Неверная пара — отказ `4000` «strategies are not compatible», и кампания не создаётся. Источник — [справка API, «Стратегии показа»](https://yandex.ru/dev/direct/doc/dg/o
  • Network accessline 422
    - **После накопления 10+ конверсий/нед стабильно** — «Максимум конверсий» с оплатой за конверсии и CPA-лимитом по цели из `07_metrika_goals.json`. - **Сетевая сторона — по таблице «Сочетания сторон»** (раздел «Маппинг в API»): поиск + РСЯ →
  • Network accessline 423
    - **Сетевая сторона — по таблице «Сочетания сторон»** (раздел «Маппинг в API»): поиск + РСЯ → `NETWORK_DEFAULT`, только поиск → `SERVING_OFF`, только РСЯ → своя автостратегия при `SERVING_OFF` на поиске. - **Ручных ставок в сети нет.** Янде
  • Network accessline 424
    - **Ручных ставок в сети нет.** Яндекс отключил ручное управление ставками в РСЯ и поиск+РСЯ ещё в 2024 году (с 22.04.2024 нельзя создавать/переключать такие РК на ручные ставки, к июню 2024 активные остановлены; источник — [eLama](https://

references/brief.md

  • Network accessline 186
    - Название: Школа вокала «Голос» - Что это: онлайн-школа вокала для взрослых, индивидуальные занятия с педагогом - URL: https://vokal-shkola.ru
  • Network accessline 187
    - Что это: онлайн-школа вокала для взрослых, индивидуальные занятия с педагогом - URL: https://vokal-shkola.ru - Посадочная: https://vokal-shkola.ru/probnyj-urok
  • Network accessline 188
    - URL: https://vokal-shkola.ru
  • Network accessline 189
    - Посадочная: https://vokal-shkola.ru/probnyj-urok

references/campaign-structure.md

  • Network accessline 139
    "id": "premium-g1",           "name": "Премиум — НЧ+СЧ",           "url": "https://vokal-shkola.ru/",
  • Network accessline 140
    "name": "Премиум — НЧ+СЧ",           "url": "https://vokal-shkola.ru/",           "keyword_tier": ["НЧ", "СЧ"],
  • Network accessline 141
    "url": "https://vokal-shkola.ru/",
  • Network accessline 159
    "id": "brand-g1",           "name": "Бренд",           "url": "https://vokal-shkola.ru/",
  • Network accessline 160
    "name": "Бренд",           "url": "https://vokal-shkola.ru/",           "keyword_tier": ["НЧ"],
  • Network accessline 161
    "url": "https://vokal-shkola.ru/",

references/direct-commander-import.md

  • Network accessline 14
    - `ads.xlsx` (+ `keywords.xlsx`) из `scripts/generate_ads_xlsx.py` (Шаг 8) и `warnings.txt` (проверить, что нет превышений лимитов). - Установленный **Яндекс Директ Коммандер** (десктоп, Windows/macOS): https://yandex.ru/support/direct-comm
  • Network accessline 15
    - Установленный **Яндекс Директ Коммандер** (десктоп, Windows/macOS): https://yandex.ru/support/direct-commander/

references/mask-builder.md

  • Network accessline 20
    1. **`00_brief.md`** — поле 7 (УТП + сужающие слова) и поле 1 (продукт, для колонки Б). 2. **Контекст продукта** — название, регион, тип спроса (определяется по полю 7 и полю 1). 3. **Доступ к Wordstat** — основной путь: MCP `yandex-wordsta
  • Network accessline 22
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Network accessline 87
    Ниже — **путь расширения через Yandex Cloud Search API** (даёт ассоциации, в отличие от MCP): прямой доступ к API. Wordstat теперь живёт внутри **Yandex Search API** (Yandex Cloud AI Studio). Метод `topRequests`: `POST https://searchapi.api
  • Network accessline 88
    [Credential-related source omitted]
  • Access to secretsline 91
    [Credential-related source omitted]
  • Network accessline 92
    - `WORDSTAT_FOLDER_ID` — `folder_id` каталога Yandex Cloud (**обязателен** в каждом запросе). - Проверка подключения: `python -m scripts.wordstat_api --check --regions 213`. Записывай результат в `_state.json` → `wordstat_api_available: tru
  • Network accessline 94
    - Если ключа нет — задай маркетологу: «Подключён Yandex Cloud Search API (Wordstat)? Если нет — пришли API-ключ + folder_id или попроси администратора создать сервисный аккаунт (см. https://yandex.cloud/ru/docs/search-api/concepts/wordstat)

references/mcp-account-integration.md

  • Network accessline 9
    Сервер — **хостовый** `https://direct-mcp.aihub.click.ru/mcp`, подключение и заголовки — `yandex-direct-mcp.md` → «Подключение» и `docs/hosted-mcp-setup.md` репозитория пакета. Два следствия хоста, важные для сценариев ниже: `forecast_bids`
  • Network accessline 309
    sitelinks_add({ client_login: <из _state.json>, sitelinks: [   { title: "Тарифы", href: "https://...", description: "От 990 ₽/мес" },
  • Network accessline 310
    { title: "Тарифы", href: "https://...", description: "От 990 ₽/мес" },

references/metrika-goals-setup.md

  • Network accessline 28
    - **JS-код для целей** — все цели через API Метрики или визуальный конструктор. JS-цели (`ym('reachGoal')`) требуют изменения кода сайта — работа разработчика. - **Электронная коммерция** — Ecommerce-цели требуют `dataLayer` на сайте, отдел
  • Network accessline 30
    - **Создание счётчика с нуля** — если Метрики нет совсем, говорим маркетологу «установи через https://metrika.yandex.ru/list/ и подключи аккаунт с Метрикой в интеграциях click.ru — инструкция: https://help.click.ru/97#connect-yandex-metrica
  • Network accessline 51
    **Цепочка фолбеков:** 1. **MCP Метрики есть и отвечает** — весь шаг через него. 2. **MCP отвечает «У пользователя click.ru не подключена Яндекс Метрика»** (`accounts_get` вернул пустой `accounts`) — это не «MCP нет», а не подключена интегра
  • Network accessline 52
    1. **MCP Метрики есть и отвечает** — весь шаг через него. 2. **MCP отвечает «У пользователя click.ru не подключена Яндекс Метрика»** (`accounts_get` вернул пустой `accounts`) — это не «MCP нет», а не подключена интеграция. Скажи маркетологу
  • Network accessline 53
    2. **MCP отвечает «У пользователя click.ru не подключена Яндекс Метрика»** (`accounts_get` вернул пустой `accounts`) — это не «MCP нет», а не подключена интеграция. Скажи маркетологу **дословно со ссылкой**: «Подключи аккаунт Яндекса с Метр
  • Network accessline 508
    АЛЯРМА: На сайте {url} не обнаружена Яндекс.Метрика. До запуска: 1. https://metrika.yandex.ru/list/
  • Network accessline 509
    До запуска: 1. https://metrika.yandex.ru/list/ 2. Создать счётчик
  • Network accessline 510
    1. https://metrika.yandex.ru/list/
  • Network accessline 529
    Тег на сайте есть, а в `counters_get` счётчика нет. Владелец добавляет доступ: `Настройки → Доступы → Добавить пользователя → Редактирование` — на тот аккаунт Яндекса, что подключён в интеграциях click.ru (`accounts_get` покажет какой; как 
  • Network accessline 533
    `accounts_get` вернул пустой список с подсказкой про интеграции click.ru. Маркетолог подключает аккаунт Яндекса с Метрикой в интеграциях click.ru по инструкции https://help.click.ru/97#connect-yandex-metrica (ссылку даём всегда) — после это
  • Network accessline 558
    - **Вход:** `00_brief.md` (URL — поле 1, тип конверсии — поле 8), `05_campaign_structure.json` (Шаг 5), тип ниши. - **Tools:** MCP Метрики (`*yandex_metrika_*`) для аудита, создания целей и сегментов; фолбек — Management API (https://yandex
  • Network accessline 559
    - **Tools:** MCP Метрики (`*yandex_metrika_*`) для аудита, создания целей и сегментов; фолбек — Management API (https://yandex.ru/dev/metrika/ru/management/) с OAuth-токеном; MCP yandex-direct (`campaigns_add` / `campaigns_update` с `counte

references/rsya-creatives.md

  • Access to secretsline 49
    [Credential-related source omitted]

references/visual-generation.md

  • Access to secretsline 112
    [Credential-related source omitted]
  • Access to secretsline 204
    [Credential-related source omitted]

references/wordstat-browser.md

  • Access to secretsline 3
    [Credential-related source omitted]
  • Network accessline 7
    - MCP `yandex-wordstat` не подключён **и** `python -m scripts.wordstat_api --check` упал или ключа нет **и** у пользователя есть залогиненный Яндекс в Chrome с доступом к https://wordstat.yandex.ru.
  • Network accessline 36
    1. Открой новую вкладку и перейди на https://wordstat.yandex.ru (сессия и логин — пользователя; если разлогинен, попроси залогиниться сам через `! ...` или в браузере).

references/wordstat-mcp.md

  • Network accessline 3
    **Основной путь пробива частотностей для Шагов 1 и 3.** Хостовый сервер `https://wordstat-mcp.aihub.click.ru/mcp` — шлюз click.ru поверх Вордстата; отдаёт число показов в месяц по списку фраз. **Расширение семантики он не делает** (см. «Шаг
  • Network accessline 7
    - **Ищи сервер по инструменту, а не по имени.** Установщик прописывает его как `yandex-wordstat`, но подключённый вручную или через окно коннектора он называется как угодно (`Wordstat`, `wordstat-mcp`, любое имя пользователя). Признак нужно
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Access to secretsline 57
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]

references/yandex-direct-mcp.md

  • Network accessline 7
    Скилл ходит в **хостовый инстанс** `https://direct-mcp.aihub.click.ru/mcp` (авторизация — токен click.ru): локально ничего не запускается. Локальный stdio-запуск — фолбек для разработки сервера, см. «Подключение».
  • Network accessline 184
    **В сетях (для ЕПК/`UNIFIED`)** тип зависит от поисковой стороны — сочетания ниже. Ручных ставок и `MAXIMUM_COVERAGE` в сетях ЕПК нет: Яндекс отключил ручное управление ставками в РСЯ и поиск+РСЯ в 2024 году ([eLama](https://elama.ru/blog/y
  • Network accessline 188
    Источник — [справка API, «Стратегии показа»](https://yandex.ru/dev/direct/doc/dg/objects/campaign-strategies.html). Неверная пара — отказ `4000` «strategies are not compatible».
  • Network accessline 565
    [Credential-related source omitted]
  • Access to secretsline 574
    [Credential-related source omitted]
  • Network accessline 586
    - API Директа v5: https://yandex.ru/dev/direct/doc/ru/concepts/about
  • Network accessline 587
    - OAuth: https://yandex.ru/dev/direct/doc/dg/concepts/auth-token-docpage/
  • Network accessline 588
    - Click.ru API: https://api.click.ru/V0/docs/
  • Network accessline 589
    - Bun: https://bun.sh

references/yandex-direct-specs.md

  • Network accessline 5
    Источник правды: https://yandex.ru/support/direct/ru/moderation/technical-restrictions
  • Network accessline 30
    - До **8 штук** на объявление (по факту показываются 2-4). - Заголовок: **30 символов** каждая; описание — до **60 символов**. - **Заголовки ссылок 1–4 вместе — не больше 66 символов, 5–8 — тоже не больше 66** ([справка K50 по выгрузке в Ди
  • Network accessline 32
    - **Заголовки ссылок 1–4 вместе — не больше 66 символов, 5–8 — тоже не больше 66** ([справка K50 по выгрузке в Директ](https://yandex.ru/support/k50/ru/generator/work/extensions)). Четыре ссылки по 30 символов в набор не пройдут.
  • Network accessline 45
    Источники правды по лимитам: [технические ограничения](https://yandex.ru/support/direct/ru/moderation/technical-restrictions), [справка API `ads.add`](https://yandex.ru/dev/direct/doc/ru/ads/add), https://yandex.ru/support/direct/ru/unified
  • Network accessline 134
    - Технические ограничения: https://yandex.ru/support/direct/ru/moderation/technical-restrictions
  • Network accessline 135
    - Требования к ТГО: https://www.dmt.ru/publications/trebovaniya-k-tekstovo-graficheskim-obyavleniyam-tgo-v-direkte/
  • Network accessline 136
    - Заголовок 56 символов (анонс): https://yandex.ru/adv/news/bolshe-mesta-dlya-samogo-vazhnogo-uvelichivaem-zagolovok-reklamy-do-56-simvolov

scripts/__init__.py

  • Executable scriptline 1
    Executable file

scripts/credentials.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 8
    [Credential-related source omitted]
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 46
    [Credential-related source omitted]
  • Network accessline 54
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Network accessline 55
    "description": "OpenAI API key для генерации картинок (gpt-image-1 / dall-e-3)",         "how_to_get": "https://platform.openai.com/api-keys (нужен аккаунт + платёжный метод)",         "format_hint": "sk-...",
  • Network accessline 56
    "how_to_get": "https://platform.openai.com/api-keys (нужен аккаунт + платёжный метод)",
  • Network accessline 60
    [Credential-related source omitted]
  • Access to secretsline 60
    [Credential-related source omitted]
  • Network accessline 61
    "description": "OAuth-токен Яндекс.Директа для прямой заливки через API v501",         "how_to_get": "https://yandex.ru/dev/direct/doc/ru/concepts/auth-token",         "format_hint": "y0_...",
  • Network accessline 62
    "how_to_get": "https://yandex.ru/dev/direct/doc/ru/concepts/auth-token",
  • Network accessline 66
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Network accessline 67
    "description": "Click.ru — токен прокси-доступа к API Яндекс.Директа (режим без прямого токена Яндекса)",         "how_to_get": "https://help.click.ru/6634 (личный кабинет Click.ru → API)",         "format_hint": "JWT-токен",
  • Network accessline 68
    "how_to_get": "https://help.click.ru/6634 (личный кабинет Click.ru → API)",
  • Access to secretsline 124
    [Credential-related source omitted]
  • Access to secretsline 136
    [Credential-related source omitted]
  • Access to secretsline 149
    [Credential-related source omitted]
  • Access to secretsline 159
    [Credential-related source omitted]

scripts/forecast_cpc.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Network accessline 58
    API_PRODUCTION = "https://api.direct.yandex.com/json/v501"
  • Network accessline 59
    API_SANDBOX = "https://api-sandbox.direct.yandex.com/json/v501"
  • Network accessline 60
    CLICKRU_PROXY = "https://api.click.ru/V0/api_proxy/yandex_direct"
  • Network accessline 62
    API_V4_PRODUCTION = "https://api.direct.yandex.ru/live/v4/json/"
  • Network accessline 63
    API_V4_SANDBOX = "https://api-sandbox.direct.yandex.ru/live/v4/json/"
  • Network accessline 402
    _PROBE_AD_TITLES = ["Техническая проверка цен", "Служебное объявление", "Не для показа"] _PROBE_AD_TEXTS = ["Служебная проверка цен аукциона", "Черновик, не активируется"] _PROBE_AD_HREF = "https://ya.ru"
  • Network accessline 404
    _PROBE_AD_HREF = "https://ya.ru"
  • Access to secretsline 722
    [Credential-related source omitted]
  • Access to secretsline 819
    [Credential-related source omitted]

scripts/generate_ads_xlsx.py

  • Executable scriptline 1
    Executable file

scripts/generate_creative_images.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Possible obfuscationline 97
    output_path.write_bytes(base64.b64decode(b64))
  • Network accessline 125
    try:             output_path.parent.mkdir(parents=True, exist_ok=True)             urllib.request.urlretrieve(url, output_path)
  • Network accessline 126
    output_path.parent.mkdir(parents=True, exist_ok=True)             urllib.request.urlretrieve(url, output_path)             return True
  • Network accessline 127
    urllib.request.urlretrieve(url, output_path)
  • Network accessline 131
    return False     try:         r = requests.get(url, timeout=60)
  • Network accessline 132
    try:         r = requests.get(url, timeout=60)         r.raise_for_status()
  • Network accessline 133
    r = requests.get(url, timeout=60)
  • Access to secretsline 192
    [Credential-related source omitted]
  • Access to secretsline 246
    [Credential-related source omitted]

scripts/generate_media_plan.py

  • Executable scriptline 1
    Executable file

scripts/keyword_helper.py

  • Executable scriptline 1
    Executable file

scripts/manage_credentials.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 96
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 130
    [Credential-related source omitted]
  • Access to secretsline 155
    [Credential-related source omitted]

scripts/package_skill.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 66
    [Credential-related source omitted]
  • Access to secretsline 213
    [Credential-related source omitted]

scripts/preflight.py

  • Executable scriptline 1
    Executable file

scripts/prompt_templates.py

  • Executable scriptline 1
    Executable file

scripts/setup_yandex_direct_mcp.py

  • Executable scriptline 1
    Executable file
  • Network accessline 8
    Подключаемые серверы (--server, по умолчанию all): - yandex-direct    → https://direct-mcp.aihub.click.ru/mcp    (51 инструмент Direct API)
  • Network accessline 9
    - yandex-direct    → https://direct-mcp.aihub.click.ru/mcp    (51 инструмент Direct API)
  • Network accessline 10
    - yandex-wordstat  → https://wordstat-mcp.aihub.click.ru/mcp  (частотность и семантика Wordstat)
  • Network accessline 11
    - KeepImage        → https://storage.aihub.click.ru/mcp       (хранилище картинок для заливки
  • Network accessline 14
    Авторизация у всех трёх — один API-токен click.ru (https://click.ru/userinfo.html → «API Token» → «Создать»). Заголовок у каждого
  • Network accessline 15
    (https://click.ru/userinfo.html → «API Token» → «Создать»). Заголовок у каждого
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Network accessline 65
    DIRECT_URL = "https://direct-mcp.aihub.click.ru/mcp"
  • Network accessline 66
    WORDSTAT_URL = "https://wordstat-mcp.aihub.click.ru/mcp"
  • Network accessline 67
    KEEPIMAGE_URL = "https://storage.aihub.click.ru/mcp"
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 95
    [Credential-related source omitted]
  • Access to secretsline 229
    [Credential-related source omitted]
  • Access to secretsline 230
    [Credential-related source omitted]
  • Access to secretsline 231
    [Credential-related source omitted]
  • Access to secretsline 233
    [Credential-related source omitted]
  • Network accessline 241
    f"  --token <...> (аргумент) или env {env_name}\n"             f"  python -m scripts.manage_credentials set {service}\n"             f"Токен создаётся в профиле click.ru: https://click.ru/userinfo.html → «API Token»."
  • Network accessline 242
    f"  python -m scripts.manage_credentials set {service}\n"             f"Токен создаётся в профиле click.ru: https://click.ru/userinfo.html → «API Token»."         )
  • Network accessline 243
    f"Токен создаётся в профиле click.ru: https://click.ru/userinfo.html → «API Token»."
  • Access to secretsline 254
    [Credential-related source omitted]
  • Access to secretsline 260
    [Credential-related source omitted]
  • Access to secretsline 265
    [Credential-related source omitted]
  • Access to secretsline 268
    [Credential-related source omitted]
  • Access to secretsline 283
    [Credential-related source omitted]

scripts/upload_creatives_to_storage.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 74
    [Credential-related source omitted]
  • Access to secretsline 77
    [Credential-related source omitted]
  • Network accessline 79
    DEFAULT_BASE_URL = "https://storage.aihub.click.ru"
  • Access to secretsline 89
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 94
    [Credential-related source omitted]
  • Access to secretsline 100
    [Credential-related source omitted]
  • Network accessline 158
    try:         with path.open("rb") as f:             resp = requests.put(url, data=f, headers=_headers(token, content_type, ttl), timeout=REQUEST_TIMEOUT)
  • Network accessline 159
    with path.open("rb") as f:             resp = requests.put(url, data=f, headers=_headers(token, content_type, ttl), timeout=REQUEST_TIMEOUT)     except requests.RequestException as e:
  • Network accessline 160
    resp = requests.put(url, data=f, headers=_headers(token, content_type, ttl), timeout=REQUEST_TIMEOUT)
  • Network accessline 193
    return 1     try:         resp = requests.get(f"{base_url()}/healthz", timeout=REQUEST_TIMEOUT)
  • Network accessline 194
    try:         resp = requests.get(f"{base_url()}/healthz", timeout=REQUEST_TIMEOUT)     except requests.RequestException as e:
  • Network accessline 195
    resp = requests.get(f"{base_url()}/healthz", timeout=REQUEST_TIMEOUT)

scripts/validate_assets.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/wordstat_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    Эндпоинт:  POST https://searchapi.api.cloud.yandex.net/v2/wordstat/topRequests
  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Network accessline 40
    Документация: https://yandex.cloud/ru/docs/search-api/concepts/wordstat
  • Network accessline 53
    BASE_URL = "https://searchapi.api.cloud.yandex.net/v2/wordstat"
  • Access to secretsline 62
    [Credential-related source omitted]
  • Access to secretsline 67
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Access to secretsline 85
    [Credential-related source omitted]
  • Access to secretsline 308
    [Credential-related source omitted]
  • Access to secretsline 309
    [Credential-related source omitted]
  • Access to secretsline 311
    [Credential-related source omitted]
  • Access to secretsline 314
    [Credential-related source omitted]
  • Access to secretsline 324
    [Credential-related source omitted]

subagents/semantics.md

  • Access to secretsline 74
    [Credential-related source omitted]

tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 14
    [Credential-related source omitted]

tests/test_credentials.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 42
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Access to secretsline 51
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 65
    [Credential-related source omitted]

tests/test_forecast_cpc_backends.py

  • Executable scriptline 1
    Executable file

tests/test_forecast_cpc_pure.py

  • Executable scriptline 1
    Executable file

tests/test_generate_ads_xlsx.py

  • Executable scriptline 1
    Executable file
  • Network accessline 18
    "titles": ["Заголовок один", "Короткий", "Ещё вариант"],         "texts": ["Текст выгоды и призыв к действию.", "Второй текст с другим акцентом."],         "href": "https://example.com/lp",
  • Network accessline 19
    "texts": ["Текст выгоды и призыв к действию.", "Второй текст с другим акцентом."],         "href": "https://example.com/lp",         "display_url_path": "path",
  • Network accessline 20
    "href": "https://example.com/lp",
  • Network accessline 22
    "images": ["a.jpg", "b.jpg"],         "videos": [],         "sitelinks": [{"title": "Цены", "description": "от 990", "url": "https://example.com/pricing"}],
  • Network accessline 23
    "videos": [],         "sitelinks": [{"title": "Цены", "description": "от 990", "url": "https://example.com/pricing"}],         "callouts": ["Без карты"],
  • Network accessline 24
    "sitelinks": [{"title": "Цены", "description": "от 990", "url": "https://example.com/pricing"}],
  • Network accessline 29
    def _creatives(ad=None, group_extra=None):     group = {"name": "G", "url": "https://example.com/lp", "combined_ad": ad or _ok_combined_ad()}
  • Network accessline 30
    group = {"name": "G", "url": "https://example.com/lp", "combined_ad": ad or _ok_combined_ad()}
  • Network accessline 64
    rows, warnings = assemble_combined_ad_rows(_creatives(ad))     assert warnings == []     assert rows[0][COMBINED_HEADERS.index("Href")] == "https://example.com/lp"
  • Network accessline 66
    assert rows[0][COMBINED_HEADERS.index("Href")] == "https://example.com/lp"
  • Network accessline 79
    ad = _ok_combined_ad()     ad["sitelinks"] = [         {"title": f"Ссылка {i}", "description": "d", "url": "https://example.com"}
  • Network accessline 80
    ad["sitelinks"] = [         {"title": f"Ссылка {i}", "description": "d", "url": "https://example.com"}         for i in range(6)
  • Network accessline 81
    {"title": f"Ссылка {i}", "description": "d", "url": "https://example.com"}
  • Network accessline 98
    def test_warns_on_missing_combined_ad():     creatives = {"campaign_name": "C", "groups": [{"name": "G", "url": "https://x"}]}
  • Network accessline 99
    creatives = {"campaign_name": "C", "groups": [{"name": "G", "url": "https://x"}]}

tests/test_generate_creative_images.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 94
    [Credential-related source omitted]
  • Access to secretsline 116
    [Credential-related source omitted]
  • Access to secretsline 149
    [Credential-related source omitted]
  • Access to secretsline 152
    [Credential-related source omitted]
  • Access to secretsline 183
    [Credential-related source omitted]
  • Access to secretsline 207
    [Credential-related source omitted]
  • Access to secretsline 209
    [Credential-related source omitted]
  • Access to secretsline 232
    [Credential-related source omitted]
  • Access to secretsline 235
    [Credential-related source omitted]

tests/test_preflight.py

  • Executable scriptline 1
    Executable file
  • Network accessline 21
    "titles": ["Заголовок один", "Короткий", "Ещё вариант"],         "texts": ["Текст выгоды и призыв к действию.", "Второй текст с другим акцентом."],         "href": "https://example.com/lp",
  • Network accessline 22
    "texts": ["Текст выгоды и призыв к действию.", "Второй текст с другим акцентом."],         "href": "https://example.com/lp",         "display_url_path": "path",
  • Network accessline 23
    "href": "https://example.com/lp",
  • Network accessline 25
    "images": [],         "videos": [],         "sitelinks": [{"title": "Цены", "description": "от 990", "url": "https://example.com/pricing"}],
  • Network accessline 26
    "videos": [],         "sitelinks": [{"title": "Цены", "description": "от 990", "url": "https://example.com/pricing"}],         "callouts": ["Без карты"],
  • Network accessline 27
    "sitelinks": [{"title": "Цены", "description": "от 990", "url": "https://example.com/pricing"}],
  • Network accessline 189
    ad = _ok_combined_ad()     ad["sitelinks"] = [         {"title": f"Ссылка {i}", "url": "https://example.com"}
  • Network accessline 190
    ad["sitelinks"] = [         {"title": f"Ссылка {i}", "url": "https://example.com"}         for i in range(LIMITS["sitelinks_max"] + 1)
  • Network accessline 191
    {"title": f"Ссылка {i}", "url": "https://example.com"}
  • Network accessline 199
    ad = _ok_combined_ad()     ad["sitelinks"] = [         {"title": f"Ссылка {i}", "url": "https://example.com"}
  • Network accessline 200
    ad["sitelinks"] = [         {"title": f"Ссылка {i}", "url": "https://example.com"}         for i in range(LIMITS["sitelinks_max"])
  • Network accessline 201
    {"title": f"Ссылка {i}", "url": "https://example.com"}
  • Network accessline 215
    def _sitelinks(titles):     return [{"title": t, "url": "https://example.com"} for t in titles]
  • Network accessline 216
    return [{"title": t, "url": "https://example.com"} for t in titles]
  • Network accessline 316
    "campaign_key": "premium",         "campaign_name": "ЕПК — Премиум",         "default_url": "https://example.com",
  • Network accessline 317
    "campaign_name": "ЕПК — Премиум",         "default_url": "https://example.com",         "negative_keywords": ["бесплатно"],
  • Network accessline 318
    "default_url": "https://example.com",
  • Network accessline 320
    "groups": [{             "name": "G",             "url": "https://example.com/lp",
  • Network accessline 321
    "name": "G",             "url": "https://example.com/lp",             "keywords": ['"купить диван"'],
  • Network accessline 322
    "url": "https://example.com/lp",

tests/test_prompt_templates.py

  • Executable scriptline 1
    Executable file

tests/test_setup_yandex_direct_mcp.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]
  • Access to secretsline 42
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Access to secretsline 63
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Network accessline 81
    servers = _cursor_servers()     assert "KeepImage" in servers     assert servers["KeepImage"]["url"] == "https://storage.aihub.click.ru/mcp"
  • Network accessline 82
    assert "KeepImage" in servers     assert servers["KeepImage"]["url"] == "https://storage.aihub.click.ru/mcp"     assert servers["KeepImage"]["headers"]["X-Auth-Token"] == "JWT-TEST-TOKEN"
  • Network accessline 83
    assert servers["KeepImage"]["url"] == "https://storage.aihub.click.ru/mcp"
  • Network accessline 99
    _run(monkeypatch, "--token", "SECRET-TOKEN-123", "--client-login", "acme", "--target", "cursor")     ki = _cursor_servers()["KeepImage"]     assert ki["url"] == "https://storage.aihub.click.ru/mcp"
  • Network accessline 100
    ki = _cursor_servers()["KeepImage"]     assert ki["url"] == "https://storage.aihub.click.ru/mcp"     assert "SECRET-TOKEN-123" not in ki["url"]
  • Network accessline 101
    assert ki["url"] == "https://storage.aihub.click.ru/mcp"
  • Access to secretsline 118
    [Credential-related source omitted]

tests/test_upload_creatives_to_storage.py

  • Executable scriptline 1
    Executable file
  • Network accessline 34
    return FakeResp(200, {             "id": "ID" + name,             "url": f"https://storage.aihub.click.ru/f/ID{name}/{name}",
  • Network accessline 35
    "id": "ID" + name,             "url": f"https://storage.aihub.click.ru/f/ID{name}/{name}",             "content_type": "image/png",
  • Network accessline 36
    "url": f"https://storage.aihub.click.ru/f/ID{name}/{name}",

tests/test_validate_assets.py

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Combined signals: 1 fact
  • Reads a credential store; another file of the same skill sends data over the network or runs a command (LICENSE, line 1)scripts/package_skill.py:66Low confidence
Declared and executed: 7 facts
  • Contacts www.apache.org, which SKILL.md, the README and the plugin manifest do not mentionLICENSE:3High confidence
  • Contacts platform.openai.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/credentials.py:56High confidence
  • Contacts api.direct.yandex.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/forecast_cpc.py:58High confidence
  • Contacts api-sandbox.direct.yandex.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/forecast_cpc.py:59High confidence
  • Contacts ya.ru, which SKILL.md, the README and the plugin manifest do not mentionscripts/forecast_cpc.py:404High confidence
  • Uses a credential store, which the skill description does not mentionscripts/package_skill.py:66High confidence
  • Contacts searchapi.api.cloud.yandex.net, which SKILL.md, the README and the plugin manifest do not mentionscripts/wordstat_api.py:53High confidence
Signal confidence: 369 facts

and 319 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/plugin.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.