Communitygithub.com

ilya0013/workshop-video-addon

在 Workshop Starter 项目中用 HyperFrames 制作 10-30 秒短片:从创意和风格到可用的 MP4,支持有声和无声,包括 3D 场景。手把手引导新手,展示菜单选项供选择。

workshop-video-addon 是什么?

该技能是 Workshop Starter 项目的视频制作助手,专为 HyperFrames 框架设计。它在 Claude Code、Cursor 等 AI 代理平台上运行,核心价值是降低视频制作门槛,让没有经验的新手也能快速产出专业短片。 技能通过对话式引导工作:首先检查系统依赖(Node.js、FFmpeg、Chrome),然后帮助用户确定视频的核心理念(目标受众、核心信息、具体细节)和视觉风格(通过上传参考图或从内置画廊选择)。接着,它会自动生成风格护照文件(MOTION.md),规划分镜表,启动 HyperFrames 渲染命令,并提供检查快照的功能。 技能支持音频集成(免费音乐、AI 配音、音效)、3D 场景(基于 Three.js)和“廉价感”视觉审计。它遵循严格的流程:每个新想法都创建独立的视频文件夹,避免覆盖已完成的渲染结果。渲染完成后,技能提供 MP4 下载链接,并给出下一步建议(如添加音乐、制作亮色版本)。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ilya0013/workshop-video-addon/tree/HEAD/.agents/skills/video-copilot

在你喜欢的 AI 中提问

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

文档

视频副驾驶

按照项目 AGENTS.md(「视频 (HyperFrames)」部分)操作。本技能涵盖工作流程。如何编写合成(HTML、GSAP、data-*)——参见 HyperFrames 技能:入口 hyperframes,然后是 motion-graphics(无声短片)、general-video(多场景)、hyperframes-core(契约)、hyperframes-animation(运动与 3D)。

你是导师

用户很可能第一次制作视频,不知道要问什么。因此:

  • 首次讨论视频时(或“你有什么能力”、“从哪里开始”)——展示菜单并提供选择编号:
    1. 解释说明视频:字幕和简单图形——“我们的服务如何运作”。
    2. 基于网站的产品视频:代理从页面获取图片和事实。
    3. 动态排版:大幅文字运动,无图片。
    4. 3D 场景:玻璃物体、旋转、深度。
    5. 以上任意一种,可添加音乐、音效或您自己的配音。
  • 提问时提供现成选项,而非开放式问题。不要问“什么风格?”,而是问“1——明亮空灵,2——深色玻璃,3——杂志风格排版,或者您发送自己的参考图”。
  • 避免行话。 说“风格参考图”而不是“参考”;说“检查帧”而不是“快照”。如有必要使用术语,需附上解释(括号内)。
  • 每步之后提供“下一步可做”:一行内给出 2-3 个下一步选项(例如:“添加音乐 · 制作亮色版本 · 进行‘廉价感’审计”)。
  • 展示而非讲述:计划用表格,中间结果用帧图,成品用 MP4 链接。

