生成素材
插件的另一个入口点。video-use 用于编辑你已有的素材。此技能用于构建你还没有的素材的视频:旁白加静态关键帧,由 HyperFrames 合成并动画化,确定性渲染。
流水线(已在生产中验证;参见 docs/rca/ 了解为何运动步骤是确定性的):
脚本(带 v3 音频标签)
→ eleven_v3 旁白 (scripts/tts_v3.py)
→ 转写 (npx hyperframes transcribe narration.mp3)
→ 将场景窗口锁定到句子边界 (词级时间戳)
→ 从任何来源获取静态帧 (每个场景一个关键帧——见下文)
→ animate-stills 合成 (recipes/04-animate-stills.md, build_scenes.py)
→ 检查 → 渲染 → 运动 + 音频 QA(scripts/motion_check.py, 联系表)
顺序至关重要:先旁白,后视觉
在构建任何合成或收集关键帧之前,先生成并转写旁白。口语的句子边界即是场景窗口。v3 朗读在节奏上是不确定的——120 秒的预估可能实际是 100 秒或 166 秒——因此先构建的视觉素材总是需要重新调整时间。
旁白——ElevenLabs v3 带音频标签
scripts/tts_v3.py —— 仅使用标准库,无需 pip 依赖。密钥来自 $ELEVENLABS_API_KEY 或插件的 skills/video-use/.env 文件。
python3 scripts/tts_v3.py --probe # 验证 eleven_v3 并列出语音
python3 scripts/tts_v3.py --voice <id> --stability 0.0 --script SCRIPT.md --out narration.mp3
- 音频标签放在脚本文本中:
[excited]、[whispers]、[softly]、[dramatic tone]、[warmly]。v3 会表现它们;v2 会忽略。 - 稳定性:
0.0= 创意(最大表现力),0.5= 自然,1.0= 稳健。平淡的朗读通过降低稳定性并重新给脚本加标签来解决,而非放大音量。 - 传递杠杆:对关键词用大写字母,用
...制造戏剧性停顿,形成对比(在重点台词前突然转为[whispers])。 - 在最终确定前,先用 2-3 种语音试听第一句。第一个语音永远不会是最终选择。
- v3 可能轻微改写。务必转写并阅读结果;如果关键台词偏离,重新生成。
从任何来源获取静态帧
关键帧就是 PNG 格式。流水线不关心它来自哪里。每个场景一个静态帧,命名为 kf-NN.png,并列出在场景清单中(recipes/04-animate-stills.md 记录了 schema)。以下来源均有效:
- AI 图像工具 —— 你已有的任何文生图工具(Gemini、GPT 图像、Midjourney、本地 SD 或托管的 actor——参见末尾的可选部分)。根据每个场景的提示生成,并附加一个固定的风格后缀。
- 截图和照片 —— 产品 UI 截图、档案素材、扫描件、真实摄影作品。Ken Burns 效果就是为此发明的。
- HyperFrames 渲染的 HTML —— 构建一个样式化的 HTML 帧并截图;引擎自己就能产生静态帧。
无论来源如何,都需遵守以下规则:
- 锁定一个风格:在 DESIGN.md 中定义,并应用于每一帧。一旦加入运动和调色,跨帧的风格漂移会看起来像是不同的镜头。
- 验证文件类型:某些工具会提供名称以 .png 结尾但实际为 JPEG 的文件;在合成前检查魔数(
file kf-01.png)。 - 对每一帧进行质量检查(查看图像)。有一帧风格不符就重新生成,不要保留。检查:文本伪影、水印、时代错误、特写人脸(漂移风险)、错误的调色板。
- 对于公开发布的内容,生成的帧中不得包含具名 IP 或真实人物的肖像。
动画——确定性,仓库内执行
静态帧通过 animate-stills 配方(recipes/04-animate-stills.md)变成运动:这是一个清单驱动的 HyperFrames 合成,对每个静态帧应用镜头语言(推近、平移、停留)和 GSAP 氛围(薄雾、雨、光晕、暗角),场景窗口锁定在转录文本上。scripts/build_scenes.py 根据清单生成场景层;scripts/motion_check.py 通过渲染输出中的像素差异来证明真实运动。每次运行渲染结果完全相同,零成本,可离线工作。
需要 Node.js >= 22 来运行 HyperFrames CLI。
字幕与合成
- 字幕刻录在画面上(适合 Reddit/X 上的静音自动播放),按短语级别,根据转录文本的单词时间对齐。
- 故事转折处使用白色闪屏(0.28 秒);其他地方使用柔和交叉淡变;深色暗角调色能统一来自不同来源的静态帧,并让字幕更易读。
- 验证渲染中的运动:在一个场景内对相隔 4 秒的两帧进行像素差异分析(
scripts/motion_check.py—— 平均灰度差异 > 3 即为真实运动)。 - 音频质量检查:
ffmpeg -af volumedetect—— 纪录片风格语音的平均电平约为 -26 dB。
可选:托管的生成工具
这些不是依赖项。它们只是获取静态帧或片段的一种方式,并且可能随时失效而不另行通知——请做好相应计划。
- Apify 文生图 actor(例如
akash9078/ai-image-generator,约 $0.01/张)曾很好地用于批量关键帧生成。注意静默失败(返回ok:true但 URL 为空)以及错误的文件类型标注。 - 托管的图生视频 actor 曾是此流水线的运动步骤所在。在 2026-06-11,actor
danitn11/wan22-lightning-image-to-video(总共 2 个用户)在上游生产环境中突然失效,每次运行都立即失败;完整分析见docs/rca/rca-generate-footage-animation-2026-06-11.md。生成式图生视频现在位于一个独立的配套仓库中,带有可插拔的 BYO-key 后端;此插件的运动步骤是确定性的且本地的。