内容创作 · iart-ai/manim-skills

manim

This skill should be used when the user asks to "make a math animation", "animate an equation", "use Manim", "make a 3Blue1Brown-style video", "plot or animate a graph/function", "visualize a math/physics/CS concept", "morph one formula into another", "animate a geometric proof", or "render a math explainer". Covers Manim Community Edition — Scenes, Mobjects, animations, LaTeX/MathTex, graphs, updaters/ValueTracker, 3D, and rendering to MP4/GIF via the CLI.

L4 高权限 · 分级授权与审计V1 已固定执行命令联网读写文件Dual-pass Audit
Author iart-aiGitHub iart-ai/manim-skills ↗Stars 9License MIT(仓库根 LICENSE:MIT License / Copyright (c) 2026 iart.ai;.claude-plugin/plugin.json 声明 "license": "MIT",GitHub API license.spdx_id = MIT)Commit a15833c44d
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

它把数学动画变成声明式 Python:一个 Scene 子类的 construct() 里按顺序写 play/wait,Manim 把每个 Mobject 的状态与 Animation 求值成时间轴,再从 CLI 逐帧渲染出确定性 MP4/GIF。

skills/manim/SKILL.md
Every scene is declarative: you build vector objects, play timed animations over them, and render a deterministic MP4/GIF from the CLI.
「声明式 + CLI 渲染」是它与网页动效类 skill 的根本差异:没有浏览器、没有实时循环,产物是文件。

全部能力由三件套组合出来:Scenes(编排)作用于 Mobjects(矢量对象),经 Animations(定时变更)表达;所有动画代码都写在 construct() 这一个方法里。

skills/manim/SKILL.md
Everything is **Scenes** (orchestration) acting on **Mobjects** (objects) via **Animations** (timed change).
文档用这句给出阅读整篇的心智模型,后面所有速查表都是它的展开。

数学排版归 LaTeX(Tex/MathTex,必须用 raw string r"..."),普通文本归 Pango(Text/MarkupText,不需 LaTeX)——这条分工直接决定了运行时前置(是否必须装 TeX 发行版)。

skills/manim/SKILL.md
**LaTeX is required** for `Tex`/`MathTex` (not for `Text`).
缺字形方框或编译错误是「没装 LaTeX / TeX 串写错」的直接信号,文档把它写成 gotcha 第一条。

函数与图形动画用 Axes + ax.plot 表达,并用 ax.c2p 把数学坐标映射到屏幕(禁止手写屏幕坐标);活值用 ValueTracker 配 always_redraw/add_updater,让依赖对象每帧重算(点沿曲线、计数器、切线)。

skills/manim/SKILL.md
Drive live values with `ValueTracker` + `always_redraw`/`add_updater` so dependent mobjects recompute every frame
「单一 tracker 驱动一切」与「用 c2p 布点」共同保证场景在多次编辑后仍自洽。

3D 与相机是独立一层:ThreeDScene + set_camera_orientation / Surface / begin_ambient_camera_rotation;2D 用 MovingCameraScene 的 self.camera.frame.animate 做推近、跟随与还原。

skills/manim/SKILL.md
`ThreeDScene` + `set_camera_orientation(phi=, theta=)`, `ThreeDAxes`, `Surface`, `begin_ambient_camera_rotation()`
Reference 另给 save_state()/Restore 的取景快照做法,用于「推近后回到全景」。

确定性是关键卖点:同一 scene 渲染出同样的帧,因此验证策略是先渲染帧(PNG,不编码视频)确认数学与排版,再决定是否全量出片。

skills/manim/SKILL.md
Manim is deterministic — the same scene renders the same frames — so verify by rendering **frames** (PNG, no video encode) before committing to the full video.
这条把「渲染成本」与「检查成本」解耦——是它验证回路能廉价重复的原因。

CLI 给三个质检杠杆:-s 存最后一帧为 PNG(不编码)、-n a,b 只渲动画索引区间(停在中途看一格)、-q l 低质量先迭代;确认后才 -qh 出片,产物落在 media/videos|images 下。

skills/manim/SKILL.md
- `-s` — **save the last frame as a PNG** (no video encode — the verification lever, see below).
把「验证」做成了 CLI 的一等参数,而不是另写测试代码。

能力边界被明确划出:不做 UI 动效、社媒/营销视频、CSV 商业图表,强项是数学排版与直觉可视化。

skills/manim/SKILL.md
Not the tool for UI motion, social/marketing video, or data-from-CSV business charts
主动给出「不该用我」的判据,属少见但对 agent 路由很有用的设计。

禁止墙钟与未播种随机:construct() 只执行一次用于脚本化时间轴,没有实时循环;随机须带 seed。

