Communitygithub.com

SergeoDev01/voiceover-glass-reel

一句话将任意旁白(及可选脚本)转化为完整的16:9纪录片风格视频,在After Effects中自动完成:剪辑停顿和呼吸声、编写视觉故事、免费获取所有图片(Wikimedia Commons档案照片、Pixabay MCP片段和肖像、thesvg MCP的Logo SVG、ffmpeg Ken Burns动态效果——无版权、无付费生成),原生构建AE工程,渲染成1080p H.264 MP4。

voiceover-glass-reel 是什么?

该AI技能(适用于Claude Code等平台)可将一段旁白音频(最多约3分钟)和可选脚本,全自动生成一部16:9纪录片风格短片。它利用macOS本地转录消除停顿和呼吸声,将脚本切分为不同镜头(主持人、片段、打字机、大词、卡片等),并从Pixabay、Wikimedia Commons和thesvg MCP免费获取所有素材,无需任何信用额度或付费服务。随后,它通过After Effects原生构建工程,运用暗调档案纪录片风格——玻璃圆角浮动框架、发光边框、透视网格、关键词变色、大号字幕及合成音效——最终导出1080p H.264 MP4文件。该技能极大简化了视频制作流程,用户只需提供一段录音或播客片段,即可获得完整的成品视频。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SergeoDev01/voiceover-glass-reel/tree/HEAD

在你喜欢的 AI 中提问

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

文档

旁白 → 玻璃帧视频

一步输入,一步输出完成的MP4。用户提供一个旁白文件(任意音频或视频格式,最长约3分钟)以及可选的脚本文字、主题说明或参考链接。你负责其余所有工作,仅在以下情况停止:

  • 一次用于下载Logo等素材。没有信用额度预算:所有素材免费获取(参见references/higgsfield.md——经过测试的Pixabay / Wikimedia / thesvg方法)。报告素材来源,但除非用户明确要求付费附录,否则绝不谈及费用。

在聊天中使用用户的语言。屏幕上的一切内容使用旁白的语言。

产出内容

将任意旁白(及可选脚本)通过一次请求转化为After Effects中完整的16:9纪录片风格视频。它会剪辑停顿和呼吸声,编写视觉故事,免费获取所有图片(Wikimedia Commons档案照片、Pixabay MCP片段和肖像、thesvg MCP的Logo SVG、ffmpeg 静态图像Ken Burns动态效果),并原生在After Effects中构建编辑。视觉效果:暗调档案纪录片,每个片段置于浮动的圆角玻璃框架中,带有细发光边框和平滑推入效果;动态透视网格,关键词随文字翻转颜色;大号字幕;打字机/大词/照片卡片页面;剪辑处的闪白和负片闪烁;合成音效。渲染输出1080p H.264 MP4。当用户提供旁白、语音备忘录、叙述或播客片段并请求制作视频、短片、短视频、解说或编辑时使用:"用我的旁白做个视频"、"把这段叙述做成视频"、"玻璃帧编辑"、"从旁白剪一段"、"用我的录音做视频"、"按我的语音剪辑视频"、"玻璃帧和网格"。即使他们没有素材也没问题。

