# 1) 装 u2(必须 python3.11,系统自带的 3.9 不行) python3.11 -m pip install "uiautomator2==3.5.0" python-dotenv supabase # 2) 手机插好、开 USB 调试,确认连上(第一次连会自动往手机推 atx-agent) adb devices python3.11 -c "import uiautomator2 as u2; d=u2.connect(); print(d.serial)"
.env.local 要有你自己的 AKKE_ACCOUNT_ID / AKKE_ORG_ID(PM 一次性下发)。脚本靠这个认账号,多运营各跑各的、互不串号。第 1 步 · 拉「昨天发出的 DM」清单 查库 · 几秒
pnpm tsx scripts/dm-noreply-followup-worklist.ts # 默认昨天 # 指定某天: pnpm tsx scripts/dm-noreply-followup-worklist.ts --date=2026-06-01
第 2 步 · 扫收件箱,判断谁没回 手机 · 2-3 分
python3 scripts/dm-phone-sender/scan-dm-replies.py --date=2026-06-01
按 DM 原文比对每个会话最后一条消息:还是我们的 DM → 没回(要触达);变成对方的 → 已回,跳过;列表没找到 → 人工瞄一眼。跑这步别动手机、别切走抖音。
第 3 步 · 去没回的人最新视频下评论 手机 · 每条 ~2 分
# 先 DRY 单条试(不真发,只走流程+截图): python3.11 worker/scripts/recomment_noreply.py --date=2026-06-01 --idx=19 # 真发单条(验证): python3.11 worker/scripts/recomment_noreply.py --date=2026-06-01 --idx=19 --commit # 真发全部没回的: python3.11 worker/scripts/recomment_noreply.py --date=2026-06-01 --commit
流程:进对方主页 → 没视频/私密就跳过 → 点最新作品进视频 → 评论框贴 DM 原文 → 发送。每条之间自动间隔 75-105s 防风控。遇 验证码/频繁/违规自动硬停整批。已发成功的会标记,重跑不重发。截图在 worker/scripts/snaps/recomment/。
.env.local 账号,互不影响。| 阶段 | 耗时 |
|---|---|
| 第1步 拉清单 | 几秒(纯查库) |
| 第2步 扫收件箱(20 会话 / 208 行列表) | ~2-3 分钟 |
| 第3步 评论 14 条(含每条 76-103s 防风控间隔) | 23.7 分钟 · 单条均 110s |
单条真正操作只占 ~20s,其余是安全间隔。一天十几条 ≈ 半小时内手机挂着自动跑完。
输入 20 条昨天 DM → 扫回流:15 没回 / 1 已回(加微信,跳) / 4 没核到。对 15 条没回的跑评论:
| 结果 | 条数 | 说明 |
|---|---|---|
| ✅ 成功评论 | 9 | 已抽查截图,评论确在对方最新视频区 |
| ⛔ 无公开视频(跳过) | 3 | 潜水用户,符合规则 |
| ⚠️ 主页加载失败 | 3 | 都是开头冷启动那几条,多半暂时性,可重跑找回 |
待优化(已知,未做)
已知坑(维护 / 换机的人看)
uiautomator dump 返回空树;u2 的 dump_hierarchy() 才正常。snssdk1128://user/profile/?sec_uid=xxx;路径形式只出骨架屏永远加载不出。cover、评论输入框=eor、评论按钮=文本"评论"、发送=文本"发送"、最新视频页=UltraDetailActivity。换机/更新后若大面积失败,先重核这几个 id。