移植自 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 带网关原话 / 正常返回)。
4.1 KiB
4.1 KiB
视频工厂 · 使用指南
更新: 2026-10-02 · 对应版本 4.11.x 架构文档:
PLANS/VIDEO_FACTORY_MASTER.md· 原始设计:PLANS/reference/DCS_说明书_v2.0_原文.md
一、快速开始(3 步出片)
- 打开看板 http://localhost:9988(如果是旧界面,
Cmd+Shift+R硬刷新) - 侧边栏 → 🎞️ 视频工厂 · 流程 → 任选一条流程(如「🎙️ 基础口播」)
- 看到流程步骤链 + 预估成本 → 点 ▶️ 开始 → 画布自动加载模板
- 把「镜头数」设为 1(首次试跑,控成本)→ 点 ▶ 运行
- 观察节点状态(🟢完成 / 🔵执行中 / 🔴失败 / ⚪跳过)→ 点节点看产物预览(视频/音频可直接播放)
二、流程清单
| 流程 | 模板 | 节点数 | 说明 |
|---|---|---|---|
| 🎬 导演创作 | (单页) | — | 故事 → 分镜(可编辑)→ 一键出片 |
| 🎭 短剧创作 | 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(默认 3)—— 每镜头约 ¥1-3
- 优先只读:查任务列表/状态用 GET(不扣费),别反复跑生成
- 用「🧪 能力试跑」的预检(dry_run,零费用):确认供应商/模型/参数/密钥状态后再真跑
- 复用已有产物:TTS 音频、字幕文件可跨 run 复用(修改配置只重做必要节点 → 「🔄 重做此节点」)
六、关键命令(运维)
# 重启看板(必须用 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/