Communitygithub.com

motion-film:用代码做片

用代码生成动态影像:产品宣传片、MG动画、风格短片、单镜头动效,逐帧渲染为MP4。

O que é motion-film:用代码做片?

motion-film 是一个专注于用代码生成动态影像的 AI 技能,适用于产品宣传片(真实页面截图 + 2.5D 运镜 + 卡点 + 音效)、各类 MG/风格短片(扁平矢量、手绘沸腾线、综艺花字、HUD、包豪斯、水墨等)以及单个动效镜头。它通过一系列轻量脚本(如渲染器、缓动函数、程序化音效、节拍检测)和严格的工作流,确保逐帧渲染的一致性、可并行性和可重复性。该技能强调从项目自身提取视觉语言,避免无谓的特效,并内置了从治疗(treatment)、风格帧、逐镜头实现到独立评审的完整流程,最终交付 MP4、字幕、信用文件及一键构建脚本。

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/joker124zx/motion-film/tree/main/plugins/motion-film/skills/motion-film

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que motion-film:用代码做片 faz?

画面、动画、字幕、音效全部由代码生成,逐帧渲染成 MP4。不用视频生成模型。 这份 skill 是方法 + 一套轻量工具,不带素材库;素材按片子现找、现合成,并登记授权。

先判断是哪条路线

路线典型请求主读
A. 产品宣传片把网站/App/前端项目做成宣传片、功能演示片references/product-promo.md
B. 风格短片“用 XX 风格做一支 30 秒的片子讲……”、MG 动画、花字、片头references/style-atlas.md + references/style-spec.md
C. 单镜头/单动效“做一个标题飞入”“做个锁定框动效”直接按下方原则做,读 references/aesthetic-rules.md 相关条

两条主线共用:references/directing.md(导演)、references/timing.md(节奏)、 references/sound.md(声音)、references/tech.md(渲染)、references/review.md(评审)。 用户给了 BGM 要卡点:references/beat-sync.md,先分析音乐再分镜。

开工前只问一次

把定不了的事合成一条消息问完,之后不再追问;其余用默认值并在 treatment 里写明:

  • 主题里只有用户知道的事(产品重点、目标受众、发布平台、必须出现的内容);
  • 有没有自己的素材:logo、品牌色/字体、配音、音乐、参考片;
  • 要不要先看分镜/风格帧再做成片(要看就停一次;不要就一路做完)。

默认:30–60 s(单镜头 3–8 s);1920×1080;产品片 30 fps、风格片按风格定(24/30); 字幕与配音跟用户语言;响度 −14 LUFS、真峰值 ≤ −1 dBTP。 用户明确说“你定”“直接做”,就不问,按默认推进。

十条核心原则(四个来源反复印证的经验)

  1. 画面是时间的纯函数。 render(t) 对同一个 t 永远画出同一帧;禁 Date.now()、无种子 Math.random()、跨帧累积状态。随机一律 mulberry32/hash 固定种子。任何帧可单独、乱序、并行渲染。
  2. 一张时间线驱动一切。 镜头边界、关键动作、字幕、音效、音乐命中点都从同一份 cue 表派生;改时长只改一处,声音自动跟随。卡点片用拍号写(beatF(n)),不用裸帧号。
  3. 为观众计时,不为代码计时。 每个镜头列出观众要读懂的信息点(reads),一次只给一个;动作可以快,含义要停住。第一版几乎总是太快——默认放慢一档。公式见 timing.md。
  4. 一个镜头只讲一件事;一种手法全片只当一次主角。 开场只给一个主角 + 一条完整动作弧(起—承—落)。重复的镜头、重复的标语一律删。
  5. 运动像生命,不像机器。 不用线性插值;预备 → 动作 → 跟随;部件错峰,避免“双胞胎”(左右对称、群体同步);落地要弹的缓动必须过冲。
  6. 视觉语言从题材/产品自身长出来。 产品片的字体、色板、圆角、材质从产品设计系统提取;风格片遵守该风格的“本质与它不是什么”。不另套一层无关的“宣传片皮肤”。
  7. 克制特效。 光效不群发,只给主角一次且裁进圆角;产品片默认不加手持抖动;整画面级冲击(震屏/闪帧/整体 scale 泵)全片 ≤ 3 处。
  8. 声音是半部片。 环境 + 拟音 + 音乐三层;可见动作都有声音;高潮前留真正的静音;声音在画面锁定后做。
  9. 先用最便宜的产物定方向。 treatment(文字)→ 风格帧(真实绘制代码出的静帧)→ 低分辨率预览 → 正式渲染。方向性争论不进昂贵阶段。
  10. 自己先看,再交独立评审。 每轮修改都自己出接触印样/动作条/裁剪放大来看;交付前交给一个没参与制作的评审(干净上下文的 subagent,或另开会话)按 review.md 打分挑错,只修一轮。

