云电脑(无影)DM 操作总结

2026-06-02 · 操作人:夏夏(本人)· 通道:阿里无影云电脑 · 机器分辨率:1920×1018 · 模式:--blind 裸自动档

一、操作结果

8
实发成功
8
已标记去重
3
主动剔除
0
发错/重复

douyin_dm.py --blind(裸自动档)一次性发了 8 条私信,全部回写完成去重。另有 3 个"常见名"线索(小霞 / 东方 / 瑶)因为容易发错同名号,发之前手动剔掉了,没发

实发名单

#昵称状态
1麦小宝已发
2热情于谁.已发
3原来的我已发
4不忘初心☘️已发
5诚实不虚伪已发
6日行一善丶已发
7说不出口的再见已发
8欢欢乐乐已发
小霞 / 东方 / 瑶剔除未发

二、完整流程(每步具体怎么操作)

本机 = 在自己电脑的 Claude Code 对话框里 · 无影 = 在无影云电脑的 PowerShell 窗口里手动敲

1拉单 + 备开场白本机 · Claude
💬 你对 Claude 说:"云电脑发 5 条,时效 72h 内,注意去重"

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。

2剔除常见名(blind 安全关键)本机 · Claude
💬 你对 Claude 说:"小霞、东方、瑶这三个剔掉,只发剩下 8 条"

Claude 把这 3 行从 CSV 删掉。blind 档没有身份核对,常见名极易发错同名号,必须发前剔除。

3把 CSV 和脚本传到 paste.rs本机 · Claude

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 字符)。

4无影上下载脚本和话术无影 · PowerShell

在无影的 PowerShell 窗口里敲(链接换成上一步返回的):

Invoke-WebRequest -Uri https://paste.rs/G6qVC -OutFile douyin_dm.py -UseBasicParsing
Invoke-WebRequest -Uri https://paste.rs/lh4pv -OutFile contacts.csv -UseBasicParsing
5开发!无影 · PowerShell

开跑前先确认(缺一不可):

  1. 抖音 PC 客户端已登录你的号、窗口最大化、在最前台
  2. 输入法切成英文模式(Win+空格)——中文输入法会抢走搜索词首字搜错人
  3. 聊天窗口先关掉,回主界面

然后跑:

python douyin_dm.py contacts.csv --blind

脚本会挨条自动:搜索 → 进主页 → 点私信 → 打字 → 点发送↑ → 关窗口。发完生成 sent_log_20260602.csv

6把发送日志传回本机无影 · PowerShell

在无影 PowerShell 里把日志传回 paste.rs(这条命令打印出来的就是链接):

Invoke-RestMethod -Uri https://paste.rs -Method Post -InFile sent_log_20260602.csv

屏幕上会回一个 https://paste.rs/XXXXX,把它复制下来。

7回写去重(闭环)本机 · Claude
💬 你对 Claude 说:"发完了,sent_log 在这 https://paste.rs/Ld8jH"

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 身份核对、又不想申请百炼 key"——这俩凑不到一起

是怎么卡住的:全自动发送要靠视觉模型(OCR)在进私信前核对"搜出来的人是不是目标本人",否则会发错。能在阿里无影内网稳定跑的视觉模型是 DashScope(阿里百炼)——但它是收费鉴权 API,必须有 key,没有免 key 模式。所以"全自动 + OCR + 不要 key"三个条件天然矛盾,只能三选二。

当时给的三个选项:

  • A = 全自动 + OCR + 申请一把百炼 key(最稳,但要去开通 key)
  • B = 全自动 + 不要 key + 不做 OCR(--blind 裸自动档,快,但没身份核对)
  • C = 不全自动,保留人工 y/n 逐条确认(不要 key、也不会发错,但要盯着)

最终选 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,挨条直接发。代价是没有身份核对 → 见第四节"两个代价",所以发之前必须先把常见名剔掉。

问题② 坐标对不上:这台机是 1920×1018,仓库脚本默认是另一台机的 2286×1600

是怎么卡住的:脚本靠"绝对像素坐标"去点搜索框、私信键、发送↑ 这些按钮。坐标是每台机器、每个分辨率专属的。仓库里存的是另一台机(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

⚠️ 无影分辨率有时会自己漂,漂了坐标也会失配,尽量锁死无影显示分辨率,免得每次都要重校。

四、经验总结

⚠️ blind 裸自动档有两个代价(最重要,记牢)
  • 发错人:没有身份核对,常见名(小霞/东方/瑶)会撞到同名号发错。
  • 烧号去重:发错的那条会被当成"已联系"永久从池子去重掉,真线索就丢了。
对策:跑 blind 前先把常见名剔出去,只留独特名。要 0 误发就别用 blind,得上 OCR 身份门(但那要 key)。
拉单返 0 别急:banner 说"可抢 >0" 但拉出 0 条,多半是 scan_cap=60 截断,加 --intent-label=高意向 走深扫 500,别重试也别找研发。
昵称搜索易撞同名:脚本按昵称搜(不是用户 ID),常见名第一个结果常不是目标人;独特名才稳。
坐标机器专属:换无影机 / 分辨率变了,必须跑 calibrate.py 重校,否则坐标全偏。
传文件走 paste.rs,别用剪贴板:剪贴板同步会截断(14KB 只过 40 字符)。链接就是上传命令的输出。
开跑前三件套:抖音最大化在最前台 + 输入法切英文 + 聊天窗口先关掉。漏一个就会发错或卡住。