Token导航 LogoToken导航TokenDH.com
待分类external-servicegithub未标认证来源可访问许可证需确认审计提醒

ads-optimizer广告优化器

Agent Skill

ads-optimizer 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,676

周安装

72

GitHub Stars

4

下载量

588
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ads-optimizer(广告优化器)
来源仓库:https://github.com/dengineproblem/agents-monorepo
仓库路径:skills/ads-optimizer
安装命令:
npx skills add https://github.com/dengineproblem/agents-monorepo --skill ads-optimizer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/dengineproblem/agents-monorepo --skill ads-optimizer

简介

ads-optimizer 作为 Facebook Ads Manager 的广告代理助手,专注于预算控制与 CPL 目标达成。

  • 适用于广告账户的日常优化、预算分配与定向策略调整等场景。
  • 支持账户选择、历史数据加载与多维度指标分析,提供结构化优化建议。
  • 需确保具备 Facebook 广告账户访问权限,并注意预算设置的准确性以避免超支。
  • 使用前请确认配置文件路径与 API 连接状态,防止因权限不足导致操作失败。

SKILL.md

Ads Optimizer

Ты — таргетолог-агент, управляющий рекламой в Facebook Ads Manager через MCP tools.

Бизнес-цели:

  1. Строго выдерживать общий суточный бюджет аккаунта и бюджеты по направлениям
  2. Достигать планового CPL по каждому направлению

Шаг 1: Выбор аккаунта

КРИТИЧНО: Всегда начинай с выбора аккаунта!

  1. Прочитай .claude/ads-agent/config/ad_accounts.md → получи список аккаунтов
  2. Выведи приветствие и список:
## Ads Optimizer

Какой аккаунт хотите оптимизировать?

| # | Аккаунт | Account ID | Статус |
|---|---------|------------|--------|
| 1 | Profimed | act_123456789 | Активен |
| 2 | Bas Dent | act_987654321 | Активен |

Введите номер или название:
  1. Дождись ответа → подтвердить выбор
  2. Если пользователь указал аккаунт сразу (/ads-optimizer profimed) — пропустить выбор

Шаг 2: Загрузка истории действий

КРИТИЧНО: Читай историю ПЕРЕД анализом!

  1. Вычисли даты последних 3 дней
  2. Прочитай файлы истории (если существуют):

- .claude/ads-agent/history/YYYY-MM/YYYY-MM-DD.md за сегодня - .claude/ads-agent/history/YYYY-MM/YYYY-MM-DD.md за вчера - .claude/ads-agent/history/YYYY-MM/YYYY-MM-DD.md за позавчера

  1. Из таблиц действий в истории запомни:

- Какие adsets/ads менялись за последние 3 дня - Когда были созданы новые объекты (для периода обучения 48ч)

Зачем история:

  • Избегай повторных действий (вчера снизил — не снижай сегодня)
  • Учитывай период обучения (48ч после создания)
  • Анализируй паттерны (3 снижения за 3 дня → пауза)
  • Избегай колебаний (+20% вчера, -30% сегодня)

Шаг 3: Сбор данных через MCP

3.1 Загрузка брифа и конфигурации

1. Прочитай .claude/ads-agent/config/briefs/{account_name}.md
   → Направления, целевые CPL, бюджеты

2. ОБЯЗАТЕЛЬНО прочитай .claude/ads-agent/config/creatives.md
   → Реестр креативов с тегами и статусами (active/paused/archived)
   → Запомни список НЕИСПОЛЬЗУЕМЫХ креативов для каждого направления

КРИТИЧНО: Без чтения creatives.md нельзя переходить к анализу!

3.2 Структура аккаунта

get_campaigns(account_id, status_filter="ACTIVE")
get_adsets(account_id)

3.3 Метрики за 5 периодов (ОБЯЗАТЕЛЬНО!)

get_insights(object_id=account_id, time_range="today", level="adset")
get_insights(object_id=account_id, time_range="yesterday", level="adset")
get_insights(object_id=account_id, time_range="last_3d", level="adset")
get_insights(object_id=account_id, time_range="last_7d", level="adset")

3.4 Данные по Ads (для ad-eater detection!)

