Install
openclaw skills install @jackyken/create-podcast-videoopenclaw skills install @jackyken/create-podcast-video用户提供:
书房 / 夜景 → $BASE_DIR/v_template.mp4(上海夜景书房,29.6s)能量 / 能量人 → $BASE_DIR/v_template_energy.mov(能量人,14.7s)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"
根据文案内容或用户指定选择模版:
# 自动选择逻辑:能量/潜意识/吸引力类 → 能量人模版,其他 → 书房夜景模版
# 用户也可以直接指定:"用能量人模版" / "用书房模版"
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 踩坑验证)
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:
**视频创建完成!**
**任务目录**: {路径}
**最终视频**: {文件名}
**播客信息**:
- 标题: {标题}
- 音色: 主播A + 主播B
- 时长: {时长}
---
**内容分析**:
核心金句:...
洞见:...
内容描述(50字):...
朋友圈文案(200字):...
video-projects/20260322_001/
├── template.mp4 # 复制的模版视频
├── temp/ # 临时中间文件(可清理)
├── podcast_audio.mp3 # 播客音频
├── {标题}.mp4 # 最终视频
└── 内容分析.txt # 内容分析
| 配置项 | 默认值 |
|---|---|
| 基础目录 | /root/.openclaw/workspace/video-projects |
| 模版视频A | v_template.mp4(720×1280,29.6s,上海夜景书房)— 认知/读书/财富类 |
| 模版视频B | v_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)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/ 子目录,可手动清理