brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
yandex-direct-campaign-builderСоздавать, аудитить, запускать и оптимизировать кампании Яндекс Директа через LidFly MCP v3 с Wordstat, Метрикой и точным provider scope. Использовать для кампаний, групп, ключей, объявлений, ставок, бюджетов и статистики с современным ЕПК workflow.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use for Yandex Direct campaign creation, audit, optimization, budgets, keywords, negative keywords, responsive ads, search queries, Wordstat, and Metrika-linked decisions.
search_tools({ provider: "yandex", query }).get_tool_schema before each new tool.get_provider_context({ provider: "yandex", query? }). Keep query for free project/name/INN search; when the exact Direct login is known, pass it separately as client_login (both fields may be used together).resolve_campaign_scope({ provider: "yandex", campaign_id, connection_id?, client_login?, workspace_project_id?, date_from?, date_to? }). For 16+ digits pass the ID as a string. Full exact name: use campaign_name; legacy query accepts only one exact ID or full exact name. Never pass more than one selector.scope_arguments into Direct calls.call_tool; write through call_write_tool.Direct tools use connection_id and optional client_login. Metrika tools use counter_id and optional connection_id, not client_login.
resolve_campaign_scope returns a typed status. Use resolved only when one exact scope is proven; ambiguous requires an exact scope choice; not_observed is a successful empty result for the checked sources/period; incomplete means at least one required check failed; failed is a typed technical failure. content[].text is only a human-readable rendering and must never be parsed for campaign fields or execution decisions.
For not_observed, follow diagnosis instead of guessing a cause. api_visibility lists the sources that returned no campaign: this does not prove that the object is absent from the Direct web UI. provider_access="verified" with oauth_reconnect.status="not_indicated" means the listed scopes answered successfully, so do not reconnect OAuth. checked_scopes[].selection says who chose each cabinet: only a caller-supplied connection_id or client_login is explicit, while workspace_project_id is a memory boundary and stays discovered. When every checked scope is explicit, yandex_client_login.status="not_required_for_explicit_scope" and next_action.kind="none": do not propose another scope, period, or the same reads without new evidence. When any scope was discovered and another Direct account is genuinely possible, yandex_client_login.status="provide_if_campaign_is_in_another_account": request its exact client_login and use the prepared confirmed save action. Never invent the login or infer campaign-type support from an empty result.
For exact Yandex IDs, discovery checks Reports over the supplied period or, by default, the last 90 completed Moscow calendar days. Reports can expose some campaigns absent from Campaigns API, but it does not guarantee every object or every Master Campaign subtype. A campaign found only there has access_mode="statistics_only", management_eligibility="not_allowed", and a read-only statistics next_call. No Reports row means statistics are not observed, not that the account is empty. Reports activity never authorizes management; every configured write still goes through the server write preflight. Do not treat not_observed as an incident or call support for it.
For legacy Workspace links, accept a recovered Direct scope only when get_provider_context returns the complete workspace_project_id + connection_id + client_login in tool_args. Read scope_issues: run only a read-only next_action with may_execute_automatically=true; never guess around manual_scope_review, ambiguity, conflict, provider outage, or login-not-found. Do not derive client_login from external_entity_key, a project/account name, external_entity_name, or Direct ClientId.
api.direct.yandex.com напрямую через shell, curl, PowerShell или другой HTTP-клиент — ни для проверки, ни как fallback после успеха, ошибки или timeout MCP..env, process environment или shell history и не ищи/используй YANDEX_DIRECT_TOKEN либо другие локальные provider credentials.provider_connection (включая ошибку 53) и предложи переподключить Яндекс в LidFly. Ошибка локального прямого запроса ничего не говорит о server-side подключении LidFly.npm run start:stdio, npm run test:direct-live, LIVE_YANDEX_DIRECT_TOKEN и YANDEX_DIRECT_TOKEN допустимы только во внутреннем maintainer workflow, который пользователь явно попросил запустить в репозитории. Это не fallback для пользовательской рекламной задачи.get_methodology(topic: "yandex") uses the compact compatibility methodology.workspace_project_id.Публичный API Яндекс Директа не позволяет прочитать настройки блоков, создать, изменить, опубликовать или удалить контент лендингов на clients.site и турбо-страницах. Для такого запроса search_tools возвращает capability_notice.status=unsupported_by_provider_api.
get_turbo_pages читает только метаданные опубликованных страниц; get_leads читает только отправленные формы.update_ad, update_campaign или другой рекламный write как замену редактированию блоков страницы.Использовать браузерный сценарий только когда AI-клиент умеет управлять уже авторизованным браузером и пользователь прямо попросил выполнить работу в веб-интерфейсе. Это не MCP/API-операция.
Яндекс отменил настройку ENABLE_AREA_OF_INTEREST_TARGETING: новость от 31.08.2026, справка API. Это касается и ЕПК (UNIFIED_CAMPAIGN). Отменён именно переключатель, а не географический таргетинг в целом.
campaign_setting_notices: поле неуправляемое. Не трактуй YES как доказательство действующего переключателя, показов вне региона или перерасхода.get_campaigns with useful states and field_names.get_adgroups, get_ads or get_responsive_ads, get_keywords.get_autotargeting for categories.get_campaign_stats, get_search_queries with period and attribution.wordstat_* without client_login or connection_id.After confirmed work, save decisions, documents, analytics, campaign snapshots, or follow-up tasks only with resolved workspace_project_id. Use workspace_prepare_project_scope if uncertain.
When the user asks to export a Direct report to Google Sheets or Google Docs, keep this skill for campaign scope and report reads, then hand the verified Google write and reread to $export-ad-reports.
The export handoff applies only when this host exposes the skill and a Google write connector. If either is unavailable, state the exact missing capability and return the requested report as a draft; do not claim a saved Google file or silently switch to Workspace.
metadata.primary_conversion_goal_id: числовой ID цели заявки. Если его нет, один раз уточни основную цель, проверь ID через metrika_get_goals, затем предложи сохранить в workspace_update_project, сохранив остальные поля metadata. Не подменяй ID названием lead_sent.get_campaign_stats с goals=[primary_conversion_goal_id]. Агрегат без goals описывай как достижения всех целей, включая микроцели. Не добавляй микроцели в стратегию без отдельного согласия и объяснения последствий.get_keyword_bids, историю кампании или прогноз бюджета. Без данных обозначь «оценка без данных» и диапазон; не обещай срок заявки. Недельный лимит не равен фиксированному дневному бюджету: деление на семь — арифметическая средняя, не правило расходования площадкой.По справке Директа, проверенной 26.09.2026: минус-фраза исключает запросы со всеми её словами; полное пересечение с ключевой фразой обычно отменяет её действие. [] закрепляет порядок, ! — словоформу, + — обязательность слова, кавычки — запрос только из указанных слов. Кавычки действуют и при полном совпадении с ключом. Для одного бренда используй "битрикс", если нужно исключить только запрос из него: [битрикс] такого ограничения не задаёт. ![битрикс] не исправляй догадкой — уточни намерение. Сочетание серый +в !яблоках допустимо. Для автотаргетинга не обещай исключение полного пересечения: проверь реальные Query/MatchedKeyword/CriterionType. Предпросмотр без морфологии — только нижняя оценка по прочитанным строкам.