skills/manim/SKILL.md
`construct()` runs once to *script* the timeline; there is no realtime loop — never use wall-clock time or randomness without a seed.
与同作者其它 pack 的帧驱动纪律同源:可复现优先。

2核心能力

01Scene / Mobject / Animation 三件套 + 完整速查表(创建、变形、定位、时长与缓动)
02方程动画与项级变换:Write / TransformMatchingTex(相同子 TeX 只动变化的部分)/ {{ }} 分组 / 子串上色 / 自定义 LaTeX 宏包
03.animate 语法(动画化任意方法调用,可链式)、多动画并行 play、LaggedStart 错峰、rate_func 缓动
04坐标轴与绘图:Axes/NumberPlane、plot、c2p/p2c 坐标映射、曲线下面积与 Riemann 矩形
05活值驱动:ValueTracker + always_redraw / add_updater(点沿曲线、动画计数器、切线/割线组)
06相机与 3D:ThreeDScene + set_camera_orientation + Surface/参数曲面 + 环境环绕;2D MovingCameraScene 推近/跟随/还原
07CLI 渲染与质检杠杆:-q 质量档、-p 预览、-s 存末帧、-n a,b 只渲区间、--format=gif,产物自动落到 media/ 下
08LaTeX 前置诊断:缺字形方框或编译报错即定位为「未装 LaTeX / TeX 串有问题」,并强制 raw string
09场景级 CLI 快速上手路径(安装 → 单 Scene 预览 → 高质量出片)

3外部依赖

KindDependency / Endpoint
clipip install manim(安装 Manim Community Edition,含 Python 3.9+ / ffmpeg / LaTeX 三项前置说明)
climanim CLI(-q / -p / -s / -n / --format=gif 渲染与质检)
packageManim Community Edition(数学动画引擎本体,官方发包)
packageLaTeX 发行版(TeX Live / MiKTeX):仅 Tex / MathTex 需要;Text / MarkupText 走 Pango 不需要
packagenumpy(Manim 的数学依赖;reference 的 3D 曲面前置直接用 np.sin/np.cos)
cliffmpeg / ffprobe(Manim 编码 MP4 的底层依赖;仓库根 contact-sheet.sh 拼图与 probe-mp4.sh 断言)
network运行时无网络调用:skill 不访问任何 API/CDN;Manim 场景是纯本地 Python + 本地 ffmpeg + 本地 LaTeX 编译

4管控建议与判定依据

