AKKE · 触达通道 · 0→1 复盘 + SOP

云电脑 RC 楼中回复
九个版本,一次手工实验定乾坤

在用户那条高意向评论下直接回复(真 RC),跑在无影云电脑的抖音 PC 客户端上。盲调 7 版"打字进不去",最后发现字一直都进得去——是 AI 视觉判定在说谎。

2026-06-06 跑通 通道:无影云电脑 · 抖音 PC 客户端 脚本 v1 → v10 适用:全体运营
目录
① RC 楼中回复是什么(和二次触达的区别) ② 整条链路一览 ③ 0→1 时间线:九个版本各踩了什么 ④ 三个值钱的教训 ⑤ 同事操作手册(SOP,照抄即可) ⑥ 风控红线 & FAQ

1RC 楼中回复是什么

PM 2026-06-06 拍板的触达术语体系里,RC(反评)= 在用户发出的那条高/中意向评论下面直接回复,回复出现在源视频的评论楼里——用户有抖音通知、楼里其他潜在客户也看得见,是曝光效率最高的公开触达。

通道动作出现在哪脚本
DM 首触私信打招呼对方私信箱douyin_dm_grounded.py
RC 楼中回复(本文)回复 ta 的意向评论源视频评论楼douyin_rc_reply_grounded.py
二次触达DM 没回 → 去 ta 自己的视频下评论对方自己的视频douyin_comment_grounded.py
💡
RC 不要求对方有作品(回复发在源视频楼里,跟 ta 的主页无关);二次触达才要求对方有作品。所以 RC 拉单不做 has_works 过滤,但要求源视频标题可搜(导航靠它)。

2整条链路一览

本机 拉单(锁号+LLM生成文案) → 人工审稿 → 打传输块 → 云电脑 粘贴落盘 → 起跑
脚本导航:搜源账号名 → 用户tab → 进主页(VL核名) → 作品墙VL认视频 → 评论楼VL定位ta的评论
执行动作:悬停 → 点「回复」→ 剪贴板粘贴文案 → VL核"框里有字" → 回车发送 → VL核"框回占位态"
收尾 抖音气泡人工抽查 → 日志拷回本机 → 写 outreach_events + 消费锁(全员去重生效)

为什么导航这么绕:抖音 PC 客户端没有地址栏,视频 URL、snssdk:// 深链都打不开,唯一稳的路径是搜源账号名进主页再认视频。每一步"认对没认对"都由视觉模型(Qwen VL)看截图判定,配了防同名、防错楼的双因子核对(昵称 + 内容片段)。

30→1 时间线:九个版本各踩了什么

整个上午 + 下午共九个版本。看起来是输入问题,结果导航早就全通,真正的敌人换了三次。

版本改了什么结果
v1-v4URL直达 / 降级搜源账号 / 底部框聚焦 / 回车发送,文字输入走 SendInput 直键(私信框同款,当天 DM 成功 26 次)判"打字进不去"
v5加"正向校验":发送前先让 VL 看截图确认框里有字拦下 2 条"假 sent"(后来证明拦错了)
v6点「回复」后不再重复点框/抢前台(怀疑把焦点弄丢)仍判"没进框"
v7输入改剪贴板粘贴(Ctrl+V):怀疑评论框是网页输入框只认 paste 事件仍判"没进框"
🔬 手工实验(30 秒,定案):人坐在云电脑前手动点「回复」→ Ctrl+V 能进字、直接打字也能进字。字从来都进得去,是"判定"环节在说谎——全屏 2560×1600 截图里那行小字,视觉模型根本看不清,一直回答"框里没字"(假阴性)。DM 流 5/31 踩过同款坑并修过(裁剪放大后再判),RC 脚本没抄这个作业。真相反转
v8判定截图从全屏改为回复框区域裁剪放大图粘贴一次进框✓,但发送复核又误杀
v9发送复核从"框里是否残留文字"(按完回车截图拍到刚发出的气泡也算"有字"→假阳性)改为正向问"框是否恢复灰色占位提示"+多等 1.5s链路全通
v10双道发送复核:占位态判定 fail 后,再到评论楼里直接找刚发出的回复气泡(看结果不看输入框),两道都 fail 才记 send_fail——"真发了却报 fail"的窗口进一步压缩加固
实锤时刻:v8 跑完日志写 send_fail,但去抖音一看,用户 N**(化名)那条评论下回复早就发出去了——发送一直是成功的,复核在冤枉好人。九版斗争的对手从来不是抖音,是自己的判定环节。

4三个值钱的教训

① VL 看全屏小字必假阴性——判定截图必须裁剪放大

2560×1600 全屏截图里一行 14px 的输入框文字,视觉模型大概率回答"没有"。任何"框里有没有字"类判定,先裁剪到目标控件附近再问。这个坑 DM 流和 RC 流分别独立踩了一次,修复代码就躺在隔壁文件里douyin_dm_grounded._shot_crop 的注释写得明明白白)——动手前先 grep 兄弟脚本。

② 盲调 N 版,不如 30 秒地面真相

"打字进不去"这个结论本身从没被人工验证过——七个版本全在修"输入",真凶却在"判定"。卡死时第一件事不是改代码,是人工复现一次脚本动作(手动点回复、手动 Ctrl+V),让事实先说话。成本 30 秒,省一个下午。

③ 假阳性和假阴性要双向设防,判定问法问"正向状态"

