Community编程与开发github.com

atakoylan125-sketch/AI-Filmmaking-Skills

使用 ManimGX 进行自上而下的场景调度:规划场景中每个元素的位置,并将其渲染为动画平面图。当用户需要设计场景调度、规划摄像机位置与镜头、布置灯光,或检查 180° 轴线和屏幕方向时使用——无论是基于完整的分镜头列表还是简单的一句话描述。涵盖环境与关键物体、角色位置、姿态、朝向与移动、物理光源以及每台摄像机的视野锥。在信息不足时,会提出一轮简短的场景特定选择题;展示布局和通俗易懂的镜头描述供用户确认,然后通过独立的 Python CLI 渲染出 MP4 视频和可编辑的 JSON 场景规格文件。

AI-Filmmaking-Skills 是什么?

该 AI 技能专注于将导演的平面图转化为动画,使用 ManimGX 引擎渲染。它自动处理场景调度流程:解析用户输入,生成包含角色位置、摄像机角度、光源和 180° 轴线的结构化 JSON 场景规格;然后渲染一个动画平面图视频,展示场景布局的逐步构建过程。技能的核心价值在于专业级调度指导——它根据七要素清单(地点、位置、朝向、灯光、环境、镜头、节奏)评估输入完整性,缺失信息时提供场景特定的选择题引导用户完成设计。技能支持从一句话草图到详细分镜头列表的多种输入,并通过预渲染预览——显示布局、镜头描述和假设——让用户在最终渲染前进行修改。独立运行于任何具体的视频生成器之外,输出可编辑的 JSON 规格文件和 MP4 草图动画。平台的细小差异意味着用户可以自由选择;它强调的是调度概念,而不是特定的 UI 交互,这与 Clip Studio Paint 或 Manim 等工具的 AI 辅助功能类似,但其独特之处在于其系统化的调度工作流程。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/atakoylan125-sketch/AI-Filmmaking-Skills/tree/HEAD/skills/staging-with-manimgx

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

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

文档

使用 ManimGX 进行场景调度

仅进行布局。此技能不编写故事、对话或表演,也不与任何摄像机系统、视频生成器或制作工具绑定。它只回答一个问题:所有物体和角色在哪里,它们如何移动,光线从哪里来,每台摄像机在哪里、朝向哪里? 输出是一个短片,风格类似导演的平面图:完成的平面图先显示一秒,然后逐步构建地图,接着是移动路径,然后摄像机及其视野锥逐一出现,最后显示 180° 轴线和视线线。

用户可能是拥有完整分镜头列表的专业人士,也可能是仅有一句话描述的初学者。两者都必须得到相同质量的平面图。区别在于路径:完整的输入直接进入提议的布局;粗略的输入则先经过一轮简短的引导式输入,让用户决定布局,而不是由您猜测。这些问题也教初学者了解场景调度所需的信息。每条路径都以用户确认或纠正的计划结束,然后才进行渲染。

场景调度技巧——景别、摄像机高度、镜头感、布局法则、空间连续性以及如何描述每个镜头——参见 references/staging-craft.md。在选择摄像机、编写计划或进行最终检查之前,请阅读它。

仅根据您面前的场景工作。下面的问题模板、尺寸表和示例规格展示了形式和语法,而非内容:切勿将真实场景中的地点、道具、名称、位置或颜色套用到模板中。

完整输入——七个要素

当输入回答了以下七点时即为完整。在进行任何其他操作之前,请将每个收到的输入与它们进行核对。

序号要素确定的内容地图需要它的原因
1地点场所的类型、大小和特征(小而紧凑或大而开阔、风格或时代),及其固定几何结构:墙壁、门、窗、对调度重要的物体设定整个地图的比例,并决定存在哪些道具
2位置角色在何处、姿势(站立、坐、躺、跪……)、谁面向谁、相距多远这些是“点”、姿势标签和方向箭头;180° 轴线由此绘制
3朝向关键特征(窗户、门、墙壁、道路)位于角色的哪一侧,相对于角色描述:“她右边的窗户”没有它,地图可能会镜像,所有背景都会出错
4灯光每个重要的光源,它在物理上位于何处、光线来自哪一侧、是硬光还是柔光决定每张脸哪一侧被照亮,以及哪些镜头会逆光
5环境动作的其他侧有什么它成为每个反打镜头的背景
6镜头有多少个镜头、顺序如何、以及每个镜头的景别、镜头和角度(A 的特写、居中的双人镜头、越过 A 的肩膀看 B……)这些就是摄像机
7节奏谁移动、从哪里移动到何处以及何时移动(站起、穿越、进入、离开、转身),以及每个镜头中发生了什么移动会改变位置、朝向,有时会在场景中途改变轴线;移动绘制为路径

当输入明确说明某要素或使其毫不含糊时(例如,“他们面对面坐在卡座上”即代表填充了“位置”),该要素视为已填充。要素 7 仅当有人移动时才重要:如果每个节拍都是一句对话且无人移动,则不需要询问。

