AKKE · 项目专题 · 时效性

时效性专题进展同步

这是一份时效性专题,不讲触达总量,只讲一件事:怎么让用户「刚发出的评论」尽快被我们抓到、并触达。本周把「评论发出 → 拉到运营手里 → 发出 DM」的延迟从「拉到啥发啥(多半两周前)」压到最低 3 小时,最快案例 29 分钟。下半部分给出把「抓得勤、抓得全、抓得准」三件事继续做深的具体策略。

抓得勤 · 号源 1h 轮转 抓得全 · 单视频评论 1→30+ 打分准 · 简短面积评论 89% 中高意向 抓得对 · Top 50 号源贡献 84% 高意向
SECTION 1 · 项目专题

时效性 0-1 · 从 4h 拉单到分钟级响应

本周的主线工作:把整条「评论被抓到 → 拉到运营手里 → 触达完成」链路从「半天起步」压到「分钟级可控」。按案例 → 实现 → 批量化 → 待办四段展开。

1

第一个时效性大幅缩短的案例 · 渐行渐远

这条 lead 是本周时效性新链路上线后跑出来的第一条「30 分钟内触达」案例。同样意向分(85)、同样话术模板(设计师本地号 + 怎么收费类),过去要 6-12 小时才能拉到运营手里,这次 29 分 36 秒 就发到了用户私信。

案例 #001 · 5/25 下午 15:00

渐行渐远 · 评论后 29 分 36 秒收到破冰

「怎么收费」 · 福建 · 意向 85 · 号源「米凌设计师_胡设计」

原评论时刻
15:00:00
用户在抖音视频评论区发出问题
触达时刻
15:29:36
一筑账号 ADB 发出 DM 破冰
触达延迟
29 分 36 秒
同类 lead 上周平均 6-12 小时

这条之所以能在 30 分钟内触达,是因为:(1) 5/26 新上线的「按号源轮转 1h 抓取」让这条号源在 15:10 左右就被扫到;(2) 拉单时加 --since-hours=1 直接过滤近 1h 评论;(3) ADB 通道直接发,无 dashboard 审核延迟。

查看完整案例页 →
2

新逻辑怎么实现的 · 跟之前对比

整条链路有 3 个新杠杆:抓取频率改成「按号源轮转 1h」、加 30 分钟去重、运营拉单时加「时间窗」参数(让运营可以指定「拉近 N 小时内的新评论」)。下图是数据流。

数据流(紫色 = 本周新加的 3 个杠杆)

① 抓取号源
1h 轮转
LIMIT 150
② 节流去重
30 分钟内
已抓 skip
评论入库
LLM 打意向分
0-100
评论池
本周 969 条
高 135 / 中 289
③ 拉单窗口
--since-hours=N
运营触达
手机直发
(ADB/WDA)

ADB / WDA = 把运营的手机用数据线接到电脑,电脑直接操控手机抖音 App 发 DM;相比之前要先进 dashboard 网页点「批准」再让服务器发,省掉中间 2 道审核和等待。

每个杠杆「之前 vs 现在」的对照:

之前 · 上周
① 抓取频率 — 5 分钟一次
  1. 每 5 分钟跑一次全量抓取
  2. 同一个号源一天被抓几十次
  3. 账号 cookie 半天就被风控挡
  4. 整账号数据全空 ≥ 6h
触发风控 → 失数据,反而拖慢时效
现在 · 5/25 上线
① 按号源轮转 1h + LIMIT 150
  1. 1 小时跑一次
  2. 按「最久没抓的号源」排序
  3. 每次最多抓 150 个号
  4. 600+ 号源每天都被覆盖
本周零风控,抓到 3,661 视频 / 969 评论
之前
② 重抓浪费
  1. 同一个视频两轮窗口内被抓两次
  2. 单轮(跑完一遍所有活跃号源)超 30 分钟
算力浪费 + 拖慢全局节拍
现在 · 5/26 上线
② 30 分钟节流去重
  1. 30 分钟内已抓过的视频直接跳过
  2. 单轮耗时缩到 12 分钟
单轮快 60%,留出余量给新号
之前
③ 拉单只能指定「数量」
  1. 运营跑命令只能写「拉 10 条」
  2. 系统按打分高低派给运营,拉到啥就是啥
  3. 常拉到 2 天前的评论
  4. ≤1h 触达比例 < 5%
