campaign-manager

SKILL.md

Campaign Manager

Ты - эксперт по созданию и управлению рекламными кампаниями в Facebook/Instagram.


Твои задачи

  1. Создание кампаний - полная структура Campaign → AdSet → Ad
  2. Настройка таргетинга - аудитории, интересы, демография, гео
  3. Управление бюджетами - CBO vs ABO, распределение
  4. Масштабирование - дублирование успешных структур
  5. Структурные изменения - реорганизация кампаний

Структура Facebook Ads

Account
└── Campaign (цель, бюджет CBO)
    └── AdSet (аудитория, бюджет ABO, schedule)
        └── Ad (креатив, текст)

Правила именования

Campaign: {Направление}_{Objective}_{Date}
AdSet: {Audience}_{Age}_{Geo}_{Placement}
Ad: {Creative}_{Version}

Примеры:

  • Кухня_LEADS_2025-01
  • Lookalike_3pct_25-45_KZ_Feed
  • Carousel_Kitchen_v2

Создание кампании

Шаг 1: Подготовка

  1. Прочитай бриф аккаунта → цели, бюджет, аудитория
  2. Определи objective (ODAX)
  3. Спланируй структуру

Шаг 2: Выбор Objective

Цель бизнеса ODAX Objective Оптимизация
Узнаваемость OUTCOME_AWARENESS Reach
Трафик на сайт OUTCOME_TRAFFIC Link Clicks
Лиды (формы, WhatsApp) OUTCOME_LEADS Leads
Продажи OUTCOME_SALES Purchases
Установки приложения OUTCOME_APP_PROMOTION App Installs

Шаг 3: Создание через MCP

# 1. Создать кампанию
campaign = create_campaign(
    account_id="act_XXX",
    name="Кухня_LEADS_2025-01",
    objective="OUTCOME_LEADS",
    status="PAUSED",  # Всегда создаём в паузе!
    daily_budget=5000,  # $50 в центах (если CBO)
    # ИЛИ
    use_adset_level_budgets=True  # Для ABO
)

# 2. Создать adset
adset = create_adset(
    account_id="act_XXX",
    campaign_id=campaign["id"],
    name="Interests_25-45_KZ",
    optimization_goal="LEAD_GENERATION",
    billing_event="IMPRESSIONS",
    daily_budget=2000,  # $20 в центах (если ABO)
    targeting={
        "age_min": 25,
        "age_max": 45,
        "genders": [2],  # 1=male, 2=female
        "geo_locations": {
            "countries": ["KZ"]
        },
        "flexible_spec": [{
            "interests": [{"id": "XXX", "name": "Cooking"}]
        }]
    },
    destination_type="ON_AD",  # Для лид-форм
    status="PAUSED"
)

# 3. Загрузить изображение
image = upload_ad_image(
    account_id="act_XXX",
    image_url="https://example.com/image.jpg"
)

# 4. Создать креатив
creative = create_ad_creative(
    account_id="act_XXX",
    image_hash=image["hash"],
    name="Kitchen_Carousel_v1",
    page_id="PAGE_ID",
    message="Текст объявления",
    headline="Заголовок",
    description="Описание",
    call_to_action_type="LEARN_MORE",
    link_url="https://example.com"
)

# 5. Создать объявление
ad = create_ad(
    account_id="act_XXX",
    name="Kitchen_Carousel_v1",
    adset_id=adset["id"],
    creative_id=creative["id"],
    status="PAUSED"
)

Шаг 4: Активация

После проверки:

resume_adset(adset_id=adset["id"])
# Или активировать всю кампанию:
resume_campaign(campaign_id=campaign["id"])

Таргетинг

Поиск интересов

# Поиск по ключевому слову
interests = search_interests(query="cooking", limit=25)

# Результат: список с id, name, audience_size

Структура targeting

targeting = {
    # Демография
    "age_min": 25,
    "age_max": 45,
    "genders": [1, 2],  # 1=M, 2=F

    # Гео
    "geo_locations": {
        "countries": ["KZ", "RU"],
        "cities": [{"key": "123456"}],
        "regions": [{"key": "789"}]
    },

    # Интересы (OR внутри группы)
    "flexible_spec": [
        {
            "interests": [
                {"id": "123", "name": "Cooking"},
                {"id": "456", "name": "Home decor"}
            ]
        }
    ],

    # Exclusions
    "exclusions": {
        "interests": [{"id": "789", "name": "Competitor"}]
    },

    # Advantage+ (автоматический таргетинг)
    "targeting_automation": {
        "advantage_audience": 1
    }
}

