Communitygithub.com

visalnaqvi/video-generator-skill

完成视频工作室的最后渲染——为分镜脚本匹配或生成音乐、放置音效、添加品牌化逐词字幕、混音至社交音量标准(-14 LUFS),输出全质量MP4、封面图并自动进行质量检查。

video-generator-skill 是什么?

此技能是视频工作室流水线的第5阶段(写稿→分镜→配音→渲染),用于在配音获批后生成最终视频。它自动从音乐库中为分镜的情绪基调挑选音乐,若无匹配则生成免费备选方案;通过音效库将分镜中的音效提示映射到对应帧,并支持循环播放和同步结束。混音阶段保持人声最前,音乐侧链压缩并淡出,音效为-12 dB,最终限制并标准化至-14 LUFS / -1.5 dBTP。字幕默认为社交格式开启,支持逐词高亮、按行跳过、按镜头调整位置,并提供联系单预览以检查碰撞。最终渲染输出1080x1920的MP4、封面图和QC报告,QC通过后才视为完成。默认所有工具免费,付费音乐仅在用户要求或批准后使用;该阶段不更改任何视觉或文字内容,动画或节奏问题需退回之前阶段。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/visalnaqvi/video-generator-skill/tree/HEAD/.claude/skills/render

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

渲染 —— 音乐、音效、字幕、最终导出

输入:videos/<video>/ 目录下含已批准的 storyboard.json(已适配配音:包含 audio 和 timing)及已批准的 audio/voice-script.json。输出:

audio/music.wav        选择或生成的音乐
audio/mix.wav          最终音轨(人声 + 侧链压缩音乐 + 音效),-14 LUFS
audio/mix.json         每个声音事件(镜头、提示、文件、时间)用于检查
render/final.mp4       1080x1920(根据格式),30 fps,H.264 + AAC
render/cover.png       全分辨率封面/缩略图
render/qc.json         质量检查报告

此阶段不更改视觉或文字内容。 动画或时机错误 → 转至分镜/配音技能。默认免费: 库中或代码生成的音乐、代码生成的音效。付费音乐(AI生成)仅在用户要求或批准估算后使用。

第一步 —— 音乐

  1. 读取分镜的 music.mood / notes 及视频长度。
  2. 在 studio/library/music/ 中查找(index.json 列出了带有情绪标签、bpm、许可的音轨)。选择最佳匹配;若无匹配则说明。
  3. 无匹配 → 生成免费备选方案,并在揭示镜头开始处(场景开始时间 —— 从时长/转场计算)加入“高潮”(drop): node studio/scripts/make-music.mjs --out videos/<video>/audio/music.wav --duration <s> --mood upbeat|calm|cinematic|tense --bpm <n> --drop <s> [--silence <from>-<to>] (tense:小调、心跳脉冲、未解决结尾;--silence 在揭示声音前静音一段时间 —— 在紧张情绪下,滴答时钟音效跟随其后)。宇宙视频:遵循 universe.json → music / sfx。 库音轨:复制/转换为 audio/music.wav;修剪、淡入淡出和侧链压缩在混音中处理。
  4. 记录至 storyboard.json → music.file,music.source(音轨+许可,或“code-generated”),可选 music.db(默认侧链压缩前 -16 dB)。

第二步 —— 音效

音效提示已存在于每个镜头的 sfx 中(纯文本,由配音阶段锚定到帧或口语单词)。混合器通过 studio/library/sfx/index.json 将单词映射为声音(由 node studio/scripts/make-sfx.mjs 生成;自定义声音放在 custom 中,优先检查)。repeat + every 多次播放提示;syncEnd: true 将其放置在镜头末尾;riser 在其提示处结束。转场呼啸声是选择加入的(--auto-whoosh)—— 用户偏好克制的声音:仅关键时刻(最多约每2秒1个提示,大多数转场无提示)。如果分镜的提示远多于该数量,则修剪至关键时刻后再混音并告知用户。修复混合器中任何“No sound matched”的行 —— 通过添加关键词或自定义声音,绝不更改分镜设计。

第三步 —— 混音

node studio/scripts/mix.mjs videos/<video>(--dry 预览事件数量)

人声保持在顶部;音乐被侧链压缩并淡出;音效为 -12 dB(--sfx-db 或 storyboard.sfxDb);主输出限制并标准化至 -14 LUFS / -1.5 dBTP。设置 storyboard.finalAudio。任何音频更改后重新运行。

第四步 —— 字幕

社交格式默认为开启。在 storyboard.json 中: "captions": { "enabled": true, "y": 83, "size": 50, "skipLines": ["L11"] }

  • 短语(≤ 4个单词,平衡,根据停顿分割)来自配音时间轴;正在说的单词以品牌的突出颜色高亮。
  • skipLines:VO 行中已经显示在屏幕上的词(电话号码、URL)。
  • 每个镜头:captionY(帧的百分比)移动字幕位置,captions: false 在同词已显示在屏幕上时隐藏字幕(例如,名字下方的三分之一)。
  • 保持在安全区域内(默认 83%)且不遮挡重要设计元素。

用一张联系单检查(字幕在有人说话时显示在帧上): node studio/scripts/render.mjs videos/<video>/storyboard.json --sheet --scale 0.25 --out <scratchpad>/captions-sheet.png 查看一次;用 captionY / captions: false 修复碰撞。

第五步 —— 最终渲染、封面、质量检查

node studio/scripts/render.mjs videos/<video>/storyboard.json --final
node studio/scripts/render.mjs videos/<video>/storyboard.json --cover
node studio/scripts/qc.mjs videos/<video>

质量检查必须通过:分辨率、帧率、编码、时长 = 分镜时长、音量 -14 ±1.5 LUFS。警告(真实峰值、静音间隙、黑帧)→ 解释或修复。不观看 MP4;将 render/final.mp4(和封面)连同质量检查摘要及混音内容(音乐来源、音效事件数量、字幕开关状态)发送给用户。

第六步 —— 批准

用户满意 → "status": "final" 写入 storyboard.json → 渲染完成。更改:音乐/音效/字幕调整 → 回到此阶段的第1-5步;视觉效果或时机更改 → 回到分镜/配音技能,然后重新运行此阶段。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能