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,550 @@
|
||||
# AVE v2.0 落地实施计划
|
||||
|
||||
> AudioScore Video Engine — 智能体可调用的自动化视频编排引擎
|
||||
>
|
||||
> **版本**: v1.0 (规划)
|
||||
> **创建**: 2026-05-04
|
||||
> **负责人**: ghai / Claw
|
||||
> **状态**: 📋 规划阶段
|
||||
|
||||
---
|
||||
|
||||
## 一、项目概览
|
||||
|
||||
### 1.1 这是什么
|
||||
|
||||
AVE v2.0 是一个以**双轨音频锚点**为时间轴,通过**导演脚本**精确控制视听元素的自动化视频编排引擎。它接收结构化YAML指令,输出最终视频文件。
|
||||
|
||||
### 1.2 核心能力
|
||||
|
||||
| 能力 | 说明 | 技术方案 |
|
||||
|------|------|---------|
|
||||
| 情绪化人声合成 | 一个音色演绎多种情绪 | 豆包语音 2.0 (火山引擎) |
|
||||
| 背景音乐生成 | 氛围化配乐,风格可控 | ACE-Step 1.5 / MusicGen (云GPU) |
|
||||
| 数字人出镜 | 静态图→口播视频 | Wan2.2-S2V (通义万相 API) |
|
||||
| 素材搜索 | 根据语义搜索视频素材 | Pexels API (免费) |
|
||||
| 导演脚本 | 文案→结构化YAML→视频 | 本地大模型解析 |
|
||||
| 渲染合成 | 多轨合成最终视频 | Remotion + FFmpeg |
|
||||
|
||||
### 1.3 系统架构图
|
||||
|
||||
```
|
||||
用户文案
|
||||
│
|
||||
[01_director_parser]
|
||||
大模型解析 → director_script.yaml
|
||||
│
|
||||
┌─────────────┼─────────────┐
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
[02_voice] [03_bgm] [05_material]
|
||||
豆包语音2.0 ACE-Step Pexels + Wan2.2
|
||||
│ │ │
|
||||
└─────────────┼─────────────┘
|
||||
│
|
||||
[04_anchor_extractor]
|
||||
双轨锚点对齐
|
||||
│
|
||||
[06_composer]
|
||||
Remotion + FFmpeg
|
||||
│
|
||||
final.mp4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、目录结构与文件清单
|
||||
|
||||
### 2.1 工具模块路径
|
||||
|
||||
参照 `05_tools/` 现有模块的 `TOOL.md + scripts/` 结构:
|
||||
|
||||
```
|
||||
~/workbuddy-agent-os/agent-sync/
|
||||
├── 05_tools/
|
||||
│ └── 09_ave/ ← 工具模块根目录
|
||||
│ ├── TOOL.md ← 工具说明文档 (必须)
|
||||
│ ├── install.sh ← 一键安装脚本 (可选)
|
||||
│ ├── requirements.txt.pip ← Python 依赖
|
||||
│ ├── config.yaml ← API 密钥/默认参数配置模板
|
||||
│ │
|
||||
│ ├── scripts/ ← 核心脚本目录
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── main.py ← 统一 CLI 入口
|
||||
│ │ │
|
||||
│ │ ├── 01_director_parser/
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── parser.py ← 文案 → director_script.yaml
|
||||
│ │ │ └── schemas.py ← YAML 结构校验
|
||||
│ │ │
|
||||
│ │ ├── 02_voice_synthesizer/
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── volcano.py ← 豆包语音 2.0 适配器
|
||||
│ │ │ └── aliyun.py ← CosyVoice 备用适配器
|
||||
│ │ │
|
||||
│ │ ├── 03_bgm_generator/
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── ace_step.py ← ACE-Step 1.5 适配器
|
||||
│ │ │ └── suno.py ← Suno API 备用适配器
|
||||
│ │ │
|
||||
│ │ ├── 04_anchor_extractor/
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ └── extractor.py ← librosa 锚点提取
|
||||
│ │ │
|
||||
│ │ ├── 05_material_producer/
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── pexels.py ← Pexels 搜索
|
||||
│ │ │ ├── wan2_2.py ← Wan2.2-S2V 适配器
|
||||
│ │ │ └── fallback.py ← 本地素材回落
|
||||
│ │ │
|
||||
│ │ ├── 06_composer/
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── remotion.py ← Remotion 项目生成
|
||||
│ │ │ └── ffmpeg.py ← FFmpeg 后处理
|
||||
│ │ │
|
||||
│ │ ├── 07_service_layer/
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── api.py ← FastAPI 服务
|
||||
│ │ │ └── skill_bridge.py ← WorkBuddy 技能对接
|
||||
│ │ │
|
||||
│ │ └── lib/ ← 通用工具库
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── config.py ← 配置加载
|
||||
│ │ ├── cache.py ← 素材/结果缓存
|
||||
│ │ └── logger.py ← 日志
|
||||
│ │
|
||||
│ └── assets/ ← 模板/参考资源
|
||||
│ ├── director_template.yaml ← 导演脚本模板
|
||||
│ └── demo_scripts/ ← 测试脚本集
|
||||
│
|
||||
├── 02_skills/
|
||||
│ └── ave/ ← WorkBuddy 技能
|
||||
│ ├── SKILL.md ← 技能定义
|
||||
│ └── reference/ ← 技能参考文档
|
||||
│ └── director_schemas.md
|
||||
│
|
||||
└── agent-local/
|
||||
└── tools/
|
||||
└── ave/ ← 本机数据(不同步)
|
||||
├── config/
|
||||
│ └── local.yaml ← 本地 API 密钥等敏感配置
|
||||
├── cache/
|
||||
│ ├── materials/ ← 素材缓存
|
||||
│ └── outputs/ ← 渲染缓存
|
||||
└── templates/
|
||||
└── remotion/ ← Remotion 项目模板
|
||||
```
|
||||
|
||||
### 2.2 核心文件清单
|
||||
|
||||
| 编号 | 文件 | 功能 | 优先级 |
|
||||
|------|------|------|--------|
|
||||
| P0 | `09_ave/TOOL.md` | 工具说明文档 | ⭐ 必须 |
|
||||
| P0 | `09_ave/scripts/main.py` | CLI 入口 | ⭐ 必须 |
|
||||
| P0 | `09_ave/scripts/01_director_parser/parser.py` | 文案解析 | ⭐ 必须 |
|
||||
| P0 | `09_ave/scripts/02_voice_synthesizer/volcano.py` | 豆包语音 | ⭐ 必须 |
|
||||
| P0 | `09_ave/scripts/05_material_producer/pexels.py` | 素材搜索 | ⭐ 必须 |
|
||||
| P0 | `09_ave/scripts/06_composer/ffmpeg.py` | 合成 | ⭐ 必须 |
|
||||
| P1 | `09_ave/scripts/03_bgm_generator/ace_step.py` | 背景音乐 | 建议 |
|
||||
| P1 | `09_ave/scripts/04_anchor_extractor/extractor.py` | 锚点提取 | 建议 |
|
||||
| P2 | `09_ave/scripts/05_material_producer/wan2_2.py` | 数字人 | 可选 |
|
||||
| P2 | `09_ave/scripts/07_service_layer/api.py` | FastAPI 服务 | 可选 |
|
||||
| P2 | `02_skills/ave/SKILL.md` | WorkBuddy 技能 | 可选 |
|
||||
|
||||
---
|
||||
|
||||
## 三、实施阶段(分4阶段推进)
|
||||
|
||||
### 阶段 1:基础设施(1天)
|
||||
|
||||
**目标**:目录结构搭建 + API 注册 + 配置就绪
|
||||
|
||||
```
|
||||
任务清单:
|
||||
☐ 创建 09_ave/ 完整目录结构
|
||||
☐ 创建 agent-local/tools/ave/config/ 目录
|
||||
☐ 注册火山引擎豆包语音 2.0 → 获取 API Key + App ID + Access Token
|
||||
☐ 注册阿里云百炼 → 获取 API Key
|
||||
☐ 注册 Pexels → 获取 API Key
|
||||
☐ 编写 config.yaml 模板
|
||||
☐ 编写 local.yaml(本地敏感配置)
|
||||
☐ 编写 install.sh 安装脚本
|
||||
☐ 编写 TOOL.md 工具说明
|
||||
☐ 提交到 Git: git add, commit, push
|
||||
```
|
||||
|
||||
**产出**:
|
||||
- 可 `git clone` 后在目标机器 `bash install.sh` 一键就绪
|
||||
- agentos upgrade 能识别并检查 09_ave 模块
|
||||
|
||||
### 阶段 2:核心链路 MVP(2-3天)
|
||||
|
||||
**目标**:跑通 文案→人声→素材→合成 的可用闭环
|
||||
|
||||
**任务清单**:
|
||||
|
||||
**02_voice_synthesizer (半天)**
|
||||
```
|
||||
☐ 实现 volcano.py 基础 TTS 调用
|
||||
☐ 测试: python main.py voice --text "测试" --output test.wav
|
||||
☐ 上传音色样本 → 获取 speaker_id
|
||||
☐ 实现情感指令参数: emotion, speed, pitch
|
||||
☐ 实现 CosyVoice 备用适配器
|
||||
```
|
||||
|
||||
**05_material_producer (半天)**
|
||||
```
|
||||
☐ 实现 pexels.py 搜索+下载
|
||||
☐ 实现回退策略: search → fallback cache
|
||||
☐ 测试: python main.py material --search "sunset beach"
|
||||
```
|
||||
|
||||
**01_director_parser (半天)**
|
||||
```
|
||||
☐ 实现 schemas.py YAML 结构校验 (Pydantic)
|
||||
☐ 实现 parser.py 文案 → YAML
|
||||
☐ 编写 director_template.yaml
|
||||
☐ 测试: python main.py parse --script demo.txt
|
||||
```
|
||||
|
||||
**06_composer (半天)**
|
||||
```
|
||||
☐ 实现 ffmpeg.py 音视频合成
|
||||
☐ 实现字幕叠加 (ass/srt 字幕)
|
||||
☐ 测试: python main.py compose --voice voice.wav --material clips/
|
||||
```
|
||||
|
||||
**MVP 集成测试**
|
||||
```
|
||||
☐ 用一个小笑话脚本跑通完整链路
|
||||
☐ 产出第一个 final.mp4(纯人声+素材画面)
|
||||
```
|
||||
|
||||
### 阶段 3:品质提升(1-2天)
|
||||
|
||||
**目标**:加入背景音乐 + 锚点对齐 → 多轨精准编排
|
||||
|
||||
**任务清单**:
|
||||
|
||||
**03_bgm_generator**
|
||||
```
|
||||
☐ 调研 ACE-Step 1.5 部署方案 (云端 GPU)
|
||||
☐ 或实现 Suno API 备用适配器
|
||||
☐ 实现 ace_step.py → bgm.wav
|
||||
```
|
||||
|
||||
**04_anchor_extractor**
|
||||
```
|
||||
☐ 实现 extractor.py (librosa 节奏检测)
|
||||
☐ 实现人声字级锚点: word_timestamps → anchors.json
|
||||
☐ 实现 BGM 段落锚点: section_boundaries
|
||||
```
|
||||
|
||||
**01_director_parser 升级**
|
||||
```
|
||||
☐ 支持完整的导演脚本模板 (bgm_section, camera, avatar 等字段)
|
||||
```
|
||||
|
||||
**06_composer 升级**
|
||||
```
|
||||
☐ 双轨混音: voice.wav + bgm.wav → mixed_audio.wav
|
||||
☐ 基于锚点对齐画面切换
|
||||
☐ 支持分段渲染 (3分钟以上视频)
|
||||
```
|
||||
|
||||
### 阶段 4:数字人 + 技能封装(1天)
|
||||
|
||||
**目标**:数字人出镜 + 作为 WorkBuddy 技能可调用
|
||||
|
||||
**任务清单**:
|
||||
|
||||
**05_material_producer 升级**
|
||||
```
|
||||
☐ 实现 wan2_2.py (通义万相 S2V)
|
||||
☐ 实现 detect 图片合规检查
|
||||
☐ 实现异步任务轮询
|
||||
☐ 回落策略: detect失败 → 重试 → 跳过数字人
|
||||
```
|
||||
|
||||
**07_service_layer**
|
||||
```
|
||||
☐ FastAPI 服务: POST /ave/generate
|
||||
☐ 任务队列 + 进度轮询
|
||||
☐ 错误处理与重试逻辑
|
||||
```
|
||||
|
||||
**02_skills/ave/SKILL.md**
|
||||
```
|
||||
☐ 技能触发词: 视频、剪辑、生成视频
|
||||
☐ 输入: 文案文本 + 风格标签
|
||||
☐ 流程: 调用大模型 → 生成 YAML → 调用 AVE API
|
||||
☐ 输出: 返回 final.mp4 本地路径
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、API 注册清单与成本
|
||||
|
||||
### 4.1 必须注册的服务
|
||||
|
||||
| 服务 | 用途 | 注册步骤 | 预计耗时 |
|
||||
|------|------|---------|---------|
|
||||
| **火山引擎** | 豆包语音 2.0 | 注册→实名→ARK模型服务→创建API Key | 30min |
|
||||
| **阿里云百炼** | Wan2.2-S2V + CosyVoice | 注册→实名→开通服务→创建API Key | 20min |
|
||||
| **Pexels** | 素材搜索 | 注册→API Dashboard→创建Application | 10min |
|
||||
|
||||
### 4.2 各服务凭证清单
|
||||
|
||||
```
|
||||
agent-local/tools/ave/config/local.yaml:
|
||||
|
||||
# 火山引擎 (豆包语音 2.0)
|
||||
volcano:
|
||||
api_key: "sk-xxx" # ARK → API Key 管理
|
||||
app_id: "xxx" # 语音控制台 → App ID
|
||||
access_token: "xxx" # 语音控制台 → Access Token
|
||||
speaker_id: "xxx" # 声音复刻 → 训练后获取
|
||||
tts_model: "volcano_tts_2.0"
|
||||
|
||||
# 阿里云百炼
|
||||
aliyun:
|
||||
api_key: "sk-xxx" # 百炼 → API Key
|
||||
wan_model: "wan2.2-s2v"
|
||||
cosyvoice_model: "cosyvoice-v3.5-plus"
|
||||
|
||||
# Pexels
|
||||
pexels:
|
||||
api_key: "xxx" # Pexels API Dashboard
|
||||
rate_limit: 200 # 请求/小时
|
||||
```
|
||||
|
||||
### 4.3 月费预估 (日更一条3分钟视频)
|
||||
|
||||
| 模块 | 方案 | 月费 | 备注 |
|
||||
|------|------|------|------|
|
||||
| 人声合成 | 豆包语音 2.0 年付 | ~22元 | 首3月免费 |
|
||||
| 数字人 | HeyGen Creator | ~211元 | 或用 Wan2.2 API 按量计费 |
|
||||
| 背景音乐 | ACE-Step 云端GPU | ~2元 | 或 Suno API ~15-30元 |
|
||||
| 素材搜索 | Pexels | 0元 | 免费 |
|
||||
| 大模型调用 | DeepSeek / 通义千问 | ~1-10元 | 文案解析 |
|
||||
| **合计** | | **~25-250元/月** | 取决于数字人方案 |
|
||||
|
||||
---
|
||||
|
||||
## 五、本地硬件需求
|
||||
|
||||
| 环节 | 部署位置 | 需求 | Mac 16G 可行性 |
|
||||
|------|---------|------|---------------|
|
||||
| 文案解析 | 云端 API | 无 | ✅ 直接调 |
|
||||
| 人声合成 | 云端 API | 无 | ✅ 直接调 |
|
||||
| 背景音乐 | 云端 GPU | 6GB+ 显存 | ❌ 需云 GPU |
|
||||
| 数字人 | 云端 API | 无 | ✅ 直接调 |
|
||||
| 素材搜索 | 云端 API | 无 | ✅ 直接调 |
|
||||
| 锚点提取 | 本地 | CPU, librosa | ✅ |
|
||||
| Remotion | 本地 | 16GB RAM | ✅ 3-5min 以内 |
|
||||
| FFmpeg | 本地 | 无特殊要求 | ✅ 已装 |
|
||||
|
||||
> **结论**:Mac 16GB 内存足够处理 3 分钟内视频的本地环节。
|
||||
> 仅背景音乐生成(ACE-Step)和 Remotion 渲染长视频需要云端或分段。
|
||||
|
||||
---
|
||||
|
||||
## 六、可能遇到的问题与应对
|
||||
|
||||
### 6.1 API 层问题
|
||||
|
||||
| 问题 | 概率 | 影响 | 应对方案 |
|
||||
|------|------|------|---------|
|
||||
| 豆包语音 API 认证失败 | 中 | 人声不可用 | 实现 CosyVoice 备选;local.yaml 三重凭证逐一校验 |
|
||||
| Wan2.2-S2V 图片检测不通过 | 中 | 数字人无法生成 | 回落:跳过数字人片段,仅用素材画面+字幕 |
|
||||
| Pexels 搜索无结果 | 高 | 素材缺失 | 3层回落:search → AI生成 → fallback_mood_videos |
|
||||
| Pexels 速率限制 | 低 | 搜索被限 | 本地缓存层,已搜过的关键词不重复请求 |
|
||||
| ACE-Step API 响应慢 | 中 | BGM 生成延迟 | 异步队列,不影响主流程;或改用 Suno API |
|
||||
|
||||
### 6.2 本地渲染问题
|
||||
|
||||
| 问题 | 概率 | 影响 | 应对方案 |
|
||||
|------|------|------|---------|
|
||||
| Remotion 内存不足 | 中 | 长视频渲染失败 | 分段渲染(3分钟/段)→ FFmpeg concat |
|
||||
| FFmpeg 编码参数不合适 | 低 | 视频过大/质量差 | 预设多组编码参数,按场景切换 |
|
||||
| 中间文件撑满磁盘 | 中 | 渲染中断 | 自动清理策略:渲染成功后删除 wav/clips |
|
||||
| 中文字幕编码乱码 | 低 | 字幕显示异常 | 强制 UTF-8 + ASS 格式(非 SRT) |
|
||||
|
||||
### 6.3 编排逻辑问题
|
||||
|
||||
| 问题 | 概率 | 影响 | 应对方案 |
|
||||
|------|------|------|---------|
|
||||
| 语音与画面不同步 | 中 | 观感差 | 锚点容差机制:画面切换 ±0.2s |
|
||||
| BGM 段落与文案不匹配 | 中 | 情绪割裂 | 导演脚本中明确 bgm_section 映射 |
|
||||
| 多个素材时长与口播不匹配 | 高 | 画面空白/超长 | 自动拼接/裁剪素材到精确时长 |
|
||||
| 大模型解析 YAML 格式错误 | 中 | 链路中断 | schemas.py 严格校验 + 自动修复 |
|
||||
|
||||
---
|
||||
|
||||
## 七、落地检查清单
|
||||
|
||||
### 7.1 基础设施
|
||||
|
||||
```
|
||||
☐ 09_ave/ 目录创建完成
|
||||
☐ TOOL.md 编写完成
|
||||
☐ install.sh 编写完成
|
||||
☐ agent-local/tools/ave/config/local.yaml 配置完成
|
||||
☐ agentos upgrade 能识别 09_ave 模块
|
||||
☐ git commit + push 到远程
|
||||
```
|
||||
|
||||
### 7.2 MVP 链路
|
||||
|
||||
```
|
||||
☐ 豆包语音 2.0 TTS 调用成功 → test.wav
|
||||
☐ Pexels 搜索+下载成功 → material.mp4
|
||||
☐ 文案→导演脚本 YAML 解析成功
|
||||
☐ FFmpeg 音视频合成成功 → final.mp4
|
||||
☐ 小笑话脚本跑通全链路
|
||||
```
|
||||
|
||||
### 7.3 品质提升
|
||||
|
||||
```
|
||||
☐ 背景音乐生成 (ACE-Step/Suno) → bgm.wav
|
||||
☐ 双轨混音: voice + bgm
|
||||
☐ 锚点提取 + 画面同步切换
|
||||
☐ 分段渲染 + concat (长视频)
|
||||
```
|
||||
|
||||
### 7.4 技能封装
|
||||
|
||||
```
|
||||
☐ Wan2.2-S2V 数字人接入
|
||||
☐ FastAPI 服务运行
|
||||
☐ 02_skills/ave/SKILL.md 编写
|
||||
☐ agentos sync 注册技能
|
||||
☐ 技能调用测试: "帮我把这段文案做成视频"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、技能定义草案
|
||||
|
||||
### 8.1 技能触发
|
||||
|
||||
**技能名**:`ave_video_director`
|
||||
|
||||
**触发词**:
|
||||
- 视频、剪辑、生成视频、做视频
|
||||
- 把这段话做成视频、AI 视频、自动剪辑
|
||||
- director script、导演脚本
|
||||
|
||||
### 8.2 技能流程
|
||||
|
||||
```
|
||||
用户输入文案
|
||||
↓
|
||||
01_director_parser: 大模型解析文案 → director_script.yaml
|
||||
↓
|
||||
02_voice_synthesizer: 逐段合成情绪化人声 → voice_segments/
|
||||
↓
|
||||
03_bgm_generator: 生成背景音乐 → bgm.wav (可选)
|
||||
↓
|
||||
04_anchor_extractor: 双轨锚点提取 → anchors.json
|
||||
↓
|
||||
05_material_producer: 并行搜索素材 → material_clips/
|
||||
+ Wan2.2-S2V → avatar_clips/ (可选)
|
||||
↓
|
||||
06_composer: 编排渲染 + 编码 → final.mp4
|
||||
↓
|
||||
返回 final.mp4 路径给用户
|
||||
```
|
||||
|
||||
### 8.3 用户输入示例
|
||||
|
||||
```bash
|
||||
# 最简调用
|
||||
python main.py generate --script "今天我们来聊聊..."
|
||||
|
||||
# 指定风格
|
||||
python main.py generate --script demo.txt --style bedtime_story
|
||||
|
||||
# 高级:直接传导演脚本
|
||||
python main.py compose --director-script script.yaml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 九、首次启动步骤
|
||||
|
||||
```bash
|
||||
# 1. 进入项目
|
||||
cd ~/workbuddy-agent-os/agent-sync
|
||||
|
||||
# 2. 创建目录结构
|
||||
mkdir -p 05_tools/09_ave/{scripts/{01_director_parser,02_voice_synthesizer,03_bgm_generator,04_anchor_extractor,05_material_producer/{pexels,wan2_2,fallback},06_composer,07_service_layer,lib},assets/demo_scripts}
|
||||
mkdir -p agent-local/tools/ave/{config,cache/{materials,outputs},templates/remotion}
|
||||
|
||||
# 3. 配置 API 密钥 (参考 4.2 节)
|
||||
# 编辑 agent-local/tools/ave/config/local.yaml
|
||||
|
||||
# 4. 安装 Python 依赖
|
||||
pip install -r 05_tools/09_ave/requirements.txt.pip
|
||||
|
||||
# 5. 测试人声合成
|
||||
python 05_tools/09_ave/scripts/main.py voice --text "你好,这是测试" --output test.wav
|
||||
|
||||
# 6. 跑通 MVP 闭环 (文案→人声→素材→合成)
|
||||
python 05_tools/09_ave/scripts/main.py generate --script assets/demo_scripts/test_story.txt
|
||||
|
||||
# 7. 注册技能到 WorkBuddy
|
||||
agentos sync
|
||||
|
||||
# 8. 提交到 Git
|
||||
git add -A && git commit -m "feat: AVE v2.0 工具模块初始化" && git push
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 十、文件生成顺序(按依赖关系)
|
||||
|
||||
```
|
||||
第1批 (并行,无依赖):
|
||||
├── TOOL.md
|
||||
├── config.yaml
|
||||
├── requirements.txt.pip
|
||||
├── lib/config.py
|
||||
├── lib/cache.py
|
||||
└── lib/logger.py
|
||||
|
||||
第2批 (无内部依赖):
|
||||
├── 02_voice_synthesizer/volcano.py
|
||||
├── 05_material_producer/pexels.py
|
||||
└── 06_composer/ffmpeg.py
|
||||
|
||||
第3批 (依赖第2批):
|
||||
├── 01_director_parser/parser.py
|
||||
├── 01_director_parser/schemas.py
|
||||
├── 02_voice_synthesizer/aliyun.py
|
||||
└── 05_material_producer/fallback.py
|
||||
|
||||
第4批 (依赖第2+3批):
|
||||
├── 03_bgm_generator/ace_step.py
|
||||
├── 03_bgm_generator/suno.py
|
||||
├── 04_anchor_extractor/extractor.py
|
||||
└── 06_composer/remotion.py
|
||||
|
||||
第5批 (依赖前面全部):
|
||||
├── main.py (CLI 入口)
|
||||
├── 05_material_producer/wan2_2.py
|
||||
├── 07_service_layer/api.py
|
||||
└── 07_service_layer/skill_bridge.py
|
||||
|
||||
第6批 (最后):
|
||||
├── 02_skills/ave/SKILL.md
|
||||
├── install.sh
|
||||
└── assets/director_template.yaml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**文档版本**: v1.0
|
||||
**最后更新**: 2026-05-04
|
||||
**下一步**: 开始阶段1 → 目录创建 + API 注册
|
||||
Reference in New Issue
Block a user