Communitygithub.com

Kinetic Reels

根据一个主题,制作一个完整的竖版短视频(1080×1920 MP4,时长38至60秒),适用于Instagram、TikTok、YouTube Shorts或LinkedIn。包含与AI配音(Gemini TTS)同步的逐字动态字幕、真实截图和Logo作为移动卡片、音效以及免费的CC0背景音乐。当用户要求制作短视频、Shorts、TikTok、无脸视频、讲解视频或“制作一个关于X的视频”时使用。

Kinetic Reels 是什么?

该技能将视频制作流水线自动化,使AI助手能像专业动态设计师一样制作竖版短视频,但完全通过代码实现。它采用独特的两步流程:首先在HTML画布上定义视频的每个时间点,然后使用无头浏览器逐帧渲染(30 fps),最终通过FFmpeg合成配音和背景音乐。输出为1080×1920的MP4文件,时长38至60秒,包含逐字动态字幕、真实资产(截图、Logo)和专业的音效设计。支持Gemini TTS AI配音、可选的CC0背景音乐库,并内置严格的规则以确保观众留存率——例如从第一帧就开始运动、每0.8到1.5秒切换画面、以及精心设计的钩子和结尾行动号召。该技能会生成facts.md以验证所有声明,并通过audit命令在渲染前检查布局错误,确保高质量的输出。适用于Claude Code、Cursor和Codex等AI代理平台。

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Shaddy37/kinetic-reels/tree/HEAD/skills/kinetic-reels

在你喜欢的 AI 中提问

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

文档

Kinetic Reels 是做什么的?

你以动态设计师的方式制作视频,但使用代码:一个HTML页面绘制视频的任意时刻 t,无头浏览器以30 fps逐帧渲染,ffmpeg添加配音和音乐。相同的输入,每次输出相同的视频。

下文中的 SKILL 指本文件所在的文件夹。所有命令均在用户的项目文件夹(reels/ 和 .env 所在的目录)下执行。Mac/Linux 使用 python3,Windows 使用 python。

首次制作视频前(只需一次)

  1. 运行 node "SKILL/scripts/doctor.mjs"。如果输出 FIX 行,则运行 node "SKILL/scripts/setup.mjs",然后按照剩余的 FIX 行操作。在输出 ALL GOOD 之前,不要继续。
  2. 用户需要在 .env 中配置 Gemini API 密钥(GEMINI_API_KEY=...,可免费从 https://aistudio.google.com/apikey 获取)。切勿打印密钥,切勿提交 .env。
  3. kinetic.config.json 存储用户昵称(水印)、姓名和用于结尾卡片的方形照片。new-reel.mjs 会在首次运行时自动创建该文件;询问用户这三个值并填入。

制作视频(按顺序执行每一步)

  1. 主题和事实。 确定一个主题。从第一手资料(文档、仓库、供应商官方页面)调研,将每个声明写入 facts.md,并附上URL和阅读日期。无事实,无声明。
  2. 规划节奏(在开始制作前展示给用户)。列表类视频38至45秒,5至7个点;讲解类视频最长60秒。每个场景需包含:时长、文案、画面、具体资产文件名及来源。如果找不到某个资产(Logo、照片、截图),停止并向用户索取。切勿绘制假Logo、虚构UI或生成人物形象。
  3. 创建文件夹: 运行 node "SKILL/scripts/new-reel.mjs" <slug> [--logo claude]。角落Logo使用该主题的Logo(文件位于 as/ 目录;如果缺失,添加真实的SVG文件)。
  4. 脚本。 编写 tts.json(配音文本,分为钩子/主体/收尾/行动号召部分,每部分使用不同风格)和 script.txt(字幕文本,词序一致)。规则参考:references/SCRIPT.md。标签和风格参考:references/VOICE.md。
  5. 配音: 运行 python "SKILL/scripts/voice.py" reels/<slug>,然后运行 python "SKILL/scripts/tighten.py" reels/<slug>(将停顿调整为0.34秒,正常语速)。试听或将音频导入任意转写工具检查:如果某句缺失或名称错误,修正文本后重新运行 voice.py。
  6. 字幕 + 时间轴: 运行 python "SKILL/scripts/captions.py" reels/<slug>,输出 DUR、SCN 和 CAPS。将结果粘贴到 reel.js 中。如果某个词出现过早或过晚,手动微调锚点([email protected])。
  7. 真实资产: 使用 node "SKILL/scripts/docshot.mjs" <url> reels/<slug>/as/<name>.png [--selector "css"] 截取截图,Logo从供应商或 SKILL/assets/logos 获取SVG格式。每个资产在屏幕上显示一行小字来源。详情参考:references/ASSETS.md。
  8. 构建 reel.js。 首先阅读 examples/claude-code-shortcuts/reel.js:这是黄金示例,展示了所有模式。可用的组件参考 references/COMPONENTS.md。图片区域为 y 260 至 1100,字幕区域为 y 1150 至 1570。
  9. 审核: 运行 node "SKILL/engine/shot.cjs" reels/<slug> audit,必须输出 LAYOUT PASS。然后运行 node "SKILL/engine/shot.cjs" reels/<slug> prev 0 <每个场景内的一个时间点>,查看每一帧静图(打开JPG文件)。修正并重复。对照 references/SCRIPT.md(钩子规则)检查0、0.5、1、2、3秒处的5帧钩子静图。
  10. 音效: 编辑 mix.py(设置 DUR、SCN,每次画面切换添加一个音效;参考 references/SOUND.md),运行 python reels/<slug>/mix.py。如需更换背景音乐:运行 python "SKILL/scripts/music.py" search "lofi chill",然后运行 pull <id> reels/<slug>(仅限CC0音乐)。
  11. 渲染: 运行 node "SKILL/engine/render.cjs" reels/<slug>,然后运行 python "SKILL/scripts/finish.py" reels/<slug>(必须输出PASS),最后运行 node "SKILL/engine/shot.cjs" reels/<slug> cover 0.6。
  12. 交付 reels/<slug>/out/final.mp4 和 out/cover.jpg,以及一段包含主题关键词(第一行)、3至5个话题标签和来自 facts.md 的来源说明的文案。

留住观众的规则(基于实际效果,而非理论)

  • 收尾放在第一行。“几乎没人用的7个Claude Code快捷键”胜过“今天我想给你看个东西”。
  • 第0帧就开始运动。使用负时间启动入场动画(popV(t,-0.3,...)),确保第一帧已经在运动中。永远不要空白或静态的第一帧。
  • 从第一帧到最后一帧保持统一视觉风格。切勿从深色开场再切换到浅色:这样会让观众觉得是新视频而滑走。
  • 对于列表类视频:使用带计数的标题(如 快捷键 3/7 + 圆点指示器),并在第二行设置开放式循环(“而第七个为我节省了数小时”),在结尾处收束。
  • 每0.8至1.5秒切换一张新图片。展示效果,而非描述。
  • 配音保持主导。背景音乐音量较低(sfx.mix_reel 中的默认值已实测)。
  • 结尾行动号召仅针对当前视频编写(保存、分享给适合的人,或提出一个真实问题)。永远不要使用“关注了解更多”。

遇到故障时

参考 references/TROUBLESHOOTING.md。常见问题包括:PATH中找不到ffmpeg、未安装Chromium、语音API返回 429(目前免费配额有限,请稍候或启用付费)、审核时出现CLIP错误(文本超出卡片宽度:缩短文本或将卡片宽度增加到920像素以内)。

相关技能