Communitygithub.com

highontrading/motion-edits

使用基于82个专业编辑的帧级分析的Remotion引擎,创建高端动态图形视频、解说视频和短视频(Reels/Shorts/TikTok/YouTube),并渲染为任意宽高比的MP4文件。当用户要求制作、设计、动画、脚本、故事板或编辑动态图形、解说、动态排版、推广/广告、产品或UI演示、歌词/音乐剪辑或频道系列视频时使用,也支持为用户自己的素材添加动态图形、字幕、放大镜头和转场。

motion-edits 是什么?

该技能是一个基于Remotion的高端动态视频制作工具,通过分析82个专业参考编辑的帧级数据,提炼出严格的规则和数字模型。它提供12种风格家族供选择和混合,内置的Remotion引擎可根据JSON格式的VideoSpec渲染视频,实现逐子句场景划分、精确缓动、动量剪辑、词语同步排版、程序化纹理和电影级后期处理。技能支持独立动态图形(无需素材,使用文字、剪影、UI模拟、图表、粒子等)和素材编辑(以用户剪辑为骨干,进行收紧、放大插入、字幕、关键词冲击和B卷卡片等)两种模式,可混合使用。任何宽高比均可,默认9:16 1080×1920。工作流程包括设置环境、获取简报、将脚本拆分为子句、生成语音和时间码、选择风格、准备素材、编写VideoSpec、预览、渲染、审查和修正,以及创建变体和频道系列。该技能适用于Claude Code等AI Agent平台,通过命令行工具和Python脚本(如transcribe、tts、beats、analyze_footage、tighten、matte、cutout、render、review_render)实现完整视频制作流水线。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/highontrading/motion-edits-skill/tree/HEAD

在你喜欢的 AI 中提问

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

文档

动态编辑

此技能可制作完成的高端动态视频。它基于以下四个方面:

  • 规则和数字:从82个参考编辑中逐帧测量得出(references/)
  • 12种风格家族:供选择和混合(references/styles/)
  • 一个Remotion引擎(remotion/),可渲染JSON格式的VideoSpec:每个子句一个场景,精确缓动、动量剪辑、词语同步排版、程序化纹理和电影级后期处理
  • 工具:用于配音、节拍、素材分析、剪影、遮罩、渲染和质量审查(tools/)

两种模式,可在同一视频中混合使用:

  • 独立动态图形:无需素材。文字、剪影、UI模拟、图表、计数器、粒子和纹理即可完成。
  • 素材编辑:以用户的剪辑为骨干。收紧、放大插入、字幕、添加关键词冲击和B卷卡片、将文字放在主体后方、调色、添加转场。

任意宽高比:在规范中设置 width/height(默认9:16 1080×1920;16:9、1:1、4:5等均可)。

优先阅读

  1. references/playbook.md:规则。每次都读。
  2. references/engine-spec.md:每个规范字段、图层、转场和渲染命令。编写规范前阅读。
  3. references/styles/README.md:选择一种风格家族,然后阅读该家族的文件(其示例规范可以作为很好的起点)。