输入收集轮次——当信息不足时

  1. 根据七个要素对输入进行评分,保持静默。切勿向用户展示清单本身。
  2. 所有要素均已填充 → 跳过收集,直接进入工作流程。当用户表示不需要提问(“sorma”、“direkt yap”、“just do it”)时也跳过:用默认值填充空白;这些默认值在计划中列出(工作流程步骤 4)。
  3. 任何要素缺失 → 询问,使用用户的母语提问:
    • 每次消息最多 3 个问题,总共最多 2 条消息。顺序:首先询问地点 → 位置 → 镜头,因为它们决定了地图结构;然后是朝向 → 灯光 → 环境;最后是节奏。
    • 如果位置和位置同时缺失,在第一条消息中仅问这两个:其他每个问题的选项都取决于它们的回答。
    • 每个问题都是选择题:2-4 个为该场景编写的选项,根据输入已有的信息构建,再加上一个最终的**“您决定”选项**(使用用户母语,例如“您提议”)。用户始终可以输入自己的答案。
    • 将您会选择的选项标记为 (推荐) 并附上简短理由,以便初学者可以直接接受。
    • 每个问题附带一行解释它为什么对地图重要。
    • 如果您的环境具有结构化的选择题工具,请使用它;否则,在纯文本中编写带编号的问题和带字母的选项。
    • 切勿询问输入已经回答的问题。切勿询问关于故事、对话或表演的问题:那不是此技能的职责。
    • 当用户像专业人士一样写作(使用镜头、景别、“越过 A 的肩膀”、轴线等术语)时,完全按照给定的选择接受。仅询问真正缺失的要素,切勿重新讨论他们已经做出的决定。
  4. 在获得回答后,任何仍然未填充或回答为“您决定”的项目将被赋予合理的默认值。然后进入工作流程;步骤 4 中的计划是用户确认或纠正这些默认值的地方。

问题模板

这些显示每个问题的形式。根据您面前的场景重新编写措辞和选项;切勿逐字粘贴。

  • 地点 — “这发生在哪里,这个地方是什么样子的?” → 根据输入构建的选项,例如 狭小、紧凑的室内 · 宽敞、开阔的室内 · 室外 · 您决定。原因:它设定了比例和存在哪些道具。
  • 位置 — “他们是如何布置的?” → 适合输入中地点和人物的选项,结合位置和姿势(都坐着,面对面 · 并排 · 一人坐着,一人站着 · 您决定)。原因:180° 轴线在两个主要角色之间绘制。
  • 朝向 — “<窗户/门/墙壁> 在 的哪一侧?” → 的左侧 · 的右侧 · 后面 · 后面。原因:没有它,地图可能会镜像,所有背景都会改变。
  • 灯光 — “主光源从哪里来?” → 该地点存在的光源(从 <窗户/门> 一侧 · 从头顶固定装置 · 从场景中的实用灯 · 从其中一人身后(逆光) · 您决定)。仅当用户提到了光源时才询问硬光或柔光。原因:它决定每张脸哪一侧被照亮。
  • 环境 — “他们另一侧有什么?” → 适合地点的选项。原因:它是每个反打镜头的背景。
  • 镜头 — “您想如何拍摄?” → 我给您列个清单(数量、顺序、景别) · 经典覆盖:一个全景、两个过肩镜头、两个特写镜头 · 一个连续镜头 · 您决定。原因:这些就是摄像机。
  • 节奏(仅当移动是合理的时)— “场景中有人移动吗?” → 不,所有人都待在原地 · <此场景建议的一个移动,为其编写> · 是的(告诉我谁、从哪里到何处以及何时移动) · 您决定。原因:移动绘制为路径,并且可以改变轴线。