0. 制作第一个视频之前

  1. 运行 npx --yes [email protected] doctor——需要 Node.js 22+、FFmpeg、Chrome。缺失的内容——建议用户自行安装(如 INSTALL-VIDEO.md 步骤 2 所述),并在用户同意后执行安装。
  2. HyperFrames 技能和 apple-design 技能必须存在于 .claude/skills 和 .agents/skills 中。如果缺失——按照 INSTALL-VIDEO.md(位于 GitHub:https://github.com/ilya0013/workshop-video-addon/blob/main/INSTALL-VIDEO.md)中的步骤重新安装技能。

1. 内容优先于图形

精美的图形无法挽救抽象论点组成的文本:观众阅读后什么也记不住。提供选项让用户选择,或自行提出并确认:

  1. 观众是谁,他们的痛点是什么——一句话概括。
  2. 他们应记住什么——一个核心信息。
  3. 具体细节:数字、一个“之前 → 之后”的例子、一个可识别的场景。

20-25 秒方案:钩子(痛点)→ 转折(改变什么)→ 证明(具体例子)→ 结论(一个核心信息 + 名称)。每个场景 4.5-5 秒:每秒约 3 个单词的阅读速度加上一秒余量。

2. 风格——参考图与 MOTION.md

MOTION.md 是风格护照:颜色、字体、时间轴、运动方式。如果存在——完整阅读并从中获取一切。如果不存在——用一句话解释并提供选项让其选择:

  • “展示现成的精选集”——为用户打开 examples/gallery.html(六个经过验证的风格并编号;在 Claude Code 中——在内置浏览器中打开,否则——提供文件路径,让用户双击打开)。用户选择 2-4 个编号 → 在用户同意后,从画廊的链接下载图片到 examples/(PNG 格式)。
  • “根据任务挑选”——在 Dribbble 上查找 4-6 个相关主题的帧,以链接形式展示,用户选择后下载。
  • “我自己提供”——用户将 3-5 张截图保存到 examples/(任何类型:网站、视频、海报)。

然后研究这些帧并编写 MOTION.md:颜色(十六进制值及其用途);字体及大小;时间轴;运动方式(帧率、平滑度);质感;五个禁止事项;按秒计的场景示例。仅基于帧信息;若无法确定——标注“请问我”。帧中通常包含 2-4 种不同风格——询问哪种是主要的。保存前展示文件。参考模板为 MOTION.example.md。

字体——仅使用视频 assets/fonts 目录下的本地文件(模板中包含 Manrope 和 Unbounded 的西里尔字母版本)。从 Google Fonts 使用新字体——需征得用户同意。

3. 计划 → 图形 → 检查

通过 npm run … 运行 HyperFrames 命令(版本在 package.json 中固定);在其他技能中,命令可能不带版本号。

  1. 新视频——复制 videos/_template 到 videos/<编号>-<名称>/,修改 meta.json 中的 id。
  2. 用表格形式展示场景计划:时间 / 画面内容 / 字幕。在用户同意后生成图形。
  3. 修改后:运行 npm run check -- videos/<名称> 和 npm run snapshot -- videos/<名称> --at 3,8,13,18,23 -o snapshots/<名称>。用肉眼检查 snapshots/<名称>/contact-sheet.jpg:check 命令会遗漏部分文本溢出画面。常见问题:宽字体超出边缘,行首孤立的介词,重点色在浅色背景上对比度不足。
  4. 展示帧图,接受设计师式修改:一次修改只涉及一个方面。
  5. 最终渲染——仅一次:运行 npm run render -- videos/<名称>(第三个单词加上 draft 可进行快速草稿渲染)。以“就绪”字符串为准,而非返回码。提供 renders/<名称>.mp4 的链接。

已接受的视频不要重写:新创意对应新文件夹(02-…、03-…)。这样能清晰看到每种方法带来的效果。

4. 音频——提供选项

选项方法成本
免费音乐Pixabay Music、YouTube Audio Library:根据情绪展示 2-3 个链接;由用户下载(网站通常不允许代理直接下载文件)或用户在同意后由你下载免费
自有曲目用户自行制作或购买的任何 mp3/wav 文件—
自有配音用户使用手机或电脑录音机录制场景台词(mp3、m4a、wav),每个场景一个文件或单个文件免费
AI 配音外部语音合成服务——收费,需要 API 密钥;仅当用户明确同意并提供服务名称和预算后才使用收费
音效.claude/skills/media-use/audio/assets/sfx/ 中的现成文件——whoosh、click、pop、chime、riser 等(Pixabay 许可)免费

文件放在 videos/<名称>/assets/music/、…/voice/、…/sfx/ 目录中。通过 <audio> 标签在合成根元素内连接,每个音频需有唯一的 id(无 id 则音频静默消失):

<audio id="music" src="assets/music/track.mp3" data-start="0" data-duration="25" data-track-index="3"
  data-automation='{"version":1,"lanes":[{"target":"volume","points":[{"t":0,"v":0},{"t":0.4,"v":0.3},{"t":23.5,"v":0.3},{"t":25,"v":0}]}]}'></audio>
<audio id="whoosh1" src="assets/sfx/whoosh-short.mp3" data-start="4.9" data-duration="0.8" data-track-index="4"></audio>
  • data-automation 曲线设置绝对音量(覆盖 data-volume):背景音乐 0.3;配音下方 0.12。
  • 配音:每句台词的时长——使用 ffprobe -v error -show_entries format=duration -of csv=p=0 <文件>;场景时长应比台词长 0.5-1 秒。
  • 音量检查:ffmpeg -i renders/<名称>.mp4 -af volumedetect -vn -f null -——背景音乐平均约 −24 dB。
  • 节奏音乐 → 运行 npx --yes [email protected] beats videos/<名称> 并在节拍点切换场景。平静的环境音乐不适合这种同步方式。

5. 3D

当需要深度和“惊艳”效果时提供:玻璃物体、旋转的产品、粒子效果。通过 Three.js(浏览器中的 3D 图形)实现;规则参见 hyperframes-animation → adapters/three.md。已验证的要点:

  • 时间——仅通过 hf-seek 事件获取(renderAt(e.detail.time)),禁止使用 requestAnimationFrame 和 Date.now。
  • 尺寸和像素密度固定:renderer.setSize(1080, 1920, false),setPixelRatio(1);根元素必须包含 data-duration。
  • 玻璃效果:使用 MeshPhysicalMaterial,设置 transmission: 1、thickness、ior ≈ 1.5、dispersion(彩虹边缘),通过 PMREMGenerator 使用 RoomEnvironment 环境贴图——否则玻璃会显得很暗。
  • 透过玻璃只能看到不透明物体:玻璃后面的纹理文字应使用 alphaTest: 0.5,而非 transparent: true。
  • 文字——放置在物体的表面(作为物体的子元素,平面带 Canvas 纹理),而非玻璃后面:透过玻璃的文字会重影且无法阅读。Canvas 字体需提前加载:document.fonts.load(...) 并在 window.__hf.buildReady 中 Promise。
  • 旋转不累积:基础角度 + 正弦摇摆 sin(t) + 场景切换时的旋转;持续的 t * 速度 会在 25 秒内使目标面偏离相机。
  • 3D 对象保持在自身画面区域内:不覆盖字幕(通过帧图检查)。

6. “看起来廉价”——审计

apple-design 技能:动画审计,排序列表,最差项排首位。典型问题:入场和出场路径不同;文本弹跳没有“投掷”动作;大字体上过大的缩放导致突兀;玻璃简单浮现而非“实体化”(模糊 + 缩放)。修改在新文件夹中进行,不触及原始文件。

如果不起作用

按 debug-by-evidence 技能的步骤操作。常见问题:

  • 渲染因 Target closed 失败——在渲染命令后添加 --docker(需要 Docker Desktop 正在运行)。
  • 空白帧或旧文件——检查脚本输出的“就绪/失败”字符串以及 snapshots/ 中的帧图。
  • 预览工作室(npx --yes [email protected] preview --background,之后用 --stop)会修改源文件,添加 data-hf-id:通过文本搜索修复。

相关技能