建议配套管控措施
面向 Agent
分级或逐次授权,建议在沙箱运行
面向管理者
审批流程、可回滚、全程审计
判定依据(文件路径与关键语句摘要)
  • scripts/: 执行本地脚本或命令: manim CLI(-pql / -sql / -s / -n a,b / -qh / -qm --format=gif):本地渲染与质检,逐帧执行场
  • 网络端点: 声明外部网络访问: 运行期零网络调用:Manim 场景为纯本地 Python + 本地 ffmpeg + 本地 LaTeX,skill 未引用任何 API、CDN 或远端
  • 本地工作目录: 文件读写与工件输出: media/videos/<file>/<quality>/<Scene>.mp4 与 media/images/.../<Scene>.png(-s
审计说明: 。判级对象是 skill 自身目录(skills/manim/:SKILL.md + references/ 三份 + 0 字节 README.md;目录内无脚本、无凭证读取、不写盘)。行为面=本地 CLI + 本地读写:执行的是安装在本地的 manim CLI(配本地 ffmpeg 与本地 LaTeX 编译),输出只落在 media/ 与项目目录;运行期零网络外发、零凭证/env 读取、无采集与绕过行为。之所以不判橙:本 skill 对第三方依赖的表述是「安装前置指令」(`pip install manim` + 可选 TeX 发行版),而执行路径调用的是本地已安装的 CLI,未像同作者 Remotion 系 skill 那样以 `npx …` 在运行时抓取并执行远端包;这与站内先例一致(gsap-react 将 npm 依赖视为安装指令而不抬档;hyperframes-animation / hyperframes-audio 因「官方包安装 + 本地 CLI + 本地读写」判蓝)。之所以不给绿:确有外部依赖与本地写盘(media/ 产物、LaTeX 编译中间文件),且 TeX 串会进入编译器——虽属自产内容,仍比纯文本 skill 多一层执行面。触发条件:渲染即在本机执行场景脚本与 ffmpeg;pip/TeX 的安装动作由使用者决定。

5第二遍独立确认

  • [ok] 外部依赖调用点复核(pip install manim / manim CLI / ffmpeg / LaTeX / numpy) — SKILL.md Setup 节确有 `pip install manim # needs Python 3.9+, ffmpeg, and a LaTeX distribution (for Tex/MathTex)` 与 `manim -pql scene.py SquareToCircle`;verify 段确有 `manim -sql scene.py MyScene -n 0,3`;math-and-text 确有 TeX Live/MiKTeX 说明;3d-and-camera 确有 np.sin/np.cos 用法;仓库根 scripts/README.md 确有 manim 与 probe-mp4 的用法示例。全部落地,非推测。
  • [ok] 「运行期零网络」反查 — 四份文档与仓库脚本中无 API endpoint、无 curl/wget、无 fetch/requests、无 CDN import;Manim 场景全部是本地 Python 对象构造。唯一网络相关表述集中在 Setup 的包安装指令。结论成立。
  • [ok] 无凭证 / 无 env 读取 — 全文无 API_KEY/token/secret/.env/.netrc 读取,无浏览器 cookie 取用,无环境变量透传;与同 pack 的 Remotion 系(走 npm 远端包)和 generative-illustration(走 OPENROUTER_API_KEY)形成鲜明对比。
  • [ok] 确定性主张的成立条件 — SKILL.md 明确「Manim is deterministic — the same scene renders the same frames」,并在 gotchas 收尾补上边界:「never use wall-clock time or randomness without a seed」——即确定性依赖于不引入墙钟、随机须播种。主张有边界,非无条件承诺。
  • [ok] 目录资产面清点 — skills/manim/ 下仅 SKILL.md(136 行)、references/ 三份(math-and-text 70 行 / graphs-and-updaters 61 行 / 3d-and-camera 68 行)、0 字节 README.md;无 scripts/、无 .py 样例文件、无模板资产——「纯指令 + reference」结论成立(场景脚本由使用者/agent 现写)。
  • [discrepancy] 跨引用可解析性 — SKILL.md 提到「the `motion-design-skills` pack (`animation-principles` ...)」——该 pack 与 animation-principles 均不在本 repo(本 repo 仅 skills/manim 一个 skill),属同作者的另一个 pack,单装本 repo 时该引用悬空。另正文引用的 `scripts/contact-sheet.sh`、`scripts/probe-mp4.sh` 位于本 repo 根,单装 skill 目录会悬空。
  • [ok] 能力边界声明与正文覆盖的一致性 — SKILL.md 自述「Not the tool for UI motion, social/marketing video, or data-from-CSV business charts」,而正文与三份 reference 确实只覆盖数学排版、函数/图形、3D 与相机;未出现与自述边界冲突的内容(无 UI/营销/CSV 章节)。
  • [ok] 档位判据与站内先例的一致性 — 判蓝的两条支撑:① 依赖以「安装指令」形式出现、执行的是本地 CLI(先例 gsap-react 明确不因 npm 依赖抬档;hyperframes-animation/hyperframes-audio 因官方包安装 + 本地 CLI + 本地读写判蓝);② 运行期无网络外发、无凭证、无采集(不满足黄/橙)。同时保留「有外部依赖 + 有本地写盘 + TeX 编译面」的现实,故不判绿。判据留痕如上,便于复核与跨批次口径统一。

6结论

  • 把「渲染帧」做成一等质检杠杆(-s / -n a,b 出 PNG 不编码),检查成本远低于成片渲染
  • 声明式 + CLI 渲染天然确定性,使「同一输入同一输出」不需要额外工程就可成立
  • 能力边界写得很干净(不做 UI/营销/CSV 图表),agent 路由时不易用错工具
  • 活值驱动有单一真源与清理纪律(ValueTracker + always_redraw,用完 clear_updaters)
  • 前置依赖被写清楚且分档,装不上 LaTeX 也能先用 Text 出片
  • 适合: 适合数学/物理/计算机科学的教学与直觉可视化:方程写上与变形、代入与替换的逐项高亮、函数作图与点沿曲线、面积与 Riemann 和、几何证明展开、3D 曲面与相机环绕——尤其是需要 3Blue1Brown 那种「数学排版正确且动起来」的短片。
    不适合: 不适合 UI 动效、社媒/营销短视频、CSV 商业数据图表(skill 明确声明并指向其它 pack);不适合需要复杂图层合成、配音剪辑或视频特效的成片(Manim 只负责数学动画本身);也不适合必须在浏览器/网页交付的场景——它的产物是本地 MP4/GIF 文件。
    Install Agent-Ready
    ① Verified Mirror 2026-09-28
    Option A · Direct DownloadDownload manim.tar.gz
    sha256: 5ebe4ae4e425d911…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit a15833c44d.