工作流程

  1. 阅读场景 — 输入加上任何收集到的答案。提取:

    • 地点、其固定几何体和对于调度重要的道具(墙壁、门、窗、家具、车辆、路径);
    • 每个角色:他们在哪里、姿势、面向什么;
    • 每个移动:谁、从哪里、经过哪里、到何处、结束时的朝向和姿势;
    • 每个重要的光源(太阳、窗户、灯、实用灯):它在物理上位于何处、光线来自哪一侧、照到了谁;
    • 主要关系——互相交谈或注视最多的那一对。这一对定义了 180° 轴线。如果移动改变了几何结构,则为其后的镜头决定轴线;
    • 镜头。如果用户将其留给您或选择了经典覆盖,请自行构建(参见覆盖规则)。

    然后在开始布局之前,先为自己回答三个问题:在场景中物理上发生了什么变化(谁移动了、拿起了什么、打开了什么);观众必须同时看到什么(两个人在同一帧中、一张脸和其后的门);哪些内容必须在各个镜头之间保持不变(被照亮的窗户、桌子、场景所依赖的物体)。答案决定了哪些道具被命名、哪些镜头必须是双人镜头以及轴线必须在何处保持。

  2. 以米为单位进行布局,使用真实世界尺寸(见下表)。地图惯例:+y 是从主摄像机/开场摄像机方向“进入场景”,+x 是向右。将主摄像机放在动作的南侧,朝北看。

  3. 编写场景规格文件(JSON,架构见下;完整 JSON Schema 参见 references/scene.schema.json),保存到工作目录,然后在不渲染的情况下进行验证: uv run <skill-dir>/scripts/staging_render.py scene.json --check (<skill-dir> 是包含此 SKILL.md 的文件夹)。它会打印已解决的报告(摄像机位置、警告)或一行 spec error: …;修复并重新检查,直到通过。

  4. 预览并获取批准——在任何渲染之前。 运行 uv run <skill-dir>/scripts/staging_render.py scene.json -o <name>.mp4 --preview (几秒钟)。它会写入 <name>.preview.png(完成的平面图)和 <name>.report.json。首先自己查看预览,修复明显的问题(如果您无法查看图像,请改为检查报告,并告知用户您无法检查图像)。然后向用户展示预览图片和一份用他们母语编写的简明计划:

    • 环境 — 空间大小、关键物体及其位置(相对描述加米数);
    • 角色 — 位置、姿势、朝向;然后按顺序列出每个移动;
    • 灯光 — 每个光源、它在哪里、照亮了谁的哪一侧;
    • 摄像机 — 表格:序号、景别、镜头、位置(例如“A 前方右侧 2.9 米,眼平高度”)、它看到什么,以及一行关于此摄像机用途的解释(其在覆盖中的任务);
    • 镜头描述 — 对于每台摄像机,根据规格文件和报告中的 frame 数据,使用 references/staging-craft.md 中的模板编写的简短通俗语言帧描述:哪些人和物在帧内、在哪一侧、他们后面是什么、光线从哪一侧来、视线方向和轴线侧。中性和事实性:不含风格或情绪词汇,不含针对特定图像或视频工具的措辞;
    • 180° 轴线 — 哪一对、摄像机保持在轴线哪一侧、是否有任何镜头被镜像或越轴;
    • 假设 — 您选择而非用户决定的每个值,并标记为假设;
    • 备选方案 — 两到三个用户未提及的摄像机选项,每行一个及其权衡(参见 references/staging-craft.md 中的“提供备选方案”)。仅当用户选择时才应用其中一个。 要求他们批准或纠正任何内容(“把门放在另一面墙上”、“让镜头 3 成为特写”、“她保持坐着”)。将纠正应用到规格文件,再次预览并展示修改后的计划;重复直到他们批准。仅在批准后渲染。仅在用户明确要求无需审查直接渲染时跳过此步骤;然后在交付时列出假设。
  5. 使用捆绑的引擎进行渲染 scripts/staging_render.py(路径相对于此技能文件夹;请勿重写或复制): uv run <skill-dir>/scripts/staging_render.py scene.json -o <name>.mp4 --quality h。 使用 --quality l 进行快速草稿。视频以完成的平面图显示 1 秒开始(--poster 1.0,默认值),然后交叉淡入逐步构建过程。第一帧也是社交平台上的缩略图,因此它必须显示整个结果;仅当用户要求纯构建过程时使用 --poster 0。 它会打印一份 JSON 报告,包含每个角色、灯光和摄像机(位置、距离、水平视野,以及一个 frame 块,列出了在帧内可见的人和物及其在帧中的哪一侧,以及每个光源来自帧的哪一侧)和 warnings(也保存为 <name>.report.json),并保存 <name>.last.png(完成的平面图)。

  6. 在交付前检查结果。 打开 <name>.last.png 并查看它(如果您无法查看图像,则依赖报告并说明情况):每个标签可读、没有摄像机图标放在人物身上、锥体指向正确的拍摄对象、移动路径可读、图例未被截断。然后运行 references/staging-craft.md 中的最终空间一致性检查:各个镜头之间左右和视线一致、每个入场和出场是可能的、固定物体和主光源在每个镜头中位于相同的物理位置、没有未标记的越轴。读取 warnings——必须向用户提及自动镜像的镜头或越轴的摄像机。修复规格文件并重新渲染(最多两轮)。

  7. 交付 视频、规格 JSON 文件(以便通过更改数字来编辑布局)以及更新到最终规格文件的已批准镜头描述。使用用户的母语,用两到三行说明哪些默认值仍然存在(仅限收集轮次中留空的或用户交回的),以及任何轴线警告。除非用户另有要求,否则地图标签使用英文。

覆盖规则(当镜头留给您时)

构建覆盖场景的最小集合,按分镜头脚本顺序,最多 8 个:

  1. 开场全景 — 所有人在帧内(target: 所有角色名称的列表,size: "wide",lens: 35,from: "S")。
  2. 对于主要对 A/B: 每人的过肩镜头(over_shoulder: B, target: A 和反向)。选择肩膀,使两个摄像机都位于轴线的同一侧;引擎会镜像任何不符合的摄像机并报告。
  3. 关键节拍的单人镜头:size: "cu" 或 "mcu",lens: 85/50,from: "front-left"/"front-right"(相对于角色的正面朝向),在轴线的同一侧。
  4. 道具插入镜头 用于任何动作所依赖的道具(size: "insert",lens: 85,height: "high" 用于桌子上的东西)。
  5. 移动后: 覆盖结束位置(target: "A@1"),并为移动后的镜头设置它们自己的轴线("axis": ...)。

...(因翻译而截断)

相关技能