Communitygithub.com

smasikurr/RemotionMaster

使用代码直接构建和渲染专业级电影动效。适用于任何视频、动画、图形或演示动画制作,提供从概念、故事板、配乐到渲染、打磨的全流程支持。

RemotionMaster 是什么?

RemotionMaster(原 cinetic)是一个为 AI 代理(如 Claude Code、Cursor 等)设计的专业级运动设计技能,它能够将代码转化为电影级的动态影像。该技能默认基于 Remotion 4.0.529(React 框架驱动),同时提供 HyperFrames 0.8.79(HTML + 暂停的 GSAP 时间线)作为备选方案。其核心哲学是“导演一部短片,而非动画化一个网页”,强调画面、文案和声音由一个统一的时间线文件驱动,并且所有输出必须经过渲染、测量和批判性审查才算完成。技能内置了一套严格的设计规则和硬性禁止项,以区分 AI 生成内容与专业作品,例如禁止使用衬线字体、橙色/紫色/霓虹色系、emoji、粒子特效等。它支持多种格式,包括发布电影(20-45秒)、产品/功能视频(8-30秒)、循环动画(4-15秒)、Logo 展示(3-8秒)和 UI 演示(20-90秒),并为每种格式提供了默认的帧率、节奏(BPM)、故事节奏数量和词数预算。工作流通过 `BRIEF.md`(需求)、`TREATMENT.md`(创意脚本)和 `TIMELINE.md`(时间线)等文件将每一步都文档化,并依赖脚本进行自动化检查(如 `lint-film.mjs` 检查标记和样式)和批评循环来验证成片质量。此外,它还包含一个经过验证的技术库(`assets/library/techniques.json`),通过抽选而非手动选择的方式确保每部影片的视觉效果都独一无二。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/smasikurr/RemotionMaster/tree/HEAD/.agents/skills/cinetic

在你喜欢的 AI 中提问

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

文档

cinetic

你正在执导一部短片,而不是为网页制作动画。画面、文案和声音是一个整体,由一个时间线文件驱动。除非经过渲染、测量和批评,否则任何内容都未完成。

  • 引擎。 默认使用 Remotion 4.0.529(React,帧驱动)。备选方案是 HyperFrames 0.8.79(HTML 加暂停的 GSAP 时间线)。技术实现与引擎无关;第 7 节列出了每个引擎不同的规则。
  • 数字。 这里的每个数字都是从已发布的成品项目中提炼的成熟默认值:一个你可以因明确理由而偏离的起点,而非自然法则。
  • 品牌。 当用户提供品牌信息(颜色、字体、Logo、素材、语气)时,以品牌为准。品味的默认设置只覆盖你需要创造的部分。
  • 路径。 诸如 scripts/render.sh 的路径从技能根目录和电影项目内部均可正常工作,因为 scripts/new-film.sh 会将每个脚本复制到项目中。除内部辅助脚本 brand-svg.ts(由 brand-kit.sh 调用)和 hf-preflight.cjs(由 hf-finish.sh 运行)外,每个脚本都会打印 --help。
  • 工作示例。 references/worked-example.md 详细介绍了 Tessel,一部 33 秒、1920×1080、60 fps 的发布电影。它展示了以下每条规则的实际应用,包括其中的错误。在你制作第一部电影之前,请阅读一次。

水准

目标是一部值得人们观看两次的电影:一个产品拥有的、用画面讲述的单一创意,每一帧看起来都经过精心选择,没有内容是为了填充空间。

  • 内涵先于打磨。 展示该产品具体的、巧妙的功能,这些功能是更简单的产品所不具备的。围绕一个泛泛的主张进行无懈可击的动态表现,仍然输给一部让观众心想“哦,真聪明”的粗糙电影。
  • 自有外观。 每个品牌都应获得一种源自其名称、产品和个性的视觉语言,并在下述“硬性禁止项”的范围内。克制意味着没有装饰;这并不意味着对所有内容都采用一种极简的风格。
  • 极致干净流畅。 干净、现代的帧,富有创意和编排。每一个动作都经过缓动、加权,并以 60 fps 流畅呈现:无抖动、无突兀,也没有用效果来替代创意。
  • 视觉化,而非旁白。 即使静音,创意也应能被理解;文字的作用是确认画面已经表达的内容。
  • 重量与静止。 动态有质量,在节拍上到达,然后静止,这样快速时刻才能落地。
  • 让画面感觉更好的声音: 每一个音效都应有可见的触发源。
  • 克制胜过装饰。 如有疑问,删掉。
  • 证据,而非印象。 下面的流程之所以存在,是因为这一切都无法在编辑器或 Studio 中判断:你只有在观看实际渲染输出并进行测量后才会知道。

