Communitygithub.com

skill-motion

用代码制作15秒到4分钟的动画电影和视频,渲染为MP4。支持两种模式:故事模式(角色、漫画或柔和风格、旁白、音乐和特效)用于感动、问候或邀请;商业模式(真实产品或录屏、节奏、承诺)用于演示、广告、Reels和销售视频。使用ElevenLabs生成语音和音乐,Deepgram监听结果,并通过网格帧检查视觉。当用户请求电影、短片、动画视频、预告片、解说、广告、产品演示、Reels(竖屏)或方形视频,或“类似某视频”时使用,即使未明确提及本技能。

skill-motion 是什么?

skill-motion是一项专门用于从代码生成动画电影和视频的AI技能,时长从15秒到4分钟,最终输出为MP4格式。它支持两种核心模式:**故事模式**,专注于角色驱动的情感叙事(采用漫画或柔和风格),适合生日问候、邀请函等场景;**商业模式**,针对产品演示、广告和Reels,强调节奏感和销售承诺。该技能利用ElevenLabs合成语音和音乐,Deepgram进行音频转录和验证,并通过网格帧(Contact Sheet)进行视觉检查,确保最终渲染的准确性。它兼容Claude Code、Cursor等主流AI代理平台,整个工作流程(从概念到交付)大约需要2小时,ElevenLabs成本仅需几美分。关键原则包括:所有陈述必须真实、通过Deepgram验证音频而非主观判断、在渲染前使用Contact Sheet检查视觉内容。此技能特别适合需要快速、高质量、可代码修正的动画视频场景,并能无缝集成到演示文稿中,通过`seek(t)`函数实现逐帧精确控制和时间无关的渲染。

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

在你喜欢的 AI 中提问

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

文档

skill-motion:用代码制作动画电影

这种电影是一个JavaScript文件,能在任意时刻在<canvas>上绘制(seek(t)),包含一条音轨(banda.mp3:语音+音乐+音效)以及两者渲染后的MP4文件。制作时间约2小时,ElevenLabs成本仅几美分,可以逐帧修正,并且能在无需网络的情况下在演示文稿中实时运行。

两种模式。 故事模式(角色、漫画或柔和风格,用于情感表达)和商业模式(真实产品、节奏、承诺,用于促进购买)。开始前先决定模式:如果用户提到“营销”、“商业”、“专业”、“演示”或“给客户看”,则阅读references/promo.md并使用assets/motor-promo.js。

请求引擎阅读内容
生日、家庭、邀请、角色故事motor-base.js(漫画)或motor-suave.jsguion.md, chispa.md
商业广告、网站或应用演示、买家视频、Reelsmotor-promo.js + filmar_web.pypromo.md
具有技术感、纪录片镜头风格品牌发布motor-tech.jsmotor-visual.md 第9节
倾斜地图、无真实网页的飞行摄像机motor-3d.jschispa.md
解释数字或机制:尺寸、标签、读数、技术图纸motor-acotaciones.js(与任何引擎配合使用)motor-visual.md 第12节
环绕或遍历3D场景的摄像机镜头motor-3d.js末尾的Orbita3Dmotor-visual.md 第13节

使其成功的关键不是技术,而是三个习惯:所说的一切都是真实的、使用Deepgram聆听而非假设、以及在渲染前通过网格帧检查。Claude在运行时既看不到视频也听不到音频;这两种控制就是它的眼睛和耳朵。

所需环境

Node 18或更高版本、Python 3、ffmpeg和Chrome。语音和音乐需要ElevenLabs账户(ELEVENLABS_API_KEY)。要“听”结果,需要Deepgram账户(DEEPGRAM_API_KEY,可选)。详见INSTALAR.md。

各文件位置

