从 Facebook ad spy 到「达人间谍」:带自动刷新的 watchlist
Meta Ad Library 告诉你今天在跑什么广告。更难回答的问题——「自上次查看以来什么变了?」——才是一个带自动刷新的 watchlist 真正在解决的事。
为什么有这篇
「ad spy」到底解决什么
Meta Ad Library 展示此刻在跑的广告创意。这回答了「现在在跑什么?」, 但没回答「什么变了?」——而后者才是大多数竞品研究工作流真正在问的问题。 真正有用的那一步,是底下的循环任务:每天重新检查每一个广告主、存下快照, 下次人类打开仪表盘时只展示 delta。
这种循环检查的模式是可移植的。只要 (a) 平台公开每个实体的数据、 (b) 数据按人在意的时间尺度变化、(c) 轮询成本可控,就能用。TikTok 上的达人合作三项全中。
TikTok 版的同一套工作流
在 TikTok 上,「我的竞品在跑什么新广告?」对应的问题是: 「我的竞品在投哪些新赞助贴,通过哪些达人?」KOLens 的 watchlist 条目跟踪达人 (或者反过来用,跟踪一个竞品品牌的合作方)。每条目有一列 next_refresh_at;watchlist refresh 调度器每分钟 tick 一次, 挑出到期的条目,通过 Apify TikTok actor 重抓,写一条新的 KOLSnapshot,把计时器推后 24 小时。
信号基于事实触发,不是关键词
Google Alerts 和大多数「ad spy」RSS 订阅在文本上匹配。一个跑在底层平台数据上的 watchlist 能做得更好——它知道真实的数字,所以它触发的信号是确定的, 不是模糊的:
- rising_kol —— 粉丝增量越过增长检测器的阈值 (workspace 内可配)。
- trending_video —— 单条视频的播放速度超过该达人 90 天基线。
- new_sponsored —— 近 14 天至少一条 #ad / #sponsored 贴。
- new_contact —— 加星后浮出来一个商务邮箱。
- dormant —— >14 天没发帖。用来抓那些品牌合作结束后停更的达人。
- no_outreach —— 你的 CRM 线程空着或者上次 >30 天前。Watchlist 在这种情况下会催你。
刷新循环具体怎么跑
- 调度器 tick —— API 进程里一个 in-process asyncio loop 每 60 秒醒一次。整个部署内单 owner(这个 loop 由
WATCHLIST_REFRESH_SCHEDULER_ENABLED守门, 以便未来多副本部署可以选举出一个 owner)。 - 挑出到期条目 —— 一条索引查询:
SELECT * FROM watchlist_entries WHERE next_refresh_at <= now(), 按每 tick 的上限(当前 20)截断,把 Apify 花费控制住。 - 提前扣 credits —— 每个 handle 的 helper 通过共享的
charge_for_scrape计费路径扣费。Apify 失败时自动退款。 - Apify 重抓 —— 对这个 handle 跑
clockworks/tiktok-scraperactor, 默认max_videos=10。结果落入DBAuthor+DBVideo,URL 是新鲜的。 - 写一条快照 —— 在
KOLSnapshot里写一行,含粉丝数、平均播放、互动率。 增长检测器下个 tick 读这条,越过阈值就触发预警。 - 推后计时器 ——
next_refresh_at = now() + 24h。这条目从挑选窗口里掉出去直到明天。
成本算给你看
一次刷新 = 一次 Apify actor run = 1 个 credit(默认 max_videos=10)。30 条目的 watchlist 每天全刷一次 = 30 credits/天,约 900/月。按当前 $0.01/credit,一份 100% 监控、30 个 handle 的竞品列表是 $9/月。相对它替代掉的运营工时来说很便宜——而且开销有上限, 因为调度器每分钟最多挑 20 条目,不管列表有多大。
什么时候不该用这个
- 你真的需要 Meta 付费广告创意(Facebook 信息流里跑的展示广告 / 视频广告)。直接用 Meta Ad Library—— KOLens 不接入。
- 你需要 实时(分钟级,不是 24 小时)的预警。 Watchlist 刷新节奏是每天;按事件触发的逻辑由 alerts/webhook 子系统负责(它在增长预警计算出来时触发),但只针对已经在 watchlist 上的 handle。
- 你只想 一次性 关心一个达人(外联前的尽调)。 用 dossier 页面(
/k/{handle})—— 没有 watchlist 的刷新成本,从缓存数据渲染。
怎么搭一个
把一个竞品品牌的 TikTok handle 丢进 dossier,点开「合作达人」标签, 给你想跟踪的 handle 加星。或者跳过品牌、直接把达人 handle 贴进 /watchlist/add。无论哪种方式,每个条目的 next_refresh_at 都被设置成「现在」,所以第一次刷新会在下一个 scheduler tick 触发。周一早上回来看;那些挂着鲜亮信号徽章的行, 就是周末真正动过的。
常见问题
- KOLens 有 Facebook Ad Library 的对标产品吗?
- Facebook 本身没有——KOLens 聚焦在 TikTok / Instagram / X / 抖音。我们具备的是 ad-spy 工具普及起来的那种工作流形态:监控一组竞品、自动刷新、只展示 delta。我们把这套用在达人合作上(TikTok 品牌如今在这里投钱,而不是纯粹买信息流广告),而不是用在信息流广告创意上。
- Watchlist 多久自动刷新一次?
- 默认每条目每 24 小时一次。调度器挑出 next_refresh_at 已过的行,通过 Apify 流水线重抓,写一条新的 KOLSnapshot,跑增长检测器,把 next_refresh_at 推后 24 小时。如果你想让某些广告主刷得更勤,可以按 watchlist 单独设置节奏。
- 刷新时什么算「新」?
- 你打开 watchlist 时会计算六类信号:rising_kol 和 trending_video 来自增长检测器,dormant 表示 >14 天没更新,new_sponsored 表示近 14 天有 is_ad / is_sponsored 贴出现,new_contact 表示加星后才浮出来的邮箱,no_outreach 表示 CRM 会话空着或 >30 天没动。带高严重度信号的行自动排到最上面。
- 怎么把竞品品牌加进 watchlist?
- 两种方式:直接按 handle 加(把达人 URL 贴进 /watchlist/add),或者反过来从竞品入手——把竞品 TikTok handle 丢进 dossier,调出「谁跟他合作」的列表,给你想跟踪的合作方加星。Watchlist 行是长期观察岗位;dossier 是一次性查询。
- 和设置 Google Alert 有什么区别?
- Google Alerts 在文本匹配上触发——对追新闻有用,对「某达人今早是不是又挂了 TikTok Shop 链接」无用。Watchlist 跑在真实平台数据上:播放量、粉丝增量、赞助比例、联系方式元数据、最近发帖时间。信号基于事实触发,不是关键词。
继续阅读
Watchlist 重新设计:从「收藏夹」升级成「监控仪表盘」
KOLens Watchlist 现在每行展示信号徽章——rising_kol、trending_video、dormant、new_sponsored、new_contact、no_outreach——加上最新视频缩略图、outreach 状态、品牌匹配度星级。按「需要关注」排序。
为什么 KOLens 的数据是快照——以及 Watchlist 如何为你提供实时跟踪
KOLens 在搜索时刻捕获达人快照,而不是实时镜像。这里讲清楚:为什么这是正确的取舍,以及 Watchlist 如何在此基础上叠加持续监控。
TikTok 达人增长预警怎么收?KOLens 支持邮箱、Slack、Webhook、钉钉
KOLens 增长预警现在可以实时推送到邮箱 + Webhook。Slack 入站 URL、Zapier、自建 endpoint——同一份 JSON payload,支持按渠道静音,自带限流避免爆雷。