把 已 DM 触达过、≥1 天没回的高/中意向用户(反评 RC 纳入为待做项)做成事件驱动盯防:本人一发新视频,就在发布 ≤10 分钟内自动完成点赞 + 评论1(评这条视频内容)+ 评论2(逐字搬首触原文)。每人每天 ≤1 次、累计 ≤7 次、对方一回复就停、商家/同行排除。监控 + 三连发送都搬无影一台云电脑常驻(路 B),队列与发送同机闭环。
「趁新鲜」是潜在触达的命门。监控延迟(≤60s)+ 回复门 + 话术(评论1 JIT 秒级 / 评论2 查表零延迟)+ 三连执行(1–3min)必须全部挤进这 10 分钟;超过则该视频作废、不触。每一步耗时不是孤立的,是在跟这 10 分钟预算赛跑。
| # | 步骤 | 耗时 | 原理 | 可云自动 |
|---|---|---|---|---|
| 0 | 关注补齐 (前置·瓶颈) | 日限 30/号 补 164 ≈ 5–6 天 | 监控只能看到「号关注了的人」。关注写动作被抖音反爬挡死(raw API 403、Playwright 空白页),唯一通路 = 无影 GUI 原生登录点关注(_follow_grounded.py)。 | 半自动 无影 GUI 常驻 |
| 1 | 进池筛选 (候选计算) | 秒级 批量 SQL | second-touch-worklist.ts:本号 DM 过 · 距最后一条 DM ≥1 天 · 原评论高/中意向 · 未停(未回未满 7 次)。 | 可全云 纯 DB,可 cron |
| 2 | 实时监控 发新视频 | 检测延迟 ≤60s + 网络 | f2 签名拉账号关注流 follow/feed,每 60s 翻 3 页,视频 age≤10min 才算新鲜入队。_realtime_touch_watch_wuying.py,纯只读 API。 | 无影已跑 无 VPN、无 fake-IP |
| 3 | 回复识别 (去重停发) | scan 扫收件箱 分钟级 | 列表预览指纹比对判 replied → 回了就停。洞② P0 已落库 conversations.last_inbound_at,回复真相首次可查、跨机收敛。 | 半自动 scan 需登录设备 GUI |
| 4 | 话术生成 | 评论1 LLM 秒级 评论2 查表 0 延迟 | 评论1 = 逮到视频那刻 JIT:看这条视频标题/正文现场用 qwen3 生成对内容的反应(空正文 → 「赞赞赞」表情兜底)。评论2 = 查表逐字搬首触原文(DM/反评),照发不挡空(带微信/报价也发,封号风险走节奏层兜)。 | 已实现 评论1 无影 JIT / 评论2 mac 预生成查表 |
| 5 | 三连执行 点赞+评论1+评论2 | 每条 ~1–3min 须 ≤10min 窗内打完 | 无影 GUI douyin_comment_grounded.py:搜人 → 身份门 → 开视频 → 暂停 → 点赞 → 评论1 → 评论2(VL/模板匹配 + SendInput)。consumer _realtime_touch_consume_wuying.py 常驻 drain 队列。 | 卡 GUI 无影专用,桌面须醒着 |
| 6 | 节奏控制 / 出库 | 秒级 | mark-second-touch.ts + RPC:每天 ≤1 次、累计满 7 次 / 对方回复 → 永久出库;second_touch_state 单调推进、跨机去重。comment_log 摆渡回 mac 回写。 | 可全云 纯 DB |
你平时看抖音"关注"页,背后其实是 APP 偷偷向抖音服务器要了一份"我关注的人最新视频清单"。监控跳过"开 APP、画画面",直接向服务器要这份清单,拿回的是纯文字数据(作者 / 视频ID / 发布时间 / 文案),代码直接读、挑出"池里的人 + 发布<10min"。全程没有鼠标点击、没有画面、不用抖音窗口在前台。
f2 算签名、cookie 是一筑登录凭证,凑齐就能要到数据。抖音把"读"和"写"分两种态度:读(看别人发了啥)服务器愿意给(带签名就行)→ 监控走后台;写(点赞 / 评论 / 关注)抖音严防机器人、把接口封死了(直接调 403 / 封号)→ 只能像真人一样点界面糊弄反爬。点界面靠"鼠标点对坐标、屏幕长对样",坐标偏 / 窗口没最大化 / 视频在轮播就点空——这就是当前发送出问题的根源。
| 对比 | 点界面(发送 / 关注 · 写) | 后台读数据(监控 · 读) |
|---|---|---|
| 靠什么 | 鼠标点对坐标、屏幕长对样 | 一个数据请求 |
| 快慢 | 慢,一条 1–3 分钟 | 秒级,一次几十条 |
| 怕坐标 / 窗口 | 怕 坐标偏就点空 | 不怕 跟屏幕无关 |
| 抢不抢鼠标 | 抢 跑时别碰 | 不抢 后台静默 |
| 怕不怕黑屏 | 怕 黑屏就瘫 | 不怕 不看屏幕 |
监控每 60 秒翻 3 页 ≈ 45–60 条最新视频。「漏」= 某视频在它发布后 10 分钟里一直被更新的视频挤出前 3 页。
21 个关注一天发的视频总量远低于 45–60 条 → 3 页绰绰有余。配合"发布<10min 才触达":视频发出后 10 分钟里每 60 秒查一次 = 10 次露面机会,足够逮到。
500 个正常号(一天发 1 条左右)→ 每 10 分钟才约 3–4 条新视频 → 3 页照样不漏。真正风险 = 混进高频商家号 / MCN(一天发几十条),60 秒冒出几十条把目标挤出前 3 页才会漏——但这种号本就该在进池筛选时挡掉,不是潜在触达对象。
前提:你有①一台已登录抖音 PC 的无影云电脑(目录 C:\akke-wuying\wuying-dm\);②本机(mac)能跑仓库 pnpm tsx + worker/.venv;③你的 messaging 账号 id(AKKE_ACCOUNT_ID)+ AKKE_ORG_ID。把下面命令里的账号换成你自己的。
special-follow-*.json);话术表 = 每人「评论2 搬首触原文」查表(零 LLM、秒出)。
pnpm tsx scripts/second-touch-worklist.ts # 先出 worklist(评论2 文本源)
worker/.venv/bin/python worker/scripts/wuying-dm/_gen-realtime-touch-table.py \
--pool /tmp/special-follow-你.json --out /tmp/realtime-touch-table.json
# 需 .env.local 的 AKKE_ORG_ID;评论1 不在表里(无影 JIT 现生成)# mac:打包 + 上传
tar -czf /tmp/rtb.tgz -C worker/scripts/wuying-dm \
_realtime_touch_watch_wuying.py _realtime_touch_consume_wuying.py \
_jit_comment1_wuying.py _start-realtime-touch.bat \
-C /tmp realtime-touch-table.json
curl -s --data-binary @/tmp/rtb.tgz https://paste.rs # 拿到 URL + 记字节数
# 无影 PowerShell:下载 + 核字节 + 解压
cd C:\akke-wuying\wuying-dm
curl.exe -s <URL> -o rtb.tgz
(Get-Item rtb.tgz).Length # 必须 == mac 那边字节数
tar -xf rtb.tgz
另需无影本地已有:dy_cookie.txt(你号 cookie)、special-follow.json(关注池,注意文件名)、douyin_comment_grounded.py(三连执行器)、_probe_follow_feed_wuying.py、.env(含 OPENROUTER_API_KEY + OCR key)。pip install f2==0.0.1.7(硬钉这版,它锁 httpx==0.27.2,别升 httpx);确认 .env 里有 OPENROUTER_API_KEY(评论1 JIT 用,缺了就全退「赞赞赞」)。py _jit_comment1_wuying.py "复式loft改造 楼梯下做了嵌入式储物柜"
打印 key=有 + 一条贴合视频的评论 = ✅;打印 key=无(退兜底) + 赞赞赞 = .env 缺 key(补上才有内容反应版)。_start-realtime-touch.bat → 弹两个黑窗口(Akke-watch 监控 + Akke-consume 消费),各带崩溃自动重启。跑批期间别碰鼠标键盘(发评论时全程控 GUI)。unverified 不算成功;②人工复核 = 用一筑「喜欢」列表看视频在不在 + 另号/无痕看评论气泡。⚠️ 三连的点赞不写 outreach_events(video_like/comment_like 恒 0,别拿它当铁证),证据看 comment_log + second_touch_state.last_touch_at。comment_log 摆渡回 mac 跑 mark-second-touch.ts --from-comment-log 回写节奏。无影是云电脑(跑在阿里服务器,不是你自己 mac),但它有个老毛病——客户端一断开、桌面容易黑屏/挂起(历史上「87% 黑屏」是自动发失败头号根因)。而点赞+评论是 GUI 自动化,必须桌面亮着、抖音在前台才能干活。所以:
①两个黑窗口别关(关 = 停)。②抖音 PC 保持登录 + 最大化 + 前台。③无影桌面保持连接/醒着——你自己的 mac 可以休眠/断网(那只是连无影的客户端),但无影那台云桌面要保持活跃,否则黑屏发不出。④发评论时别碰鼠标键盘。
无影黑屏 + 要保持前台,意味着现在还做不到「关掉一切它自己 7×24 跑」。治本方向(待做):无影企业版 EDS 官方远程命令(ecd run-command 推 PS 脚本)+ 按需唤醒(定时窗口拉起桌面)+ 防黑屏保活。当前阶段 = 保持无影在线 + 常驻脚本这套半自动。
dy_cookie.txt 约 15–30 天失效,监控开始报错就是它——本机重新导出 cookie、摆渡覆盖。realtime-touch-table.json(消费端每轮热重读,不用重启)。_follow_grounded.py,日限 30/号)把池子里没关注的人补上——这是产量天花板。reverse_comment_queue,当前 worklist 只读 messages)。评论2 空就只发点赞+评论1,不报错。要补这批,让 worklist 多 union 反评表(扩量项)。second_touch_state 累计满 7 次 / 对方一回复 → 永久出库;③监控按 aweme_id 去重,同一条视频只触一次。second-touch-worklist.ts 筛 intent_label ∈ {高意向, 中意向}(高+中都拉,不是只高);且只读 messages(DM 记录)、不读 reverse_comment_queue(反评)→ 只反评过没 DM 过的人当前不进池。「只高意向 + 纳入 RC」是待定改动项(需改 worklist + 重生成池/表 + 重摆渡;注意只留高意向会让池更小、12% 覆盖更紧)。cmd.exe 把 .bat 里的 UTF-8 中文按 GBK 读 → 乱码 + 行结构冲断。修法:.bat 必须纯 ASCII(英文),中文只留在 .py 里(Python 自己按 UTF-8 读,不受影响)。
PowerShell 的 curl 是 Invoke-WebRequest 别名,下载会把 UTF-8 文本重新编码弄坏。一律用 curl.exe(写原始字节)。每次传完两端核字节数,不等就是坏了。paste.rs 单文件 ~384KB 截断,大文件分开传。
监控脚本默认找 special-follow-饭粒.json,但无影上文件名常是 special-follow.json。.bat 里给监控传 --pool special-follow.json,或把文件改成默认名。
无影 .env 没 OPENROUTER_API_KEY,或连不上 OpenRouter(无影是中国 IP,先 python -c "import urllib.request;print(urllib.request.urlopen('https://openrouter.ai/api/v1/models',timeout=10).status)" 测 200)。补上 key 即恢复内容反应版。
客户端断开 / 桌面挂起 → GUI 自动化看不到屏幕 → 发送失败。保持无影桌面在线醒着(见上「常态运维」)。
f2==0.0.1.7 硬锁 httpx==0.27.2,监控拉关注流靠 f2 签名。别单独升 httpx,否则签名失败拉不到 feed。
2026-06-14,监控 → 入队 → 身份门 → 点赞 → 评论1 → 评论2 → 验证闸 全链路在一筑号实测跑通,第一条真视频三连成功落地并验证通过。executor 修复已提交主仓(commit 0a1e62b)。下面是这两天真跑踩出来的坑和解法。
抖音 PC 打开一条视频后播完会自动跳下一条。脚本以为还停在目标视频上,结果点赞 / 评论全打到了下一条别人的视频——目标视频既没赞也没评论,脚本却走完流程、还因为读到跳过去那条的红心误判"已赞"。
解法:取消连播。右下角连播开关关一次持久记住(开新视频仍是关闭态)→ 靠人手关一次即可,脚本不点它(它是 toggle,每条点反而又打开)。执行器另加 pause_video 暂停作双保险。
试了三种暂停:①空格键——焦点不在播放器上时变成"翻页",不暂停;②点视频画面中心——能暂停但受网速/时机影响不稳,短视频常在点到之前就跳了;③取消连播——最稳,根上不跳。最终:人手关连播 + 脚本 hover 唤出控制条、定位左下角播放/暂停键点它兜底。
6/12 整夜跑、日志写"3 条三连✅已点发送",实测全是假阳性:以一筑身份看,爱心不红、评论没有、"喜欢"列表里也没有——GUI 点击点空了但脚本仍 return 成功。
解法:把"点一下=成功"改成"验到才算"。点赞后验爱心真变红、评论后验气泡真出现 + 输入框清空;验不过记 unverified、不计成功、不标 touched、不假报。6/14 真视频落地就是这道闸放行的。
之前以为关注流只命中 12%=号没关注那些人、得批量补关注。实测是误判:监控关注流只露最近发过视频的人,"没出现 ≠ 没关注"。一筑号到本人页一看 18 个里 10 个已关、一轮监控就逮到 7 个池里人的视频 → 关注覆盖其实够,不是瓶颈。"盲关 200 人"的计划已否决,省下日限 30/号的几天铺设。真正的 wrong_user 问题用按抖音号反查(_enrich-follow-douyin-number.ts)定点修,不靠盲关。
把脚本/表从 mac 传无影的中转站接连失效:paste.rs、0x0.st、tmpfiles 全挂或限流。改用 gh gist 上传(走 GitHub,git 级稳)+ 无影 curl.exe 下载(下载方向一直通)。比临时 paste 站可靠得多。
实测一段 23:30 → 09:02 共 9.5 小时全空白:不是脚本崩,是无影平台层把空闲会话挂起了——powercfg 改电源策略管的是 OS 层,管不到平台层这层挂起。所以"关掉一切它自己 7×24 跑"目前还做不到,要解无影空闲断开(保持连接 / 控制台保活策略)。生产档监控 --max-age-min 10,两窗口(监控+消费)可见、能自重启常驻。
之前批量~9 成"点空/落到非主页",根因三条全修:①用户tab 坐标与首条结果重叠成同一点→改 VL 定位「用户」二字;②搜人前没回首页 → 搜索框漂移点空 → goto_home() 钉死首页再搜;③already_followed() 用诱导式提问"找已关注按钮"→问就答已关注、一个不关 → 改裁剪头部"读按钮文字"判别。配 OCR 身份门"非主页/加载中"重试 3 次。
无影上所有点击坐标用千分比(0–1000)而非绝对像素,换分辨率不用全量重标。要精确坐标时用 _capture_pos.py(倒数 5 秒捕获鼠标位置 → 打印千分比)。连播开关、左下角暂停键这些都靠它量。另有 seen 去重表按 aweme_id 防同一视频重复触。
unverified 不假报——6/12 那批"已点发送"假阳性被它挡住、不再误入库。Akke · 潜在触达流程 + 复刻 SOP + 常态运维 · 口径随实现演进,以代码为准 · 2026-06-14