Communitygithub.com

代码发布成片

按节拍策划产品发布片,用 HTML 画每一帧,再渲成带音乐和音效的 60 帧 MP4。

代码发布成片 是什么?

给发布片、预告、功能上线和演示用的小型动效流程。它先写简报和节拍表,把真实界面做成可按时间寻址的 HTML,再用 ffmpeg 出片并逐帧检查。任何一拍都能改完马上重渲。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ensp1re/launch-video-skill/tree/HEAD

在你喜欢的 AI 中提问

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

文档

启动视频

像小型动态工作室一样制作启动视频。首先确定视频的目标,逐节规划。然后用代码构建每一帧,这样任何部分都可以在一分钟内修改并重新渲染。

最终成果是一个真实产品的短片:其UI在HTML中重建,在节拍网格上移动,跟随音乐剪辑,以60帧每秒的速率显示并带有运动模糊。

所需条件

  • Node 18+、带有libx264的ffmpeg、Python 3.9+。Python脚本仅使用标准库。
  • 在视频文件夹中安装Playwright及Chromium:npm i -D playwright && npx playwright install chromium。
  • 本技能的 scripts/ 和 assets/template.html。

在命令中,$SKILL 表示本技能的文件夹(例如 ~/.claude/skills/launch-video)。在Shell中设置一次:SKILL=~/.claude/skills/launch-video。从视频文件夹运行命令。

制作流程

按顺序完成各个阶段。每个阶段的输出供下一阶段使用。

阶段输出参考文档
1. 简报brief.mdreferences/1-brief.md
2. 格式格式、时长、宽高比、平台(在简报中)references/2-formats.md
3. 故事beatmap.mdreferences/3-story.md
4. 视觉风格笔记(在简报中)references/4-look-and-motion.md
5. 构建film.html:先提供4张关键帧供用户确认,然后是整部影片references/5-build.md、assets/template.html
6. 音乐与音效歌曲选项、剪辑点、混合后的MP4references/6-music-and-sound.md
7. 渲染与检查MP4文件及检查结果references/7-render-and-check.md
8. 交付最终文件、精简版本、发布说明references/8-platforms.md

到达相应阶段时再阅读参考文档,不要一次性全部读完。

1. 简报

了解产品是什么、视频的目标受众、他们应该记住的要点以及“魔法时刻”——即产品明显发挥作用的时刻。首先阅读仓库、网站和文档。然后一次性最多向用户提出5个问题。对于其他问题,将你的默认答案写入简报的未解决问题中并继续。编写 brief.md。

2. 格式

根据产品类型、目标和平台选择视频种类:预告片、发布影片、演示、解释视频、功能更新、创始人视频或黑客松演示。设定时长和宽高比。对于软件产品,通常默认是15–30秒的发布影片,用于X和LinkedIn。当建议冲突时,以用户的意见为准,其次考虑主要平台。其他平台则制作精简版本。

3. 故事

以固定节奏编写节拍图;120 BPM对应0.5秒一个节拍。每个节拍描述发生什么、它从哪个先前元素演变而来、镜头如何移动、显示什么文字以及听到什么声音。将魔法时刻放在音乐的Drop部分。

4. 视觉

使用产品自身的品牌:其颜色、字体、标志、图标和组件。阅读设计令牌和CSS。如果没有品牌,则采用浅色2D风格:暖白色画布、近似黑色的UI、一种强调色、一种干净的无衬线字体和一种等宽字体用于代码。确保文字在手机上足够大以阅读。

5. 构建

将 $SKILL/assets/template.html 复制到 video/film.html。保留其引擎,替换其中的影片内容。所有样式通过 seek(t) 中的时间进行调整:不使用CSS过渡、定时器或帧之间的状态。形状之间相互转换而非淡入淡出。

首先构建4个关键时刻:吸引点、魔法时刻、回报和结尾卡片。将它们渲染为静态帧并展示给用户,同时提供节拍图。在此阶段获得用户的确认:修改一句话成本很低,但修改已完成的场景则不然。然后构建其余部分。

6. 音乐与音效

找到3–4首与影片节奏接近的候选歌曲,每首歌曲应包含一个安静部分和一个清晰的Drop。在下载任何内容前先询问用户。用 scripts/beats.py 分析每首歌曲,查看 scripts/loudness_plot.py 的输出,并用 beats.py --around 确认Drop的位置。按速度 = 歌曲BPM / 影片BPM 渲染影片,使节拍对齐。然后用 scripts/mux.py 剪辑每首歌曲,使其Drop正好落在魔法时刻。让用户选择。为点击声、嗖嗖声和砰声添加真实音效,根据其最响点放置。

7. 渲染与检查

先渲染静态帧,然后渲染视频:node $SKILL/scripts/render.mjs film.html --out out/film.mp4。接着检查,并向用户展示证据:

  • scripts/pops.py 查找单帧闪烁。应报告结果为0。
  • scripts/contact_sheet.py --video 每0.5秒显示一帧。检查每个图块是否存在构图、文字截断和重叠问题。
  • 检查Drop的时序和响度(-14 LUFS)。
  • 在手机尺寸下静音观看。

8. 交付

导出主版本以及每个平台所需的精简版本,例如16:9、1:1或4:5以及9:16。向用户提供文件、包含标语和链接的帖子文案,以及发布前需检查的要点。然后像导演一样记笔记(如“中间部分拖沓”、“缩放应与Drop同步”),只针对笔记内容进行修改。

工作规则

  • 真实产品,真实陈述。 使用产品的真实名称、UI、文字和数据格式。示例数据必须合理且跨场景一致:如果出现一笔120美元的订单,总额应增加120美元。绝不展示不存在的功能或无法验证的数字。适用时标明“测试版”或“测试网”。
  • 每个视频只传达一个信息。 如果简报中有三个信息,则制作三个视频或选择一个。
  • 下载前先询问 音乐、音效或素材。说明文件名、来源、许可证和大小。
  • 在展示前自行检查。 第7阶段的检查能在用户看到前发现大部分问题。用数字报告结果,而不是“看起来不错”。
  • 在涉及品味决策时提供选项。 尤其是音乐:剪辑3–4个版本让用户选择。
  • 复制结构,而非艺术。 参考视频可以借鉴其节奏和节拍结构。不要复制其角色、艺术风格、音乐或品牌。

视频文件夹

将视频文件放在产品源代码树之外,除非用户希望放在里面。

video/
  brief.md        beatmap.md
  film.html       assets/      (logo, fonts, icons, screenshots)
  music/          sfx/         (downloads, with their license notes)
  stills/         out/         (renders; disposable)
  package.json    node_modules/ (Playwright)

脚本

脚本功能
scripts/render.mjs静态帧,或带有运动模糊、并行工作器和 --speed 参数的完整MP4
scripts/contact_sheet.py将静态帧或视频帧拼接成图块,便于在一张图像中查看
scripts/pops.py查找单帧闪烁问题
scripts/beats.py歌曲节奏、节拍网格、Drop候选;--around 用于近距离查看
scripts/loudness_plot.py绘制歌曲的响度,包含网格和Drop候选
scripts/mux.py将音乐剪辑到关键点,根据峰值放置音效,设置响度

运行任何脚本时不带参数即可查看其用法。

相关技能