关于 pp-meta-ads
pp-meta-ads 是面向营销人员和 Agent 的 Meta 广告只读命令行技能,可分析广告创意疲劳、受众重叠、学习阶段和归因差异,并支持本地数据查询。
主要功能
- 01创意疲劳与衰退诊断
- 02受众重叠分析
- 03学习阶段故障排查
- 04支出与归因核对
- 05广告状态盘点
适用场景
- 01决定哪些广告创意应更新
- 02检查相似受众的重叠
- 03找出长期处于学习阶段的广告组
- 04审计每日支出差异
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-meta-ads安装后在 Claude Code 中输入/pp-meta-ads确认已加载。
详细介绍
Meta Ads — Printing Press CLI
前提条件:安装 CLI
此技能使用 meta-ads-pp-cli 二进制文件。**在调用此技能中的任何命令之前,必须确认 CLI 已安装。**如果尚未安装,请先安装:
- 通过 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到
$HOME/.local/bin;在 Windows 上,默认安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install meta-ads --cli-only - 验证:
meta-ads-pp-cli --version - 确保报告的安装目录已加入将调用此技能的 Agent/运行时的
$PATH。
如果 npx 安装失败(没有 Node、处于离线状态等),请改用直接通过 Go 安装(需要 Go 1.26.6 或更高版本)。此安装方式会将程序安装到 $GOPATH/bin(默认为 $HOME/go/bin),因此请将该目录加入 $PATH:
go install github.com/mvanhorn/printing-press-library/library/marketing/meta-ads/cmd/meta-ads-pp-cli@latest
如果安装后 --version 报告“command not found”,则运行时无法在 $PATH 中找到二进制文件目录。验证成功之前,请勿继续运行此技能中的命令。
何时使用此 CLI
当你需要对 Meta 广告账户进行创意疲劳诊断、受众重叠图谱分析、学习阶段取证或归因漂移检测时,请使用此 CLI。最好配合每日同步到本地存储使用,以便即时查询趋势。此 CLI 专为只读设计,绝不会用于修改广告系列、预算或受众。
禁用场景
请勿在以下情况使用此 CLI:
- 请勿使用此 CLI 创建、暂停、修改或删除广告系列、广告组、广告、受众或创意——它是只读的。
- 请勿使用此 CLI 管理预算或更改竞价策略——这些操作应使用 Meta Ads Manager 或 facebook-business-sdk。
- 请勿使用此 CLI 上传受众数据——根据客户文件创建自定义受众不在此工具的范围内。
独有功能
其他任何用于此 API 的工具都不具备这些功能。
可累积的本地状态
-
fatigue— 在可配置的时间窗口内,检测 CPM 上升、频次增加且 CTR 下降的广告。利用此功能判断应停投哪些广告。继续投放疲劳创意,是任何账户中最值得优先避免的浪费。
meta-ads-pp-cli fatigue --campaign 23847265 --window 14d --agent -
decay— 对比某个创意的首次展示 CTR 与当前 CTR,并预测失效日期。用于判断是否停投或刷新单个创意。变化趋势和预测的失效日期是决策的关键因素。
meta-ads-pp-cli decay --creative-id 120208734567 --agent -
overlap— 计算自定义受众之间的两两重叠百分比,并提供蚕食效应建议。当广告策略趋于成熟,但相似受众之间的 ROAS 似乎被稀释时使用。可帮助判断是否合并或排除受众。
meta-ads-pp-cli overlap --audience 23847001 --audience 23847002 --audience 23847003 --agent -
learning— 找出卡在算法学习阶段超过 N 天的广告组,并提示根本原因(预算过低、受众过窄、事件过少)。当多个广告组的 ROAS 同时骤降时使用。卡在学习阶段的广告组会消耗预算,却无法实现优化。
meta-ads-pp-cli learning --account act_4327210487520472 --min-days 7 --agent
取证查询
-
reconcile— 按日对比 Meta 报告的账户支出与洞察数据支出总额;标记归因漂移超过阈值的日期。每月用于归因审计。可找出 Meta 报告与洞察数据不一致的具体日期,通常是由转化归因延迟导致。
meta-ads-pp-cli reconcile --account act_4327210487520472 --since 30d --threshold 5 --agent -
bottleneck— 按 ROAS 从低到高排列支出最高的广告组,并通过连接学习状态与有效状态提供“原因”列。每周用于判断应暂停哪些广告组。优先显示影响最大的目标。
meta-ads-pp-cli bottleneck --account act_4327210487520472 --limit 10 --agent
账户健康状况
-
stale— 找出 N 天内展示次数为零的活跃广告。每季度用于检查账户健康状况。展示次数为零的活跃广告通常是配置错误,或是删除后仍残留的僵尸广告。
meta-ads-pp-cli stale --days 90 --agent -
inventory— 按 effective_status 对账户中的所有广告分组,找出配置状态为 'ACTIVE'、但 effective_status 为 'WITH_ISSUES' 或 'DISAPPROVED' 的广告。每天早上第一件事就运行。已拒登但仍处于 ACTIVE 状态的广告会产生实际支出,却无法投放。
meta-ads-pp-cli inventory --account act_4327210487520472 --by effective_status --agent
命令参考
adcreatives — 管理广告创意
meta-ads-pp-cli adcreatives <adId>— 获取附加到广告的创意
ads — 广告级读取操作
meta-ads-pp-cli ads <adAccountId>— 列出广告账户中的广告
adsets — 广告组级读取操作
meta-ads-pp-cli adsets <adAccountId>— 返回广告组及其定向摘要、预算、优化目标和竞价策略。
campaigns — 广告系列级读取操作
meta-ads-pp-cli campaigns <adAccountId>— 返回广告系列及其状态、目标和预算元数据。
customaudiences — 管理自定义受众
meta-ads-pp-cli customaudiences <adAccountId>— 列出广告账户中的自定义受众
delivery-estimate — 管理投放估算
meta-ads-pp-cli delivery-estimate <adAccountId>— 获取覆盖人数/展示次数投放估算
insights — 成效和投放洞察(创意疲劳观测台)
meta-ads-pp-cli insights get-account— 返回整个广告账户的汇总洞察。meta-ads-pp-cli insights get-ad— 广告级洞察,包含一段时间内的频次、CPM 和 CTR。meta-ads-pp-cli insights get-ad-set— 获取广告组级洞察meta-ads-pp-cli insights get-campaign— 获取广告系列级洞察
me — 管理个人信息
meta-ads-pp-cli me— 返回访问令牌获准访问的所有广告账户。
查找合适的命令
知道要做什么,但不确定该用哪个命令时,可以直接询问 CLI:
meta-ads-pp-cli which "<capability in your own words>"
which 会根据自然语言能力查询,从此 CLI 精选的功能索引中找出最匹配的命令。退出代码 0 表示至少找到一个匹配项;退出代码 2 表示没有可靠匹配项——请改用 --help 或缩小查询范围。
操作示例
排查广告系列中的创意疲劳
meta-ads-pp-cli fatigue --campaign 23847265 --window 14d --agent --select ad_id,ad_name,cpm_slope,frequency_now,ctr_slope,verdict
每个广告返回一行,包含 CPM 趋势、当前频次、CTR 趋势以及停用/保留判定。只选择与疲劳相关的字段以缩小输出范围,控制 Agent 上下文的大小。
查找受众相互蚕食风险
meta-ads-pp-cli overlap --audience 23847001 --audience 23847002 --audience 23847003 --agent
返回成对受众的重叠百分比和相应建议。任何高于 30% 的重叠都可以考虑合并或排除。
找出卡在学习阶段的广告组
meta-ads-pp-cli learning --account act_4327210487520472 --min-days 7 --agent
显示 learning_stage_info 中的 LEARNING 状态持续超过 7 天的广告组。“why”列会提示预算、受众或事件数据稀疏等原因。
每日开始时汇总广告库存
meta-ads-pp-cli inventory --account act_4327210487520472 --by effective_status --agent
按 effective_status 对所有广告分组。处于 DISAPPROVED 状态但配置为 ACTIVE 的类别,是每日检查中最值得优先处理的发现。
月度支出核对
meta-ads-pp-cli reconcile --account act_4327210487520472 --since 30d --threshold 5 --agent
逐日比较 Meta 报告的账户支出与过去 30 天洞察支出总和之间的差额。标记偏差超过 5% 的日期。
身份验证设置
通过 META_ACCESS_TOKEN 环境变量使用 Meta 访问令牌进行身份验证。临时使用时,可从 Graph API Explorer 生成令牌(User Access Token,有效期 1–2 小时);重复使用时,可使用 Business Manager System Users(无有效期)。仅授予 ads_read 权限——切勿授予 ads_management 或任何写入权限。通过 /me/adaccounts 发现令牌可访问的所有账户;无需配置账户 ID。
运行 meta-ads-pp-cli doctor 验证设置。
Agent 模式
在任意命令中添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。
-
可通过管道处理 — JSON 输出到 stdout,错误输出到 stderr
-
可筛选 —
--select保留字段子集。点分路径可深入嵌套结构;数组会逐元素遍历。对于输出冗长的 API,这对控制上下文大小至关重要:meta-ads-pp-cli ads mock-value --agent --select id,name,status -
可预览 —
--dry-run显示请求但不发送 -
适合离线使用 — 有本地 SQLite 存储时,同步/搜索命令可以使用该存储
-
非交互式 — 从不提示输入,所有输入均通过标志提供
-
只读 — 不要使用此 CLI 执行创建、更新、删除、发布、评论、点赞、邀请、下单、发送或其他会修改数据的请求
响应封装
从本地存储或 API 读取数据的命令会将输出封装在来源信息中:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
从 .results 解析数据,并通过 .meta.source 判断数据来自实时数据还是本地数据。只有当 stdout 是终端且未设置任何机器格式标志(--json、--csv、--compact、--quiet、--plain、--select)时,才会向 stderr 输出便于人类阅读的 N results (live) 摘要;管道或 Agent 消费者以及显式指定格式的运行会在 stdout 输出纯 JSON。
Agent 反馈
当你(或 Agent)发现这个 CLI 有不对劲的地方时,请记录下来:
meta-ads-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
meta-ads-pp-cli feedback --stdin < notes.txt
meta-ads-pp-cli feedback list --json --limit 10
条目保存在本地的 ~/.local/share/meta-ads-pp-cli/feedback.jsonl。只有在设置了 META_ADS_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 META_ADS_FEEDBACK_AUTO_SEND=true 时,才会 POST 这些条目。默认情况下,数据只保存在本地。
记录让你感到意外的地方,而不是提交错误报告。简短、具体、一行即可:这才是能不断积累的部分。
输出交付
每条命令都接受 --deliver <sink>。输出除了(或取代)stdout 外,还会发送到指定的目标,因此 Agent 无需手动通过管道传递,就能转发命令结果。支持三种目标:
| 目标 | 效果 |
|---|---|
stdout | 默认;仅写入 stdout |
file:<path> | 将输出原子性地写入 <path>(临时文件 + 重命名) |
webhook:<url> | 将输出正文 POST 到该 URL(使用 application/json,或在指定 --compact 时使用 application/x-ndjson) |
遇到未知方案时,系统会拒绝请求,并返回列出受支持方案的结构化错误。Webhook 请求失败时会返回非零状态,并在 stderr 中记录 URL 和 HTTP 状态码。
命名配置
配置档案是一组已保存的标志值,可在多次调用中重复使用。当定时运行的 Agent 每次都以相同配置调用同一命令时,可以使用它——这就是 HeyGen 的 “Beacon” 模式。
meta-ads-pp-cli profile save briefing --json
meta-ads-pp-cli --profile briefing ads mock-value
meta-ads-pp-cli profile list --json
meta-ads-pp-cli profile show briefing
meta-ads-pp-cli profile delete briefing --yes
显式标志的优先级始终高于配置档案值;配置档案值的优先级高于默认值。agent-context 会在 available_profiles 下列出所有可用配置档案,让 Agent 能在运行时发现它们。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误(参数错误) |
| 3 | 未找到资源 |
| 4 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 请求频率受限(请等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示meta-ads-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参阅上文的前置要求 - 其他任何内容 → 直接使用(作为带有
--agent的 CLI 命令执行)
安装 MCP 服务
- 安装 MCP 服务:
go install github.com/mvanhorn/printing-press-library/library/marketing/meta-ads/cmd/meta-ads-pp-mcp@latest - 在 Claude Code 中注册:
claude mcp add meta-ads-pp-mcp -- meta-ads-pp-mcp - 验证:
claude mcp list
直接使用
- 检查是否已安装:
which meta-ads-pp-cli如果未找到,请提供安装选项(参阅本技能顶部的前置要求)。 - 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
- 使用
--agent标志执行:meta-ads-pp-cli <command> [subcommand] [args] --agent - 如果存在歧义,请查看子命令帮助:
meta-ads-pp-cli <command> --help。