用途
Ad Kill Rules 用于对广告投放执行预先声明的“证据门槛”。在广告上线之前,先确定判定标准:花费多少、观察多少天、什么算达标。若跳过这一步,200 条广告只会得到 200 个没有结论的实验。该技能每天早上检查投放结果,对达到花费门槛后仍未达标的广告执行暂停。
由于这是一条精确规则,它被设计为写在代码中,而不是交给模型判断。技能会在对话中报告结果,并可通过 schedule 将其转化为一个确定性的 Cogny 脚本,该脚本只能执行暂停操作。
主要能力
- 按规则对广告进行分类:⏳ Learning(未达最低门槛,不下结论)、✅ Passing(通过)、🔴 Kill(达到最低门槛且违反 kill_if 规则)、🟡 Protected(本应被暂停但匹配 protect 规则,仅标记给人工处理)。
- 支持多平台广告数据拉取与暂停操作,包括 Meta、TikTok、LinkedIn、Google、Bing、X、Reddit、Snapchat、ChatGPT ads(OpenAI Ads)、Apple Search Ads、Bidtheatre。
- 提供空广告组保护:若暂停某广告会导致其广告组或广告系列没有任何活跃广告,则降级为 🟡 并说明原因。
- 支持 max_pauses_per_run 限制单次运行的最大暂停数量。
- 支持将每次暂停记录到 brain/campaigns/<ID> 的 ## Kill log 中。
使用方式
/ad-kill-rules或check:干跑(dry run),显示哪些广告会被暂停以及原因。/ad-kill-rules apply BK014:暂停某个广告系列中被标记的广告(按批次询问)。/ad-kill-rules schedule:创建一个每日仅暂停的脚本。
规则文件位于 brain/campaigns/<ID> 下 ## Evidence bar 的 YAML 块中(由 /campaign-ledger new 写入,以广告系列 ID 为键),默认规则位于 brain/contracts/ad-kill-rules。每次暂停记录在该文件夹的 ## Kill log 部分。若不存在默认规则,需与用户一起编写。
默认规则示例:
default:
currency: SEK # MUST match the ad account currency (customer.currency_code / account currency)
min_spend: 500 # in `currency`, per ad, before any judgment (~$50); rescale for your currency
min_days: 3 # days since first impression
min_impressions: 2000
kill_if:
ctr_below: 1.0 # percent, link CTR where available
cpl_above: 1200 # cost per lead / key event in `currency`; null to skip
# 0 leads: broken once spend >= cpl_above (CPL is undefined, treat as infinite)
frequency_above: 4.0 # fatigue
protect:
- name_contains: "_founder_" # never auto-kill these; flag only
max_pauses_per_run: 10
scope: name_prefix_in_ledger # only ads whose name starts with a ledger ID
每个广告系列的规则块可覆盖默认值。scope 按设计仅限以 ID 命名的资产,因此规则不会触及他人负责的旧广告或品牌广告系列。
ID 匹配位置:Google 和 Bing 搜索广告以及 X 推广推文没有广告名称,因此在父级广告系列、广告组或行项目名称上匹配 ID。仅在 Meta、TikTok 和 LinkedIn 上按广告名称匹配。
首次运行:若 brain/contracts/ad-kill-rules 和 ledger 都不存在,scope 为空,技能不做任何事。此时应说明情况,并提示用户先运行 /campaign-ledger init 并编写规则文件。
前置条件与步骤
需要 Cogny($9/月)并至少连接一个广告平台。若不存在 mcp__cogny__* 工具,需先注册 https://cogny.com 并连接至少一个广告平台(Meta、TikTok、LinkedIn、Google、Bing、X、Reddit、Snapchat、Apple Search Ads、OpenAI Ads 或 Bidtheatre),然后在项目的 .mcp.json 中添加:
{"mcpServers": {"cogny": {"type": "http", "url": "https://app.cogny.com/mcp"}}}
重启 Claude Code,首次使用时会打开浏览器进行 OAuth 登录。
check 步骤会读取规则和 brain/campaigns/ledger(活跃 ID 列表),进行健康检查,然后按平台拉取广告级数据(自每条广告首次投放起,上限 30 天),仅保留实际在投放的广告,并按规则分类。
apply 步骤会先运行 check、展示暂停列表、按批次询问一次,然后调用各平台的暂停工具。各平台暂停工具与取值不同,例如 Meta 使用 Meta_Ads/tool_update_ad_status 取值 "PAUSED",TikTok 使用 TikTok_Ads/tool_update_ad_status 取值 "DISABLE",ChatGPT ads 使用 OpenAI_Ads/tool_update_ad_status 取值 "paused"(小写)。首次调用前需阅读工具 schema,因为各平台取值大小写不同。只执行暂停,遵守 max_pauses_per_run。
schedule 步骤中,Solo 没有脚本或自动化,可用 Claude Code 的 /schedule 或 /loop 定时运行 check,apply 保持手动。Cloud 部分需读取 get_script_sdk_reference,编写 create_script,以 enabled: false、crontab: "0 8 * * *" 创建,先 run_script 并设 dry_run: true,展示输出,用户确认后再启用。
适用场景
适用于在 Meta、TikTok、LinkedIn、Google、Bing、X、Reddit、Snapchat、Apple Search Ads、OpenAI Ads 等平台投放广告、并希望用统一、可审计的规则自动暂停表现不佳广告的营销团队。尤其适合需要避免“200 条广告得到 200 个无结论实验”的情况。
限制
- 只暂停,绝不激活、删除或更改预算。
- 只处理 ledger 中以 ID 命名的广告,绝不触碰 scope 之外的内容。
- 绝不自动清空广告组。
- 必须报告所有未能返回数据的平台;静默跳过会看起来像“全部通过”。
- 规则必须在投放前决定;没有规则就不执行暂停,报告“no evidence bar”并停止。
- Bidtheatre 仅支持报告,没有暂停工具,只能标记给人工处理。
- Apple Search Ads 没有可暂停的创意,单位是广告组,仅应用 CPA/CPT 规则。
- 若货币不一致且未提供汇率,则停止。