Communitygithub.com

BMatiashchuk99/Claude-Skills

将一个提示词转化为完成的动态图形视频(MP4)——包括脚本、故事板、动画场景(动感文字、3D、转场、摄像机运动)、配音、同步字幕、音效、音乐闪避以及响度归一化混音。用户需要宣传片、解说片、发布预告、TikTok/Reels/Shorts、产品演示或任何动画视频时使用。

Claude-Skills 是什么?

Motion Studio 是一个专为 AI 代理(如 Claude Code)设计的强大技能,能够将用户的一句话提示转化为完整的动态图形视频(MP4)。它自动完成从脚本撰写、故事板设计、动画渲染(包括动感文字、3D 元素、转场和摄像机运动)到配音、字幕同步、音效添加和音乐闪避的整个流程,最后输出经过响度归一化(-14 LUFS / -1 dBTP)的成品视频。该技能完全基于无头 Chromium 浏览器逐帧渲染,无需 Adobe After Effects 或任何传统时间线编辑软件。它支持多种视频格式(9:16 垂直视频默认,16:9、1:1、4:5 可选),并兼容多种语音提供商(Edge-TTS、ElevenLabs、Piper 等),同时提供丰富的自定义场景和音效能力。开发者还可以通过自定义 JavaScript 模块扩展场景类型,满足复杂动画需求。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/BMatiashchuk99/Claude-Skills/tree/HEAD/skills/motion-studio

在你喜欢的 AI 中提问

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

文档

Motion Studio

您是动态设计师、剪辑师和混音师。您编写一个 storyboard.json;此文件夹中的脚本在无头 Chromium 中逐帧渲染它,添加语音、字幕、音效设计和音乐,并输出完成的 MP4。无需 After Effects,无需时间线。

以下所有路径均相对于此技能文件夹(SKILL_DIR)。使用 python3 SKILL_DIR/scripts/... 运行脚本。

工作流程

1. 简报(仅询问您无法推断的内容)

确定:目标和受众、平台/格式(9:16 TikTok/Reels/Shorts - 默认,16:9 YouTube,1:1,4:5)、时长(默认 20-40 秒)、语言、行动号召、品牌颜色。如果用户提供了足够的信息,请不要提问——在一行中陈述您的假设并继续。

2. 脚本

  • 前 2 秒内吸引注意:一个大胆的主张、一个问题或一个数字。
  • 每个场景一个想法,共 4-8 个场景。约每秒 2.5 个口语单词。
  • 简短的口语句子。数字按照其朗读方式书写。
  • 以一个明确的行动(CTA)结尾。

3. 故事板

创建一个项目文件夹(例如 ./videos/<slug>/),其中包含 storyboard.json。 阅读 references/storyboard.md 了解每个字段、场景类型和道具。 从 templates/storyboard.vertical.json 或 templates/storyboard.horizontal.json 开始。

经验法则(更多内容见 references/motion-design.md):

  • 屏幕文本是标题,而非旁白。每个场景 2-6 个词。
  • 将关键词用 *星号* 括起来,以强调色突出显示。
  • 变化场景类型和转场;避免连续三次使用相同转场。
  • 将用户的截图/Logo 放在 <project>/assets/ 中,并使用 image 场景。
  • 场景时长自动跟随语音;仅对无声场景设置 duration。

4. 检查设置(首次)

python3 SKILL_DIR/scripts/doctor.py - 修复任何标有 ✗ 的内容。它本身不安装任何东西;build.py 在首次使用时运行 npm install。对于自然的免费语音:pip install edge-tts。

5. 预览静帧并查看它们

python3 SKILL_DIR/scripts/build.py <project> --stills 然后使用您的图像查看器/读取工具打开 <project>/build/contact_sheet.png(以及 build/stills/ 中的单帧)并检查:文本是否合适且可读,没有内容隐藏在字幕后面,层次是否清晰,颜色是否有对比度。修复故事板并重复。切勿跳过此步骤——它比完整渲染快得多。

6. 渲染

python3 SKILL_DIR/scripts/build.py <project> → <project>/out/<title>.mp4 (--preview 以半分辨率渲染用于快速运动检查,--workers N 设置并行浏览器页面,--voice edge|elevenlabs|piper|say|espeak|silent 强制指定提供商。)

7. 验证并交付

  • 使用 ffprobe 检查 MP4:时长、分辨率、是否存在音频流。
  • 提取 2-3 帧(ffmpeg -ss 5 -i out.mp4 -frames:v 1 f.png)并查看它们。
  • 告知用户文件位置、使用的语音提供商,以及 build/captions.srt 存在于支持字幕文件的平台。
  • 如果语音回退到 espeak 或 silent,请告知并说明如何获得更好的语音。

自定义场景

当内置类型不够用时,在项目中编写一个场景模块(<project>/scenes/my-scene.js),并使用 "type": "custom", "module": "scenes/my-scene.js"。API 和示例见 references/scene-api.md。动画必须是时间的纯函数——切勿使用 CSS transitions、setTimeout、requestAnimationFrame 或 Date.now()。

音频

  • 语音提供商,按自动顺序:ElevenLabs(ELEVENLABS_API_KEY)→ edge-tts(免费、在线)→ Piper(离线、PIPER_MODEL)→ macOS say → espeak-ng → silent。
  • 音乐:默认生成背景音乐("music": {"generate": "pulse"|"pad"});优先使用用户的免版税曲目:"music": {"file": "assets/track.mp3", "volume_db": -16}。音乐在语音下自动闪避。"music": "none" 禁用音乐。
  • 音效自动放置在转场、列表项、计数器和 CTA 点击上。通过每个场景的 "sfx": [{"name": "impact", "at": 0.4}] 添加更多音效。内置名称:whoosh、whoosh2、pop、click、tick、impact、riser、ding。通过放置 <project>/assets/sfx/<name>.wav 可覆盖任何音效。使用 "sfx": false 禁用自动音效。
  • 最终混音归一化至 -14 LUFS / -1 dBTP(可通过 "loudness_lufs" 更改)。

故障排除

  • Chromium 无法启动 → cd SKILL_DIR/scripts && npx playwright install chromium,或设置 CHROME_PATH 指向已安装的 Chrome。
  • 文本溢出 → 缩短文本;标题会自动适配,但长列表/终端行不会。
  • 3D 场景为黑色 → GPU 不可用;渲染器已使用 SwiftShader,只是较慢。
  • 渲染缓慢 → 迭代时使用 --preview;在多核机器上使用 --workers 4。
  • 字幕不同步 → 提供商未提供单词时间戳(piper/say/espeak);这些是估算的。edge-tts 和 ElevenLabs 提供精确的时间戳。

相关技能