工作流

  1. Brief:上面那一轮问题;产品片额外做一次只读的产品检查(定位、功能、页面状态、设计 tokens、数据风险)。
  2. Treatment(写 TREATMENT.md,写任何画面代码之前):三个候选结构选一;logline 与弧线;参考作品“学什么 / 不拿什么”;镜头表(景别、机位、运镜、时长、理由);逐秒节拍;cue map;声音设计表;字幕与字体设计。模板见 directing.md。
  3. 定样:2–3 张风格帧(有角色加 model sheet),用真实绘制代码渲出,自己对照风格说明检查。
  4. 逐镜头实现:先摆关键姿态当静帧检查,读得懂再补中间运动。每镜头写死 2 个验收时刻,完成即出静帧自检。
  5. 声音:画面时间线锁定后,从 cue 表生成音乐、拟音、字幕;混音、母带。
  6. 自检:接触印样(每 0.5–1 s 一帧)、关键动作 0.1–0.2 s 动作条、文字/边缘全分辨率裁剪;全速带声看一遍。按 aesthetic-rules.md 逐条过。
  7. 独立评审 + 一轮修复:review.md。小问题同轮修完;大问题交付时一句话说明。
  8. 交付:见下。

工具(scripts/,按需复制到项目)

文件作用
scripts/render.mjs渲染器:HTML 页面暴露 renderAt(t) → 静帧 / 接触印样 / 动作条 / 裁剪 / MP4,支持多 worker、运动模糊(子帧累积)、竖屏
scripts/motion.js页面内用的纯函数工具:种子随机、缓动族、关键帧、弹簧、过冲、错峰、拍号、速度曲线
scripts/sfx.py程序化拟音与混音:whoosh / impact / riser / pop / click / sparkle / tick,从事件表合成 mix.wav
scripts/master.sh混流 + 两遍 loudnorm(−14 LUFS / −1 dBTP)+ 黑帧检测 + 时长/规格报告
scripts/beat_grid.pyBGM 节拍网格拟合(含 2x / 0.5x / 3:2 误判纠正)+ kick/snare/hihat 分类 + 能量结构,输出 beat_data.json
scripts/capture.mjs产品片素材三件套:全页 2x 截图、元素切图(可透明、可 4x)、空底板、layout.json 坐标表
templates/starter/可直接跑的 9.6 s 示范工程(时间线、renderAt、音效事件、字幕、build.sh 一条命令出片),新片从这里复制起步

render.mjs 把 /lib/ 映射到本 skill 的 scripts/ 目录,页面用 <script src="/lib/motion.js"> 即可引用工具函数。 新项目:复制 templates/starter/ → 在项目里 npm i puppeteer-core → 改时间线和镜头 → MF=<本 skill 路径> sh build.sh。

产品片若用 Remotion:方法同样适用(tech.md 有对照说明);注意 Remotion 对公司用户可能需要付费授权,开工前提醒用户。

依赖:Node 18+、ffmpeg、Chrome/Chromium(render.mjs 自动查找,或设 CHROME_PATH);npm i puppeteer-core 装在项目里。Python 3 + numpy/scipy(音频);librosa 只在卡点分析时装,装进项目自己的 venv。不替用户安装系统软件,缺了就在那一轮问题里说。

交付

项目文件夹里:

  • <name>.mp4(和 poster.jpg);配了 BGM 的产品片另出一版无 BGM(保留音效)方便后期换乐;
  • <name>.srt(有字幕/旁白时);
  • TREATMENT.md;
  • CREDITS.md:每一个第三方素材(字体、图片、音乐、采样、TTS 引擎)的来源与授权;
  • 源码与一条命令的 build.sh。

告诉用户:成片在哪、CREDITS.md 列了授权、用户自己提供的素材由用户负责授权。不附任何推广、署名请求或“去哪发布”的建议,除非用户问。

红线

  • 参考作品只学语法(构图、节奏、运镜、配色逻辑),不抄角色、设计、旋律、具体镜头、logo、字体。
  • 片中不出现真实品牌/作品/角色,除非用户拥有或确认有权使用;品牌名、产品名用虚构的。
  • 素材只用 CC0 / 公有领域 / OFL / CC BY(需署名)/ 明确免费商用;“no known restrictions”不算。其他开放授权先向用户说明条款。
  • 产品片里的客户、个人、内部、密钥、实时数据一律先虚构或脱敏再截图。
  • 不自动从网上拉代码执行、不自动更新本 skill;需要下载素材时先告诉用户下什么、从哪、什么授权。

Habilidades Relacionadas