Поиск локаций

# Поиск городов
locations = search_geo_locations(
    query="Almaty",
    location_types=["city"]
)

# Результат: key для использования в targeting

Оценка аудитории

estimate = estimate_audience_size(
    account_id="act_XXX",
    targeting={
        "age_min": 25,
        "age_max": 45,
        "geo_locations": {"countries": ["KZ"]},
        "flexible_spec": [{"interests": [{"id": "123"}]}]
    }
)

# Результат: estimated_audience_size

Lookalike Audiences

Создание

# 1. Получить список seed аудиторий
audiences = get_custom_audiences(account_id="act_XXX")

# 2. Создать lookalike
lookalike = create_lookalike_audience(
    account_id="act_XXX",
    seed_audience_id="SEED_ID",
    country="KZ",
    ratio=0.03  # 3%
)

Рекомендации по ratio

Ratio Размер Когда использовать
1% Самые похожие Лучшая конверсия
3% Баланс Стандартный выбор
5% Широкий охват Масштабирование
10% Максимум Awareness кампании

Бюджеты

CBO vs ABO

Тип Когда использовать
CBO 3+ adsets, похожая эффективность
ABO Тестирование, контроль, разные цели

Создание с CBO

create_campaign(
    account_id="act_XXX",
    name="Campaign_CBO",
    objective="OUTCOME_LEADS",
    daily_budget=10000,  # $100 на кампанию
    campaign_budget_optimization=True
)

Создание с ABO

create_campaign(
    account_id="act_XXX",
    name="Campaign_ABO",
    objective="OUTCOME_LEADS",
    use_adset_level_budgets=True  # Бюджеты на adset уровне
)

create_adset(
    ...
    daily_budget=2000  # $20 на adset
)

Масштабирование

Вертикальное (бюджет)

# Текущий бюджет $20, увеличиваем на 25%
update_adset(
    adset_id="XXX",
    daily_budget=2500  # $25
)

Горизонтальное (дублирование)

  1. Найти успешный adset
  2. Создать копию с другой аудиторией
  3. Тестировать на малом бюджете
# Копия с другим таргетингом
create_adset(
    account_id="act_XXX",
    campaign_id="CAMPAIGN_ID",
    name="Lookalike_5pct_25-45_KZ",
    ...  # Те же настройки
    targeting={
        # Другая аудитория
    },
    daily_budget=2000  # Тестовый бюджет
)

Форматы креативов

Single Image

create_ad_creative(
    account_id="act_XXX",
    image_hash="HASH",
    name="Single_Image_v1",
    page_id="PAGE_ID",
    message="Текст",
    headline="Заголовок",
    link_url="https://..."
)

Carousel

create_website_carousel(
    account_id="act_XXX",
    cards=[
        {"image_hash": "HASH1", "text": "Product 1", "link": "url1"},
        {"image_hash": "HASH2", "text": "Product 2", "link": "url2"},
        {"image_hash": "HASH3", "text": "Product 3", "link": "url3"}
    ],
    page_id="PAGE_ID",
    message="Check out our products!",
    site_url="https://example.com",
    call_to_action="LEARN_MORE"
)

Video

# 1. Загрузить видео
video = upload_video(
    account_id="act_XXX",
    file_path="/path/to/video.mp4"
)

# 2. Дождаться обработки
status = get_video_status(video_id=video["id"])
# Ждать пока status.video_status == "ready"

# 3. Использовать в креативе
# (через стандартный create_ad_creative с video)

Чек-лист создания кампании

Перед созданием

  • Прочитан бриф аккаунта
  • Выбран правильный objective
  • Определена структура (CBO/ABO)
  • Подготовлены креативы
  • Определена аудитория

При создании

  • Создаём в статусе PAUSED
  • Проверяем размер аудитории (100K-2M)
  • Устанавливаем правильный бюджет
  • Используем правильное именование

После создания

  • Проверяем структуру
  • Показываем пользователю
  • Активируем после подтверждения

Важные правила

  1. Всегда создавай в PAUSED - активируй только после проверки
  2. Не создавай после 18:00 - по часовому поясу аккаунта
  3. Минимальный бюджет - $3 на adset, лучше $10-20
  4. Проверяй аудиторию - не слишком узкая (> 100K)
  5. Именуй понятно - чтобы было ясно что внутри
Weekly Installs
43
GitHub Stars
3
First Seen
Jan 29, 2026
Installed on
github-copilot43
codex42
kimi-cli42
gemini-cli42
amp42
opencode42