视频生成工具。用户通过说出“CreateVideo”“创建视频”“生成视频”,或提供文案要求制作播客视频时触发。支持双人播客音频生成(经 ListenHub MCP)、模板视频裁剪合并、内容分析输出。需ffmpeg 与 ListenHub MCP Server。
用户提供:
必须:视频文案内容
可选:模版选择(默认根据文案内容自动选择)
书房 / 夜景 → $BASE_DIR/v_template.mp4(上海夜景书房,29.6s)能量 / 能量人 → $BASE_DIR/v_template_energy.mov(能量人,14.7s)bash
DATE=$(date +%Y%m%d)
BASE_DIR="/root/.openclaw/workspace/video-projects"
TASK_DIR="$BASE_DIR/${DATE}_001"
COUNTER=1
while [ -d "$TASK_DIR" ]; do
COUNTER=$((COUNTER + 1))
TASK_DIR="$BASE_DIR/${DATE}_$(printf "%03d" $COUNTER)"
done
mkdir -p "$TASK_DIR/temp"
根据文案内容或用户指定选择模版:
bash
# 自动选择逻辑:能量/潜意识/吸引力类 → 能量人模版,其他 → 书房夜景模版
# 用户也可以直接指定:"用能量人模版" / "用书房模版"
cp "$BASE_DIR/v_template.mp4" "$TASK_DIR/template.mp4" # 书房夜景(默认)
# 或
cp "$BASE_DIR/v_template_energy.mov" "$TASK_DIR/template.mp4" # 能量人
通过 ListenHub MCP 生成双人播客音频:
调用 create_podcast:
query: 用户文案内容speakerIds: ["YOUR_SPEAKER_ID_1", "YOUR_SPEAKER_ID_2"](主播A先说,主播B后说)language: "zh"mode: "quick"等待生成完成,下载音频到 $TASK_DIR/podcast_audio.mp3
详细 MCP 参数参见 references/listenhub-guide.md
使用 ffmpeg 的 stream_loop 实现无缝循环,一步完成循环+音频合并+输出:
⚠️ 不要用 concat demuxer + 正放↔倒放方案,会在接缝处冻帧(2026-03-22 踩坑验证)
bash
DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$TASK_DIR/podcast_audio.mp3")
TEMPLATE_DUR=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$TASK_DIR/template.mp4")
LOOPS=$(python3 -c "import math; print(math.ceil($DURATION / $TEMPLATE_DUR))")
TITLE="根据文案内容生成的标题"
ffmpeg -y -stream_loop $LOOPS -i "$TASK_DIR/template.mp4" \
-i "$TASK_DIR/podcast_audio.mp3" \
-t $DURATION \
-c:v libx264 -preset fast -b:v 1400k \
-c:a aac -map 0:v:0 -map 1:a:0 \
"$TASK_DIR/${TITLE}.mp4"
说明:
stream_loop 直接循环原始模版,无接缝问题-b:v 1400k 控制输出大小(720×1280 竖屏约 40MB/4min)基于原始文案和播客脚本,生成并保存到 $TASK_DIR/内容分析.txt:
text
**视频创建完成!**
**任务目录**: {路径}
**最终视频**: {文件名}
**播客信息**:
- 标题: {标题}
- 音色: 主播A + 主播B
- 时长: {时长}
---
**内容分析**:
核心金句:...
洞见:...
内容描述(50字):...
朋友圈文案(200字):...
text
video-projects/20260322_001/
├── template.mp4 # 复制的模版视频
├── temp/ # 临时中间文件(可清理)
├── podcast_audio.mp3 # 播客音频
├── {标题}.mp4 # 最终视频
└── 内容分析.txt # 内容分析
配置项默认值基础目录/root/.openclaw/workspace/video-projects模版视频Av_template.mp4(720×1280,29.6s,上海夜景书房)— 认知/读书/财富类模版视频Bv_template_energy.mov(720×1280,14.7s,能量人)— 能量/潜意识/吸引力类播客音色1(先说)主播A( YOUR_SPEAKER_ID_1,在 ListenHub 获取)播客音色2(后说)主播B( YOUR_SPEAKER_ID_2,在 ListenHub 获取)播客模式quick(3-5分钟)播客语言zh(中文)
ffmpeg / ffprobe — 视频处理@marswave/listenhub-mcp-server(需要 LISTENHUB_API_KEY)bash
claude mcp add listenhub --env LISTENHUB_API_KEY=<你的API Key> -- npx -y @marswave/listenhub-mcp-server
API Key 在 ListenHub 官网 注册后获取。
在使用前,先调用 get_speakers 查询可用音色,将你选择的音色 ID 填入 Skill 配置:
YOUR_SPEAKER_ID_1 — 主播A(先说)YOUR_SPEAKER_ID_2 — 主播B(后说)将你的背景视频放入 video-projects/ 目录:
v_template.mp4 — 默认模版(720×1280 竖屏)v_template_energy.mov — 备选模版(可选)20260321_001)temp/ 子目录,可手动清理