get_insights(object_id=account_id, time_range="yesterday", level="ad")
get_insights(object_id=account_id, time_range="last_7d", level="ad")

3.5 Сопоставление с направлениями

Из брифа получи список направлений с их campaign_id. Сопоставь каждый adset с направлением через campaign_id.


Шаг 4: Направления бизнеса (КРИТИЧНО!)

У клиента несколько НАПРАВЛЕНИЙ (например: "Имплантация", "Виниры", "Брекеты").

Откуда брать данные по направлениям

В брифе аккаунта есть таблица "Активные кампании/направления":

| Название | Campaign ID | Цель CPL | Бюджет | Приоритет | Статус |
|----------|-------------|----------|--------|-----------|--------|
| Чекап | 120213249329150185 | $2 | $10 | средний | активен |
| Имплантация | 120213249329160185 | $3 | $10 | средний | активен |

Маппинг терминов бриф → внутренние:

  • Цель CPL из таблицы → целевой CPL направления (сравнивай с ним)
  • Бюджет из таблицы → плановый дневной бюджет направления (сумма adsets должна быть в пределах)
  • Campaign ID → ID кампании Facebook для этого направления
  • Дневной бюджет (общий) → плановый бюджет ВСЕГО аккаунта

Каждое направление:

  • = отдельная Facebook Campaign с фиксированным ID из таблицы
  • имеет СВОЙ целевой CPL (колонка "Цель CPL")
  • имеет СВОЙ дневной бюджет (колонка "Бюджет")
  • содержит МНОЖЕСТВО ad sets

ВАЖНО:

  • Бюджеты направлений НЕ суммируются — каждое управляется ОТДЕЛЬНО
  • Сумма бюджетов всех активных ad sets НЕ ДОЛЖНА превышать бюджет направления
  • Целевой CPL берётся из таблицы направлений, а НЕ из общего "Целевой CPL" аккаунта

Как работать:

  1. Для КАЖДОГО направления отдельно:

- Определи все ad sets через campaign_id из таблицы - Посчитай сумму бюджетов активных ad sets - Убедись, что сумма в пределах бюджета направления - Оценивай CPL относительно "Цель CPL" из таблицы

  1. При изменении бюджетов — проверяй итоговую сумму по направлению
  2. В отчёте группируй результаты ПО НАПРАВЛЕНИЯМ

Шаг 5: Health Score (5 компонентов)

HS ∈ [-100; +100] — сумма компонентов с учётом объёма и today-компенсации.

Компонент 1: CPL Gap к таргету (вес 45)

CPL vs TargetБаллы
Дешевле ≥30%+45
Дешевле 10-30%+30
В пределах ±10%+10 / −10
Дороже 10-30%−30
Дороже ≥30%−45

Компонент 2: Тренд (вес 15)

Сравнение 3d vs 7d:

  • Улучшение → + до 15
  • Ухудшение → − до 15

Компонент 3: Диагностика (до −30)

МетрикаУсловиеШтраф
CTR< 1%−8
CPM> медианы на ≥30%−12
Frequency 7d> 2−10

Компонент 4: Новизна (<48ч)

Мягчитель для новых связок: максимум −10 и/или множитель 0.7

Компонент 5: Объём — множитель доверия

0.6...1.0 (при показах < 1000 ближе к 0.6, при > 5000 ближе к 1.0)

Today-компенсация (УСИЛЕННАЯ)

Если показов сегодня ≥ 300 и CPL сегодня значительно лучше CPL вчера:

УсловиеЭффект
CPL сегодня ≤ 50% от CPL вчераПОЛНАЯ компенсация + бонус
CPL сегодня ≤ 70% от CPL вчераЧастичная компенсация 60%
CPL сегодня ≤ 90% от CPL вчера+5 баллов

ВАЖНО: Хорошие результаты СЕГОДНЯ перевешивают плохие ВЧЕРА!

Классы HS

КлассДиапазон
very_good≥ +25
good+5..+24
neutral−5..+4
slightly_bad−25..−6
bad≤ −25

Формула

HS = round((CPL_Gap + Trends + Diagnostics + Today_Adj) × Volume_Factor)

Шаг 6: Ad-Eater Detection (КРИТИЧНО!)

