mcpField
A
account-onboarding

account-onboarding

github.com/dengineproblem营销与增长58 次安装
代码仓库

关于 account-onboarding

account-onboarding 是用于配置新 Facebook Ads 账户的交互式技能。它收集并校验业务与广告系列信息,生成账户和简报文件,随后检查 API 访问权限。

主要功能

  1. 01引导收集账户信息
  2. 02校验字段并汇总配置
  3. 03按广告目标收集技术 ID
  4. 04生成账户与简报文件
  5. 05检查 API 访问权限

适用场景

  1. 01配置新的 Facebook Ads 账户
  2. 02根据业务信息准备广告系列简报
  3. 03配置后验证 API 访问权限

MCP 相关

若地点参考资料中没有所需城市,该技能会调用 MCP 工具 search_geo_locations。API 访问检查还要求 MCP 令牌具有账户访问权限。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dengineproblem/agents-monorepo --skill account-onboarding

安装后在 Claude Code 中输入/account-onboarding确认已加载。

README 原文English

来自项目 README

README 暂无中文译文,以下为英文原文;中文介绍见上方。

Account Onboarding

Интерактивный помощник для настройки нового Facebook Ads аккаунта.


Твои задачи

  1. Провести пользователя через сбор информации (~20 вопросов)
  2. Валидировать данные на каждом этапе
  3. Показать сводку и запросить подтверждение
  4. Создать конфигурационные файлы
  5. Проверить подключение к API

Что создаётся в результате

.claude/ads-agent/config/
├── ad_accounts.md          ← Добавляется запись аккаунта
└── briefs/
    └── {account_name}.md   ← Создаётся новый бриф

Workflow (8 шагов)

Шаг 0: Приветствие

Выведи сообщение:

👋 Привет! Это онбординг нового рекламного аккаунта.

Я задам ~20 вопросов о бизнесе клиента:
• Базовая информация (4)
• Бизнес-параметры (5)
• Цель рекламы (1)
• Технические ID (2-5 в зависимости от цели)
• Направления/кампании (по 5 на каждое)

В конце создам:
- Запись в ad_accounts.md
- Бриф briefs/{name}.md

Готов начать?

Дождись подтверждения.


Шаг 1: Базовая информация (4 вопроса)

ОБЯЗАТЕЛЬНЫЕ — все 4.

1. Название бизнеса:
   > (например: Bas Dent, FitLife, TechStore)

2. Facebook Ads Account ID:
   > act_XXXXXXXXX
   (найти в Business Manager → Ad Accounts)

3. Часовой пояс:
   > UTC+5 (Алматы) / UTC+3 (Москва) / UTC+6 (Астана) / другой

4. Ниша бизнеса:
   > E-commerce / Услуги / SaaS / Образование / Медицина / другая

Валидация:

  • Account ID должен начинаться с act_
  • Часовой пояс — формат UTC+X

Дефолт: Валюта всегда USD.


Шаг 2: Бизнес-параметры (5 вопросов)

ОБЯЗАТЕЛЬНЫЕ: 1-3. ОПЦИОНАЛЬНЫЕ: 4-5.

1. Что продаёте / какие услуги:
   > (краткое описание основных продуктов/услуг)

2. Регион работы:
   > Казахстан / Россия / СНГ / Весь мир / конкретные города

3. Целевая аудитория:
   > Возраст: 25-45
   > Пол: все / жен / муж
   > Интересы: (ключевые)

4. Боли клиентов (для копирайтинга) [опционально]:
   > Какие проблемы решаете? Что волнует клиентов?

5. Конкурентные преимущества [опционально]:
   > Почему должны выбрать вас?

После получения региона — найди geo ID:

  1. Прочитай справочник config/knowledge/geo_locations.md
  2. Найди указанные города/страны в таблицах
  3. Если город НЕ найден в справочнике — вызови MCP:
    search_geo_locations(query="{город}", location_types=["city"])
    
  4. Сохрани для брифа:
    • city_key — ID города
    • region_id — ID региона (если есть)
    • country_code — код страны
    • radius — радиус по умолчанию (25 km для городов KZ, 40 km для RU)

Шаг 3: Цель рекламы (1 вопрос)

ОБЯЗАТЕЛЬНЫЙ.

Выбери цель рекламы:

1. WhatsApp — сообщения в WhatsApp (оптимизация на начало переписки)
2. Instagram Трафик — клики на профиль Instagram
3. Site Leads — лиды на сайте (с Pixel)
4. Lead-формы — мгновенные формы Facebook/Instagram

> (1 / 2 / 3 / 4)

Технические параметры по целям:

ЦельCampaign ObjectiveOptimization GoalDestination Type
WhatsAppOUTCOME_ENGAGEMENTCONVERSATIONSWHATSAPP
Instagram ТрафикOUTCOME_TRAFFICLINK_CLICKS—
Site LeadsOUTCOME_LEADSOFFSITE_CONVERSIONSWEBSITE
Lead-формыOUTCOME_LEADSLEAD_GENERATIONON_AD

Шаг 4: Технические ID (динамический)

В зависимости от цели (из Шага 3) собери нужные технические данные.

ВСЕГДА ОБЯЗАТЕЛЬНЫЕ:

1. Facebook Page ID:
   > (число, например: 123456789012345)
   (найти в Business Suite → Страницы → О странице)

2. Есть ли Instagram аккаунт? (да/нет)
   Если да:
   > Instagram Account ID: (число)
   (найти в Business Suite → Instagram аккаунты)

В ЗАВИСИМОСТИ ОТ ЦЕЛИ:

Если цель = "WhatsApp":

3. WhatsApp Business номер телефона:
   > +7XXXXXXXXXX (формат с кодом страны)
   (должен быть подключен к Business Manager)

Если цель = "Lead-формы":

3. Lead Form ID [если уже есть]:
   > (число) или "создать новую"
   (найти в Meta Business Suite → Формы)

4. Какие поля в форме нужны:
   > Имя / Телефон / Email / Город / другие

Если цель = "Site Leads":

3. URL сайта/лендинга:
   > https://example.com

4. Facebook Pixel ID:
   > (число, например: 123456789012345)
   (найти в Events Manager → Data Sources)

5. Есть ли настроенные события? (да/нет)
   Если да, какие:
   > Purchase / Lead / AddToCart / ViewContent / другие

Если цель = "Instagram Трафик":

(Дополнительных ID не требуется, только Page ID и Instagram ID)

Валидация:

  • Page ID — только цифры, 15-16 знаков
  • Instagram ID — только цифры
  • WhatsApp — формат +XXXXXXXXXXX (E.164)
  • Lead Form ID — только цифры или "создать новую"
  • Pixel ID — только цифры, 15-16 знаков
  • URL — валидный URL с https://

Шаг 5: Направления/кампании (интерактивно)
Сколько направлений/кампаний в аккаунте?
> (1-10)

Для КАЖДОГО направления спроси:

Направление {N}:
1. Название: (например: Импланты, Виниры, Курсы)
2. Целевой CPL: $X (стоимость лида в USD)
3. Дневной бюджет: $X
4. Приоритет: высокий / средний / низкий
5. Campaign ID [если уже есть]: или "создать новую"

Валидация:

  • CPL должен быть числом > 0
  • Бюджет должен быть числом >= 5

Шаг 6: ROAS (только для e-commerce)

Спрашивать только если ниша = E-commerce.

Целевой ROAS:

ROAS (Return on Ad Spend) — сколько долларов выручки приносит $1 рекламных расходов.

Пример расчёта:
• Потратили на рекламу: $100
• Получили выручки: $300
• ROAS = $300 / $100 = 3x

Формула: ROAS = Выручка / Расходы на рекламу

Типичные значения:
• 2x — минимально приемлемый
• 3x-4x — хороший результат
• 5x+ — отличный результат

> Целевой ROAS: Xх (например: 3x) или "не отслеживаю"

Шаг 7: Валидация

Выведи ВСЮ собранную информацию в структурированном виде:

📋 СВОДКА ОНБОРДИНГА

## Базовая информация
- Название: {business_name}
- Account ID: {account_id}
- Валюта: USD
- Часовой пояс: {timezone}
- Ниша: {niche}

## Бизнес
- Продукт: {product}
- Регион: {region}
- ЦА: {target_audience}
- Боли: {pains}
- Преимущества: {advantages}

## Цель рекламы
- Цель: {goal} ({objective} / {optimization_goal})
- ROAS: {roas} (если e-commerce)

## Технические ID
- Page ID: {page_id}
- Instagram ID: {instagram_id} (или "нет")
- WhatsApp: {whatsapp_phone} (если WhatsApp)
- Lead Form ID: {lead_form_id} (если Lead-формы)
- Pixel ID: {pixel_id} (если Site Leads)
- Сайт: {website_url} (если Site Leads)

## Направления ({count})
| Название | Целевой CPL | Бюджет | Приоритет | Campaign ID |
|----------|-------------|--------|-----------|-------------|
{directions_rows}

---

Всё верно? (да / нет, изменить)

Если "нет" — спроси что изменить и обнови данные.


Шаг 8: Генерация файлов

После подтверждения создай файлы:

1. Добавь запись в ad_accounts.md

Прочитай .claude/ads-agent/config/ad_accounts.md, найди последний номер аккаунта и добавь в конец (перед "Пример формата"):

---

## Аккаунт {N}: {business_name}

- **Account ID**: {account_id}
- **Page ID**: {page_id}
- **Instagram ID**: {instagram_id}
- **Название**: {business_name}
- **Бриф**: [briefs/{filename}.md](briefs/{filename}.md)
- **Статус**: активен
- **Валюта**: USD
- **Часовой пояс**: {timezone}
- **Цель рекламы**: {goal}
- **Заметки**: {niche}. {short_description}

---
2. Создай briefs/{filename}.md
# {business_name} - Бриф

> Создан через /account-onboarding {date}

---

## Бизнес

- **Ниша**: {niche}
- **Продукт**: {product}
- **Регион**: {region}
- **Целевая аудитория**: {target_audience}
- **Сайт/Landing**: {website}

### Для копирайтинга
- **Боли клиентов**: {pains}
- **Преимущества**: {advantages}

---

## Цель рекламы

- **Цель**: {goal}
- **Campaign Objective**: {objective}
- **Optimization Goal**: {optimization_goal}
- **Destination Type**: {destination_type}
- **Целевой ROAS**: {roas}

---

## Технические ID (для API)

### Обязательные
- **Facebook Page ID**: `{page_id}`
- **Instagram Account ID**: `{instagram_id}` <!-- или "нет" -->

### В зависимости от цели

<!-- Заполняется в зависимости от goal -->

#### Для WhatsApp:
- **WhatsApp номер**: `{whatsapp_phone}`

#### Для Lead-форм:
- **Lead Form ID**: `{lead_form_id}`
- **Поля формы**: {form_fields}

#### Для Site Leads:
- **URL сайта**: {website_url}
- **Pixel ID**: `{pixel_id}`
- **Настроенные события**: {pixel_events}

### Гео-локации

| Город/Страна | Тип | Key/Code | Region ID | Радиус |
|--------------|-----|----------|-----------|--------|
| {city_name} | city | {city_key} | {region_id} | {radius} km |
| {country_name} | country | {country_code} | — | — |

---

## Правила оптимизации (дефолты)

### Пороговые значения
- **Минимум impressions для решений**: 1000
- **Минимум конверсий для решений**: 3
- **Минимум дней до агрессивных действий**: 2
- **Ad-eater порог**: CPL > target × 3

### Бюджетные лимиты
- **Максимальное увеличение за раз**: 30%
- **Максимальное уменьшение за раз**: 50%

### Временные ограничения
- **Часовой пояс**: {timezone}
- **Не создавать adsets после**: 18:00

### CPL диапазоны
- **Normal**: target × 1.0-1.5
- **High**: target × 1.5-2.0
- **Ad-eater**: target × 3.0+

---

## Активные кампании/направления

| Название | Campaign ID | Цель CPL | Дневной бюджет | Приоритет | Статус |
|----------|-------------|----------|----------------|-----------|--------|
{directions_rows}

---

## Заметки

- Создан: {date}
- Онбординг провёл: Claude (skill: account-onboarding)

---

## История изменений

| Дата | Изменение |
|------|-----------|
| {date} | Создан бриф через /account-onboarding |

Шаг 9: Тест подключения

После создания файлов проверь доступ к API:

# Проверка доступа
campaigns = get_campaigns(account_id="{account_id}", limit=5)

Выведи результат:

✅ Онбординг завершён!

Созданные файлы:
1. .claude/ads-agent/config/ad_accounts.md — запись добавлена
2. .claude/ads-agent/config/briefs/{filename}.md — бриф создан

API проверка:
- Доступ к аккаунту: ✅
- Найдено кампаний: {count}

Теперь можно использовать:
- /ads-optimizer — оптимизация
- /ads-reporter — отчёты
- /campaign-manager — управление кампаниями

Если API вернул ошибку:

⚠️ Файлы созданы, но API недоступен!

Ошибка: {error_message}

Проверьте:
1. Account ID правильный?
2. MCP токен имеет доступ к аккаунту?
3. Аккаунт активен в Business Manager?

Файлы сохранены, можно исправить Account ID в briefs/{filename}.md

Дефолтные значения

currency: USD

optimization_rules:
  min_impressions: 1000
  min_conversions: 3
  min_days: 2
  max_budget_increase: 30
  max_budget_decrease: 50
  no_create_after: "18:00"
  ad_eater_multiplier: 3

cpl_ranges:
  normal_multiplier: 1.5
  high_multiplier: 2.0
  ad_eater_multiplier: 3.0

budget_defaults:
  adset_min: 5

Цели и их параметры

Цельobjectiveoptimization_goaldestination_typebilling_event
WhatsAppOUTCOME_ENGAGEMENTCONVERSATIONSWHATSAPPIMPRESSIONS
Instagram ТрафикOUTCOME_TRAFFICLINK_CLICKS—IMPRESSIONS
Site LeadsOUTCOME_LEADSOFFSITE_CONVERSIONSWEBSITEIMPRESSIONS
Lead-формыOUTCOME_LEADSLEAD_GENERATIONON_ADIMPRESSIONS

Валидация данных

ПолеПроверка
account_idНачинается с act_, только цифры после
page_idТолько цифры, 15-16 знаков
instagram_idТолько цифры или "нет"
whatsapp_phoneФормат +XXXXXXXXXXX (E.164)
lead_form_idТолько цифры или "создать новую"
pixel_idТолько цифры, 15-16 знаков
website_urlВалидный URL с https://
timezoneФормат UTC+X или UTC-X
target_cplЧисло > 0
roasЧисло > 1 или "не отслеживаю"
budgetЧисла > 0, min >= 5

Генерация filename

filename = business_name.lower()
           .replace(" ", "_")
           .replace("-", "_")
           .replace(/[^a-z0-9_]/g, "")

Примеры:
- "Bas Dent" → "bas_dent"
- "FitLife Studio" → "fitlife_studio"
- "ИП Иванов" → "ip_ivanov" (транслит)

После онбординга

Чек-лист готовности:

  • Бриф создан в briefs/{name}.md
  • Аккаунт добавлен в ad_accounts.md
  • API доступ проверен
  • Готов к /ads-optimizer

Частые ошибки

ОшибкаРешение
Account ID без act_Добавь префикс act_
Ошибка API доступаПроверь токен в MCP, добавь аккаунт в Business Manager
Файл уже существуетСпроси: обновить или создать с суффиксом?

评论

支持 Markdown