硬性禁止项

当你在创造外观时,以下内容绝对不允许出现。它们是生成式作品的明显标志,而此技能的存在就是为了创作出看起来不像生成式作品的电影。lint-film.mjs 会检查 tokens 和样式以确认它们是否存在,批评者会检查帧。

  • 文字:

    • 标题上方的眉毛标签或预示标签;
    • 堆叠的标语,以及“Introducing…(隆重推出…)”;
    • 一次性倾倒完整句子:文案应作为短片段,一个接一个地呈现,中间穿插画面(第 4 节,“文本流”);
    • 文本墙和随机填充文本:装饰性等宽字幕、虚假指标、没人需要的标签、lorem ipsum。

    屏幕上的每个字都必须有存在的价值。

  • 字体: 衬线字体以及斜体或倾斜样式,包括模仿斜体的偏斜效果。使用一种干净、现代的无衬线字体,如果产品需要,再加一种用于代码或数字的等宽字体。

  • 颜色:

    • 橙色、琥珀色、米色、奶油色、棕褐色或沙色,用作强调色、背景或辉光;
    • 霓虹色:非常明亮、饱和度高的强调色、辉光、泛光和光晕;
    • 紫色、紫罗兰色或靛蓝色,以及紫到蓝或任何多色渐变;
    • 玻璃拟态。
  • 装饰:

    • emoji 和库存图标;
    • 代表“AI”的闪光、粒子、五彩纸屑、镜头光晕和代码雨;
    • 非落地元素上的弹跳过冲,以及文案上的任何过冲或逐字特效(只有主角词可以逐字移动)。

剩下的已经足够:墨水与纸张(浅色或深色,中性或冷色调),一个来自禁止色系之外(红色、绿色、青色、蓝色、黄色)且具有含义的强调色,一种无衬线字体,以及极致干净流畅、经过缓动、加权、带有运动模糊且无抖动的动态。创造力应投入于创意、装置和编排,而不是效果。

如果用户提供的品牌包含上述禁止项之一(他们的衬线 Logo、他们的橙色),则以品牌为准,因为这是他们的身份标识,而非默认设置。在 BRIEF.md 中记录,这样批评者就不会标记它,并用 // cinetic:brand-supplied <内容> 标记设置它的代码行,以便 lint 接受。

1. 格式与默认值

首先选择一行。它决定了时长、密度和需要交付的文件列表。每种格式的详细配方在 references/formats.md 中。数字代表的是平静的节奏(默认值);如果需求要求有能量(如预告片、发布预告、高燃剪辑),则选择清晰节奏(第 5 节),其速度更快,并允许稍多的文字(片段最多 5 个单词,屏幕上最多 10 个单词可见),但仍不允许一次性倾倒句子。

格式时长fps网格 (BPM)故事节拍文字:总计 · 每片段新增 · 同时可见声音交付物
发布电影 / 预告片20–45 s60100 (清晰 120)每 30 秒 6–8 个(清晰 8–10)15–25, 上限 30 · ≤ 4 · ≤ 8(替换模式下 ≤ 5)完整配乐 + 音效16:9 母版, 9:16 和 1:1 重排版, 海报, 如新创则提供品牌包
产品 / 功能视频, 更新影片8–30 s60100每 8–10 秒 1 项能力≤ 12 · ≤ 4 · ≤ 8UI 音效;平静模式下:仅效果音在 −18 LUFS(只有当需求要求节奏时才使用轻音乐底垫)母版, 海报
功能循环动画4–15 s, 整小节60 (GIF 25)任意;整小节3–5≤ 6, 静音可读 · ≤ 4 · ≤ 4可选MP4, WebM, GIF, 无缝循环
Logo 展示3–8 s60100–1202–4名称 + ≤ 3 · ≤ 3 · 名称 + 3一个调校好的音效 + 尾部MP4, ProRes 4444 含 Alpha 通道(保留和清除版), 海报, 如新创则提供品牌包
UI 演示20–90 s6090–100每 2–4 小节 1 章每个字幕 ≤ 5 · ≤ 4 · 一个字幕音乐底垫 + UI 音效母版, SRT 字幕