Ad-Eater = ОБЪЯВЛЕНИЕ (ad), не adset!

Пожиратели — это конкретные ОБЪЯВЛЕНИЯ внутри adset, которые тратят бюджет без результата.

Приоритеты обнаружения

ПриоритетУсловиеДействие
CRITICALCPL > 3× targetНемедленная пауза
HIGHZero leads при spend ≥ 2× targetПауза
HIGHCPL > 2× target И spend_share ≥ 50%Пауза
MEDIUMCPL > 1.5× target при spend_share ≥ 50%Пауза с осторожностью

Логика определения

Для каждого adset с ≥2 объявлениями:

  1. Получи данные по ads: get_insights(object_id=adset_id, level="ad", time_range="yesterday")
  2. Посчитай общие затраты: totalSpend = сумма spend всех ads
  3. Найди топ-спендера: объявление с максимальным spend
  4. Если topAd.spend ≥ 50% от totalSpend:

- Посчитай его CPL = spend / leads - Если CPL > target × 1.3 → это пожиратель

Структура данных ad-eater

Для каждого найденного пожирателя собери:

ПолеОписание
ad_idID объявления (для pause_ad)
ad_nameНазвание объявления
adset_idID родительского adset
adset_nameНазвание adset
spendПотрачено в долларах
leadsКоличество лидов (обычно 0)
total_ads_in_adsetВсего АКТИВНЫХ объявлений в этом adset
will_adset_be_emptyОстанется ли adset ПУСТЫМ после паузы ВСЕХ пожирателей

Действия для ad-eaters

Шаг 1. Проверь will_adset_be_empty:

Если НЕТ (останутся объявления): → Паузим объявление: pause_ad(ad_id="123456") → Adset продолжит работать с оставшимися объявлениями

Если ДА (adset останется пустым): → НЕ паузим объявление отдельно! → Решаем что делать с АДСЕТОМ целиком:

  • Если HS ≤ -25 (bad) → pause_adset(adset_id="...")
  • Если HS > -25 → оставить, упомянуть в отчёте

Шаг 7: Матрица действий по HS

HS КлассДействие
very_goodМасштабируй +10..+30%
goodДержи; при недоборе +0..+10%
neutralНаблюдение; пауза пожирателей
slightly_badСнижай −20..−40%; лечи креатив
badСнижай −50% ИЛИ пауза

Правила снижения по отклонению CPL

Формула: deviation = (CPL_actual - CPL_target) / CPL_target × 100%

Отклонение CPLДействиеПример
+10..+30%−15..−25%CPL $4.90 при цели $4 → −20%
+30..+50%−25..−35%CPL $5.50 при цели $4 → −30%
+50..+100%−35..−45%CPL $7 при цели $4 → −40%
+100..+200% (x2-3)−50%CPL $10 при цели $4 → −50%
>+200% (>x3)ПаузаCPL $15 при цели $4 → pause

ЗАПРЕЩЕНО

  • Снижать на −50% при отклонении < +100%
  • Снижать на −40% при отклонении < +50%
  • Паузить при отклонении < +200%

Минимальный бюджет

  • Минимум $3 (300 центов) на адсет
  • Если расчёт даёт меньше $3 → ставь $3

Шаг 8: Проверка креативов и предложение новых adsets

ОБЯЗАТЕЛЬНЫЙ ШАГ — выполняй ВСЕГДА!

8.1 Анализ креативов из конфига

Для каждого направления:

  1. Возьми список креативов из creatives.md для этого направления
  2. Сравни с названиями активных adsets (creative_tag в имени adset)
  3. Определи НЕИСПОЛЬЗУЕМЫЕ креативы

8.2 Условия для предложения новых adsets

УсловиеДействие
Есть неиспользуемые креативыПредложить создать adset
Освободился бюджет ≥ $10Предложить создать adset
Недобор бюджета < 95%Предложить создать adset

ВАЖНО: Даже если бюджет в норме (95-105%), но есть неиспользуемые креативы — ПРЕДЛОЖИ создать новый adset для тестирования!

8.3 Вывод в отчёте

Если есть неиспользуемые креативы, добавь секцию:

### Доступные креативы для тестирования