我需要文件
火花:控制清单,让作品达到“哇”而非只是“好”(在写剧本前阅读)references/chispa.md
概念、已测试风格、台词、角色分配、时间表references/guion.md
语音、音乐、音效、混音、使用Deepgram聆听references/sonido.md
绘制引擎、角色与姿态、漫画风格、构图规则references/motor-visual.md
渲染、轻量版本、演示文稿、发布、gitreferences/entrega.md
.js的起点:漫画风格或柔和风格assets/motor-base.js(漫画), assets/motor-suave.js(柔和,角色会老化)
查看页面和网格帧页面assets/pelicula.html, assets/hoja.html
演示文稿内的电影(幻灯片+控制器)和构建器assets/pelicula-en-presentacion.html, assets/construir.py
脚本scripts/(密钥、语音、音乐、旁白、音效、混音、Deepgram、渲染、轻量)
包含的CC0音效sfx/(鸣谢见sfx/LICENSES.md)
Canvas上的伪3D(倾斜地图、飞行摄像机、霓虹地面)assets/motor-3d.js
品牌发布的技术专业风格:纪录片摄像机(HUD)、对焦框、警报、扫描、界面卡片、仪表板、网格地面assets/motor-tech.js及references/motor-visual.md第9节
专业商业广告、产品演示、16:9、9:16和1:1格式references/promo.md, assets/motor-promo.js
逐帧使用GPU录制真实网页assets/filmar_web.py
客户简报和固定帧数范围的故事板(在绘制商业广告前)assets/brief-cliente.md, assets/storyboard-plantilla.md, references/promo.md
弧形光标、点击、输入弹跳、偏移、漂移和摄像机推进。商业广告中所有指针移动都呈弧形,在点击前暂停(cursorPro);直线移动被禁止motor-promo.js(cursorPro, cursor, tecleo, entra, escalonar, deriva, empuje), references/motor-visual.md第11节
安全区、矢量界面、“渲染前检查清单”和润色库references/promo.md
脚本中的数字以DATOS块形式呈现,便于单行修订;无音频渲染references/entrega.md第11节
脚本注释([VISUAL]、停顿),屏幕上每个数字都带上文字references/guion.md第8节
镜头术语、画幅比例和时间冻结references/chispa.md
测量BPM并按小节重排音乐scripts/pulso.py, scripts/cortar_musica.py, references/sonido.md第13节
测试段落、分部分组装、无需重新渲染的新音频references/entrega.md第8节
因产品变更而修改已交付的电影references/entrega.md第10节
使用真人的语音问候并附上传单邀请references/sonido.md第9节, references/entrega.md第7节

制作流程

按顺序执行步骤;每一步在进入下一步前都有检查环节。

0. 现在是制作视频的好时机吗? 如果影片将涉及业务数据(利润、价格、客户、截止日期),在编写脚本前必须有一个这些数据的官方声明来源。如果有两个模型给出不同的数字,或者数字仍在讨论中,则不应制作视频:应告知用户,并提议打开电子表格进行讨论。制作一个视频需要两小时,并且会在观众脑海中固定一个数字。详见references/guion.md第9节。

1. 概念(与用户一起)。 决定模式(见上文)。首先阅读references/chispa.md:关于打破规则的格式、一个转折、提及真人的名字、一个回归的角色和一个“哇”时刻。明确目标观众、他们应感受到什么、视频时长以及将在何处展示。提出三个概念,每个用两三句话描述并附带文本预览,同时明确语气(已测试风格见references/guion.md)。如果用户已给出想法,请严格遵循:用户请求中的每个元素都应成为一个场景。

2. 验证将要断言的内容。 影片中关于产品的每一个陈述都应在产品代码中找到依据。代码中没有的,就不说;存在但被禁用的,就说出来并告知用户。这对于尚不存在的业务或项目同样适用:每个数字都应在GUION.md中注明其来源,并标记为事实、假设或提议。涉及承诺的词语(“保证”、“已存在”、“几秒内”、“符合法律”、价格)只有在已确定并写于某处时才能使用(references/guion.md第9节)。

3. 脚本。 在影片文件夹中创建GUION.md:包含用户的逐字请求、语音、音乐、以及一个时间表格(秒数、谁在说话、台词内容、画面内容)。台词要简短,每条语音一个音轨,使用中性西班牙语,不加长破折号。

4. 语音。 运行source scripts/llaves.sh和scripts/voces.py frases.json。使用Deepgram聆听生成的语音;对于质量不佳的,用--solo参数重新生成。如果旁白是用户的语音备忘录,则没有音轨文件:详见references/sonido.md第9和第10节。

5. 时间编排。 运行scripts/armar_narracion.py <inicios> --total <s>:在句子之间和画面独立叙事的段落留出空隙。使用Deepgram生成palabras.json(每个单词的时间戳)用于同步。

6. 音乐。 按场景划分音乐段落(scripts/musica.py);使用scripts/pulso.py测量节奏和音量。如果段落位置不当,使用scripts/cortar_musica.py重新编排。

