用 douyin_dm.py --blind(裸自动档)一次性发了 8 条私信,全部回写完成去重。另有 3 个"常见名"线索(小霞 / 东方 / 瑶)因为容易发错同名号,发之前手动剔掉了,没发。
| # | 昵称 | 状态 |
|---|---|---|
| 1 | 麦小宝 | 已发 |
| 2 | 热情于谁. | 已发 |
| 3 | 原来的我 | 已发 |
| 4 | 不忘初心☘️ | 已发 |
| 5 | 诚实不虚伪 | 已发 |
| 6 | 日行一善丶 | 已发 |
| 7 | 说不出口的再见 | 已发 |
| 8 | 欢欢乐乐 | 已发 |
| — | 小霞 / 东方 / 瑶 | 剔除未发 |
本机 = 在自己电脑的 Claude Code 对话框里 · 无影 = 在无影云电脑的 PowerShell 窗口里手动敲
Claude 实际跑:
# --intent-label=高意向 是关键:不加它 RPC 只扫前 60 条会误判空池
pnpm tsx scripts/export-leads-csv.ts --limit=10 --since-hours=72 \
--intent-label=高意向 --out=data/contacts-blind-20260602-0830.csv
这一步会自动 claim 锁号(4 小时)+ 生成开场白 + 写成 CSV。
Claude 把这 3 行从 CSV 删掉。blind 档没有身份核对,常见名极易发错同名号,必须发前剔除。
Claude 实际跑(每条返回一个短链接):
# 传话术 CSV → 返回 https://paste.rs/lh4pv curl -s --data-binary @data/contacts-blind-20260602-0830.csv https://paste.rs # 传发送脚本(已按 1920×1018 配好坐标) → 返回 https://paste.rs/G6qVC curl -s --data-binary @data/_douyin_dm_wuying.py https://paste.rs
⚠️ 文件传无影一律走 paste.rs,别用剪贴板——剪贴板同步会截断(14KB 只过 40 字符)。
在无影的 PowerShell 窗口里敲(链接换成上一步返回的):
Invoke-WebRequest -Uri https://paste.rs/G6qVC -OutFile douyin_dm.py -UseBasicParsing Invoke-WebRequest -Uri https://paste.rs/lh4pv -OutFile contacts.csv -UseBasicParsing
开跑前先确认(缺一不可):
然后跑:
python douyin_dm.py contacts.csv --blind
脚本会挨条自动:搜索 → 进主页 → 点私信 → 打字 → 点发送↑ → 关窗口。发完生成 sent_log_20260602.csv。
在无影 PowerShell 里把日志传回 paste.rs(这条命令打印出来的就是链接):
Invoke-RestMethod -Uri https://paste.rs -Method Post -InFile sent_log_20260602.csv
屏幕上会回一个 https://paste.rs/XXXXX,把它复制下来。
Claude 实际跑:
# 下载日志 curl -s https://paste.rs/Ld8jH -o data/sent_log_20260602_blind.csv # 逐条标记 contacted(status=sent 的全部回写,完成去重) pnpm tsx scripts/import-sent-log.ts --in=data/sent_log_20260602_blind.csv
这步漏做 = 4 小时后锁过期,这些人会被别人重新抢去重发,去重就废了。必须做。
是怎么卡住的:全自动发送要靠视觉模型(OCR)在进私信前核对"搜出来的人是不是目标本人",否则会发错。能在阿里无影内网稳定跑的视觉模型是 DashScope(阿里百炼)——但它是收费鉴权 API,必须有 key,没有免 key 模式。所以"全自动 + OCR + 不要 key"三个条件天然矛盾,只能三选二。
当时给的三个选项:
--blind 裸自动档,快,但没身份核对)最终选 B(blind)。具体怎么落地:
本机 · Claude 准备带 --blind 档的脚本,传到无影:
curl -s --data-binary @data/_douyin_dm_wuying.py https://paste.rs
# 返回脚本链接,如 https://paste.rs/G6qVC
无影 · PowerShell 下载后命令末尾加 --blind 开跑:
Invoke-WebRequest -Uri https://paste.rs/G6qVC -OutFile douyin_dm.py -UseBasicParsing python douyin_dm.py contacts.csv --blind
加了 --blind 就不调 OCR、不读 key、不弹 y/n,挨条直接发。代价是没有身份核对 → 见第四节"两个代价",所以发之前必须先把常见名剔掉。
是怎么卡住的:脚本靠"绝对像素坐标"去点搜索框、私信键、发送↑ 这些按钮。坐标是每台机器、每个分辨率专属的。仓库里存的是另一台机(2286×1600)量好的值,直接拿到夏夏这台 1920×1018 上跑,每个点都会偏,抖音完全没反应。
解决办法:用按本机 1920×1018 标定好的脚本,不用仓库默认值。
本机 · Claude 把脚本里的坐标常量改成 1920×1018 的标定值,传上去:
# Claude 已把 _douyin_dm_wuying.py 里坐标改成 1920×1018 专属值
curl -s --data-binary @data/_douyin_dm_wuying.py https://paste.rs
无影 · PowerShell 以后换了机器、或分辨率变了,要先重新量坐标再发:
# 1) 抖音登录、最大化、随便开一个私信窗口 # 2) 跑校准,跟着提示逐个点按钮,自动把新坐标写回脚本 python calibrate.py # 3) 量完再正常发 python douyin_dm.py contacts.csv --blind
⚠️ 无影分辨率有时会自己漂,漂了坐标也会失配,尽量锁死无影显示分辨率,免得每次都要重校。
--intent-label=高意向 走深扫 500,别重试也别找研发。calibrate.py 重校,否则坐标全偏。