| Направление | Креатив | Статус | Рекомендация |
|-------------|---------|--------|--------------|
| Имплантация | video_kitchen_v2 | Не используется | Создать adset $15 |
| Виниры | video_smile_new | Не используется | Создать adset $10 |

Шаг 9: Балансировка бюджета по направлениям

Алгоритм

ШАГ 1. Для КАЖДОГО направления приведи сумму бюджетов к плану (с учётом коридора).

ШАГ 2. Проверь суммарный бюджет по аккаунту при необходимости.

Правило сохранения бюджета (КРИТИЧНО!)

При снижении/паузе ВСЕГДА перераспределяй освободившийся бюджет!

Расчёт освободившегося бюджета (freed_budget):

  • Снижение: было $50, стало $25 → freed = $25
  • Пауза: было $50 → freed = $50

Что делать с freed_budget:

ОсвободилосьДействие
< $10Добавь к существующим adsets (лучшим по HS)
$10-20Создай 1 новый adset
$20-35Создай 2 новых adset по $10-17
≥ $35Создай 3 новых adset по $10-15

ЕСЛИ креативов НЕТ → весь freed_budget распредели на существующие adsets с HS ≥ good

Коридор бюджета (95-105%)

После всех действий посчитай ИТОГОВУЮ сумму бюджетов направления:

Итоговая сумма vs планСтатусДействие
< 95% от планаОШИБКАДОБАВЬ действия (увеличение/создание)
95-105% от планаOKМожно выводить
> 105% от планаПЕРЕБОРСнизь худших

Best-of-bad логика

Если НЕТ adsets с HS ≥ +25:

  1. Найди adset с МАКСИМАЛЬНЫМ HS — это "best of bad"
  2. Используй его для добора: +10..+20% (не более +30%)
  3. В reason укажи: "Лучший из доступных"

Создание новых ad sets (при наличии креативов)

Когда создавать:

  • Освободился бюджет ≥ $10 (из снижения/паузы)
  • Есть креативы в .claude/ads-agent/config/creatives.md
  • Недобор бюджета по направлению (< 95% от плана)

Приоритет креативов (основная логика через /creative-analyzer):

ПриоритетТипУсловие
1Low RiskRisk Score 0-25 (🟢) — масштабировать
2Medium RiskRisk Score 26-50 (🟡) — использовать с мониторингом
3НовыеЕщё не использовались — для тестирования

Fallback (если /creative-analyzer недоступен):

  • Читай .claude/ads-agent/config/creatives.md напрямую
  • Приоритет: новые креативы первыми, остальные по порядку

ЕСЛИ креативов нет вообще → перераспредели freed_budget на существующие adsets.

Формат имени adset:

{creative_tag}_{YYYY-MM-DD}

Где creative_tag — название видео из конфига (поддержка кириллицы!).

Примеры:

  • Кухня_2026-01-21
  • Ванная_премиум_2026-01-21
  • Профимед_акция_2026-01-21

Параметры нового adset:

  • Бюджет: 1000-2000 центов ($10-20) — НЕ БОЛЬШЕ $20
  • За один запуск по направлению: max 3 новых adsets
  • Создавай ВНУТРИ существующей кампании направления (campaign_id из брифа)

MCP команда:

create_adset(
  account_id="act_XXX",
  campaign_id="123456",        # ID кампании направления из брифа
  name="Кухня_2026-01-21",     # creative_tag + дата (кириллица OK)
  daily_budget=1500,           # в ЦЕНТАХ! ($15)
  optimization_goal="OFFSITE_CONVERSIONS",
  billing_event="IMPRESSIONS",
  targeting={...}              # из config или default
)

Шаг 10: Формирование вывода (Markdown)

Сводка по направлениям

| Направление | Target CPL | Факт CPL | Бюджет план | Бюджет факт | Статус |
|-------------|------------|----------|-------------|-------------|--------|
| Имплантация | $4.00 | $3.50 | $100 | $98 | OK |
| Виниры | $5.00 | $7.20 | $50 | $52 | +44% |

Ad-Eaters (пожиратели)

| Ad ID | Ad Name | AdSet | Spend | Leads | CPL | Priority | Action |
|-------|---------|-------|-------|-------|-----|----------|--------|
| 123456 | Плохой креатив | Тест 1 | $25 | 0 | н/д | CRITICAL | Пауза |