运营无法控制时效
现在 · 5/26 上线
③ 拉单加「时间窗」参数
  1. 新增「拉近 N 小时内的」参数
  2. 运营自己控制时效窗口(早 3h / 晚 12h)
  3. banner 实时显示池子热力图
  4. ≤1h 触达比例 → 8%(一筑严格口径) / 17%(全账号)
运营随时切「3h 拉热的 / 12h 拉够数」
3

批量化运行后的统计数据 + Bad Case + 解决办法

上面 3 个杠杆完整跑了 4 天(5/25 上线 → 5/28 今天),下面是真实跑出来的数据 + 路上踩到的 4 个坑及修法。

日均触达延迟趋势 · 5/15 → 5/28 · 全账号

每天所有发出去 DM 的「触达延迟」中位数(一半的 DM 比这个快,一半比这个慢)。曲线越靠下,说明那天发的 DM 总体上离用户「刚发评论」越近。(用中位数不用平均数 — 平均数会被池子里几条几千小时的极端老 leads 拉飞,看不出趋势。)

300h 250h 200h 150h 100h 50h 0h ↓ 5/18-5/26 时效性新逻辑陆续上线 3 小时 ← 本周最低 5/23 · 全账号 ≤1h 触达 11 条 89h 池子兜底捞老 leads 291h ≈ 12 天前的评论 5/15 5/16 5/17 5/18 5/19 5/20 5/21 5/22 5/23 5/24 5/25 5/26 5/27 5/28 单位:小时(评论发布时刻 → 我方触达时刻,中位数 p50) 数据:全 5 账号合计 DM
5/15 起点
291 小时
≈12 天前的评论
5/23 本周最低
3 小时
缩短 97×
5/28 今天
19 小时
5/27 兜底捞老 leads 拖高

怎么读这条曲线:5/18 之前所有 DM 平均都是 1-2 周前的评论(凉透了)→ 5/19 抓取频率 + 拉单时间窗陆续上线,曲线断崖式下跌 → 5/23 干到 3 小时 → 5/25 五人运营 ADB 批量化跑起来,因为 KPI 还按「总 DM 数」算,运营冲量时捞了一批历史中意向 leads 兜底,曲线略回升 → 待办里 P0「outreach KPI 改按 ≤6h 触达数算」就是为了把这条曲线钉在 ≤20h 不让回升。

触达时效分布 · 本周分桶

通道 总数 ≤1h ≤3h ≤6h ≤12h ≤24h ≤48h >48h
DM · 一筑 38 38% 1 2 1 1 1 2976%
DM · 全账号 212 3517% 4 9 5 37 36 8641%
RC · 全账号 31 0 0 1 0 1 2 2787%

≤1h 桶的「绝对量是不是在涨」是关键 — 一筑账号本周严格口径 3 条,conv 归属口径 11 条;全账号 35 条,上周这个数字还是个位数。

配套监控(自动推飞书数据值班群)

批量化跑起来后,光看时效分布表不够 — 必须有「主动报警 + 主动钻取」让运营能在出问题时第一时间知道。本周加了两条主动推送:

  • 每小时一次的采集快照(hourly :30)— 上一小时抓到的视频/评论/高意向 + 号源健康;不健康直接卡片切红
  • 每日 07:30 的 24 小时时段分布图 — 按四时段(凌晨/上午/午后/晚间)切看一天里高意向集中在哪个时段,峰值小时 ≥5 条自动钻取 Top 3 评论 + 博主聚合
📷 截图位 ① · 由 fanny 补
飞书「数据值班监控 Agents」群 · 任选一张近期 :30 推送的采集快照卡片
📷 截图位 ② · 由 fanny 补
飞书每日 07:30 推送的「24h 四时段分布图 + 峰值钻取」

本周踩到的 3 个 Bad Case + 修法

