2026-10-01 · 原文发布日
n8n模板:每日监测Meta广告花费异常与素材疲劳
每天上午定时运行,按配置的广告账户逐个从Meta Graph API拉取昨日账户指标、在投广告明细和近七天基线,对比后标记花费骤升骤降、CPA飙升、点击率下滑、CPM异常、无结果或缺数据等问题,并依据频次和点击率走势识别素材疲劳。发现异常时交给OpenAI(gpt-4o-mini)生成简短诊断和按优先级排序的处置建议,疲劳时还附新创意点子,最后连同广告后台链接发到Slack;一切正常也可发平安报,流程出错另有错误告警。阈值、回看天数、目标CPA都集中在配置里。
原文要点
该模板每天上午9点(cron)运行,对配置中的每个Meta广告账户生成“昨日”与7天回看窗口,经Meta Graph API拉取账户级日指标、在投广告级日指标和7天广告汇总基线,对比后标记花费骤升骤降、CPA飙升、CTR下滑、CPM异常、无结果或缺数据,并按频次与CTR走势识别素材疲劳。发现异常交OpenAI gpt-4o-mini生成简短诊断、按优先级排序的处置建议,疲劳时附新创意点子,连同Ads Manager链接发到Slack;一切正常可发平安报;流程失败有错误告警。阈值、回看天数、最低花费、目标CPA、频次阈值、最多疲劳广告数都集中在配置节点。Meta令牌用HTTP Header Auth凭据接到三个HTTP Request节点。
这次做成什么
在n8n上搭建这条“每日Meta广告异常+素材疲劳监测”流程,先用合成指标数据离线验证判定逻辑,再接真实Graph API跑通Slack告警。
准备什么
- 拥有目标广告账户读取权限的Meta访问令牌(ads_read权限)
- 可调用gpt-4o-mini的OpenAI API Key
- Slack工作区及OAuth2凭据与告警频道ID
- 可运行定时任务的n8n实例(Cloud或自托管均可)
具体怎么做
集中配置账户与阈值
在配置节点填入广告账户ID列表(act_开头)、客户名、投放目标、目标CPA、默认Slack频道、货币符号和action_types;同一处设置回看天数7、最低花费、花费/CPA/CTR/CPM阈值、频次阈值和max fatigued ads。把每个判断阈值写成可改参数,不要散落到后续节点。
接Meta Graph API三个请求
创建HTTP Header Auth凭据(Authorization: Bearer 你的令牌),接到三个HTTP Request节点:账户级昨日指标、在投广告级昨日指标、7天广告汇总基线。练习期先不连真接口,用Code节点输出下方合成数据代替响应,验证后续比较逻辑。
实现异常与疲劳判定
用Code节点对每条广告比较昨日与7天日均:花费变化超阈值记spend_spike/drop,CPA超目标记cpa_spike,CTR低于基线记ctr_drop,CPM异常记cpm_spike,昨日无转化记no_results,任一指标缺失记missing_data;频次超阈值且CTR较基线下滑判定creative_fatigue。把命中的问题汇成数组。
AI诊断与Slack输出
有问题时把账户名、命中问题、关键数字发给OpenAI节点(gpt-4o-mini),用下方提示词生成短诊断和按优先级排序的建议,疲劳时要求附新创意点子;格式化后连同Ads Manager链接发Slack。无问题按配置发平安报。再加Error Trigger节点把流程错误发到错误告警频道。
可直接复制的材料
集中配置示例(Code节点输出)
本站设计的练习配置,账户ID、频道ID、阈值均为演示值,请替换为你的真实配置。
return [{json: {
accounts: [{id: "act_1234567890", clientName: "演示客户", goal: "purchase", targetCpa: 80, currency: "¥"}],
lookbackDays: 7,
minSpend: 50,
thresholds: {spendChangePct: 0.5, cpaSpikePct: 0.3, ctrDropPct: 0.25, cpmSpikePct: 0.4, frequencyMax: 3.0},
maxFatiguedAds: 5,
slackChannel: "C0DEMO123",
sendAllClear: true
}}];发给gpt-4o-mini的诊断提示词
本站独立编写的提示词,findings为上一步汇总的问题数组,需在n8n表达式中正确引用。
你是投放优化师。根据以下JSON中的广告账户异常数据,输出:1)一句话诊断(不超过60字);2)按优先级排序的处置建议,每条一行,以【高】【中】【低】开头并给出具体动作;3)若存在creative_fatigue,额外给2条新素材创意方向。不要复述原始数字表格,不要输出JSON,直接用中文短句。数据:{{ $json.findings }}练习用合成指标数据
本站虚构数据:ad_01花费翻倍、CPA超目标65%、CTR腰斩且频次3.4,应同时触发多条告警与疲劳判定;ad_02正常。
{"yesterday":[{"adId":"ad_01","name":"春季视频A","spend":620,"cpa":132,"ctr":0.008,"cpm":58,"frequency":3.4,"results":4},{"adId":"ad_02","name":"图文轮播B","spend":310,"cpa":62,"ctr":0.021,"cpm":31,"frequency":1.6,"results":5}],"baseline7d":[{"adId":"ad_01","spend":300,"cpa":85,"ctr":0.019,"cpm":40,"frequency":2.2},{"adId":"ad_02","spend":305,"cpa":60,"ctr":0.02,"cpm":30,"frequency":1.5}]}输入与输出示例
本站虚构演示,非作者模板真实运行结果;百分比为按合成数据计算。
输入
用上方合成数据跑比较逻辑:ad_01昨日花费620对比基线300,CPA 132对比目标80,CTR 0.008对比基线0.019,频次3.4。对应输出
findings输出ad_01命中spend_spike(+107%)、cpa_spike(+65%)、ctr_drop(-58%)、creative_fatigue(频次3.4>3.0且CTR下滑);ad_02无异常。Slack收到:【演示客户】广告告警——诊断:视频A成本失控且素材疲劳。建议:【高】暂停或降预算视频A;【高】替换新素材;【中】复盘受众定向。创意:试试UGC开箱角度、对比类口播。附Ads Manager链接。做完检查这些
- 合成数据中ad_01应同时命中花费骤升、CPA超标、CTR下滑和素材疲劳四类问题
- ad_02指标正常时不产生任何告警条目,且开启sendAllClear时Slack收到平安报
- 阈值改为更宽松数值(如spendChangePct调为2.0)后ad_01的花费告警应消失
- 人为断开Slack凭据后Error Trigger把流程错误发到错误告警频道
容易卡住的地方
- Meta令牌需要对应广告账户的读取权限,令牌过期或权限不足会让三个HTTP节点全部失败
- 作者设定每天上午9点运行,时区以n8n实例配置为准,跨时区团队需核对
- 昨日数据在上午拉取时可能尚未完全归因,极端波动需人工复核再动手调预算
- 精确的花费与CPM数字来自平台返回,流程只负责比较,不保证平台数据无延迟
- OpenAI与Slack各自可能收费,告警频率过高也会增加模型调用成本
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Detect Meta Ads spend anomalies and creative fatigue with OpenAI and Slack
- 原作者
- Rahul Joshi
- 原始发布日期
- 2026-10-01T07:17:08.357Z
- 来源
- https://n8n.io/workflows/20270