Install
openclaw skills install @chugenice/history-persona-videoopenclaw skills install @chugenice/history-persona-video把历史人物从画像里"拉到现实中"的竖版短视频完整制作流程。已用《AI还原曹操》实测验证(v2 成品:56s / 1080×1920 / 7.8MB)。
skills/runninghub/scripts/runninghub.py),API Key 已配置C:\Windows\Fonts\方正粗黑宋简体.ttf(复制到 workspace 为 font_heisong.ttf,避免 drawtext 冒号转义问题)用 web_search 收集:
下载古画像用 Wikimedia Special:FilePath URL:
https://commons.wikimedia.org/wiki/Special:FilePath/<文件名>?width=800
按 9:16 竖版生成 4 张核心画面(1152×2048):
| 素材 | 内容 | 提示词要点 |
|---|---|---|
| 最终还原像 | 人物半身肖像 | 约X岁、时代服饰、真实人像摄影、电影级光影、超写实、暗色背景、庄重 |
| 战乱/氛围图 | 时代背景 | 氛围、史诗感 |
| AI初稿过程图 | 草稿效果 | 未完成、素描感 |
| 诗意图 | 人物代表诗句意境 | 月下/饮酒/剪影等 |
生图命令(RunningHub):
py skills/runninghub/scripts/runninghub.py --endpoint <text-to-image端点> --prompt "<提示词>" --param aspectRatio=9:16 -o "media/<人物>/<name>.png"
rhart-audio/text-to-audio/speech-2.8-hdvoice_id=male-qn-qingse(低沉有磁性;备选 audiobook_male_2 沉稳)speed=1.05(纪录片节奏,中等偏快)py skills/runninghub/scripts/runninghub.py --endpoint rhart-audio/text-to-audio/speech-2.8-hd --prompt "<全文文案>" --param voice_id=male-qn-qingse --param speed=1.05 --param enable_base64_output=false --param english_normalization=false -o "<out>.mp3"
⚠️ PowerShell 传长中文文案易出错 → 先把文案写入 txt(UTF-8),用 Get-Content -Raw -Encoding UTF8 读入变量再传。
rhart-audio/text-to-audio/music-2.5用 Python PIL 生成 3 张 1080×1920 卡片:
| 卡片 | 用途 | 内容 |
|---|---|---|
| card_hook.png | 0-5.5s 钩子封面 | 黑底+模糊人物轮廓+大标题+关键词 |
| card_keywords.png | 8-13s 关键词卡 | 史料/五官/须发/冠服/气质 线索 |
| card_compare.png | 结尾对比图 | 古画 vs AI 左右分屏+互动文字 |
关键实现:
font_heisong.ttf(方正粗黑宋简体,大气),点缀用 simkai.ttf 楷体ImageOps.fit 左右各半(古画 | AI还原)以曹操版实测切点(配音 56.27s)为基准:
0-5.5s S1 钩子(card_hook 缓慢推近 zoompan)
5.5-8s S2 古画像快闪(两张各1.25s,轻微 zoom)
8-13s S3 关键词卡
13-20s S4 AI初稿缓慢放大
20-27s S5 五官修正(初稿→还原像 xfade 交叉溶解 1.5s)
27-40s S6 最终揭晓(还原像推近 + 大气字体字幕)
40-50s S7 诗意图(对酒当歌类 + 大字字幕)
50-56.3s S8 互动结尾(对比图 + "英雄,还是枭雄?下一期想看X还是Y?")
若新配音时长不同,按比例缩放各段,保证总时长=配音时长。
-r 30 -c:v libx264 -pix_fmt yuv420p -anzoompan=z='min(zoom+0.0008,1.06)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=<帧数>:s=1080x1920:fps=30C: 会被当选项分隔符,方案=把字体复制到工作目录用 font_heisong.ttf)-filter_complex,不能用 -vf# concat 拼接
ffmpeg -y -v error -f concat -safe 0 -i concat_list.txt -c copy video_silent.mp4
# 混音:配音1.0 + BGM 0.16,normalize=0 + volume=2.0 提升响度
ffmpeg -y -v error -i video_silent.mp4 -i peiyin.mp3 -i bgm.mp3 \
-filter_complex "[1:a]aformat=sample_fmts=fltp:channel_layouts=stereo,volume=1.0[vo];[2:a]aformat=sample_fmts=fltp:channel_layouts=stereo,volume=0.16[bg];[vo][bg]amix=inputs=2:duration=first:dropout_transition=2:normalize=0,volume=2.0[aout]" \
-map 0:v -map "[aout]" -c:v copy -c:a aac -b:a 192k -shortest video_final.mp4
ffmpeg -i video.mp4 -vf "fps=1/7" check_%02d.png
# PIL ImageStat:钩子帧 mean低但 max=255(黑底白字),其余帧 mean>30 无黑屏
volumedetect 确认 mean≈-20dB、max≈-0.5dB(无爆音)video_<人物>_FINAL.mp4 到 media/<人物>/| 项目 | 成本 |
|---|---|
| 配音(全文磁性男声) | ¥0.025 |
| BGM(60s 史诗配乐) | ¥0.12 |
| 图片(4张 2K 竖版) | 约 ¥0.06 |
| TTS 音色测试 | ¥0.002/次 |
| 合计 | 约 ¥0.3/条 |
male-qn-qingse;沉稳有声书:audiobook_male_2font_heisong.ttf);楷体点缀:simkai.ttfrhart-audio/text-to-audio/speech-2.8-hdrhart-audio/text-to-audio/music-2.5本技能建议同目录维护:
scripts/make_cards.py — 卡片生成(参数化:人物名、标题、关键词、古画/AI图路径)scripts/make_video.py — 分段+拼接+混音全流程(参数化:各段素材、配音、BGM、字幕文字)