muyang-flat-animation
GitHub将口播或概念转为沐阳风格扁平动画。通过三阶段确认方案、静帧与视频,利用Gemini生成带音效的短视频B-roll,严格遵循手绘纸面画风与直观视觉命题规范。
触发场景
安装
npx skills add yokel1121/muyang-flat-animation --skill muyang-flat-animation -g -y
SKILL.md
Frontmatter
{
"name": "muyang-flat-animation",
"description": "将中文口播、抽象概念或一张静态插画转成可配置的“沐阳扁平动画”:以暖色纸面、自然钢笔线稿、选择性彩铅填色和编辑式图解留白为核心画风,采用适合知识讲解的归类、连接、对比、递进、转化与结果确认动画,配色自由,人物可选;支持自定义画布尺寸和同步动作音效。这里的“生长动画”指元素从固定起点按结构逐步生成或展开,不专指植物。默认音效轻量、干净且服从讲解节奏,禁止笔尖、铅笔、钢笔或马克笔在纸面摩擦和书写的声音,不含人声或配乐;用户可明确要求静音。用户说“沐阳扁平动画”“知识讲解动画”“手绘插画动效”“无人物动画”“纯内容可视化”“素材动画”“让图片动起来”“人物动作”“生长动画”,或希望制作可插入短视频的固定镜头 B-roll 时使用。强制先确认动画方案,再确认完成静帧,最后才调用 Gemini 视频生成并执行逐帧 QA。"
}
沐阳扁平动画
把一句 5–10 秒口播压成一个直接、具体、无需猜谜的视觉命题,再制作固定镜头、局部合理运动的纸上钢笔线稿与彩铅编辑插画 B-roll。优先呈现主题本身会出现的真实场景、工具、物件和结果;隐喻只能辅助说明,不得替代主题。
首次使用
进入 Gate 1 前运行:
python <本skill目录>/scripts/check_setup.py
缺少依赖时只报告缺失项。不要显示 API key。需要 Python 3.10+、google-genai>=2.10.0、ffmpeg、ffprobe 和 GEMINI_API_KEY。
需要设计或生成画面时读取 references/style-guide.md。选择配色和尺寸时读取 references/palettes-and-formats.md。使用无人物模式时读取 references/content-only-mode.md。写视频 prompt 时再读取 references/motion-grammar.md。若用户在 assets/references/ 中提供了具有使用授权的 style-reference-*.png,仅把它们作为媒介与画法参考;没有参考图时使用 style guide 中的完整文字规范。
先确定四个可定义项
在 Gate 1 中明确以下值。用户没有指定时采用默认值,不要为了非关键选项阻塞:
subject_mode:character(人物叙事,默认)或content-only(无人物内容素材)。palette:semantic-auto、可选预设或用户提供的背景色、主色、强调色;默认semantic-auto,不限制具体色相。canvas:预设名、宽高或比例;默认vertical-9x16,即 720×1280。sound_mode:sfx(同步动作音效,默认)或silent(无声)。配乐和人声只在用户明确要求时加入。
把选择写入 visual spec,并保持同一条素材从静帧到视频一致。
三闸门协议
Gate 1:动画方案确认
只提交方案,不生成图片或视频。每条包含:
- 核心意思
- 一句话视觉命题
- 主题直观度:说明画面中哪一个真实物件或场景直接对应原句主题;若只能靠解释才能看懂,必须重写方案
- 主体模式:人物 / 无人物
- 主体和 3–6 个关键物件
- 初始状态与最终状态
- 人物动作、物件动作、特效动作
- 构图、配色方案、尺寸、画幅和安全区
- 音效计划:动作、出现时机和强弱;静音任务写明
silent - 5–8 秒时间轴
动作必须服务语义。一个镜头只保留一个核心转变。提交后停下,等待用户明确确认;批量任务允许部分通过。
视觉命题采用“直观优先”规则:
- 第一选择是真实场景或主题物件,例如自媒体使用摄像机、麦克风、脚本卡、作品缩略图和发布流程;学习使用书本、笔记、练习页和成果;赚钱使用商品、订单、账本和收入流。
- 第二选择是具体的流程、归类、对比或结果变化,让观众不读口播也能大致判断主题。
- 抽象隐喻仅可作为次要辅助元素。禁止用与主题距离过远的石头变水晶、种子长树、灯泡发光、迷宫、齿轮、拼图、火箭、登山等通用隐喻承担整个命题,除非用户明确要求。
- 提交前做“去文案测试”:遮住原句后,如果画面会被理解成多个无关主题,改用更直接的主题物件和场景。
Gate 2:完成静帧确认
方案通过后:
- 写自包含 visual spec。
- 使用可用图片生成工具生成“动作完成后的最终静帧”。若存在用户有权使用的
assets/references/style-reference-*.png,选择 2–5 张作为只约束媒介与画法的 style-only references;不得照搬其中人物、构图、物件或配色。没有参考图时直接使用style-guide.md的完整提示词。 - 逐张检查主体结构、假字、图标可读性、配色、尺寸、主体层级和安全边距,并按
style-guide.md检查纸面、自然墨线、选择性彩铅颗粒、编辑式留白以及是否过度矢量化。人物模式额外检查脸、手与服装;无人物模式检查图形关系和插入视频后的可读性。 - 生成编号 contact sheet 给用户确认。
参考图不仅约束材质,还约束视觉语法:优先采用参考图中的编辑式单场景、真实桌面物件、少量圆形图解/虚线路径、大片上方或侧方留白、黑色线稿与局部彩铅着色。不得只套用“纸纹滤镜”却保留光滑企业矢量、机械信息图或过度抽象的主体。
此阶段禁止调用视频模型。静帧未通过时只重生对应条目,保留旧版本。
Gate 3:Gemini 视频生成
静帧确认后生成视频。默认使用确认静帧作为单张视觉参考,让模型在保持构图和角色一致的前提下制作局部动作。若任务确实需要从空白生长或从简到繁,可额外生成首帧,并用两张关键帧约束。
创建 jobs.json:
[
{
"prompt": "<完整英文动作提示词>",
"image": ["<确认静帧路径>"],
"output": "<输出路径>/final.mp4",
"aspect_ratio": "9:16",
"duration": 6
}
]
运行:
python <本skill目录>/scripts/generate_video.py --batch <jobs.json> --concurrency 2
仓库自带基于 Google GenAI SDK 的 Gemini Omni Flash 适配器。仅在用户明确指定时覆盖默认模型。
Gemini 生成后,按 visual spec 输出目标尺寸并默认保留音效:
python <本skill目录>/scripts/finalize_video.py <raw.mp4> <final.mp4> --width 1080 --height 1920 --fps 24 --fit crop --audio keep
crop 用于满画布 B-roll,pad 用于必须保留完整构图的内容图示。--audio keep 为默认值;只有 sound_mode: silent 时使用 --audio strip。不要把模型原始 720p 冒充原生 1080p;如有放大,应在交付说明中注明。
硬性动作约束
- 固定机位;禁止切镜、推拉、摇移和景深变化。
- 人物模式保持人物身份、脸型、服装、桌面与背景布局稳定。
- 无人物模式保持核心物件的形状、颜色、相对位置和视觉层级稳定;禁止擅自生成手、脸或人物剪影。
- 每个时刻只突出一个主动作,但允许 1–2 个与之有因果关系的局部响应错峰重叠;人物可保持低幅、连续的自然动作。
- 动作语言优先服务知识讲解:使用归类、排序、连接、对比、筛选、递进、因果转化和结果确认,让观众无需文字也能理解关系;禁止纯装饰性运动。
- 默认采用“主动作 + 接力响应 + 生命微动作 + 短暂强调”的分层动效。按动作选择柔和 ease-out、ease-in-out 或稳定路径减速;允许一次 2–4% 的轻微落位回稳,禁止连续弹跳、果冻回弹、突然加速、抖动和逐帧跳跃。
- 生长动画按对象自身结构从固定起点逐步生成:线条沿路径绘出,图形从轮廓到填色,网络从主节点到分支,建筑从地基到主体,信息图从坐标轴到数据。禁止把完成物整体缩放或淡入冒充生长。植物只是可选对象,使用时才按茎、枝、叶展开。
- 生长与延伸覆盖目标物的必要结构及静帧已确认的相关分支;可按波次接力生成,但不得越界扩散到无关负空间。
- 连接线数量服从确认静帧中的语义关系,不设固定全局上限。视频 prompt 必须逐条写明起点、终点和方向;所有线都要连接明确对象,禁止悬空、无端分叉、随机曲线和背景电路线。
- 图标允许轻弹、翻面、浮起和沿弧线移动;禁止随机漂浮。
- 特效颜色跟随所选配色;只用于连接、转化、激活,不遮挡主体。人物模式不盖住脸和手。
- 禁止果冻形变、多余肢体、物体融合、假字、logo、水印与 UI。
- 默认生成与关键动作同步的知识讲解型轻量音效。只使用柔和纸张滑动、卡片/物件轻触归位、轻木质卡位、克制空气掠过、单个清亮提示和自然物件声;默认禁止人声、旁白、对白和持续配乐。
- 全面禁止笔尖接触纸面的声音,包括铅笔、钢笔、圆珠笔、马克笔、粉笔的书写、涂画、刮擦、沙沙声和连续摩擦声。画面出现线条或彩铅质感时也只能使用极轻空气掠过或柔和提示音,不得模拟绘画过程。
- 音效必须服务动作,不得抢占口播空间;避免低频轰鸣、电影预告式冲击、刺耳高频和持续铺底。用户明确要求静音时才移除音轨。
尺寸与规格
- 画布:接受预设、比例或明确像素;常用预设见
palettes-and-formats.md - 模型比例:只传 Gemini 支持的
9:16或16:9;其他比例选择最接近者,再用finalize_video.py精确适配 - 默认画幅:9:16,720×1280
- 时长:6 秒
- 帧率:24 fps
- 输出:720×1280 或对应横版尺寸,H.264 + AAC 动作音效;静音模式无音轨
- 项目目录:
outputs/YYYY-MM-DD-muyang-flat-标题/
QA
对每条成片运行:
python <本skill目录>/scripts/inspect_video.py <video.mp4> --reference <确认静帧.png> --output-dir <qa目录>
必须实际查看 contact sheet,而不是只相信命令成功。通过标准:
- 首、中、尾构图一致,没有镜头漂移
- 纸面、墨线、彩铅颗粒和选择性留白保持稳定,没有变成光滑矢量、塑料平涂或写实渲染
- 主动作清楚且符合物理或语义逻辑
- 主动作、接力响应与生命微动作层级清楚;过渡平滑,没有急停、跳帧、连续回弹或多组动作同权争抢注意力
- 负空间保持干净;短提示线或状态符号只依附被激活对象并及时收束,没有悬空电路线、随机曲线或无来源轨迹
- 生长和延伸覆盖必要结构与已确认分支,所有路径的起止对象、方向与确认方案一致
- 人物脸、手和服装没有明显崩坏
- 无人物模式没有凭空出现人物、手、脸或无关装饰
- 目标元素确实按自身结构逐步生长、绘制或生成,不是整体缩放、淡入
- 无假字、logo、水印、额外物件或画面闪烁
- 最终状态接近确认静帧
- 分辨率、时长与帧率符合任务要求
- 默认模式存在 AAC 音轨,音效与可见动作同步,无人声、对白和明显配乐;静音模式必须无音轨
- 音轨中没有任何笔尖写字、画线、刮纸或连续纸面摩擦声;声音节奏适合叠加知识口播,短促、克制、不抢语音频段
失败时只重跑对应条目,并在 prompt 中具体修正失败项。不要重跑已通过条目。
测试基准
- “学会把抽象的概念具体化。”:抽象云团经由人物手势或蓝色轨迹转化为桌面上的清晰实体模型。
- “用AI解决近在眼前的小事情。”:人物点亮桌面上的几个日常任务卡,AI 光线逐个完成,而不是出现宏大机器人或未来城市。
- “信息不是越多越好,而是越清楚越好。”,无人物模式:杂乱卡片被漏斗筛选,最终留下三张层级清楚的卡片;不得出现人物或手。
版本历史
- d864f14 当前 2026-07-30 20:29