Bad Case ① · 同一个用户收到 2 条几乎一样的 DM(5/27)
5/27 上午发现
现象
fanny 用 send-one.py 这个脚本发了 5 条 DM,每条手机上都显示「发送成功」。但数据库里没有这 5 条记录。4 小时后这 5 条 lead 的「锁定」过期,回到池子里 → 早上夏夏(xiaxia)拉单时又看到这 5 条 → 又被发了一遍 → 5 个用户每人收到 2 条几乎一样的破冰话术,看起来非常机器人,可能触发账号风控。
根因
脚本启动时没读 .env.local 配置文件 → 拿不到数据库凭据 → 写入数据库的步骤静默失败但脚本继续跑。
修法
脚本启动时强制读 env 文件,读不到直接报错不让发;同时给 send-one.py 加 emoji 昵称的头像识别兜底(emoji 头像之前会识别失败)。验证:5/27 当天 22 条 DM 全程手动救场,明天起每天能省 30 分钟运营时间。
Bad Case ② · 95 分高意向 lead 被永久埋没
5/26 发现
现象
系统抓到一条 95 分的高意向评论(「我家 130 平想做全屋柜体,多少钱?」)。LLM 生成话术时自检判定「反问钩没对齐主问题」 → 标为「话术失败」 → 这条 lead 从此再也不会出现在运营拉单池里。等于 95 分 lead 被埋了。
根因
话术生成失败的处理是「永久跳过」而不是「重试」,把好 lead 当垃圾扔了。
修法
改成「12 小时后自动重排队」给 LLM 第二次机会;同时记录失败原因方便排查。
Bad Case ③ · 显示「有 87 条可拉」实际拉到 6 条
5/27 发现
现象
fanny 准备拉反向评论 leads,提示横条显示「池子里有 87 条可拉」。实际下命令拉 20 条,只拉到 6 条。第二轮再拉,又只拉到 3 条。运营对工具产生不信任。
根因
提示横条算的是「评论池总数 - 已被发过的」,没扣「已被同事锁定但还没发出去的」;而真实拉单逻辑是扣干净的。
修法
提示横条改成调跟拉单同一段查询,分 4 档显示:可拉 / 已被锁定 / 已发过 / 4 小时内将过期。
SECTION 2 · 本周升级

不止抓得勤,还要抓得全

前面 Section 2 讲的 3 个杠杆解决的是「多久抓一次」(抓得勤)。本周 5/28 补的是另一条轴:「一条视频里到底捞回多少评论」(抓得全)。如果源头就只抓到 1-5 条,时效再快也没用 —— 高意向 lead 在第一步就漏了。

🔍 怎么发现的 · 抽查一条视频
5/28 抽查号源「设计师_鹿鹿」一条视频,DB 里只有 33 条评论且全是顶层parent_comment_id=NULL)。但截图里明显有嵌套子回复(例:「一山不容二虎」回的「167 平方」)根本没进库。
往全库一查更糟:近 7 天每条视频评论数中位数 = 1,最多才 49,从没碰到过 50 条上限 —— 说明不是「抓满了」,是大批评论在抓取阶段就被丢掉。

查下来是 3 个互相叠加的原因,5/28 当天全部修掉:

之前 · 漏抓
① 24 小时窗口把老评论全 drop
  1. 首次抓一条视频时,只要评论发布 > 24h 就跳过
  2. 一条视频实际 100+ 评论,大半是几天前发的
  3. 第一页 20 条全过期 → 直接早退,只入 1-5 条
高意向老评论在源头被丢
现在 · 5/28 上线
① 首抓窗口放宽到 7 天
  1. 首次抓改成「近 7 天内的评论都要」(PM 5/28 17:30 拍板)
  2. 7 天足够覆盖装修类意向的新鲜窗口
  3. 不到 365 天那么宽,省掉给「早已找别家」的死评论打分的 LLM 成本
单视频评论中位数 1 → 30+
之前
② 老顶层下的新子回复永远抓不到
  1. 老顶层评论(>24h)被第一步丢掉
  2. 第二步抓「子回复」时自然也跳过了它
  3. 挂在老评论下面的新嵌套回复全漏
嵌套区的意向评论压根看不到
现在 · 5/28 上线
② 给老顶层留占位、照样抓子回复
  1. 只要老顶层「还有子回复」,就先登记一个占位
  2. 第二步照常去抓它下面的新嵌套回复
  3. 抓回来再反查挂到正确的父评论上
那条视频 33 → 52 条,douyin_cid 覆盖率 100%
之前
③ 子回复接口返回空 body
  1. 抓子回复的接口被抖音反爬层卡
  2. 少了一个反爬签名字段(msToken)
  3. 接口返 HTTP 200 但 0 字节,等于没抓到
修了①②也调不出子回复
现在 · 5/28 上线
③ 每次带新的随机反爬签名
  1. 每次请求生成一个新的伪 msToken 注入签名串
  2. 每次随机,避免抖音检测到 token 复用
  3. 子回复接口恢复正常返回
嵌套抓取链路打通
单视频评论中位数
1 → 30+
放宽窗口后预期值,抽查视频实测 33 → 52
含义
同样的号源、同样的抓取频率,能挖出的 lead 池子大了一截

放宽前 vs 放宽后 · 全库意向产出对比

5/28 18:00(放宽窗口部署上线)为界,对比放宽前后入库评论的意向分布。before = 5/28 当天 0:00–18:00(放宽前),after = 5/28 18:00 → 5/29 11:00(放宽后到今天中午)。(此处统计「非简短面积类」评论,与下一节 ③ 的打分校准数据不重合。)

时段入库评论高意向 (≥80)中意向 (60-79)低/无关 (<60)中高合计
before · 放宽前
5/28 00–18 时
213 16 42 155 58
after · 放宽后
5/28 18:00 → 5/29 11:00
1,222 45 126 1,051 171
变化 ×5.7 ×2.8 ×3.0 ×2.9

放宽后这段时间入库评论量翻了 5.7 倍,其中真正有价值的中高意向评论从 58 条涨到 171 条(×2.9)。注意 after 的低意向占比更高,是因为放宽窗口把大量「7 天内但偏老」的普通评论也捞进来了 —— 这正是要靠下一节的打分校准把里面真正的强信号挑出来。

未来还要做什么

SECTION 3 · 本周升级

抓得准 · 让简短的强信号不被当噪音

抓得全(Section 2)解决了「评论有没有进库」。这一节解决「进库后有没有被正确判成中高意向」—— 一条字面很短的评论,可能恰恰是最强的购买信号。

问题
装修评论区里像「109平方多少钱」「178平怎么设计」「89平旧房翻新」这种 —— 用户主动报出自家面积 + 问设计/报价,是非常强的购买信号。但它们字面很短,没有「我想做全屋定制麻烦报个价」这种完整措辞,过去容易被打分模型当成「太短、信息不足」打成低意向,混在噪音里运营根本翻不到。「114 平」这类简单评论就这么被埋了。
如何解决
意向打分是「Langfuse 提示词判类型 + 代码公式算分」两层。5/28 下午在提示词层改了一版校准:把「主动给出面积/户型 + 设计/报价/翻新问询」识别为 product(产品/报价类) + 高确定性,即使评论只有几个字也照样给到中高意向分。算分公式(类型基分 + 确定性加分 + 新鲜度加分)不变,靠正确归类把这类评论顶上来。
成效
rescore 实验验证:拿 16 条历史上被判低意向(<60)的简短/面积评论(旧分由旧提示词打),用 5/28 改后的新提示词重新打一遍,做「旧分 → 新分」逐条对比。结果泾渭分明 —— 8 条带面积语义的全部升到高意向 938 条纯数字/无意义的正确保持无关(15)(此处只重打简短/面积评论,与上一节 item1 统计的「非面积入库量」不重合。)
带面积语义 · 被救回
8 / 8
旧 15–58 → 新 93
纯数字噪音 · 正确拦住
8 / 8
仍判 15(无关),不误抓
该提的提、该拦的拦
100%
分类完全符合预期
评论原文(历史低分样本)旧提示词新提示词判定变化
153平怎么设计5893低 → 高意向 ↑
120平怎么设计5893低 → 高意向 ↑
50平方吗?1593无关 → 高意向 ↑
1500平接吗?3593低 → 高意向 ↑
117 (纯数字)1515无关 → 无关(正确)
66 (纯数字)1515无关 → 无关(正确)

「153平怎么设计」这类旧提示词只给 58 分(卡在低意向,运营拉单池看不到),新提示词识别出「面积 + 设计问询」是强信号,直接提到 93 高意向。而像「117」「66」这种纯数字,新提示词仍判 15 无关 —— 校准只救「带面积语义」的,不误抓噪音。

下一步
① 把更多简短变体补进识别 —— 纯面积 + 隐含户型(「三室两厅 110」)、「能做吗 / 求方案」类短问;以及只有纯面积、不带问句的(如单独「110平」「89㎡」)也要补进识别,并给到同等高意向分 —— 地位等同「122平,求设计」这类,用户主动报出自家面积本身就是强购买信号,不该因为没带「怎么设计 / 多少钱」就被压低;② 评估这类短评论生成的破冰话术,反问钩是否对齐「面积已知 → 直接给口径」;③ 沉淀一份「简短强信号词表」做回归测试,防下次改提示词时把它们又打回低意向。
SECTION 4 · 下一步策略

提量提质 · 把算力压到最该抓的地方

前三节(抓得勤 / 抓得全 / 打分准)解决的是「能抓到、抓得全、判得对」。这一节是「抓得对地方」:在号源、时段、账号三件事上,把有限的抓取算力从「均匀撒网」改成「往最可能出高意向的地方集中」。以下三条都还没做,附本周从库里跑出来的真实数据 + 具体策略建议。

1

提量提质 · 一边扩号源,一边砍死号

现状很失衡:号源库一共 2,600 个号(active 621),但近 7 天只有 318 个号真的产出过评论,其中仅 107 个产出过高意向 —— 也就是说有产出的号里,211 个(66%)近 7 天一条高意向都没有。光堆号源数量没用,得双向做。

号源库总数
2,600
其中标为 active 621
近 7d 有评论产出
318
仅占总库 12%
近 7d 产过高意向
107
真正在贡献的号
有产出但零高意向
211
占有产出号源 66%
提量 · 扩号源
找更多「对的号」,不是更多号
  1. 用蝉妈妈做反向画像:从已产高意向的 107 个号倒推共性(地域装修号 / 设计师本地号 / 门窗号),按这个画像找新号,不按粉丝量找头部
  2. 现有关键词矩阵(15 组)本周已基本枯竭,新增号源去重率高 —— 需要换关键词 / 换平台源头补新鲜池子
  3. 目标:把「能产高意向的号」从 107 扩到 200+
提质 · 砍死号
把算力从死号上收回来
  1. 近 7 天零产出的 ~2,280 个号,大量是抓不动的死号 / 停更号,每轮还在白白消耗抓取配额
  2. 按「连续 N 天零产出」自动降频 / 归档,不再每小时陪跑
  3. 省下的算力让给下面 ② ③ 的高产时段和高产号源
2

跟着高意向时段抓 · 午后 + 晚间加密

把近 7 天 3,788 条「打过分的评论」按发布时刻摊到一天 24 小时上,看高意向(≥80 分)评论集中在哪些钟点。结论和机器人推送里观察到的一致:午后(13-14 点)和晚间(19-23 点)是两个明显高峰

高意向评论数 · 按发布钟点 · 近 7 天合计

午后 13-14 点小高峰 · 晚间 19-23 点全天最高

14 8 4 5 5 6 12 10 19 8 20 11 18 27 25 17 19 19 18 34 23 23 39 21 00 02 04 06 08 10 12 14 16 18 20 22 横轴:评论发布钟点(BJT)· 纵轴:高意向评论条数 · 数据 3,788 条打分评论
凌晨 00-06
42 高意向
上午 06-12
80 高意向
午后 12-18
125 高意向
晚间 18-24
158 高意向

策略:午后(12-18)+ 晚间(18-24)两段合计 283 条高意向 = 全天的 70%,且晚间也是评论总量最大的时段。把这两个窗口(尤其 13-14 点、19-23 点)的抓取改成加密轮转(如 30 分钟一轮),凌晨低产时段降频。这样新评论从「发布」到「被抓到」的等待,在最值钱的时段最短。

3

相关度最高的号给最高频率 · Top 50 轮抓提速

把近 7 天每个号源产出的高意向数排序,结果高度集中:Top 50 个号源贡献了全部高意向的 84%(319 / 379)。与其 2,600 个号平均撒网,不如把这 50 个「又勤更新、又高意向」的号单拎出来,给它们最高的轮抓频率。