开始前(每台Mac检查一次;如有失败,告诉用户具体修复内容)

  1. macOS 26或更新版本(设备端转录)且After Effects 2024或更新版本,打开。在AE中,启用设置 → 脚本和表达式 → 允许脚本写入文件和访问网络。
  2. Xcode命令行工具(swiftc)。运行scripts/build_tools.sh。它会编译scripts/bin/{to_wav,transcribe,facebox,frames}。如果脚本因"权限被拒绝"失败(上传的技能可能丢失可执行权限),在该技能文件夹中运行一次chmod +x scripts/*.sh。
  3. 免费素材准备就绪:pixabay和thesvg MCP工具(search_pixabay_images、search_pixabay_videos、search_icons、list_variants、get_icon_url、get_icon)以及curl和ffmpeg(引擎已使用)。Wikimedia Commons只需网络连接 + 正确的User-Agent。无需信用额度、无需账户、无需检查余额。
  4. 第一次运行transcribe可能会请求语音识别权限。也可能一次性下载设备端模型。
  5. 如果另一个AE项目打开且未保存更改,build.sh会拒绝。请用户保存。绝不丢弃他们的工作。构建日志会打印PREVIOUS_PROJECT <path>当关闭用户已保存的项目时。最终渲染后,重新打开它:写一行jsx app.open(new File("<path>")); 并用scripts/ae_run.sh运行。

S = 此技能文件夹。PY = /usr/bin/python3(或任意Python 3.9+,仅标准库)。

流程

1. 项目文件夹和语音

  • 创建<proj> = 在旁白文件旁新建一个名为<旁白文件名>_reel的文件夹。
  • 运行PY S/scripts/reel.py prep <voiceover> <proj>。它会转换音频,在Mac上转录,并移除所有停顿和呼吸声。结果存储在work/voice_cut.wav和work/words.json(单词索引 → 节目时间)。
  • 然后运行PY S/scripts/reel.py words <proj>并阅读整个索引转录文本。
  • 如果用户提供了脚本,将其与转录文本比较。记下拼写错误的名称,用于spell(例如"28": "Grok")。

2. 故事(阅读references/story.md,然后编写<proj>/story.json)

  1. 决定适合脚本的世界:时代、地点、2-5个角色的固定演员阵容、3-6个地点、黑白或彩色。
    • 默认:黑白1950-60年代档案纪录片风格,抽象主题变成人和地点。
    • 选择主持人的外观。当用户希望自己出镜时,使用其照片作为主持人参考。
  2. 将转录文本切分为镜头。每个镜头从一个单词索引开始。
    • host(对着电视摄像机的对话):3-6个镜头,每个2-6秒。用于钩子、转折和行动呼吁。总时长约占运行时间的15-20%。
    • clip(玻璃框架中生成的素材):大部分镜头,每个1.5-3秒。
    • type(打字机页面):开场问题或章节标题,最多6个单词。
    • giant(一个巨大的单词,带有红色标签和衬线的副标题行):一个命名的概念。
    • cards(2-4张照片卡片,带有Logo徽章,每个单词上有一个名称):当语音列出人物、产品或品牌时。Logo仅在提及它们时出现。
    • list:当语音列出2-4个要点时,标记该单词范围。其关键词会翻转成强调色。
    • keys:每句话最多一个。
    • hits:在3-6个戏剧性剪辑处使用invert,最多2个"事情变得更疯狂"的时刻使用strobe,最多2个高潮处使用burn。
    • 绝不重复显示相同的片段瞬间。
  3. 根据镜头编写素材清单:
    • 每个故事片段为8-12秒的素材片段(或对免费静态图像的Ken Burns平移),覆盖连续的镜头,因此一个片段通过不同的in时间提供多个镜头;
    • 卡片肖像、地点和任何主持人素材——全部免费获取;
    • 可选背景音乐(或没有:当缺少music时,构建会跳过)。

3. 获取素材(阅读references/higgsfield.md)

  1. 按此顺序获取:故事片段 → 卡片肖像 → 地点 → (如果保留)电视面板 → (如果保留)主持人片段。按照经过测试的方法验证每个下载(HEAD content-type + content-length,curl -A UA + 重试,如果Commons提供则使用SHA-1)。记录文件 → 来源URL → 许可证 → 作者到work/SOURCES.md。
  2. 故事片段:Pixabay search_pixabay_videos(video_type: "film",匹配方向,时长8-15秒)或Commons filetype:video(imageinfo → 使用curl方法下载→转码Talks .ogv/.webm为MP4)。静态图像使用ffmpeg方法变成Ken Burns .mp4。
  3. 主持人片段(仅当用户自己出镜时):
    • PY S/scripts/reel.py chunks <proj> 将每个主持人镜头的音频块写入work/host/host_NN.wav;
    • 将音频块合成到他们的网络摄像头片段上,保存为assets/host/host_NN.mp4(ffmpeg -map 0:v:0 -map 1:a:0 -shortest)- reel.py align 然后精确匹配单词;
    • PY S/scripts/reel.py align <proj> 测量每个片段相对于单词的偏移量。 无自有素材 → 将这些主持人节拍重组为type / giant / cards页面。
  4. 如果使用电视面板,运行PY S/scripts/reel.py screen <proj>/assets/tv_plate.png <proj>。它会找到绿屏。如果未找到,重新绘制(ffmpeg drawbox,参考文档§2)或将主持人镜头切换为full模式——无需面板。
  5. 运行PY S/scripts/reel.py sfx <proj> 合成音效(无需许可证)。
  6. 音乐:省略music(默认),使用用户的曲目,或将Commons音频文件转换为MP3。

4. 构建和检查

  1. 运行PY S/scripts/reel.py plan <proj>。它会写入work/plan.json并打印检查结果。修复story.json中的所有ERROR。认真对待WARN:重复的片段、主持人口型同步问题。
  2. 运行S/scripts/build.sh <proj>。它会构建<proj>/reel.aep(合成REEL),对于70秒的视频大约需要1分钟。读取日志:使用的字体、警告。
  3. 运行S/scripts/render.sh <proj> --half 进行快速检查(约2分钟)。然后检查帧:
    • S/scripts/bin/frames <proj>/out/reel_half.mp4 <proj>/work/check.jpg 4 <约16个镜头中间秒>;
    • 查看check.jpg:字幕可读且不覆盖面部、主持人在电视内嘴唇活动、玻璃框架存在、无黑色间隙、页面不为空。 在story.json中修复,然后重新运行plan、build和检查。
  4. 最终: 运行S/scripts/render.sh <proj>。它会写入<proj>/out/reel_1080.mp4(1920×1080,25 fps,约40 Mbps,含声音)。
  5. 发送MP4。报告:
    • 其长度;
    • 无法验证的内容;
    • 手动调整的位置(reel.aep:每个镜头在02_SHOTS / 03_PAGES中有自己的合成,字幕在CAPTIONS中)。

规则

  • 版权:
    • 所有素材免费获取:Pixabay MCP、Wikimedia Commons(检查每个文件的许可证)、thesvg MCP用于Logo,以及本地合成(ffmpeg Ken Burns、reel.py sfx)。默认不使用付费服务;Higgsfield附录仅在用户明确要求时使用。
    • 绝不抓取电影、系列、广告或其他人的社交帖子。
    • Logo仅来自thesvg MCP或Wikimedia Commons,且仅在用户同意后使用。
    • 音乐可选(省略、用户自有曲目、或将Commons文件转换为MP3)。
    • 音效由reel.py sfx合成。
  • 语音是时钟。
    • 每个剪辑点落在单词上,在其前一个帧处。reel.py实现这一点。
    • 绝不改变速度或单词。
    • 字幕精确显示所说内容,除了spell修正的拼写错误名称。
  • 人物:
    • 朴素、符合时代服装;
    • 写实的成年人;
    • 角色不使用真实公众人物;
    • AI模型和公司以虚构角色呈现,仅通过字幕和Logo命名。
  • 重跑成本低。 plan和build是确定性的,从头重建reel.aep。更改story.json,而非手动编辑reel.aep,除非用户要求手动编辑。一旦用户自行编辑了reel.aep,未经询问绝不覆盖重建。
  • AE一次只运行一个脚本。
    • 仅使用scripts/ae_run.sh、build.sh和render.sh。
    • 退出码4表示AE仍然忙碌:等待,绝不重新发送。
    • 退出码6表示AE未启动脚本:是否有对话框打开?

文件

路径说明
scripts/reel.pyprep / words / chunks / align / screen / sfx / plan(仅标准库)
scripts/build.sh、scripts/ae/build_reel.jsx、scripts/ae/reel_lib.jsxAfter Effects构建
scripts/render.shaerender输出H.264(--half用于检查)
scripts/ae_run.sh向运行的AE发送一个脚本并等待
scripts/tools/*.swift → scripts/bin/音频转换、设备端转录、人脸框、帧图
references/story.mdstory.json格式、镜头规则、完整示例
references/higgsfield.md免费素材获取手册:经过测试的Pixabay / Wikimedia / thesvg检索和验证方法、按素材映射、付费生成附录
references/look.md构建绘制的内容(尺寸、时间、颜色)以及如何调优
references/troubleshooting.md错误和修复
references/example_story.json已完成70秒视频的story.json(EXPERIMENT测试)
PROMPT.md如何安装技能以及发送的提示词

相关技能