7. 混音。 使用包含的CC0音效库(sfx/)和合成音效(scripts/efectos_sinteticos.py),运行scripts/mezclar.py efectos.json,目标响度为-16 LUFS。检查: 使用oir_con_deepgram.py --comparar对比原始旁白和混音后的音轨:确保没有一个单词丢失。如有丢失,则降低该时间点的音效音量或为音乐让出空间。

8. 绘制。 对于商业广告,首先创建客户简报和固定故事板(assets/brief-cliente.md),并录制产品(references/promo.md)。复制对应风格的引擎(assets/motor-base.js漫画,assets/motor-suave.js柔和或assets/motor-promo.js商业广告)到mi-pelicula/pelicula.js,修改全局变量名称,根据时间表为每个场景编写一个函数。从assets/复制pelicula.html和hoja.html(修改.js和全局变量的名称;如使用其他字体则添加字体)。仅使用通用角色,不要使用真人形象。

9. 网格帧检查。 运行source scripts/preparar_render.sh和node $R/render.mjs pelicula.html fotos.png --stills ...,每张网格帧取9个时间点,覆盖整部影片。仔细检查,修正任何被遮挡、裁剪、过小、重叠或难以辨认的内容(常见错误列表见references/motor-visual.md),然后再次检查。对于商业广告,设置SEGURAS=1会绘制安全区,promo.md中包含“渲染前检查清单”。

10. 渲染。 在后台运行node $R/render.mjs pelicula.html <ruta>.mp4 30 1 6;将MP4复制到影片文件夹;运行scripts/liviano.sh生成轻量版用于消息发送。检查轻量版的一帧。如果风格变化较大,先渲染一个片段让用户查看动态效果(references/entrega.md第8节)。如果仅音频发生变化,则无需重新渲染:只需将新音轨与无声视频合并。

10.b 读取视频文本。 运行scripts/revisar_texto.sh <ruta>.mp4 "palabra1|palabra2":对最终MP4进行每秒1帧的OCR检查,匹配产品中移除的词语(需要tesseract)。按钮上的文字会保存在影片文件中:如果产品的词汇发生变化,需要重新请求并重新录制(references/entrega.md第10节)。

11. 交付。 交付MP4,附带每个场景的摘要、已检查的项目以及用户决定。传单可以从同一影片生成(references/entrega.md第6和第7节)。如果用于演示文稿:准备data-peli幻灯片、控制器、字体、construir.py,并在浏览器中测试。

12. 保存。 将剧本、.js、页面、mp3和json音频文件提交到git(wav和mp4除外);在文件夹的README中添加相关章节。

不可妥协的规则

  • 真实性: 不得虚构产品信息或真人信息。敏感话题(如跌倒、健康)应严肃处理,并用诚实的细体文字说明。
  • 密钥: 通过llaves.sh从环境变量读取,绝不打印或写入文件。
  • 不抄袭作品: 可以模仿著名电影的基调(“像《飞屋环游记》那样”、“超级英雄预告片”),但绝不使用其角色、场景、音乐或名称。
  • 纯时间依赖: seek(t)函数应无状态,不使用Math.random()(使用rng),不使用setTimeout。如果某一帧依赖前一帧,渲染结果将与实时显示不同。
  • 一个视频固定一个数字: 没有官方来源的数字,就没有视频。每部影片都应在文件夹的README中记录其状态(草稿、已批准、谁看过、哪个版本)。如果在第三方查看后重新制作,需告知用户哪个数字发生了变化(references/entrega.md第12节)。
  • 测量,而非假设: “听起来不错”和“看着挺好”只有在经过Deepgram和网格帧检查之后才算数。

参考时间(一分钟影片)

剧本和语音:20分钟;时间编排、音乐和混音:20分钟;绘制:40-60分钟;网格帧检查和修正:20分钟;渲染和轻量版:5分钟;演示文稿和发布:15分钟。视觉修正是正常的:每部影片通常有5到10处修正。一个97秒的网页录制商业广告:渲染48秒,包括运动模糊共3分钟。如果修正发生在渲染之后,则需要重新渲染。

如果应用程序中途关闭

重要的内容已在影片文件夹中(音频、.js、剧本),渲染器可通过~/.cache/skill-motion-render中的preparar_render.sh自动重建。在每个长任务之前记录你进行到哪一步。

相关技能