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.
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>/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
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 tokensAlways available to the agent
SKILL.md
26,209 tokensWhen the skill is activated
Reference documents
124,043 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Что нужно от среды
- Главный принцип
- Чего скилл не делает: прямой отказ
- Как использовать references
- Как использовать scripts
- Архитектура: оркестратор + субагенты
- Проверка версии (один раз за разговор, до Шага 0)
- Шаг 0. Бриф
- Шаг 0.5. Разведка аккаунта
- Шаг 1. Маски
- Шаг 2. Прогноз частотности
- Шаг 3. Расширение семантики и пробив частотностей [делегируется субагенту `semantics`]
- Шаг 4. Кластеризация (НЧ/СЧ/ВЧ + Поиск/РСЯ) [делегируется субагенту `semantics`]
- Шаг 5. Структура кампаний
- Шаг 6. Минус-слова и кросс-минусация
- Шаг 7. Метрика и цели
- Шаг 8. Объявления
- Шаг 8.5. Картинки для РСЯ (приём от маркетолога или генерация)
- Шаг 9. Стратегия торгов
- Шаг 10. Заливка через MCP + финальные артефакты
Scripts executed separately
LICENSEinstall.pypackage.shscripts/__init__.pyscripts/credentials.pyscripts/forecast_cpc.pyscripts/generate_ads_xlsx.pyscripts/generate_creative_images.pyscripts/generate_media_plan.pyscripts/keyword_helper.pyscripts/manage_credentials.pyscripts/package_skill.pyscripts/preflight.pyscripts/prompt_templates.pyscripts/setup_yandex_direct_mcp.pyscripts/upload_creatives_to_storage.pyscripts/validate_assets.pyscripts/wordstat_api.pytests/conftest.pytests/test_credentials.pytests/test_forecast_cpc_backends.pytests/test_forecast_cpc_pure.pytests/test_generate_ads_xlsx.pytests/test_generate_creative_images.pytests/test_preflight.pytests/test_prompt_templates.pytests/test_setup_yandex_direct_mcp.pytests/test_upload_creatives_to_storage.pytests/test_validate_assets.py
Files
.claude-plugin/plugin.jsonasset627 bytes.env.exampleasset876 bytes.github/workflows/version-check.ymlasset2,148 bytes.gitignoreasset317 bytesCHANGELOG.mddoc74,668 bytesLICENSEruns11,338 bytesREADME.mddoc32,081 bytesSKILL.mdcore131,663 bytesVERSIONasset7 bytesassets/creatives_schema_combined_example.jsonasset3,171 bytesdocs/hosted-mcp-setup.mddoc14,935 bytesdocs/releases/v0.16.0.mddoc8,812 bytesdocs/releases/v0.17.0.mddoc6,079 bytesdocs/releases/v0.17.1.mddoc2,346 bytesdocs/releases/v0.18.0.mddoc2,080 bytesdocs/releases/v0.18.1.mddoc2,956 bytesdocs/releases/v0.19.0.mddoc3,214 bytesdocs/releases/v0.19.1.mddoc1,933 bytesdocs/releases/v0.20.0.mddoc3,272 bytesdocs/releases/v0.20.1.mddoc2,141 bytesdocs/releases/v0.20.2.mddoc2,304 bytesdocs/releases/v0.20.3.mddoc1,684 bytesdocs/releases/v0.20.4.mddoc1,401 bytesinstall.pyruns5,049 bytespackage.shruns182 bytespytest.iniasset42 bytesreferences/ad-copywriting.mddoc16,186 bytesreferences/ad-legal-topics.mddoc8,670 bytesreferences/bidding-strategy.mddoc44,918 bytesreferences/brief.mddoc23,732 bytesreferences/campaign-structure.mddoc28,155 bytesreferences/channel-history.mddoc15,824 bytesreferences/direct-commander-import.mddoc3,996 bytesreferences/frequency-calculator.mddoc24,936 bytesreferences/mask-builder.mddoc27,552 bytesreferences/mcp-account-integration.mddoc39,029 bytesreferences/metrika-goals-setup.mddoc50,318 bytesreferences/negative-keywords-builder.mddoc28,902 bytesreferences/rsya-creatives.mddoc3,892 bytesreferences/visual-generation.mddoc13,628 bytesreferences/wordstat-browser.mddoc7,470 bytesreferences/wordstat-filter.mddoc17,193 bytesreferences/wordstat-mcp.mddoc14,326 bytesreferences/yandex-direct-mcp.mddoc52,810 bytesreferences/yandex-direct-specs.mddoc13,062 bytesrequirements-dev.txtdoc159 bytesrequirements.txtdoc621 bytesscripts/__init__.pyruns0 bytesscripts/brand_defaults.jsonasset551 bytesscripts/credentials.pyruns7,597 bytesscripts/forecast_cpc.pyruns42,732 bytesscripts/generate_ads_xlsx.pyruns11,419 bytesscripts/generate_creative_images.pyruns12,505 bytesscripts/generate_media_plan.pyruns7,018 bytesscripts/keyword_helper.pyruns4,983 bytesscripts/manage_credentials.pyruns6,708 bytesscripts/package_skill.pyruns13,746 bytesscripts/preflight.pyruns20,022 bytesscripts/prompt_templates.pyruns7,702 bytesscripts/setup_yandex_direct_mcp.pyruns17,780 bytesscripts/upload_creatives_to_storage.pyruns12,137 bytesscripts/validate_assets.pyruns4,729 bytesscripts/wordstat_api.pyruns19,953 bytessubagents/semantics.mddoc13,742 bytestests/conftest.pyruns1,612 bytestests/test_credentials.pyruns2,455 bytestests/test_forecast_cpc_backends.pyruns11,754 bytestests/test_forecast_cpc_pure.pyruns8,641 bytestests/test_generate_ads_xlsx.pyruns4,880 bytestests/test_generate_creative_images.pyruns10,621 bytestests/test_preflight.pyruns17,001 bytestests/test_prompt_templates.pyruns3,371 bytestests/test_setup_yandex_direct_mcp.pyruns5,438 bytestests/test_upload_creatives_to_storage.pyruns7,296 bytestests/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 GitHubSkills 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 shellAutomated signals, not a guarantee
Checked Nov 5, 2026
- No broad tool permissions
- No dangerous shell commands
- 235 network referencesin 29 files: docs/hosted-mcp-setup.md:7 tests/test_preflight.py:21 SKILL.md:62 and 26 more
- 1 obfuscation signalin 1 file: scripts/generate_creative_images.py:97
- No instruction overrides
- 29 executable scriptsin 29 files: LICENSE:1 install.py:1 package.sh:1 and 26 more
- 125 references to secretsin 23 files: tests/test_credentials.py:14 scripts/setup_yandex_direct_mcp.py:52 scripts/wordstat_api.py:13 and 20 more
- No requests to vote in Hot
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
.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
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
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
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
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
- Network access in prose of documentationCHANGELOG.md:3Low confidence
- Network access in prose of documentationCHANGELOG.md:360Low confidence
- Network access in prose of documentationCHANGELOG.md:361Low confidence
- Network access in prose of documentationCHANGELOG.md:362Low confidence
- Network access in prose of documentationCHANGELOG.md:474Low confidence
- Network access in prose of documentationCHANGELOG.md:475Low confidence
- Network access in prose of documentationCHANGELOG.md:476Low confidence
- Network access in prose of documentationCHANGELOG.md:524Low confidence
- Network access in code of a file that runsLICENSE:1High confidence
- Executable script in code of a file that runsLICENSE:1High confidence
- Network access in code of a file that runsLICENSE:3High confidence
- Network access in code of a file that runsLICENSE:195High confidence
- Network access in code of documentationREADME.md:67Low confidence
- Network access in prose of documentationREADME.md:72Low confidence
- Network access in prose of documentationREADME.md:100Low confidence
- Network access in prose of documentationREADME.md:116Low confidence
- Network access in prose of documentationREADME.md:117Low confidence
- Network access in prose of documentationREADME.md:118Low confidence
- Network access in prose of documentationREADME.md:203Low confidence
- Network access in prose of the SKILL.mdSKILL.md:62Low confidence
- Network access in prose of the SKILL.mdSKILL.md:63Low confidence
- Network access in prose of the SKILL.mdSKILL.md:64Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valueSKILL.md:155Low confidence
- Network access in prose of the SKILL.mdSKILL.md:181Low confidence
- Network access in prose of the SKILL.mdSKILL.md:182Low confidence
- Network access in prose of the SKILL.mdSKILL.md:187Low confidence
- Network access in prose of the SKILL.mdSKILL.md:188Low confidence
- Network access in prose of the SKILL.mdSKILL.md:189Low confidence
- Network access in prose of the SKILL.mdSKILL.md:190Low confidence
- Network access in prose of the SKILL.mdSKILL.md:192Low confidence
- Network access in prose of the SKILL.mdSKILL.md:330Low confidence
- Network access in prose of the SKILL.mdSKILL.md:331Low confidence
- Network access in prose of the SKILL.mdSKILL.md:332Low confidence
- Network access in prose of the SKILL.mdSKILL.md:353Low confidence
- Network access in prose of the SKILL.mdSKILL.md:355Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:485Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:514Low confidence
- Network access in prose of the SKILL.mdSKILL.md:597Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:7Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:8Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:9Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:10Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:11Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:12Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:13Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:19Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:24Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:25Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:26Low confidence
- Network access in prose of documentationdocs/hosted-mcp-setup.md:31Low confidence
and 319 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/plugin.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard 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.