v5 防"假成功"(没发却报 sent),v9 防"假失败"(发了却报 fail)——两个方向都真实发生了。问法上,"是否残留文字"会把发出去的气泡残影也算进去;问"是否恢复占位提示态"这种明确的正向状态,歧义小得多。v10 再加一道"评论楼里找刚发的气泡"——直接验收结果而不是中间状态,两道都说没发才算没发。

5同事操作手册(SOP)

跑一轮 ≈ 15 条 / 半小时挂机。前两次建议加 --confirm 逐条确认熟悉节奏,之后即可无人值守。

STEP 0 · 一次性前置
STEP 1 · 本机拉单(自动锁号 + 生成文案)
python3 scripts/dm-phone-sender/pull-rc-reply.py --want=15
STEP 2 · 审稿(别省)
STEP 3 · 打传输块 → 云电脑落盘
# [本机] 两块:脚本 + 名单
python3 scripts/dm-phone-sender/make-wuying-ps1.py \
  worker/scripts/wuying-dm/douyin_rc_reply_grounded.py \
  'C:\akke-wuying\douyin_rc_reply_grounded.py' data/write-rc.ps1
python3 scripts/dm-phone-sender/make-wuying-ps1.py \
  data/contacts-rc-reply-$(date +%Y%m%d).csv \
  'C:\akke-wuying\contacts-rc-reply.csv' data/write-rc-csv.ps1
pbcopy < data/write-rc.ps1      # 第一块进剪贴板
STEP 4 · 起跑
# [云电脑] 前两次熟悉用 --confirm 逐条 y/n;熟了去掉,全自动
cd C:\akke-wuying
python douyin_rc_reply_grounded.py contacts-rc-reply.csv --confirm
STEP 5 · 收尾(必做,不做去重就失效)

6风控红线 & FAQ

红线:日上限 15 条;条间间隔不压缩;同一用户 DM 和 RC 只能选一个(锁机制自动保证,前提是 STEP 5 回写别漏);公开内容审稿不可跳过。

FAQ

7第二天实战补丁(2026-06-07:17 条实跑的坑与解法)

6/7 用 v10 跑了第一个生产批(17 条,最终 6 发出),暴露的问题按"现象 → 根因/解法"记录:

① 整批 sent=0 全记 wrong_video?先小批试跑,别急着改代码

首轮 17 条全军覆没(15 wrong_video + 2 type_fail),同一份 CSV、同一份脚本,取前 2 条重跑立刻 2/2 全通——单次全败不等于脚本坏了,大概率是当时抖音窗口状态不对(被遮挡/没在最前台)。标准动作:

# [云电脑] 取前 2 条试跑 + Tee 留完整日志
$all = Get-Content contacts-rc-reply.csv
$all[0..2] | Set-Content contacts-rc-test.csv -Encoding UTF8
py -u douyin_rc_reply_grounded.py contacts-rc-test.csv 2>&1 | Tee-Object -FilePath run-test.log

重跑安全的前提:先核日志确认失败都发生在按发送之前(wrong_video / type_fail / comment_not_found 都是),才能整批重来不重复发。

② 文件传输:Invoke-WebRequest 会把 UTF-8 中文转码弄坏——一律 curl.exe

实测 Invoke-WebRequest -OutFile 下载含中文的脚本,22606 字节落地变 20900,脚本直接残废。云电脑 Windows 自带 curl.exe(注意 .exe 后缀,裸 curl 是 Invoke-WebRequest 的别名):

# [本机] 上传:curl -s --data-binary @文件 https://paste.rs   → 返回 URL
# [云电脑] 下载(替代 STEP 3 的剪贴板块,更稳):
curl.exe -s https://paste.rs/XXXXX -o C:\akke-wuying\目标文件
(Get-Item C:\akke-wuying\目标文件).Length    # 必须和本机 wc -c 字节一致
# [云电脑→本机] 回传日志/截图:
curl.exe -s --data-binary "@C:\akke-wuying\rc_reply_log_YYYYMMDD.csv" https://paste.rs

⚠️ paste.rs 单文件 ~384KB 截断(传大截图会缺尾),字节核对永远不能省。

③ 作品墙会点进直播间(待修,v11 候选)

源账号正在开播时,主页作品宫格第一格是直播间(缩略图带红色「直播」角标),VL 找视频时可能点进直播——后续评论楼流程全部失配,浪费一条额度。临时对策:值守时看到进了直播间手动 Esc 退出等它跳过;脚本修法(待做):locate 的 prompt 明确排除带「直播」角标的格子 + 进页后加一道"当前是视频播放页而非直播间"的判定。

④ 批次后段 wrong_video 变多——疑似连续搜索被节流/页面状态污染

15 条连跑,最后 4-5 条集中"没进对源账号主页"。怀疑连续搜索触发软限流或残留页面状态叠加。对策:单批别贪长(8-10 条一批,批间歇 10 分钟),中后段失败率上来就停批,失败条自然回池明天再拉。

⑤ 正常损耗预期:17 条发 6 条不丢人

本批失败分布:wrong_video 5(搜索/主页问题)、type_fail 4(粘贴没进框,安全跳过)、video_not_found 1、comment_not_found 1(评论被压沉)。GUI 通道天然有损耗,拉单时按目标数的 2-3 倍备料,失败条不消耗去重(锁过期自动回池)。