feat(monitor): 抖音 Web 接口客户端 —— 绕开爬虫子进程,直接发 HTTP
移植自 mac-agent-os 的 mediacrawler_adapter:不起子进程、不开页面,用浏览器里那份
登录态直接调抖音 Web 接口。产物键名照抄 store/douyin,所以 ingest 那条链路一个字不用改。
**目前能用的(真环境实测,非推断)**:
profile/other : 200, 7075 字节 —— 博主主页指标(粉丝/获赞/作品数/昵称)
aweme/detail : 200, 45425 字节 —— 单条作品详情(含点赞/评论/收藏/分享)
**目前不能用的:作品列表 `aweme/post`。** 两个互相独立的原因:
1. 这个接口被抖音单独升级成了真校验:不带 x-tt-argus 回 403「Uifid Not Found」,
带上 dummy 值回 200 + **空 body**。也就是说「头在不在」骗得过,「真校验」过不了。
同一套头打 profile/other 和 aweme/detail 都是通的 —— 抖音是挑着接口加保护的,
挑中的恰好是「批量拉作品列表」这个最敏感的动作。
2. 改走页面截获也不行:CDP 浏览器打开博主主页会落到「验证码中间页」(当天大量探测的
代价,过几小时要重测)。
所以现在的边界是:**已知作品的指标刷新能做,自动发现新作品做不了**。
**排查中控住变量后得到的两条事实**(都写进注释了):
· `Accept` / `Accept-Language` / `Referer` 才是主页接口能返回真数据的原因 —— 只有
UA+client hints+Cookie 时是 200 但仅 121 字节的空壳,补上这三个头变 7074 字节。
(我先前猜的 sec-ch-ua 不是关键。)
· 因此 UA 与 client hints 必须**成套地取自同一个浏览器**,所以 BrowserIdentity 一次
从 CDP 取齐 cookie + UA + hints,而不是各自写死。
「200 + 空 body 必须当场报错」也是刻意写死的:放过去它会在下游变成「这个博主没作品」,
把一次失败伪装成一条正常结果 —— 爬虫那条路正是这么栽的,还被翻译成「账号被封」。
测试 +11:cookie 解析、请求头成套性(含 uifid 缺失/回退)、产物键名与 store 对齐、
以及 _get 的三条失败路径(空 body / 403 带网关原话 / 正常返回)。
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
# 即梦(Dreamina) 网页版自动化方案
|
||||
|
||||
> **版本**: v0.1 (规划阶段)
|
||||
> **创建**: 2026-05-14
|
||||
> **状态**: ⏸️ 暂停(操作路径记录中,生成任务卡在排队)
|
||||
> **下次目标**: 完成下载步骤的记录,编写 jimeng_ops.py
|
||||
|
||||
---
|
||||
|
||||
## 一、项目背景
|
||||
|
||||
### 1.1 目标
|
||||
|
||||
为 AVE 视频工厂提供高质量的 AI 生成视频素材,替代 Pexels 免费素材。
|
||||
每期口播视频需要 12 段素材,每段 5-10 秒竖屏视频。
|
||||
|
||||
### 1.2 为什么选即梦网页版
|
||||
|
||||
| 方案 | 每段5秒成本 | 一期12段 | 备注 |
|
||||
|:-----|:----------:|:--------:|:-----|
|
||||
| Pexels 免费素材 | 0元 | 0元 | 画面静态,观感差 |
|
||||
| 腾讯云混元 API | 1.8-3.6元 | 21.6-43.2元 | 后付费,贵 |
|
||||
| **即梦网页版会员** | **0.22-0.37元** | **2.6-4.4元** | **VIP 可用 1080p,便宜** |
|
||||
| 即梦 CLI | 同会员积分 | 同左 | **VIP 模型 CLI 不支持,720p 限制** |
|
||||
|
||||
**结论**:即梦网页版会员(¥79-649/月)性价比最高,但需通过 Peekaboo 自动化操作网页。
|
||||
|
||||
### 1.3 备选方案对比
|
||||
|
||||
| 方案 | 结果 | 原因 |
|
||||
|:-----|:----:|:-----|
|
||||
| Dreamina CLI 直接调用 | ❌ 放弃 | CLI 免费版锁 720p,VIP 模型不支持 |
|
||||
| Buddy-cloud.py (腾讯云) | ✅ 可用 | 1080p 可用,但成本是即梦网页版的 5-10x |
|
||||
| CloakBrowser Playwright 自动化 | 🔧 备用 | 需处理反爬/登录态,不如 Peekaboo 直接 |
|
||||
| Peekaboo GUI 自动化 | ✅ **主方案** | 基于视觉识别,即梦不管怎么改UI都能用 |
|
||||
|
||||
---
|
||||
|
||||
## 二、当前进度
|
||||
|
||||
### 2.1 已完成
|
||||
|
||||
- [x] Dreamina CLI 安装到 `~/.local/bin/dreamina`
|
||||
- [x] CLI OAuth 登录成功(积分余额: 80)
|
||||
- [x] 验证 CLI 命令集(`text2video`, `text2image`, `user_credit` 等)
|
||||
- [x] 确认 CLI VIP 模型不可用(网页端会员 ≠ CLI 会员)
|
||||
- [x] Peekaboo 截图测试成功(可捕获 Chromium 窗口)
|
||||
- [x] 即梦首页页面结构记录完成
|
||||
- [x] 文生视频操作路径第 1-5 步记录完成
|
||||
|
||||
### 2.2 待完成
|
||||
|
||||
- [ ] **步骤 ⑥:下载视频** — 生成完成后下载按钮在哪?如何触发下载?
|
||||
- [ ] 编写 `jimeng_ops.py`(Peekaboo 原子操作脚本)
|
||||
- [ ] 编写 blueprint 蓝图(批量生成多段素材)
|
||||
- [ ] 集成到 AVE pipeline(生成 → 下载到 cache → Ken Burns → 合成)
|
||||
- [ ] 处理异常情况(积分不足、模型降级、生成失败)
|
||||
|
||||
---
|
||||
|
||||
## 三、即梦首页页面结构
|
||||
|
||||
### 3.1 侧边栏(左)
|
||||
|
||||
| 图标按钮 | 文字 | 功能 |
|
||||
|:--------|:----|:-----|
|
||||
| 💡 | 灵感 | 默认首页,直接输入 prompt |
|
||||
| ⚡ | 生成 | 各类生成任务入口 |
|
||||
| 📦 | 资产 | 历史作品 |
|
||||
| 🎨 | 画布 | 编辑/合成 |
|
||||
| ❓ | OCTO | 未知功能 |
|
||||
|
||||
底部:开通会员 | 积分(80) | 头像(登录后显示) | 通知🔔 | CLI 介绍
|
||||
|
||||
### 3.2 主输入区(中)
|
||||
|
||||
大输入框(类智能体对话框),包含:
|
||||
|
||||
| 元素 | 位置 | 说明 |
|
||||
|:-----|:----|:-----|
|
||||
| + 添加文件 | 输入框左上角 | 图生图/图生视频等 |
|
||||
| 智能体模式(Agent) | 输入框下方左 | 默认模式,自动判断输出类型 |
|
||||
| 自动/生成偏好 | 模式按钮旁 | 可设图片/视频、比例、模型版本 |
|
||||
| [使用技能] | 模式按钮区 | 剧情短片、电商套图、海报设计等 |
|
||||
| [@] | 模式按钮区 | 指定主体/人物 |
|
||||
| 🎤 麦克风 | 输入框右下角 | 语音输入 |
|
||||
| ↑ 发送箭头 | 输入框右下角 | 灰色→变亮(输入内容后) |
|
||||
|
||||
### 3.3 模式切换弹窗
|
||||
|
||||
点"智能体模式"可切换:
|
||||
|
||||
| 模式 | 用途 |
|
||||
|:-----|:-----|
|
||||
| 图片生成 | 文生图 |
|
||||
| 视频生成 | 文生视频(本方案目标模式) |
|
||||
| 数字人 | 数字人出镜 |
|
||||
| 配音 | 语音合成 |
|
||||
| 动作模仿 | 动作驱动 |
|
||||
|
||||
### 3.4 自动/生成偏好设置
|
||||
|
||||
| 设置项 | 可选值 |
|
||||
|:-------|:-------|
|
||||
| 输出类型 | 图片 / 视频 |
|
||||
| 比例 | 21:9 / 16:9 / 9:16(竖屏) / 等 |
|
||||
| 模型版本 | 图片4.0 / 3.0 / 等 |
|
||||
|
||||
---
|
||||
|
||||
## 四、完整操作路径(已记录 5/7 步)
|
||||
|
||||
```
|
||||
① 首页(灵感Tab,Agent模式)
|
||||
状态: 输入框空,发送按钮灰色
|
||||
操作: 输入 prompt
|
||||
↓
|
||||
② 输入 prompt 后
|
||||
状态: 发送按钮由灰变亮,其他无变化
|
||||
操作: 按回车 或 点发送箭头
|
||||
↓
|
||||
③ 进入对话模式
|
||||
状态: AI 开始分析 prompt
|
||||
↓
|
||||
④ ⚠️ 模型不可用降级(每次都会触发)
|
||||
状态: 弹出积分确认框
|
||||
├─ "消耗 X 积分,确认继续生成"
|
||||
├─ ⭐ "本次对话不再确认"(鼠标悬浮出现小按钮,可勾选)
|
||||
└─ 点确认 → 扣积分
|
||||
↓
|
||||
⑤ 生成排队
|
||||
状态: 输入框右上方出现生成状态条
|
||||
内容区: "排队中" → "生成中"
|
||||
结果区: 图片占位框 + "以上内容由AI生成本次消耗X积分"
|
||||
+ [重新生成] 按钮 + [引用作品] 按钮(双引号)
|
||||
↓
|
||||
⑥ 生成完成
|
||||
状态: ?(待下次记录)
|
||||
下载方式: ?(待下次记录)
|
||||
↓
|
||||
⑦ 保存到 AVE cache
|
||||
⏳ 待实现
|
||||
```
|
||||
|
||||
### 4.1 关键交互细节
|
||||
|
||||
- **积分确认**: 每次生成都会弹出,可勾选"本次对话不再确认"
|
||||
- **模型降级**: Agent 模式自动选 VIP 模型 → VIP 不可用 → 降级普通模型 → 重新确认积分
|
||||
- **排队等待**: 生成任务进入队列,排队时间不定(上次卡住未完成)
|
||||
- **发送方式**: 回车键 或 点发送箭头
|
||||
|
||||
---
|
||||
|
||||
## 五、技术方案
|
||||
|
||||
### 5.1 核心工具
|
||||
|
||||
- **Peekaboo v3.1.2**:macOS GUI 自动化(视觉识别 + 点击 + 输入)
|
||||
- **CloakBrowser**:备用浏览器(需持久化 profile 保持登录态)
|
||||
- **AVE pipeline**:接收生成素材 → Ken Burns → 合成
|
||||
|
||||
### 5.2 原子操作设计(待实现)
|
||||
|
||||
```python
|
||||
# jimeng_ops.py 初步设计
|
||||
def input_prompt(text): # 输入 prompt
|
||||
def click_send(): # 点发送
|
||||
def confirm_credit(): # 确认积分消耗
|
||||
def disable_credit_confirm(): # 勾选"不再确认"
|
||||
def wait_generation(): # 轮询检测生成完成
|
||||
def click_download(): # 点下载
|
||||
def save_to_ave_cache(): # 保存到 AVE cache
|
||||
```
|
||||
|
||||
### 5.3 Peekaboo 命令映射
|
||||
|
||||
| 操作 | Peekaboo 命令 | 锚点策略 |
|
||||
|:-----|:-------------|:---------|
|
||||
| 输入 prompt | `peekaboo type "..."` | 当前焦点(先点输入框) |
|
||||
| 点发送 | `peekaboo click "↑"` 或回车 | OCR 识别箭头图标或键盘发送 |
|
||||
| 确认积分 | `peekaboo click "确认继续"` | OCR 识别按钮文字 |
|
||||
| 勾选不再确认 | `peekaboo click "不再确认"` | OCR 识别悬浮按钮文字 |
|
||||
| 等生成完成 | 轮询 `peekaboo image` 检测下载按钮 | 截图 OCR |
|
||||
| 下载 | `peekaboo click "下载"` | OCR 识别按钮文字 |
|
||||
|
||||
---
|
||||
|
||||
## 六、相关文件
|
||||
|
||||
| 文件 | 路径 |
|
||||
|:-----|:-----|
|
||||
| 本计划文档 | `05_tools/09_ave/PLANS/JIMENG_AUTOMATION_PLAN.md` |
|
||||
| AVE 实施计划 | `05_tools/09_ave/PLANS/AVE_IMPLEMENTATION_PLAN.md` |
|
||||
| AVE 策略体系 | `05_tools/09_ave/PLANS/STRATEGY.md` |
|
||||
| Dreamina CLI | `~/.local/bin/dreamina` |
|
||||
| Dreamina CLI 说明 | `~/.dreamina_cli/dreamina/SKILL.md` |
|
||||
| AVE 主脚本 | `05_tools/09_ave/scripts/main.py` |
|
||||
| 视频合成 | `05_tools/09_ave/scripts/composer/ffmpeg.py` |
|
||||
| 测试道家 YAML | `05_tools/09_ave/scripts/daoist_quotes.yaml` |
|
||||
|
||||
---
|
||||
|
||||
## 七、下次启动检查清单
|
||||
|
||||
- [ ] 确认 CloakBrowser/Chromium 是否还在运行
|
||||
- [ ] 确认即梦网页登录态是否过期
|
||||
- [ ] 确认 Dreamina CLI 登录态(`dreamina user_credit`)
|
||||
- [ ] 继续步骤 ⑥:生成完成后探索下载方式
|
||||
- [ ] 完整走通一次后开始写 `jimeng_ops.py`
|
||||
Reference in New Issue
Block a user