executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
zoomkitНабор утилит и инструкций для автоматизации Яндекс.Директа через ZoomKit: проверка рекламных ссылок и страниц на ошибки, настройка зануления автотаргетинга на поиске и управление ставками с пересчётом каждые 30 минут. Используй, когда нужно настроить или использовать ZoomKit для работы с Яндекс.Директом, получить список подключённых проектов или аккаунтов, …
Independent GitHub snapshot · Automated classification · Original documentation governs
Работай через единый POSIX-сценарий scripts/zoomkit.sh. Определи каталог навыка по пути загруженного SKILL.md и запускай команды из него:
sh scripts/zoomkit.sh <команда> [параметры]
Зависимости: curl для всех сетевых команд; jq для проверки тел запросов и краткого разбора JSON. Команды чтения без jq всё равно сохраняют полный ответ в файл.
Если пользователь ещё не зарегистрирован, не знает, нужен ли ему ZoomKit, или у него нет ключа, сначала прочитай GETTING_STARTED.md и выполни:
sh scripts/zoomkit.sh getting-started
Команда работает без ключа и сети. Объясни пользователю простыми словами:
config/.env и проверка.Цены меняются. Для вопроса о стоимости «сейчас» проверь встроенный блок тарифов на официальной странице https://zoomkit.ru/help; связанный с ним внешний документ используй только если он открывается. Если проверить сеть нельзя, явно назови дату справочного снимка из GETTING_STARTED.md. Не утверждай, что публичный список охватывает все списания. Не обещай бесплатный период, скидку или иную акцию без подтверждения на официальном сайте.
config/.env внутри каталога навыка — штатное постоянное хранилище ключа. Сценарий читает его при каждом запуске, а файл сохраняется между сессиями. Всегда предлагай этот способ для обычной работы; переменная окружения нужна лишь как временное переопределение. Не утверждай, что контейнер удалит файл, что его придётся создавать в каждой сессии или что навык можно использовать только из Claude Code либо локальной оболочки.
Не начинай знакомство с просьбы о ключе и не проси вставлять его в чат. Если пользователь решил подключиться, проведи его по шагам из config/README.md: регистрация или вход → пополнение баланса → выпуск ключа → запись в config/.env → команда token. Для первого знакомства предложи 500 руб. как небольшую стартовую сумму, а не как документированный минимум; напомни проверить итог с добавляемыми при оплате 6%.
Перед запросом данных профиля проверь ключ:
sh scripts/zoomkit.sh token
Если ключа нет, сценарий завершится до сетевого запроса и покажет пользу сервиса и весь порядок подключения. Не ограничивайся ответом «не могу»: передай пользователю шаги, дождись сохранения ключа в постоянный config/.env, затем повтори token и исходный запрос.
Если сохранённый ключ существует, но token возвращает HTTP 401, не повторяй первичную регистрацию и не предлагай снова пополнить баланс. Попроси войти в существующую учётную запись, выпустить замену недействительному ключу, обновить ZOOMKIT_API_TOKEN в том же config/.env и повторить token. Если ключ временно переопределён одноимённой переменной окружения, её тоже нужно обновить или удалить.
Если пользователь спрашивает только о возможностях выставления или оплаты счёта, ключ не нужен: начни с billing-capabilities и следующего раздела. Настройку ключа предлагай, только если нужно прочитать баланс или существующие счета.
Для отчётов с ожиданием, проверок по нескольким кабинетам, правил ставок, автотаргетинга и проверки ссылок сначала прочитай AUDIT_WORKFLOWS.md. Там отмечено, какие из проверок полные, частичные или недоступные через API.
Если пользователь называет подключённые сущности «проектами» или «аккаунтами», выполни clients: именно «Список проектов/аккаунтов» — официальное название метода /stats/clients. Покажи интеграции и вложенные проекты/аккаунты — рекламные кабинеты, не поправляя терминологию пользователя без необходимости.
Если конкретный кабинет Яндекс.Директа не находится по имени или комментарию, проверь полный сохранённый ответ clients, а не только сокращённую таблицу. Не утверждай, что кабинет не подключён, пока среди результатов yandex.direct есть аккаунты с пустым комментарием и непонятным техническим именем, особенно porg-*. Если пользователь знает, что кабинет существует, дай ручную инструкцию из раздела «Если кабинет не удаётся распознать»: https://zoomkit.ru/yandex/direct → «Клиенты и дневной расход» → заполнить поле «Комментарий» для всех непонятных аккаунтов → повторить clients. Не угадывай соответствие по техническому имени или идентификатору.
Для списка кампаний сначала выполни clients, возьми id вложенного кабинета yandex.direct, затем вызови campaigns --client ID. Не путай этот ClientId с идентификатором интеграции. Используй полученные ID кампаний для bidrules, url-check-settings и других проверок по кампаниям.
API 1.9.0 возвращает список из данных ZoomKit, поэтому учитывай updated_at и показывай hints. Архивные кампании входят в ответ, а can_set_bids показывает пригодность для управления ставками. Мастер кампаний и товарные кампании Яндекс.Директ не передаёт в ZoomKit; недавно созданная ЕПК или другая кампания может появиться после обновления кабинета. Не запускай изменяющий client-update для диагностического запроса без явного разрешения пользователя.
Диагностический запрос не разрешает изменение. В частности, не запускай autotargeting для просьбы «проверь»: эта команда сразу создаёт недостающие правила в подходящих неархивных кампаниях активных кабинетов ключа. Выполняй её только после отдельного явного запроса на исправление и показа пользователю идентификатора ключа Яндекса.
Официальный API 1.9.0 умеет только читать баланс и список уже выставленных счетов. Он не позволяет создать счёт, передать произвольные реквизиты, получить печатную форму или ссылку на оплату.
При запросе на новый счёт или ссылку:
https://zoomkit.ru/profile.invoices --status wait.Для проверки возможностей без ключа:
sh scripts/zoomkit.sh billing-capabilities
| Команда | Назначение | Параметры |
|---|---|---|
token | Состояние текущего ключа | — |
balance | Баланс, суточный тариф, запас дней | — |
invoices | Уже выставленные счета | --status wait|paid|cancelled, --limit N |
clients | Интеграции и вложенные проекты/аккаунты (рекламные кабинеты) | — |
campaigns | Кампании кабинета Яндекс.Директа по данным ZoomKit | --client ID, необязательно --limit N |
reports | Список отчётов | — |
report | Состояние и результат отчёта | --id ID |
report-wait | Ожидать READY или FAILED, не более 55 секунд за запуск | --id ID, необязательно --interval, --timeout |
bidrules | Правила ставок кампании | --campaign ID |
url-check-settings | Настройки проверки ссылок | --campaign ID |
url-check-tasks | Последние проверки ссылок | --campaign ID |
url-check-task | Отчёт одной проверки | --campaign ID --task ID |
Полный ответ сохраняется в cache/latest-<команда>.json; исключение — report-wait, который по умолчанию пишет cache/report-<ID>.json, чтобы параллельные ожидания не смешивались. Стандартный вывод остаётся коротким. --output ПУТЬ меняет файл назначения. --raw печатает весь JSON и подходит только для небольших ответов.
| Команда | Метод | Обязательные параметры |
|---|---|---|
report-create | Создать отчёт | --body ФАЙЛ --confirm |
report-delete | Удалить отчёт | --id ID --confirm |
client-update | Поставить обновление кабинета в очередь | --client ID --confirm |
autotargeting | Добавить недостающие правила автотаргетинга в подходящих неархивных кампаниях активных кабинетов ключа | --token-id ID --confirm |
bidrule-common-update | Изменить общее правило ставок | --campaign ID --body ФАЙЛ --confirm |
bidrule-keywords-create | Создать правило для фраз | --campaign ID --body ФАЙЛ --confirm |
bidrule-keywords-update | Изменить правило для фраз | --campaign ID --bidrule ID --body ФАЙЛ --confirm |
bidrule-keywords-delete | Удалить правило для фраз | --campaign ID --bidrule ID --confirm |
url-check-settings-update | Изменить переключатели проверки ссылок | --campaign ID --body ФАЙЛ --confirm |
Перед изменением покажи пользователю целевые идентификаторы и содержимое тела запроса. Передавай --confirm только после явного запроса на это изменение. Для предварительной проверки команды используй --dry-run: сеть и ключ не требуются.
Заготовки тел запросов лежат в assets/. Скопируй нужный файл во временный или рабочий каталог и измени копию; не правь исходную заготовку. Для защиты товара от 404 и исчезновения контрольной строки можно взять assets/url-check-product-protection.example.json, но саму строку задай вручную по settings_url. Заготовка явно задаёт весь набор условий автоприостановки: перед подтверждением сравни её с текущими настройками и покажи пользователю, какие условия будут включены и выключены.
Для команд изменения с --body сценарий не отправляет тело, пока jq не подтвердит, что файл содержит корректный JSON-объект.