移植自 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 带网关原话 / 正常返回)。
100 lines
4.1 KiB
Markdown
100 lines
4.1 KiB
Markdown
# 视频工厂 · 使用指南
|
||
|
||
> 更新: 2026-10-02 · 对应版本 4.11.x
|
||
> 架构文档: `PLANS/VIDEO_FACTORY_MASTER.md` · 原始设计: `PLANS/reference/DCS_说明书_v2.0_原文.md`
|
||
|
||
---
|
||
|
||
## 一、快速开始(3 步出片)
|
||
|
||
1. 打开看板 **http://localhost:9988**(如果是旧界面,`Cmd+Shift+R` 硬刷新)
|
||
2. 侧边栏 → **🎞️ 视频工厂 · 流程** → 任选一条流程(如「🎙️ 基础口播」)
|
||
3. 看到流程步骤链 + 预估成本 → 点 **▶️ 开始** → 画布自动加载模板
|
||
4. 把「**镜头数**」设为 **1**(首次试跑,控成本)→ 点 **▶ 运行**
|
||
5. 观察节点状态(🟢完成 / 🔵执行中 / 🔴失败 / ⚪跳过)→ 点节点看**产物预览**(视频/音频可直接播放)
|
||
|
||
---
|
||
|
||
## 二、流程清单
|
||
|
||
| 流程 | 模板 | 节点数 | 说明 |
|
||
|:--|:--|:--|:--|
|
||
| 🎬 导演创作 | (单页) | — | 故事 → 分镜(可编辑)→ 一键出片 |
|
||
| 🎭 短剧创作 | `short_drama` | 12 | 完整短剧流程 |
|
||
| 🎙️ 基础口播 | `basic_dub` | 5 | 脚本 → TTS → 素材 → BGM → 输出 |
|
||
| 🥁 卡点视频 | `beat_sync` | 4 | BGM 卡点 |
|
||
| 📖 角色叙事 | `character_narrative` | 8 | 角色 + 旁白 |
|
||
| 👤 数字人口播 | `digital_human` | 4 | 需数字人能力(待接入) |
|
||
| 🎞️ 口播+混剪 | `hybrid_dub` | 4 | — |
|
||
| ➕ 新建流程 | (空白画布) | — | 自己拖节点 |
|
||
|
||
---
|
||
|
||
## 三、能力与依赖(配 key 就能用)
|
||
|
||
| 能力 | 状态 | 依赖 | 备注 |
|
||
|:--|:--|:--|:--|
|
||
| 🎬 分镜规划 | ✅ | `llm.api_key`(DeepSeek) | 已配 |
|
||
| 📝 提示词生成 | ✅ | 同上 | 已配 |
|
||
| 🎥 视频生成 | ✅ | `kling.api_key` | 已配(`kling-v3`) |
|
||
| 📦 视频合成 | ✅ | 本地 FFmpeg | 含去AI化 |
|
||
| **🔊 混流** | ✅ | 本地 FFmpeg | 视频+人声+BGM+字幕 |
|
||
| **🎤 TTS 语音** | ⚠️ | `aliyun.api_key` **(欠费)** / `volcano.voice_app_key`(缺 token) | **充值阿里即用** |
|
||
| 🔌 素材搜索 | ⚠️ | `pexels.api_key` | 免费申请 pexels.com/api |
|
||
| 🎵 BGM 选择 | ✅ | 本地音乐库 | — |
|
||
| 💬 字幕生成 | ✅ | 本地 | ASS 格式 |
|
||
| 🔄 人物置换 | ⚠️ | `aliyun.api_key`(同 TTS) | 充值即用 |
|
||
| 💋 对口型 | ⚠️ | `fal.api_key` | 未配 |
|
||
|
||
**配置入口**:Dashboard → **⚙️ 服务 → 🔑 API 配置**(每项可「🧪 测试」验证连通性)
|
||
|
||
---
|
||
|
||
## 四、常见问题
|
||
|
||
**Q: 报「阿里百炼账号欠费(Arrearage)」**
|
||
→ 阿里云控制台充值(同时解锁 TTS + 人物置换)
|
||
|
||
**Q: 报「Pexels API Key 未配置」**
|
||
→ https://www.pexels.com/api/ 免费申请 → 「🔑 API 配置」填入
|
||
|
||
**Q: 出片很慢(10+ 分钟)**
|
||
→ 可灵服务端排队(高峰期常见),非代码问题。可在「能力试跑」页用预检查看任务状态
|
||
|
||
**Q: 成片没有声音**
|
||
→ 检查流程里是否有 TTS 节点 + TTS 是否成功(阿里欠费会失败)
|
||
|
||
**Q: 节点显示「跳过」**
|
||
→ 该能力尚未接入执行器(如 ComfyUI/特效/3D 角色),或缺少必要上游产物
|
||
|
||
**Q: 分镜不满意**
|
||
→ 「🎬 导演创作」页可逐镜头编辑 + 🔄 单镜头重生成;或换导演(v5.2 / 本地)
|
||
|
||
---
|
||
|
||
## 五、省钱的调试技巧
|
||
|
||
1. **镜头数先设 1**(默认 3)—— 每镜头约 ¥1-3
|
||
2. **优先只读**:查任务列表/状态用 GET(不扣费),别反复跑生成
|
||
3. **用「🧪 能力试跑」的预检**(dry_run,零费用):确认供应商/模型/参数/密钥状态后再真跑
|
||
4. **复用已有产物**:TTS 音频、字幕文件可跨 run 复用(修改配置只重做必要节点 → 「🔄 重做此节点」)
|
||
|
||
---
|
||
|
||
## 六、关键命令(运维)
|
||
|
||
```bash
|
||
# 重启看板(必须用 launchctl,禁止 pkill+nohup)
|
||
launchctl kickstart -k gui/$(id -u)/com.agentos.dashboard
|
||
curl -s http://localhost:9988/api/health
|
||
|
||
# 查看运行
|
||
curl -s http://localhost:9988/api/workflow/runs | python3 -m json.tool | head -30
|
||
|
||
# 产物位置
|
||
ls ~/workbuddy-agent-os/agent-local/runtime/ave/workflow/<run_id>/
|
||
|
||
# 出片记录(导演创作页产物)
|
||
ls ~/workbuddy-agent-os/agent-local/runtime/ave/renders/
|
||
```
|