Детали по направлению

| AdSet | HS | Класс | CPL | vs Target | Budget | Action |
|-------|---:|-------|----:|-----------|-------:|--------|
| Креатив 1 | +35 | very_good | $3.20 | -20% | $30 | +30% → $39 |
| Креатив 2 | -28 | bad | $8.50 | +70% | $25 | -40% → $15 |

Итоговые действия

| # | Направление | Тип | Object | Было | Станет | Причина |
|---|-------------|-----|--------|------|--------|---------|
| 1 | Имплантация | Budget+ | Креатив 1 | $30 | $39 | HS +35, CPL -20% |
| 2 | Имплантация | Budget- | Креатив 2 | $25 | $15 | HS -28, CPL +70% |

Вопрос пользователю

Выполнить действия? (да / нет / частично)

Шаг 11: Выполнение через MCP

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

# Изменение бюджета
update_adset(adset_id="123456", daily_budget=3900)

# Пауза adset
pause_adset(adset_id="789012")

# Пауза объявления
pause_ad(ad_id="345678")

# Создание нового adset (если есть креативы в конфиге)
create_adset(
  account_id="act_XXX",
  campaign_id="123456",
  name="Тест креативов #1",
  daily_budget=1500,
  optimization_goal="OFFSITE_CONVERSIONS",
  billing_event="IMPRESSIONS",
  targeting={...}
)

Шаг 12: Логирование в историю

После выполнения действий запиши в .claude/ads-agent/history/YYYY-MM/YYYY-MM-DD.md:

## {время} - Оптимизация {account_name}

### Анализ
- Направлений: 2
- AdSets проанализировано: 5
- Ad-eaters найдено: 1

### Действия

| Объект | Тип | Было | Стало | Причина |
|--------|-----|------|-------|---------|
| AdSet "Креатив 1" | Budget+ | $30 | $39 | HS +35, CPL -20% |
| Ad "Плохой креатив" | Pause | Active | Paused | Ad-eater, $25 без лидов |

Метрики для разных типов кампаний

WhatsApp (objective = "whatsapp")

  • Метрики: conversations_started (лиды), quality_leads (≥2 сообщения)
  • CPL = spend / conversations_started
  • Quality CPL = spend / quality_leads

Site Leads (objective = "site_leads")

  • Метрики: pixel_leads (через Facebook Pixel)
  • CPL = spend / pixel_leads

Lead Forms (objective = "lead_forms")

  • Метрики: form_leads (Instant Forms)
  • CPL = spend / form_leads

Instagram Traffic (objective = "instagram_traffic")

  • Метрики: link_clicks (переходы в профиль)
  • CPC = spend / link_clicks (НЕ CPL!)

ВАЖНО: Смотри на objective в каждом adset и используй соответствующие метрики!


Ограничения

  • Бюджеты в центах; диапазон: 300..10000 ($3..$100)
  • Повышение за шаг ≤ +30%
  • Снижение за шаг до −50%
  • Работай только с АКТИВНЫМИ кампаниями/ad sets
  • Включать кампании НЕЛЬЗЯ — только пользователь
  • Кампании с CBO и ad set с lifetime_budget НЕ трогаем

Таймфреймы и веса

Основной режим (overnight):

  • yesterday: 55%
  • last_3d: 30%
  • last_7d: 15%

Режим реального времени (midday):

  • today: 55%
  • yesterday: 30%
  • last_7d: 15%

Минимальная база для надёжных выводов: ≥1000 показов на уровне ad set.


Самопроверка перед выводом

  1. Для каждого направления посчитай итоговый бюджет с учётом всех действий
  2. Проверь что он в коридоре 95-105% от плана
  3. Если недобор > 5% → ДОБАВЬ действия (увеличение/создание)
  4. Если перебор > 5% → ДОБАВЬ снижения худших
  5. Убедись что ad-eaters обработаны
  6. Убедись что освобождённый бюджет перераспределён

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.01%
按下载量换算212

Claude

29.35%
按下载量换算173

Cursor

19.95%
按下载量换算117

Gemini CLI

9.79%
按下载量换算58

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

external-service

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills