这些是数据库里的字段名,全页会反复出现,先对一眼再往下读就顺了。
| 英文字段 | 就是这个意思 |
|---|---|
conversations(会话) | 我们跟某个抖音用户的一整段对话,记一行。本页说的"触达"就是数它。 |
messages(消息) | 对话里每来回一条消息,记一行。 |
role=customer | 消息的"角色 = 客户"——对方发给我们的,也就是"回复"。 |
role=ai | "角色 = ai"——我们(机器人小艳)发出去的那条。 |
sent_at(发出时间) | 这条 DM 真正发出去的时刻。为空 = 还没真发出(只是草稿在排队)。"实发 DM"就是靠它判断的。 |
last_inbound_at | 这段对话最近一次收到对方来信的时间。是另一种记录"客户回复"的信号,靠人工扫收件箱写进去的。 |
union 口径 | 把两种"回复"信号(role=customer 和 last_inbound_at)并起来一起算,补上各自漏掉的。 |
intent_label(意向标签) | 机器给每条评论打的分层:高 / 中 / 低意向 / 无关。 |
comment_id | 这段对话关联的那条抖音评论的编号。为空 = 没关联评论(多半是客户主动私信来的)。 |
douyin_user_id / sec_uid | 抖音用户的唯一编号(发 DM 直达他主页靠它,不会发错人)。 |
dispatch_queue(派单队列) | 云电脑要发的 DM 排队的地方。 |
把 12 周的回复率画出来,最刺眼的不是哪条线高哪条低,而是前 8 周所有意向的回复率几乎贴着 0,然后在第 9-10 周(6 月中)突然"长出来"。
这个跳变不是"回复率暴涨 40 倍",而是"我们终于开始记录回复了"。原因链条前面几轮已经查清:check-replies 这个 cron 是空转(no-op),入站回复只有在有人手动扫收件箱 + 跑 sync-inbound-replies 时才写进 last_inbound_at/role=customer;6 月中这套手动扫 + 后来的浏览器 DOM 捕获才陆续把回复落库。所以:
读图要点:灰色区(4/23–6/4)不是"回复率真的是 0",是"回复没被记录"。真正能拿来比较的只有右侧 6/11 之后。而右侧一露出来,蓝线(中)就基本压着橙线(高)。注意:这张图是按"触达"作分母画的;第三节把分母修成"实发 DM"后,两条线其实拉平(高≈中)——别被这张图误导。
| 周 / 起始 | 纪元 | 高 触达 | 高 回复率 | 中 触达 | 中 回复率 | 低 触达 | 全部回复率 |
|---|---|---|---|---|---|---|---|
| W1 · 4/16 | 测试 | 5 | 100%* | 2 | 100%* | 0 | 100%* |
| W2 · 4/23 | 盲区 | 190 | 0% | 60 | 0% | 111 | 0% |
| W3 · 4/30 | 盲区 | 149 | 0% | 110 | 0% | 201 | 0% |
| W4 · 5/07 | 盲区 | 44 | 0% | 46 | 0% | 120 | 0% |
| W5 · 5/14 | 盲区 | 211 | 0% | 268 | 0.4% | 455 | 0.1% |
| W6 · 5/21 | 盲区 | 228 | 0% | 358 | 0% | 377 | 0% |
| W7 · 5/28 | 盲区 | 876 | 0.6% | 1132 | 0.1% | 393 | 0.2% |
| W8 · 6/04 | 盲区 | 782 | 0.6% | 2101 | 0.0% | 551 | 0.1% |
| W9 · 6/11 | 可测 | 234 | 0.4% | 202 | 1.0% | 1 | 0.7% |
| W10 · 6/18 | 可测 | 261 | 2.3% | 329 | 5.8% | 0 | 4.4% |
| W11 · 6/25 | 可测 | 293 | 0.7% | 295 | 3.4% | 0 | 5.6% |
| W12 · 7/02 | 可测·未满 | 49 | 4.1% | 65 | 4.6% | 0 | 5.2% |
* W1 仅 7 条会话、100% 为初始化测试期异常,不计入分析。W12 为当前未满周。"全部回复率"含"无关"与"无源自然来私信"两桶,故 W10-W12 略高于高/中(详见第六节)。
把可测的 4 周(W9-W12)合起来算:
我们看到中意向(3.8%)比高意向(1.3%)更爱回。问题是:这真是"中比高强",还是人少的时候碰巧凑出来的?好比两个人各抛硬币——甲抛 10 次出 6 个正面、乙 10 次出 4 个正面,你还不敢说甲的硬币更好,因为才 10 次、很可能是运气;但要是各抛 1 万次还是这个比例,那就不是运气了。
z 就是"这有多不像碰运气"的一个分数:数越大,越不像巧合。经验线是 z 超过大约 2,就可以信"不是运气"。z=3.3 = 假如高、中其实一样,纯靠运气抖出这么大的差,机会只有大约千分之一——所以单看这组数字,差距像是真的。
但最关键一句:z 只能帮你排除"人太少、碰巧",它管不了"你一开始就数错了对象"。这里 z=3.3 说明"中>高"不是碰巧没错——可这个差是拿错的分母算的(把"排了队、根本没发出去的 DM"也当成发过了)。换成"真发出去的 DM"重算,差距当场消失(4.8% vs 4.7%),z=3.3 也就没意义了。所以下面没停在"显著",而是一路查到分母。
| 周 | 高 (回复/触达) | 中 (回复/触达) | 中−高 | z 检验 |
|---|---|---|---|---|
| W9 · 6/11 | 0.4% (1/234) | 1.0% (2/202) | +0.6pt | z=0.7 · 不显著 |
| W10 · 6/18 | 2.3% (6/261) | 5.8% (19/329) | +3.5pt | z=2.1 · 显著 |
| W11 · 6/25 | 0.7% (2/293) | 3.4% (10/295) | +2.7pt | z=2.3 · 显著 |
| W12 · 7/02 | 4.1% (2/49) | 4.6% (3/65) | +0.5pt | z=0.1 · 不显著 |
四周里中意向回复率都 ≥ 高意向;单独看两周显著(W10/W11)、两周方向对但样本太小不显著(W9/W12),合计才到 z=3.3。但要命的是:恰恰显著的 W10/W11 也正踩在"捕获能力爬坡"上(下方时间轴 6/11 落库、6/18 自动回复),所以这个显著是建在一个"边测边变"的基线上——更要靠对照实验坐实。
我先前两次修正过这个判断——现在再挖一层,还得改。第一次我说"高<中是噪声";第二次拉长时间线看到 z=3.3,改口说"中>高是真实效应、不能当噪声"。这次把每个假设拿数据一条条验,结论是更彻底的一句:"中>高"根本不是意向的真相,是"你用哪种回复信号"的产物——换个信号,高中直接对调。
| 当初的假设 | 拿数据验(可测窗 高877 / 中908) | 判定 |
|---|---|---|
| 高意向多是爆款下"随口一问多少钱"的短评论,冷 DM 更难回 | 高意向评论中位 15 字、<8字仅 15%;中意向中位 10 字、<8字达 35%。高意向评论反而更长、更认真,"随口一问"的是中意向 | ✗ 方向反了 |
| 高意向扎堆在拥挤爆款评论区、早被同行私信过 | 高意向所在视频平均挤 18 个 lead、中位 6;中意向平均 34、中位 16。中意向才更扎堆在拥挤视频 | ✗ 方向反了 |
| 捕获覆盖偏差(哪层落在"被扫过"的号/时段,谁的回复就被记得多) | 见下——换个回复信号,高中直接对调 | ✓ 实锤·主因 |
我全程用 messages.role=customer 当"回复"口径——但它 6 月才随 DOM/自动回复大量落库(role=customer 按月:4月 34 → 5月 4 → 6月 473)。另有一路信号 last_inbound_at(手动扫库回写)在 5 月抓到 32 条回复,且偏偏抓的多是高意向。把两路并起来(union)重算全时段:
盲区里 W6 高 0→7、W7 高 5→20、W8 高 5→9 的回复,全是 5 月扫库补出来的高意向——role=customer 当时没记。同一批会话,只换了"用哪种回复记录",高中排序就对调。这说明:捕获方式造成的差异 > 意向层级造成的差异。"中>高"只在"6 月后 role=customer"这一个窗口成立,一旦把 5 月扫库信号算进来就翻盘——它不是意向的稳定真相。
把可测窗按发送账号拆,只在"高中都有量"的号内比:高 1.4% vs 中 3.8%,中仍偏高——但方向不均匀:有大有小号反而 高 9.6% > 中 5.6%,零星/小文/文哥则中>高。另有 577 条高意向会话落在"无发送账号"的桶(发了 opener、几乎零回复),把高意向整体率又压低一截。方向随账号翻、又有大块无账号桶——都指向"这是捕获/归因的结构问题,不是意向问题"。
前面所有"回复率"的分母都是 会话数(触达)——但有个致命问题:大部分"触达"根本没真发出 DM(生成了 opener 草稿,却因发错人跳过 / 限流 / 队列没排到 / agent 离线,messages.sent_at 一直是空)。改用真相口径"role=ai 且 sent_at 非空"数真发出的 DM,再把去重触达客户数(去重后被实际触达的 distinct 客户)一起摆出来当参照系:
| 意向 | 触达(会话) | 实发 DM 会话 | 实发/触达 | 去重触达客户数 (distinct 客户) | 实发 DM 条数 | 回复(union) | 回复/触达 | 回复/实发DM |
|---|---|---|---|---|---|---|---|---|
| 高 | 3325 | 1237 | 37% | 1232 | 1337 | 59 | 1.8% | 4.8% |
| 中 | 4974 | 1190 | 24% | 1188 | 1226 | 56 | 1.1% | 4.7% |
| 低 | 2209 | 189 | 9% | 189 | 196 | 6 | 0.3% | 3.2% |
去重触达客户数 = 读取周期内被实际触达(有实发 DM)的 distinct 客户数(按 douyin_user_id 去重,对齐产品 getLeadJourneys 口径)。读取周期:2026-04-16 → 2026-07-03(12 周,全渠道 DM/RC/二触)。它作为高/中回复数的参照系——高意向 1232 个客户里 59 个回复、中意向 1188 个里 56 个,正是"回复/实发DM ≈ 4.8% vs 4.7%"的分子分母。注意:这里的"客户数"不是运营找我生成的"用户旅程链接(案例页)"——那是另一回事,见第四节末尾。
把分母修对,高和中的回复率是 4.8% vs 4.7%——完全拉平。之前看到的"中>高"(reply/触达·role=customer)和"高>中"(reply/触达·union)都是分母造成的假象:中意向的"触达"里只有 24% 真发了 DM(高是 37%),中的触达分母被更多"没发出去的幽灵会话"稀释,才显得低。一旦只算真发出去的 DM,两层回复率一样。至此结论收敛成最干净的一句:意向层级本身看不出回复率差异——先前所有"高 vs 中"的差,全是"触达≠实发"叠加捕获信号口径造成的。
紧窗口账号有条硬闸:评论从发布算起超过 10 分钟还没轮到发,就作废不发了。所以"入库够不够快"直接决定发得出去多少。看近三天当天入库的高意向评论,从"评论发布 → 入库"的时延(created_at − comment_time):
| 日期(北京) | 当天入库高意向 | ≤5min | 5–10min | ≤10min | ≤10min 占比 | >10min |
|---|---|---|---|---|---|---|
| 07-03 | 125 | 38 | 5 | 43 | 34.4% | 82 |
| 07-04 | 122 | 49 | 2 | 51 | 41.8% | 71 |
| 07-05 (当天未满) | 88 | 25 | 4 | 29 | 33.0% | 59 |
近三天只有 33%–42% 的高意向做到 10 分钟内入库,55–65% 超 10 分钟——这批在 10min 硬闸下大多被作废、根本发不出去。这正是上面"高意向发出率只有 37%"的直接上游来源之一:抓取/入库慢 → 撞硬闸作废 → 发出率低 → 回复总量低。口径:cohort = 当天入库(created_at)的高意向;时延 = 入库 − 评论发布(comment_time),负值剔除、无 comment_time 不计(近三天均为 0)。
正确动作:先把捕获修干净(7/03 DOM 已做),再开对照实验——同一批 lead、同一套 opener、同一套捕获口径,只把"高 vs 中"当唯一变量,攒到每层几百条回复再下结论。不是现在就去改 scoring。
team-journey roster:同名 messaging 号归并、采集号不进 DM 漏斗;无发送账号桶 = 生成了草稿却从没派给任何号的会话。
| 发送账号 | 运营 | 触达(会话) | 实发DM | 实发/触达 | 去重触达客户 (distinct) | 回复(union) | 回复/实发DM |
|---|---|---|---|---|---|---|---|
| 饭粒(一筑·全屋定制) | 饭粒 | 658 | 658 | 100% | 658 | 25 | 3.8% |
| 小文(野荞) | 野荞 | 694 | 598 | 86% | 598 | 13 | 2.2% |
| 文哥 | 野荞 | 98 | 98 | 100% | 98 | 7 | 7.1% |
| 有大有小 | 野荞 | 278 | 269 | 97% | 269 | 25 | 9.3% |
| 零星 | 夏夏 | 952 | 836 | 88% | 836 | 34 | 4.1% |
| 其他号(历史/测试) | — | 783 | 57 | 7% | 57 | 1 | 1.8% |
| 无发送账号桶(幽灵草稿) | — | 6947 | 22 | 0.3% | 15 | 7 | 31.8%* |
| 合计 | 10410 | 2538 | 24% | 2531 | 112 | 4.4% |
* 无账号桶"回复/实发DM"分母仅 22 条,不具代表性(灰显)。合计触达 10410 / 实发 2538 / 去重客户 2531 与第三节(10508 / 2616 / 2609)差 <3%,为 7-06 重跑快照的自然漂移,不影响结论。
这是另一个维度,别跟上面的"去重触达客户数"混了:运营针对某个具体高意向客户,找我生成一页旅程复盘案例(含视频+评论+完整对话+多模块点评,如 upio.ai/akke/cases/wanghanhan-mixian)。截至 7-06 累计 104 条(起自 2026-05-11)。全部按运营归属拆(其中 70 条早期未标注的,用 git 提交人回溯补齐):
| 运营 | 生成旅程链接数 | 占比 | 构成 (manifest标注 + git推断) |
|---|---|---|---|
| 夏夏 · 含零星号 | 57 | 55% | 22 + 35 |
| 饭粒 | 22 | 21% | 6 + 16 |
| 野荞 · 含有大有小 | 17 | 16% | 6 + 11 |
| test · 身份未认领 | 5 | 5% | 0 + 5 |
| Gus | 3 | 3% | 0 + 3 |
| 合计 | 104 | 100% | 34 + 70 |
口径:public/akke/cases/manifest.json 条目数(104)。其中 34 条由运营在生成时打了 op 标注;70 条为 op 字段上线前生成、无标注,改用首次提交的 git 作者回溯归属——yeqiao356→野荞、Gloomberg→Gus 可直接辨认,yuanyurou545→夏夏、fanny→饭粒 经用户确认,test(598664610) 身份未认领、原样保留。零星系夏夏名下号,已并入夏夏。故这 70 条是"谁提交的"、不等于"谁运营的",个别可能有偏差,但量级分布可信。
周线的波动不能光看数字,得对上"那阵子改了什么"。把可能影响意向记分或回复率读数的重大变化拉出来——三条打星的直接解释了上面的曲线:
| 日期 · 周 | 类型 | 变化 | 对读数的影响 |
|---|---|---|---|
| 5/06 · W3 | 记分 | analyzeComments 7 维加权评分建立 | 意向打分体系成型 |
| 5/08 · W4 | 记分 | 打分拆 type+specificity+freshness 三轴、score 公式派生;分析模型→DeepSeek V4 Flash | 打分逻辑重构 |
| 5/14 · W5 | 记分 | 加类目轴(家电/数码→无关) + 同行画像过滤 | 改"无关"边界 |
| ⭐ 5/23 · W6 | 记分·关键 | 高/中/低标签改成按 score 阈值切分(废旧 isHigh axis 规则) | 高/中/低的"定义"变了——跨此线比不同质(好在可测窗 W9-W12 全在其后、内部一致) |
| 5/25 · W6 | 链路 | 云电脑自动派单(dispatch_queue)上线;chat 切回 Qwen3-235B | 新增主力发送渠道 |
| 6/08 · W8 | 记分 | 意向校准 v6:修 off_topic 误杀 + 中意向内按分优先;chat→qwen2507 | 中意向内部排序微调 |
| ⭐ 6/11 · W9 | 捕获·关键 | DM 入站回复落库(last_inbound_at 回写)上线 | 回复率"从 0 长出来"的真正原因——不是回复变多,是开始记了 |
| 6/11 · W9 | 链路 | 评论<10min 硬闸(超龄作废) + agent 在线门 + 账号轮转 | 触达聚焦新鲜评论 |
| ⭐ 6/18 · W10 | 捕获 | DM 自动回复上线(主动读收件箱) | 捕获覆盖再升一档——W10 中意向 5.8% 峰值正踩在这 |
| 6/22-23 · W11 | 链路 | 事件驱动生成 + high_intent_ratio 占比闸 + 冷意向退避 | 派单节奏调整 |
| ⭐ 7/03 · W12 | 捕获·今天 | 饭粒+零星 切浏览器 DOM:发送治 wrong_user + 捕获常态化 | W13 起捕获才真正测得准 |
连起来读:① 回复率 6/11(W9) 从 0 长出来 = 捕获落库上线,非回复暴涨;② W10 峰值踩在 6/18 自动回复(捕获又强一档);③ 高/中/低标签 5/23 变过定义,但可测窗全在其后、内部一致(不影响下面"高≈中"的结论);④ 今天 7/03 DOM 让捕获常态化,下周起才是干净基线。
低意向全时段 2209 触达 / 0 回复,且从 W9 起基本停发(近 4 周 0-1 条)。说明系统已经把低意向排除在触达之外——这是对的,不用管。
有一小撮会话(26 条)没有关联到打分评论,回复率高达 92.3%(24/26)——这些几乎都是用户主动私信我们的(不是我们冷发的)。
它们混在"全部"口径里,是 W10-W12"全部回复率(4-6%)"高于"高/中"的原因。做冷触达分析时应把它单列、排除——它证明了一件事:只要是用户主动来的,回复率天差地别(90%+ vs 冷发的个位数),这正是"焐热渠道"价值的侧证。
把整条时间线读完,真正的故事是三层:
接下来(按杠杆大小排):① 把"发出率"从 24-37% 拉起来——治发错人跳过/限流/队列积压,这是回复总量的头号杠杆;② opener 砍短(现状 56% 超 60 字、第一条就报价+要微信);③ 试"先反评焐热再私信"的两触路径,对比纯冷。"高 vs 中"已证明无差异,不再作为优化方向。
conversations(org 内全部已触达会话,跨手机/云电脑/worker 全渠道)按 created_at 分周;主口径分子 = 该会话是否有 messages.role=customer(对方回复的 canonical 口径);意向来自会话关联评论的 intent_label。补盲区口径(union):分子 = role=customer 或 last_inbound_at 非空,把 5 月手动扫库的 67 条入站信号补回(全时段高 +33、中 +17、低 +6)——正是这套口径让高/中排序反转,佐证"捕获方式决定读数"。实发 DM 口径:messages.role='ai' 且 sent_at 非空(排除只生成未发出的草稿 opener);去重触达客户数 = 有实发触达的 distinct douyin_user_id(对齐产品 getLeadJourneys 按客户去重口径;≠ 运营生成的"用户旅程链接/案例页",后者见第四节末尾,共 102 条)。第三节"回复/实发DM"用实发会话作分母,是最接近真实的回复率。已知局限:回复捕获在 6 月中前几乎未写库(盲区),近 4 周捕获覆盖仍不均——本页按"会话/触达"作分母的回复率是能测到的下界;按"实发 DM"作分母(4.8%/4.7%)才是真实回复率。显著性为两比例 z 检验。W12 为未满周。快照漂移说明:本页各小节由多个脚本在 7-03 前后分次跑,期间持续有新评论/会话入库,故不同表间"全时段触达"合计有几条漂移(如 3322 vs 3325、4968 vs 4974),"可测窗触达"也因分周(W9-12)与"≥6/11"两种切法略有差(837/877),均 <1.5%、单调增、不影响任何结论。入库时延表为 7-05 当日实时读取。