每当 UI、文字或镜头移动时,请使用 60 fps。在 30 fps 下,缓慢的漂移会明显跳跃,快速移动会产生频闪,而 24 fps 永远不适合 UI。GIF 是唯一的例外:从 60 fps 母版以 25 fps(或 50 fps)导出,因为 GIF 帧延迟是百分之一秒的整数倍,30 fps 会使其播放速度快 11%。

2. 五大法则

  1. 一个创意,针对该产品。 你能用一句话概括这部电影,并且证据能展示该产品所做的、明显或更简单版本所无法做到的事情。克制适用于装饰和文案,但从不适用于产品的智能:如果功能很聪明,电影就要展示其聪明之处。原因: 观众只会带走一件事,而一部对竞争对手或更简陋功能同样成立的电影,不会给他们留下任何东西。
  2. 一个故事装置。 一个物体、形状或颜色贯穿每个镜头,在剪切时从不消失。在一部发布电影中,它理想情况下会在结尾融入标志;在功能循环动画或产品视频中,它是产品操作的单元(卡片、行、文件)。找到这个产品拥有的物体。一个裸露的点、线或块是懒惰的默认值,也是本技能自身示例的外观。原因: 它使电影具有连续性,使电影即使静音也能被理解,而一个专属的物体就是让这部电影无可置疑地属于这个品牌的原因。
  3. 一个具有一种含义的强调色。 强调色是一个单一的 token,表示一个意思,例如“现在”、“新”或“你的”。谨慎使用(约占像素 ≤ 8%),并且最多让它在整个画面中泛滥一次。原因: 有含义的颜色无需文字即可被理解,而到处使用的颜色则毫无意义。
  4. 一个统一的运动系统。 使用少数几个命名的曲线和弹簧,每个都有明确的理由,并从 timeline.ts 中获取每一帧的编号。原因: 一致的运动就是品牌运动,临时的缓动会被认为是由生成式工具产生的。
  5. 通过测量验证。 只有当渲染的像素和解码的音频通过脚本和至少一轮批评后,电影才算完成。原因: Studio 播放会隐藏编码文件将揭示的爆音、鬼帧、同步偏移和色彩偏移。

3. 工作流

每一步都写入一个文件,每个关口都是你实际运行的检查。在线工作。子代理仅用于批评(第 8 节),因为并行构建帧所节省的时间少于它所消耗的时间。

步骤 0:需求输入 → BRIEF.md

  • 如果需求已经说明了产品、信息和时长,则推断所有其他内容并写下你的假设。
  • 如果没有,则最多问 3 个问题:用一句话描述产品、格式和时长,以及电影将在哪里展示。所有其他内容从第 1 节获取。
  • 选择引擎:默认使用 Remotion;如果用户已有 HyperFrames 项目、想要 HTML/GSAP 或需要由变量驱动的 --batch 渲染,则使用 HyperFrames。
  • 将硬性禁止项(上文)以及任何品牌提供的例外情况复制到 BRIEF.md 中。后续的批评者将逐字以此文件作为提示,因此它也是质量保证合同。
  • 选择节奏:平静(默认值),除非需求要求有能量;将其写入规范行。清晰需要明确选择(第 5 节)。
  • 构建项目骨架:bash <skill>/scripts/new-film.sh films/<name> --fps 60 --size 1920x1080 [--engine hyperframes]。它会保留启动器的默认节奏(Remotion 100 BPM, HyperFrames 120)和平静节奏;添加 --pace crisp 用于清晰电影(120 BPM 和清晰节奏),或添加 --bpm N 用于其他节奏。传递 --link-modules <dir>/node_modules 以重用现有安装而非运行 npm install(在 Windows 上为 junctions)。
  • 关口: BRIEF.md 包含一个规范行,例如 1920x1080@60, 30s, 100BPM, pace: calm, audio: earshot kit (calm), no music。

步骤 1:创意 → TREATMENT.md