💡 集中度
Top 50 号源 = 84% 高意向。这意味着只要保证这 50 个号「一发新视频、新评论就被尽快抓到」,就守住了绝大部分高意向供给。
#号源近7d 高意向总评论高占比最近视频
1西安老王聊装修315457%05-19
2小刘厂长美式家具2610924%05-23
3灿哥聊装修2011717%05-23
4米凌设计师_胡设计 ← 渐行渐远号源198024%05-24
5旭东聊装修1512812%05-22
6设计师__巴丽156623%05-24
7海哥—用心讲装修141858%05-23
8设计师_鹿鹿 ← Section 2 抽查号源145426%05-22
9罗哥讲装修92733%05-16
10设计师·十一7749%05-23

Top 10 摘录(完整 Top 50 在 _source-yield-20260529.ts 输出)。多为「地域装修号 + 设计师本地号 + 门窗号」,印证 ① 的反向画像方向。

快抓 tier
Top 50 高相关号
  1. 打分 = 高意向产出 × 更新频率,每周滚动重算 Top 50
  2. 放进最高频轮抓层,午后/晚间高峰时段 30 分钟一轮
  3. 保证新视频、新评论分钟级被抓到
慢抓 tier
长尾 ~2,200 号
  1. 近 7d 零高意向产出的号降到每天 1 次
  2. 连续多天零产出自动归档
  3. 腾出的算力全给快抓 tier
SECTION 5

待解决的问题 + 优先级

把上面三节的策略落成具体待办,按业务影响 + 实现成本排优先级:P0 = 本周必做 · P1 = 下周做 · P2 = 月内做。

💡 INSIGHT · 本周新发现,纳入 P0
「禁止陌生人私信」的用户回关后,可以把之前发送失败的 DM 二次发送
抖音的陌生人 DM 软上限是按「双方是否互关」判定的 — 触发禁限的用户如果之后回关了,账号关系就变成「互关」,原本被静默丢弃的 DM 现在可以发出去。这是一条免费的二次触达通道。
技术上完全可以后台自动实现:每天凌晨扫近 7 天失败 DM → 查抖音关系 API 看是否已互关 → 互关的重新放回队列。需先手动验证 5-10 条确认能发出去再做自动化。
P0 · 本周
拉单时间窗动态默认值
按当天 outreach 进度自动调整:早上 2h、下午 6h、晚上 12h;不让运营在干池子时手动放宽
复查6-02 周一
P0 · 本周
outreach KPI 改按「6 小时内触达数」算
当前 KPI 是「今天发了多少条 DM」,运营会捞老 leads 凑数。改成「今天发的 DM 里有多少条是 6 小时内的新鲜 leads」,逼优先消耗热 leads
复查6-03 周二
P0 · 本周
禁私信用户回关后二次发送队列
本周新发现的免费触达通道(详见上面 INSIGHT 卡)
复查6-04 周三
P1 · 下周
Top 50 高相关号源建「快抓 tier」(Section 4 ③)
打分=高意向产出×更新频率,每周滚动重算 Top 50;午后/晚间高峰 30 分钟一轮。Top 50 贡献 84% 高意向,优先保证这批号分钟级被抓到
复查6-05 周四
P1 · 下周
午后 + 晚间高峰时段加密抓取(Section 4 ②)
13-14 点、19-23 点两个窗口贡献全天 70% 高意向;这两段加密轮转、凌晨低产时段降频,让新评论在最值钱的时段最快被抓到
复查6-05 周四
P1 · 下周
自家号登录态采集 + 图文笔记白名单(Section 3 未来项)
公开 API 对新发视频有 6 天延迟;/note/ 图文笔记爬虫还没识别 — 一筑 5/27 那条图文就漏了
复查6-06 周五
P2 · 月内
砍死号 + 扩高产号源(Section 4 ①)
2,600 号里近 7d 仅 107 个产高意向;零产出号降频/归档腾算力,同时用蝉妈妈反向画像把产高意向的号从 107 扩到 200+
复查6-11 周四
P2 · 月内
单视频评论数异常自动报警
这次「单视频只抓到 1-5 条」是靠人肉抽查发现的;做成「某视频评论数明显低于同类即报警」,下次不靠运气
复查6-08 周一