抖音私信 DOM 自动化 · 完整操作手册 + 部署指南

首触派单(给新 lead 发招呼)+ DOM 捕获回复(读客户回复·自动起草)· 无影云电脑 · 2026-06-29
浏览器端已上线生产

整条私信链跑在一个隐形 Edge(headless,屏幕上看不见)里,靠 CDP 直接读写网页 DOM——不截图、不点坐标、不抢窗口。本手册讲一台机器怎么从零搭起来 + 每天怎么跑。黄色 = 关键操作 / 关键设置

这套是什么 · 两条腿

干什么怎么开
首触派单poll agent 自动 claim 新 lead → DOM 进对方主页点「私信」发招呼AKKE_DM_SCRIPT=douyin_dm_web_send_dom.py
DOM 捕获回复每轮读私信会话列表 → 红点判客户回复 → 写回库 → 自动起草AKKE_WEB_DM_USE_DOM=1 等 3 个 env

两条腿都在 poll agent(wuying_poll_agent.py)里,共用同一个隐形 Edge。

前置环境(开搞前确认)

一次性部署(每台机器只做一次)

1) 装依赖

1装 Playwright + uiautomation
py -m pip install playwright uiautomation   # attach 现成 Edge, 不用 playwright install

2) 拉最新脚本

跟着日常 update.bat 拉,或确认这两个在目录里:douyin_dm_web_capture_dom.pydouyin_dm_web_send_dom.py,以及改过的 douyin_dm_autoreply.py

3) 起隐形 Edge + 首次登录抖音

2起一个带调试口的 Edge(专用 profile,跟日常 Edge 不冲突)
$edge="C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
if(!(Test-Path $edge)){$edge="C:\Program Files\Microsoft\Edge\Application\msedge.exe"}
Start-Process $edge -ArgumentList '--remote-debugging-port=9222','--user-data-dir=C:\akke-edge-debug','https://www.douyin.com'

首次用可见窗口起(去掉 headless),在弹出的 Edge 里登录抖音 + 点开一次私信。登录态存进 C:\akke-edge-debug,以后隐形起也带着。

4) 配 .env(首触 + 捕获一起开)

3在 C:\akke-wuying\wuying-dm\.env 加这几行
AKKE_DM_SCRIPT=douyin_dm_web_send_dom.py   # 首触派单走 DOM(含 web → 路由对)
AKKE_WEB_DM_USE_DOM=1                     # 捕获走 DOM
AKKE_WEB_DM_DOM_COMMIT=1                  # 捕获真写库
AKKE_DM_AUTOREPLY_CAPTURE=1               # 开捕获腿

命令行追加(纯 ASCII 安全):
Add-Content -Path .env -Value "AKKE_WEB_DM_USE_DOM=1`nAKKE_WEB_DM_DOM_COMMIT=1`nAKKE_DM_AUTOREPLY_CAPTURE=1" -Encoding ascii

云电脑关机 / 重启后 · 恢复(每次开机必做)

云电脑一关机,隐形 Edge 和 poll agent 都没了 —— 不手动拉起,就既不发也不捕获。重启后按 1→2→3 顺序跑:
1拉起隐形 Edge(登录态存在 C:\akke-edge-debug,自动带着,不用重登)
Start-Process "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" -ArgumentList '--headless=new','--remote-debugging-port=9222','--user-data-dir=C:\akke-edge-debug','https://www.douyin.com'
2等约 10 秒,验证通了
浏览器开 http://127.0.0.1:9222/json/version 有 JSON = Edge 通了
# 想更确切: 跑一次捕获看读不读得到
cd C:\akke-wuying\wuying-dm ; py douyin_dm_web_capture_dom.py   # conversation-item N>0 = 通
3起 poll agent(首触 + 捕获都在它里面)
cd C:\akke-wuying\wuying-dm
py wuying_poll_agent.py
万一登录过期了(第 2 步捕获一直 conversation-item 0 或报没登录):关掉 headless Edge,用可见窗口起(命令里去掉 --headless=new),在弹出的 Edge 里重新登录抖音 + 点开一次私信,再按上面 1→3 重来。Cookie 一般能撑 15-30 天,不用天天登。

首触派单 · 运行 + 验证

claim 新 lead写 contacts.csv sec_uid 进主页点「私信」打字+点发送键写 sent_log

poll agent claim 到 lead 时自动跑,日志出现:

=== DOM 批量发送: N 条 (间隔 20-45s) ===
  [sent] 张三: 你好,张三。全屋定制按建筑面积…
:DOM 首触只发 DM、不做关注/点赞(关注是软封最大的雷,少做更安全);按 sec_uid 直达对方主页,天生不撞名,省了 OCR 身份门。发送间隔 20-45s 抖动可用 AKKE_WEB_DM_MIN/MAX_INTERVAL 调。

手动测一条(隐形 Edge 开着):

py douyin_dm_web_send_dom.py --sec=<sec_uid> --msg="你好"          # dry-run 不发
py douyin_dm_web_send_dom.py --sec=<sec_uid> --msg="你好" --send   # 真发

DOM 捕获回复 · 运行 + 验证

每轮 capture读 conversation-item 红点闸 + 判回复链record_dm_inbound起草回复

poll agent 每轮自动跑,日志出现(看到 [DOM] 就是走 DOM;有真回复出 [inbound]):

=== web capture[DOM]  (COMMIT 写回) ===
  conversation-item 11 个 / 有红点 1 个 / 命中客户回复 0 条
:DOM 捕获全程不点会话、永不标已读,不污染未读信号;红点是权威闸,无红点不当回复。重复/噪声由服务端 1 小时去重 + 中央闸兜底。

日常排查

现象原因 / 处理
有些私信没发出去 / 发到错窗口开了可见的第二个 Edge 抢焦点。确保捕获 Edge 是 headless 隐形 的,发送那个(如还用 pyautogui)才是唯一可见窗口
日志 连不上 CDP / 没找到 douyin 页隐形 Edge 没起或被关。重跑开机第 1 步,http://127.0.0.1:9222/json/version
捕获 conversation-item 0 + 弃权该轮私信面板没挂上(发送腿导航走了)→ 自动重开;持续 0 才需查
首发 no_secuid该 lead 没 sec_uid(web 强依赖)→ 自动跳过,正常
首发 dm_panel_failed对方主页「私信」没点开(隐私设置/超时)→ 回池重试 3 次后跳过,不罚账号
改了 .env 没生效python-dotenv 只在启动读 → 必须重启 poll agent
传文件到云电脑下坏了curl.exe -o,别用 iwr(会转码坏文件)

回退(出问题一键回旧版)

改 2 处 + 重启 poll agent
AKKE_DM_SCRIPT=douyin_dm_web_grounded.py   # 首触回 pyautogui 版
# 删掉 / 改 0:  AKKE_WEB_DM_USE_DOM            # 捕获回 VL 版