现在阅读 references/concept-and-story.md。

  • 从具体细节开始,而非风格。写下:
    • 名称的含义或联想(它通常会直接提供标志和装置);
    • 功能的非显而易见的特性,完成句子“与显而易见的版本不同,它…”;
    • 产品自身的对象(它的行、卡片、读数和状态)。
  • 通过不同的视角写出 3 个创意:
    • (a) 将产品自身的动词或隐喻字面化;
    • (b) 将用户的痛苦可视化;
    • (c) 一个形式主义装置:一个接力对象、一个头尾呼应、一个不间断的镜头移动,或一个最终变成产品的容器。
  • 扔掉任何其道具可能出现在另一部产品电影中的创意。那不属于你。
  • 抽取技巧;不要手动选择。 运行 python3 scripts/pick.py --format <launch|feature|loop|sting|walkthrough|vertical> --energy <calm|medium|high> --seconds <length> --json out/qa/picks.json,使用 --energy calm,除非需求要求有能量。对于 30 秒的发布电影,它在平静节奏下大约每 3.5 秒抽取一个技巧,否则每 2.5 秒抽取一个(9 或 12 个,对于短片至少 4 个),从 assets/library/techniques.json 中的已验证库中抽取,按格式需要的顺序,并偏向于经过验证的动作和电影的能量,同时打印每个配方及其默认时间。手动选择会导致每部电影都趋于相同的淡入、推近和结束卡;抽选是让两部电影看起来不一样的方法。用创意的对象和装置来重新讲述这些抽取的技巧,使之成为创意所能承载的内容;故事、产品真相和一致的 UI 语言优先,而塞满每一个动作的电影读起来像作品集。对最多两个与创意冲突的抽取结果进行重新抽取(--category <cat> --exclude <id>),或者将其删除并附上书面理由;永远不要添加抽取未给出的技巧(使用 --category 抽取一个),并在品牌拥有被禁止外观时传递 --brand-supplied <look>。使用 pick.py --show <id> 完整阅读一个抽取的条目;references/technique-library.md 列出了每个条目(搜索它,不要通读)。测量的节奏、缓动和文字时间规范在 references/craft-rules.md 中。
  • 为你选择的创意填写 assets/TREATMENT.md:
    • 一句 Logline;
    • 叙事弧线:钩子(在 1 秒内让人感受到问题) → 转折 → 证据(1-2 项能力) → 承诺 → 锁屏;
    • 抽选到的技巧及其种子行,每个放置在一个节拍中(模板的第 3b 节);
    • 装置路径,逐个镜头;
    • 一个节拍表,包含列:小节 | 时间 | 画面 | 文案(片段,模式) | 画面节拍 | 声音:每个超过 4 个词的想法都写成一个片段链,每个片段附带它交接给下一个片段的画面节拍(30–90 帧之间);
    • 完整的文案及其字数;
    • 最后一帧。
  • 运行删除测试。移除演示节拍,核心价值应仍然可读。移除价值节拍,如果电影仍然“有效”,那它就是个功能巡览。
  • 运行特异性测试。这部电影对于更简单的产品是否同样成立,例如均分而非逐项列出,或普通列表而非排名列表?如果是,证据低估了产品;展示困难的部分。
  • 运行功能词测试。静音观看时,陌生人会使用需求中的功能词(“streak”, “split”)吗?如果一个巧妙的装置使它读起来像别的,则保留功能的熟悉形式,让装置来装饰它。
  • 关口:
    • Logline ≤ 15 字;
    • 特异性测试通过,并记录了答案;
    • 字数在第 1 节预算内;
    • 每个片段 1–4 个词;没有节拍显示超过 8 个词的文案(替换模式下为 5 个);每个超过 4 个词的想法都是一个链,其片段之间有 30–90 帧的画面节拍,并且没有一个是以整个块的形式出现(清晰电影允许每个片段 5 个词,屏幕上 10 个词);
    • 文案计划最多占用约 65% 的运行时间(清晰时为 80%),每 10 秒内至少有一个 1.5 秒的无文字画面片段;
    • 装置出现在每个节拍行中,每个抽选到的技巧都放置在一个节拍中或被丢弃。

……

(由于原文较长,已截断以符合示例。完整的翻译将遵循相同的模式保留所有剩余部分。)

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能