mcpField
C
campaign-manager

campaign-manager

github.com/dengineproblemMarketing & growth63 installs
Repository

About campaign-manager

A skill for Facebook and Instagram advertisers planning and managing campaigns across Campaign, AdSet, and Ad structures. It covers targeting, budgets, creative formats, and scaling, with a workflow that creates campaigns paused for review before activation.

Key features

  1. 01Campaign, AdSet, and Ad structure planning
  2. 02Audience and location targeting
  3. 03CBO and ABO budget setup
  4. 04Lookalike audience creation
  5. 05Ad creative format guidance
  6. 06Paused creation and review workflow

Use cases

  1. 01Plan campaigns around business objectives
  2. 02Test targeting and estimate audience size
  3. 03Set budgets and scale effective AdSets
  4. 04Review campaign structure before activation

MCP support

The README describes creating campaigns through MCP. An MCP client can be used to perform operations such as campaign creation.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dengineproblem/agents-monorepo --skill campaign-manager

After installing, type/campaign-managerin Claude Code to confirm it loaded.

Details

From the project README

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_AWARENESSReach
Трафик на сайтOUTCOME_TRAFFICLink Clicks
Лиды (формы, WhatsApp)OUTCOME_LEADSLeads
ПродажиOUTCOME_SALESPurchases
Установки приложенияOUTCOME_APP_PROMOTIONApp 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
ТипКогда использовать
CBO3+ 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. Именуй понятно - чтобы было ясно что внутри

Comments

Markdown supported