当需要决策时,深入了解:

  • script-structure.md:体裁模板、钩子、子句→场景→道具规则、详细示例
  • motion-language.md:缓动、帧率、节奏、同步数字
  • transitions.md:63种转场及其帧数和构建方法
  • typography-color.md:字体类别、搭配、尺寸、安全区、调色板、完成量
  • sound-design.md:背景音乐、闪避、音效放置、节拍同步、纯音乐编辑
  • footage-editing.md:集成模式、放大插入、蒙太奇、字幕、两个素材编辑规范示例
  • engine-gaps.md:引擎尚不能做什么,以及变通方法
  • breakdowns/vNN.md + breakdowns/_TAXONOMY.md:逐镜头证据。通过标签搜索先例(grep -l "text-behind-subject" references/breakdowns/*.md)。

一个完整的示例(脚本→草稿配音→规范)位于 remotion/src/specs/examples/zeigarnik.json(脚本:work/zeigarnik.script.txt)。

工作流程

0. 环境设置(每个环境一次)

cd remotion && npm install
pip install faster-whisper librosa opencv-python-headless "rembg[cpu]" piper-tts pillow numpy

需要 ffmpeg。如果librosa因段错误崩溃,设置 NUMBA_CACHE_DIR=/tmp/numba_cache。

1. 获取简报

获取以下信息,或在没有信息时选择合理的默认值而不停滞:

  • 主题或信息
  • 平台和宽高比
  • 长度(短视频:20–45秒)
  • 语音:用户的配音文件、要配音的脚本,或无需语音
  • 素材或照片
  • 品牌(调色板、字体、标志)
  • 基调
  • 版本数量

如果用户只提供主题,自己编写脚本。

2. 脚本→子句表格

使用script-structure.md。在第一句中设置钩子(8–15词,前3词要有冲击力)→铺垫→转折→在16–40%处命名原则→证明→反论道德→行动号召(最后10–14%,≥2.5秒)。将其拆分为子句:一个子句 = 一个场景 ≈ 6个词 ≈ 2–2.8秒。对于每个子句,写下:

  • 名词的直译道具或图片
  • 关键词:成为文字的1–3个词
  • 装置:徽章、计数器、UI、图表、涂鸦、交换、粒子
  • 切入方式

3. 语音和时间

  • 用户配音: python3 tools/transcribe.py vo.mp3 remotion/public/<proj>/vo.words.json
  • 尚无配音: python3 tools/tts.py script.txt remotion/public/<proj>/vo.wav --speed 1.15 --words remotion/public/<proj>/vo.words.json 提供离线草稿语音。告知用户这是占位符;他们自己的配音以后可以替换,因为重新转录时词引用会自动重新计时。
  • 音乐主导或无语音: python3 tools/beats.py music.mp3 remotion/public/<proj>/beats.json,然后设置 "beats" 并使用 {beat|downbeat|onset: n} 引用和 snap。
  • 场景开始: 在每个子句第一个词上设置 {"word": "...", "offset": -0.06}。场景词引用按顺序解析,但当该词也恰好出现在前面时,使用多词引用("why writing")。关键词使用 sync 或 at: {word}。

4. 外观

选择一个风格家族(样式自述文件)。然后锁定:

  • 调色板:每个场景循环的场地色,加上1–2个具有固定含义的强调色
  • 字体搭配:一个粗体展示字体加上一个轻细字体
  • animFps:15用于拼贴/编辑风格,12用于粗糙印刷,0用于UI/3D/电影感
  • 完成效果:颗粒+渐晕,印刷风格可加半色调
  • 一个标志性转场,重复使用,加上1–3种辅助类型

5. 素材

  • 素材:
    • python3 tools/analyze_footage.py clips/*.mp4 --out work/footage.json --sheets work/sheets,然后查看sheet
    • tools/tighten.py 去除静音段
    • tools/matte.py 为主体制作遮罩,用于在主体后放置文字
  • 照片: python3 tools/cutout.py photos/* --out remotion/public/<proj>/cutouts --trim,然后以 image 形式使用并设置 cutout: true。将文字放在比剪影更低的 z 层,以将其置于后方。
  • 无素材: 文字、程序化背景、UI模拟、图表、计数器、形状、粒子和 embed。仅在需要实物对象时,在 remotion/src/custom/ 中编写自定义组件。
  • 仅使用用户提供或有权使用的标志、肖像、音乐和音效。学习方法;切勿复制创作者的品牌、角色、片尾卡片或脚本。

6. 编写规范

编写 work/<proj>.spec.json 作为 {"spec": {...}},从所选家族的示例开始。素材放置在 remotion/public/<proj>/ 下。在编写时应用playbook检查清单。

7. 预览、渲染、审查、修正

  1. 先看静帧:
    cd remotion && npx remotion still src/index.ts MotionVideo /tmp/f.jpg --frame=N --props=../work/<proj>.spec.json --scale=0.4
    
    为每个场景做一帧(场景中间帧),将它们拼贴起来,检查并修复溢出、对比度、杂乱和空帧问题。
  2. 渲染:
    python3 tools/render.py work/<proj>.spec.json out/<proj>.mp4
    
    添加 --draft 用于半分辨率预览。它通过ffmpeg应用颗粒和半色调完成效果,速度快得多。
  3. 审查:
    python3 tools/review_render.py out/<proj>.mp4 out/review/
    
    阅读联系表和剪辑条。检查剪辑是否在子句开始时对齐,没有内容在少于0.5秒内不可读,没有空白段超过1.5秒,没有出现损坏(空白图层、黑色间隙、边缘露出)。
  4. 修正并重新渲染。交付MP4,同时提供简短的镜头列表和用户应替换的内容(草稿配音、占位符素材、音乐)。

8. 版本和系列

  • 变体: 保留脚本,改变风格家族、调色板、字体搭配、标志性转场、纹理和钩子装置。分别渲染。
  • 频道系列: 锁定一套工具(调色板、字体搭配、完成效果、覆盖徽章、行动号召卡片、2–3个标志性转场)。保存在 remotion/src/specs/kits/<channel>.json 中,每集都从它开始(参见 kits/README.md)。

不确定时的默认值

  • 格式: 1080×1920,30 fps。
  • 风格: 解说视频用半色调海报拼贴风格,商业/技术用原生UI解说风格,工具用深色产品推广风格。
  • 运动: animFps 15,settle 1.10(默认),场景 1.2–2.8 秒。
  • 文字: 关键词用 impact/bebas 字体,尺寸18–30,搭配 serif-italic 或 script 轻细词汇。stitched 徽章使用深强调色。
  • 剪辑: 标志性转场用 zoom,冲击用普通 cut,揭示用 flash 或 invert,进入行动号召用 circle。
  • 完成效果和音频: grain 0.07,vignette 0.35。背景音乐音量 musicVolume 0.3,闪避至 duckTo 0.12。

相关技能