# Vk Ads Campaign Builder

> Создавать, аудитить и оптимизировать кампании VK Ads через LidFly MCP v3: connection_id/client_id, группы, объявления, лид-формы, аудитории, статистика и бюджеты. Использовать для работы с VK Рекламой с безопасным scope и write workflow.

- Skill: `awaik/vk-ads-campaign-builder-3` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add awaik/vk-ads-campaign-builder-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/awaik/vk-ads-campaign-builder-3/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: awaik (https://skillmd.com/u/awaik)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/awaik/vk-ads-campaign-builder-3

---


# VK Ads Campaign Builder

Use for VK Ads campaigns, ad groups, banners, lead forms, statistics, audiences, contextual phrases, budgets, statuses, and creative checks.

## v3 Scope First

1. Search with `search_tools({ provider: "vk", query })`.
2. Read schemas with `get_tool_schema`.
3. If account/client is unclear, call `get_provider_context({ provider: "vk", query? })`.
4. If campaign is named, call `resolve_campaign_scope({ provider: "vk", query, workspace_project_id? })`.
5. Use only returned `connection_id`, `client_id`, `workspace_project_id`, and `scope_arguments`.
6. Read via `call_tool`; write via `call_write_tool`.

## VK Account Rules

- `connection_id` selects VK OAuth connection.
- `client_id` selects agency/manager/client account.
- Manual VK user-filter is allowed only when it appears in provider context; do not pass arbitrary VK user ids.
- In manual user-filter mode, creation/upload/single update may be unavailable; prefer allowed mass actions and reread state.
- For `max_goals` bidding, use `max_price` when updating limits; reread the group after write.

## Write Safety

- Read current campaign/group/banner first.
- Show plan, budget impact, and fields to change.
- Wait for explicit confirmation.
- Use `call_write_tool`.
- Reread state and report before/after.
- For agency/team Пространства include exact `workspace_project_id`.
- For a new campaign, call `vk_prepare_campaign`, then pass exactly one bootstrap ad group to `vk_create_campaign`. Do not include nested `banners`.
- Always read `checked_packages.goal_mode` from preflight before using `priced_goal`: `required` needs a valid named goal, `forbidden` rejects it, and `unsupported` stops before POST.
- For `goal_mode=required`, get the goal from `vk_get_goals` / `vk_get_counter_goals`: a counter goal uses `priced_goal.name=condition:substr` and the counter ID as `source_id`. For VK Mini Apps with `priced_event_type=43`, use `vk_get_inapp_events`, `name=event.name`, and `source_id=tracker.id`.
- Do not require a goal merely because the objective is `site_conversions`, and do not treat `options.settings.priced_goal`, the package name, or package 3509 (`priced_event_type=0`) as proof of goal compatibility.
- Do not remove an incompatible goal without user agreement. Offer the explicit alternatives: keep CPC/CPM without a named goal, or choose a compatible goal/oCPM package.
- Treat `package_priced_goal_forbidden`, `package_priced_goal_required`, and `package_goal_policy_unsupported` as no-side-effect preflight failures. Treat `provider_goal_package_mismatch` / `inconsistent_priced_goal` as a ban on retrying the same payload.
- Treat the created campaign and bootstrap group as `blocked`. Create remaining groups and banners with separate write tools, reread every object, and activate only as a final separate action.
- If the result contains `outcome=unknown` or `outcome=ambiguous`, call top-level `get_write_operation_status({ operation_id })`. Keep the same campaign name and never send another create.
- If status remains unresolved, offer a safe support draft containing the `operation_id`, never the raw payload or credentials.

## Creative And Text

- Validate package/banner pattern before creating banners.
- Avoid unsupported symbols in text; keep copy within VK field limits.
- Upload images/videos only after source asset is final.
- Do not replace complete banner sections unless the schema requires it and current content has been reread.

## Workspace

Save decisions, campaign snapshots, analytics summaries, and follow-up scheduled tasks only after resolving `workspace_project_id`.

## Google Export

When the user asks to export a VK Ads report to Google Sheets or Google Docs, keep this skill for account/campaign scope and report reads, then hand the verified Google write and reread to `$export-ad-reports`.

