Community编程与开发github.com

广告库周度差异分析

追踪竞争对手在Meta、Google、LinkedIn和TikTok公开广告库中的投放动态,生成周度对比报告——展示新增广告、已停止广告和新创意角度。使用Captapi API(MCP工具或REST方式结合CAPTAPI_API_KEY)。

广告库周度差异分析 是什么?

这个技能是一个广告情报监控工具,用于定期跟踪竞争对手在四大主流数字广告平台(Meta、Google、LinkedIn和TikTok)上的公开广告活动。它通过调用Captapi API获取每个竞争对手当前可见的广告,并与上周的快照进行比较,自动生成一份简洁的周度差异报告。报告会列出新增广告(包含文案摘要、格式、首次展示日期和来源端点)、已停止投放的广告(包括运行时间最长的那个)以及持续投放的广告。该技能支持MCP工具和REST API两种调用方式,并会在每次运行前估算所需的API积分并检查账户余额,防止意外超额。它还特别强调了各公开广告库的数据限制(如不包含普通商业广告的支出或转化数据、TikTok仅覆盖欧盟/英国/瑞士等),确保报告准确反映数据边界,并要求用户对竞争对手身份匹配和策略解读部分进行人工复核。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CDCStream/skills/tree/HEAD/skills/ad-library-weekly-diff

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

广告库周度差异分析 是做什么的?

从公开广告库中提取每个竞争对手当前可见的广告,与上周的快照进行比较,并撰写一份简短的报告,说明新增内容、已停止内容以及新广告的传播要点。

公开广告库能告诉你什么,不能告诉你什么

在每份报告中声明这些限制。不要让读者过度推断。

  • 公开广告库不显示普通商业广告的支出、曝光量或转化数据。Google仅针对选举广告发布支出和曝光量范围;Meta仅对部分欧盟投放广告和政客广告展示触达细分数据;LinkedIn仅对部分广告展示曝光量和定向信息。切勿根据广告数量估算预算或效果。
  • “不在库中”不等于“未投放广告”:广告库按国家范围划分,可能滞后一天或更长时间。
  • TikTok的广告库仅覆盖在欧盟/欧洲经济区、英国和瑞士展示的广告。在这些国家之外,请说“TikTok:未覆盖”——不要报告为零广告。
  • 广告的首次/最后展示日期为日历日,而非精确时间。

首先收集的输入

  1. 竞争对手:品牌名称,如果已知还需要其Meta页面URL、Google广告客户名称和LinkedIn公司名称。
  2. 国家(两位字母代码)。默认值:US。如果涉及TikTok,请添加一个欧盟/英国国家,例如GB或DE。
  3. 快照文件路径。默认值:工作目录中的ad-library-snapshot.json。
  4. 是否拉取新广告的详细信息和文案(消耗更多积分,但报告更优质)。

积分估算——运行前展示

每个竞争对手、每个国家:

步骤端点积分
查找Meta页面/v1/ad-library/facebook/search-companies2
Meta广告/v1/ad-library/facebook/company-ads2
查找Google广告客户/v1/ad-library/google/advertiser-search1
Google广告/v1/ad-library/google/company-ads2
LinkedIn广告/v1/ad-library/linkedin/search-ads2
TikTok广告(仅欧盟/欧洲经济区/英国/瑞士)/v1/ad-library/tiktok/search2(备用路径最多5)

即每个竞争对手每个国家约11积分(TikTok未覆盖时为9积分)。通过将页面ID和广告客户ID保存在快照中,后续运行可跳过查找步骤。

可选,仅针对新广告:详细信息(.../ad-details,每项2积分)和Meta广告文案(/v1/ad-library/facebook/ad-transcript,每项2积分)。对这些进行上限限制——例如每个竞争对手5条新广告——并在估算中说明。

打印估算值(竞争对手数 × 国家数 × 11,加上详情上限),并通过 GET /v1/account/balance(免费)检查余额。在消费前要求用户确认。

如何调用Captapi

两种方式均可;使用环境中可用的方式。

  • MCP: 以端点命名的工具,例如facebook_ad_library_company_ads、google_ad_library_company_ads、linkedin_ad_library_search_ads、tiktok_ad_library_search。
  • REST: GET https://api.captapi.com<path>?<params>,附带请求头Authorization: Bearer $CAPTAPI_API_KEY。

失败的调用不消耗积分。retryable: true的错误可在短暂等待后重试一次;retryable: false为最终答案——记录下来,不要循环。

步骤

  1. 加载快照(如果存在)。该快照映射competitor → country → library → {ids: [...], meta: {...}}以及保存的查找ID。
  2. 解析ID仅当快照中没有对应ID时:
    • Meta:facebook/search-companies?q=<brand>&country=<cc> → 选择名称匹配的页面;保留其pageId。如果多个看起来正确,请询问。
    • Google:google/advertiser-search?q=<brand>&country=<cc> → 保留匹配结果的广告客户ID。
  3. 拉取当前广告针对每个竞争对手和国家:
    • facebook/company-ads?url=<pageId或页面URL>&country=<cc>&status=active
    • google/company-ads?advertiser=<广告客户ID或名称>&country=<cc>
    • linkedin/search-ads?company=<名称>&country=<cc>
    • tiktok/search?q=<brand>&country=<cc> — 仅用于欧盟/欧洲经济区/英国/瑞士。
  4. 按广告ID与快照进行差异对比:new(现在有,之前没有)、stopped(之前有,现在没有)、continuing。
  5. 丰富新广告信息,不超过约定的上限:.../ad-details获取日期和媒体信息,facebook/ad-transcript获取Meta标题/正文/CTA/落地页URL。
  6. 编写报告(格式如下)并保存新快照——仅在报告编写完成后执行,这样失败的运行不会覆盖上周的快照。

报告格式

针对每个竞争对手:

  • 每个广告库一行:新增 N · 停止 N · 运行中 N,或说明缺失原因(此国家未覆盖、查找失败、未找到广告)。
  • 新广告: 标题或文案第一行、格式(图片/视频/轮播)、首次展示日期、落地域名以及来源端点,例如(来源: /v1/ad-library/facebook/company-ads)。
  • 主题: 新广告共有的角度(优惠、受众、产品)的2–4条要点。每条标记为[需人工审核]——此为解读性内容。
  • 已停止广告: 数量,以及停止运行时间最长的广告。

以以上限制部分、本次运行的总积分概览以及快照路径作为结尾。

需要人工审核的地方

  • 当查找结果返回多个选项时,哪个页面或广告客户是“那个”竞争对手。
  • 每个关于主题或策略的声明——广告库展示的是创意,而非意图。
  • 任何关于预算或效果的结论:没有相关数据;报告必须明确说明这一点,而不是猜测。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能