ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

在 video-use 中用 manim-video Skill 生产 3Blue1Brown 风格数学动画:从文本提示到成片的完整管线

2026/9/24 2:30:18 拓冰建站 浏览量
在 video-use 中用 manim-video Skill 生产 3Blue1Brown 风格数学动画:从文本提示到成片的完整管线 AI 技能/插件音视频视频处理人工智能【免费下载链接】video-useEdit videos with coding agents项目地址https://gitcode.com/GitHub_Trending/vid/video-use点击查看免费下载本文是 manim-video Skill 的实战技术指南。该 Skill 以 Manim Community Edition 为渲染内核为 video-use 项目提供文本提示 → 数学/技术动画成片的完整生产管线创意规划、Python 场景代码生成、渲染、多场景拼接与迭代打磨全部由编码智能体自动完成。读完本文你将掌握该 Skill 的七种创作模式、五步工作流、创意方向规范调色板/速度/字号/字体、渲染质量档位与性能目标并能结合仓库源码与参考文档独立产出可用于视频合成的动画片段。Skill 是什么一条从提示词到成片的生产管线manim-video是 video-use 仓库中随附vendored的子 Skill其定位见 SKILL.md 的 frontmatter是Production pipeline for mathematical and technical animations using Manim Community Edition.它解决的问题很直接当用户需要用几何直觉讲清一个概念逐步推导一个公式可视化一个算法时编码智能体不应手忙脚乱地临时拼凑动画代码而应走一条固定的、经过验证的生产管线。管线的输入是一个文本提示如 Explain how neural networks learn输出是一段可拼接进最终视频的final.mp4。整个 Skill 的能力边界被一句话定义Create 3Blue1Brown-style animated videos from text prompts. The agent handles the full pipeline: creative planning, Python code generation, rendering, scene stitching, and iterative refinement.也就是说智能体要同时承担导演规划叙事弧、编剧规划场景、程序员写 Manim 代码、渲染工跑 CLI、剪辑ffmpeg 拼接和审片逐帧检查六种角色。典型应用场景Skill 的设计面向六类最常见的动画需求README.md 中给出了每一类的示例提示词场景提示词示例概念讲解Concept explainerExplain how neural networks learn公式推导Equation derivationAnimate the proof of the Pythagorean theorem算法可视化Algorithm visualizationShow how quicksort works step by step数据故事Data storyAnimate our before/after performance metrics架构图解Architecture diagramShow our microservice architecture building up在 video-use 项目语境中这些动画通常作为**叠加层overlay**使用主视频剪辑管线见仓库根目录 SKILL.md 的 Animations 一节会把每个动画拆成一个独立 slot由并行子智能体在edit/animations/slot_id/下构建最终通过 EDL 的overlays字段叠加到成片上。环境前置与一键安装依赖清单Skill 要求的环境在 README.md 的 Prerequisites 一节和 SKILL.md 中都有明确说明Python 3.10Manim Community Edition v0.20pip install manim参考文档基于 Manim CE v0.20.1 测试LaTeXLinux 用texlive-fullmacOS 用mactex——负责MathTex公式渲染ffmpeg——负责场景拼接、格式转换与音频合成setup.sh依赖自检脚本仓库提供了开箱即用的自检脚本 scripts/setup.shbash skills/manim-video/scripts/setup.sh脚本内部setup.sh逐项验证四个关键依赖python3是否存在、能否import manim、是否有pdflatex、是否有ffmpeg每缺一项都会在结束时汇总报出缺失数量。整个脚本基于set -euo pipefail编写适合在 CI 或首次安装时直接运行。注意README 中的路径写法skills/creative/manim-video/scripts/setup.sh是旧路径当前仓库实际位置是skills/manim-video/scripts/setup.sh。七种创作模式ModesSKILL.md 用一张表定义了七种可切换的创作模式每种模式对应不同的输入、输出形态和参考文档模式输入输出参考文档概念讲解 Concept explainer主题/概念带几何直觉的动画讲解scene-planning.md公式推导 Equation derivation数学表达式逐步动画化证明equations.md算法可视化 Algorithm visualization算法描述带数据结构的逐步执行graphs-and-data.md数据故事 Data story数据/指标动画图表、对比、计数器graphs-and-data.md架构图解 Architecture diagram系统描述组件逐层搭建与连线mobjects.md论文讲解 Paper explainer研究论文关键发现与方法动画化scene-planning.md3D 可视化 3D visualization3D 概念旋转曲面、参数曲线、空间几何camera-and-3d.md模式的选取应当由用户提示词的性质决定讲概念走scene-planning讲公式走equations讲系统架构走mobjects。参考文档为每种模式提供了对应的方法论与代码模式后面会逐一展开。技术栈单一 Python 脚本无浏览器、无 GPUSKILL.md 强调了这个 Skill 的一个关键设计约束每个项目只有单一 Python 脚本不需要浏览器、Node.js 或 GPU。这一点与 video-use 主项目形成鲜明对比——主项目的 HyperFrames/Remotion 动画 slot 需要 Node.js 22而 Manim slot 只需纯 Python 环境。层级工具职责核心Manim Community Edition场景渲染、动画引擎数学LaTeXtexlive/MiKTeX通过MathTex渲染公式视频 I/Offmpeg场景拼接、格式转换、音频混合语音可选ElevenLabs / Qwen3-TTS旁白配音生产管线PLAN → CODE → RENDER → STITCH → AUDIO → REVIEWSkill 的六阶段管线在 SKILL.md 中定义PLAN -- CODE -- RENDER -- STITCH -- AUDIO (optional) -- REVIEWPLAN— 编写plan.md包含叙事弧、场景清单、视觉元素、调色板、旁白脚本CODE— 编写script.py每个场景一个类且每个类都可独立渲染RENDER— 草稿用manim -ql script.py Scene1 Scene2 ...成品用-qhSTITCH— 用 ffmpeg 把各场景片段拼接为final.mp4AUDIO可选— 通过 ffmpeg 添加旁白或背景音乐详见 rendering.mdREVIEW— 渲染预览静帧对照plan.md核查再调整。项目结构约定Skill 要求每个动画项目遵循统一的目录结构SKILL.mdproject-name/ plan.md # 叙事弧、场景拆解 script.py # 所有场景放在同一个文件 concat.txt # ffmpeg 场景列表 final.mp4 # 拼接后的最终输出 media/ # Manim 自动生成 videos/script/480p15/media/目录由 Manim 自动生成其中的480p15子目录对应-ql草稿质量档位。这一结构也直接对应 video-use 主项目中的edit/animations/slot_id/动画 slot 组织方式见仓库根目录 SKILL.md 的 Animations 一节。创意方向Creative Direction这是 Skill 与普通代码生成工具最大的区别它把 3Blue1Brown 式动画的审美规则显式编码成可执行的创作规范。核心创意标准在 SKILL.md 开头就有阐述每一帧都在教学每一个动画都在揭示结构。开写第一行代码之前必须先想清楚叙事弧——这个视频纠正什么误解aha 时刻是什么同时坚持几何先于代数先展示形状、再展示公式和首版渲染即高质量不允许靠反复返工凑出好效果两条原则。调色板四个内置配色方案SKILL.md 的 Color Palettes 表调色板背景主色次色强调色适用场景Classic 3B1B#1C1C1C#58C4DD蓝#83C167绿#FFFF00黄通用数学/CSWarm academic#2D2B55#FF6B6B#FFD93D#6BCB77亲和向Neon tech#0A0A0A#00F5FF#FF00FF#39FF14系统/架构Monochrome#1A1A2E#EAEAEA#888888#FFFFFF极简与之配套的还有透明度分层原则主元素透明度 1.0上下文元素 0.4结构元素坐标轴、网格0.15。人类大脑按视觉显著性分层处理信息这种亮度分层正是 3Blue1Brown 画面干净的技术根源。动画速度每个动画必须显式指定run_time并在之后留出呼吸时间SKILL.md 的 Animation Speed 表语境run_time之后的 self.wait()标题/开场出现1.5s1.0s关键公式揭示2.0s2.0sTransform/变形1.5s1.5s辅助标签0.8s0.5sFadeOut 清理0.5s0.3saha 时刻揭示2.5s3.0s字号体系角色字号用途标题48场景标题、开场文字小标题36场景内节标题正文30解释性文字标签24注释、坐标轴标签说明20字幕、小字字体一律使用等宽字体这是 Skill 中一条硬性技术约束SKILL.md 的 Fonts 一节详见 visual-design.md所有文本使用等宽字体。原因是 Manim 的 Pango 文本渲染器对比例字体Helvetica、Inter、SF Pro、Arial在所有字号和分辨率下都会产生破碎的字距kerning这是 Pango 的固有限制而非 Manim 的 bug。等宽字体字符宽度固定天然不存在字距问题。MONO Menlo # 在文件顶部定义一次 Text(Fourier Series, font_size48, fontMONO, weightBOLD) # 标题 Text(n1: sin(x), font_size20, fontMONO) # 标签 MathTex(r\nabla L) # 数学走 LaTeX等宽字体家族建议macOS 用 Menlo预装、SF MonoLinux 用 DejaVu Sans Mono预装、Liberation Mono跨平台可安装 JetBrains Mono。Menlo是最安全默认值——macOS 预装Linux 会自动回退到 DejaVu Sans Mono。可读性下限是font_size18低于 18 在-ql下会模糊、即使在-qh下也几乎不可读。需要更细粒度文字控制时Text()不支持letter_spacing/kerning 参数应改用MarkupTextPango 属性字距单位 1/1024 磅MarkupText(span letter_spacing6000HERMES/span, font_size18, fontMenlo) MarkupText(This is bimportant/b, font_size24, fontMenlo) MarkupText(Red span foreground#FF6B6Bwarning/span, font_size24, fontMenlo)场景间差异化Skill 明确禁止所有场景使用同一套配置SKILL.md 的 Per-Scene Variation 一节每个场景要有不同的主导色、不同的布局不要总是居中、不同的入场动画在 Write / FadeIn / GrowFromCenter / Create 之间轮换、不同的视觉密度有的场景信息密集有的稀疏。五步工作流WorkflowStep 1规划plan.md写任何代码之前先写plan.md。完整模板见 scene-planning.md核心字段包括主题、钩子开场问题、aha 时刻、目标受众、目标时长、分辨率草稿 480p / 成品 1080p、调色板、叙事弧类型Discovery / Problem-Solution / Comparison / Build-Up以及每个场景的用途、布局、视觉元素、动画序列和字幕文本。Step 2编码script.py每个场景一个类类之间互相独立、可单独渲染。Skill 给出的最小完整示例from manim import * BG #1C1C1C PRIMARY #58C4DD SECONDARY #83C167 ACCENT #FFFF00 MONO Menlo class Scene1_Introduction(Scene): def construct(self): self.camera.background_color BG title Text(Why Does This Work?, font_size48, colorPRIMARY, weightBOLD, fontMONO) self.add_subcaption(Why does this work?, duration2) self.play(Write(title), run_time1.5) self.wait(1.0) self.play(FadeOut(title), run_time0.5)四个关键模式每个动画都带字幕self.add_subcaption(text, durationN)或直接在self.play()上传subcaptiontextManim 会自动生成.srt字幕文件可读性可及性两全共享颜色常量放在文件顶部保证跨场景一致对应一致视觉语言原则每个场景都设置self.camera.background_color干净的收尾场景结束用self.play(FadeOut(Group(*self.mobjects)))清空所有 mobject。Step 3渲染manim -ql script.py Scene1_Introduction Scene2_CoreConcept # 草稿 manim -qh script.py Scene1_Introduction Scene2_CoreConcept # 成品注意一次可以传多个场景类名Manim 会逐个渲染。Step 4拼接Stitchcat concat.txt EOF file media/videos/script/480p15/Scene1_Introduction.mp4 file media/videos/script/480p15/Scene2_CoreConcept.mp4 EOF ffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4使用-c copy无损拼接避免二次编码损耗。场景路径中的480p15对应-ql档位若用-qh渲染则改为1080p60。Step 5审片Reviewmanim -ql --formatpng -s script.py Scene2_CoreConcept # 预览静帧最后一帧-s只渲染最后一帧、--formatpng输出 PNG 到media/images/script/用于快速检查画面构图、文字可读性和配色一致性。关键实现注意事项Critical Implementation NotesSKILL.md 总结了四条最容易踩坑的实现规则1. LaTeX 必须用原始字符串# WRONG: MathTex(\frac{1}{2}) # RIGHT: MathTex(r\frac{1}{2})2. 贴边文本的 buff 必须 ≥ 0.5label.to_edge(DOWN, buff0.5) # 永远不要小于 0.53. 替换文本前先 FadeOut 旧的self.play(ReplacementTransform(note1, note2)) # 而不是直接在旧文本上 Write(note2)4. 绝不动画化未 add 的 mobjectself.play(Create(circle)) # 必须先 add self.play(circle.animate.set_color(RED)) # 然后才能动画渲染质量档位与性能目标SKILL.md 的 Performance Targets 表给出了三个档位的完整参数与典型渲染耗时质量分辨率FPS速度-ql草稿854x480155-15s/场景-qm中1280x7203015-60s/场景-qh成品1920x10806030-120s/场景工作准则永远在-ql上迭代只在最终输出时用-qh。但要注意 rendering.md 的补充警告-ql480p15的文字渲染字距和可读性明显变差文字密集的场景应在-qm下做预览静帧用-ql只测布局和动画时序。进阶渲染工具rendering.md 还提供了一批开箱即用的进阶能力manim.cfg 项目级配置——消除重复 CLI 参数[CLI] quality low_quality preview True media_dir ./media [renderer] background_color #0D1117 [tex] tex_template_file custom_template.texSections 章节标记——用self.next_section(Introduction)划分长视频章节再用manim --save_sections script.py LongVideo单独重渲染某一部分。GIF 导出ffmpeg -y -i scene.mp4 \ -vf fps15,scale640:-1:flagslanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse \ output.gif自定义纵横比如 9:16 竖屏、1:1 方形manim -ql --resolution 1080,1920 script.py Scene。叙事弧与场景规划scene-planning.md 定义了四种可复用的叙事弧结构Discovery Arc最常用Hook提出问题/惊人结果→ Intuition建立视觉理解→ Formalize引入公式/算法→ Revealaha 时刻→ Extend引申与推广Problem-Solution ArcProblem → Failed attempt → Key insight → Solution → ResultComparison ArcSetup → Approach A → Approach B → Contrast → VerdictBuild-Up Arc架构/系统Component A → Component B → Connection → Scale → Full picture。场景转场有三种Clean Break默认FadeOut 全部 mobject 后 wait 0.3s、Carry-Forward保留一个元素其余淡出下一场景带着它继续、Transform Bridge上一场景以某形状收尾下一场景从变形它开始。每个场景还有一份可勾选的 Scene Checklist背景色已设置、每个动画都有字幕、每次揭示后有self.wait()、贴边文本 buff ≥ 0.5、无文字重叠、使用颜色常量而非硬编码、应用透明度分层、场景结尾干净收场、同时可见元素不超过 5-6 个。视觉设计十二原则与布局模板visual-design.md 把 3Blue1Brown 的画面美学拆解成 12 条可执行原则其中与工程直接相关的有几何先于代数先展示形状后展示公式透明度分层主 1.0 / 上下文 0.4 / 网格 0.15一场景一概念空间一致性同一概念始终占据同一屏幕区域颜色即语义颜色绑定概念而非 mobject——速度是蓝色就一直保持蓝色渐进披露先展示最简版本再逐步增加复杂度变形而非替换用 Transform/ReplacementTransform 展示关联呼吸空间展示新内容后至少self.wait(1.5)视觉重量平衡避免全部挤在一侧一致的动作词汇表选定一小套动画类型反复使用深色背景、亮色内容#1C1C1C到#2D2B55背景对比度最佳刻意留白至少 15% 画面留空。布局模板方面文档提供了六种FULL_CENTER单元素居中适合单个公式/标题卡、LEFT_RIGHT左右对比x-3.5/x3.5、TOP_BOTTOM概念在上、示例在下、GRIDarrange_in_grid()网格、PROGRESSIVE元素逐个出现、向下排列左对齐适合算法与证明、ANNOTATED_DIAGRAM中心图 箭头标注适合架构图。动画与 Mobject 工具箱速查animations.md 与 mobjects.md 提供了完整的 API 速查几个高价值要点动画本质动画是传给self.play()的对象而非函数run_time默认 1 秒重要动画必须显式指定。Transform 家族的关键陷阱Transform(A, B)会原地修改 A——动画之后屏幕上是 A已变成 B 的外观B 不在屏幕上想继续操作 B 就用ReplacementTransform。形状差异大时用FadeTransform交叉淡化Transform会经过丑陋的中间扭曲相似形状圆→椭圆、公式→公式才用 Transform/ReplacementTransform。always_redrawvsadd_updater几何依赖其他动画对象时用always_redraw每帧重建如跟随放大矩形的 Brace简单属性追踪用add_updater更廉价如标签跟随圆点。VGroup 与 Group 的区分VGroup只收 VMobjectCircle、Square、Arrow、Line、MathTex只要组里有Text()对象就必须用Group——Manim CE v0.20 下 VGroup 会抛 TypeError。MathTex/Tex是 VMobject可与 VGroup 混用。文字可读性技巧文字压图时用set_stroke(BLACK, width5, backgroundTrue)加背描边3Blue1Brown 保持文字清晰的标准做法比 BackgroundRectangle 更轻。非线性变换对网格施加apply_complex_function前必须先prepare_for_nonlinear_transform()否则采样点太少、变形边缘呈锯齿状。公式与 LaTeX 深化equations.md 面向公式推导模式的深挖逐步推导Write(step1)→ wait →TransformMatchingTex(step1, step2)这是公式动画的标准节奏多部分公式着色把MathTex拆成多个参数ra^2, r, rb^2再对eq[0]、eq[4]分别set_colorsubstrings_to_isolate复杂公式如拉格朗日量拆子串让 Manim 跟踪独立元素配合set_color_by_tex按子串着色没有隔离时TransformMatchingTex在稠密公式上会匹配失败matched_keys匹配子串有歧义时显式指定要对齐的子串并可用key_map{: -}做符号映射、path_arcPI/2让片段沿弧线飞入矩阵环境MathTex默认加载 amsmath直接支持bmatrix/pmatrix/vmatrix/matrix环境需要逐元素动画则改用IntegerMatrix/DecimalMatrix/MobjectMatrix。配音与语音同步manim-voiceover 插件rendering.md 推荐任何带旁白的视频都应使用官方manim-voiceover插件它能自动把动画时长与语音长度同步比手动 ffmpeg 混流干净得多pip install manim-voiceover[elevenlabs] # ElevenLabs pip install manim-voiceover[gtts] # Google TTS免费、质量较低 pip install manim-voiceover[azure] # Azure 语音服务from manim import * from manim_voiceover import VoiceoverScene from manim_voiceover.services.elevenlabs import ElevenLabsService class NarratedScene(VoiceoverScene): def construct(self): self.set_speech_service(ElevenLabsService( voice_nameAlice, model_ideleven_multilingual_v2 )) # 语音自动控制场景时长 with self.voiceover(textHere is a circle being drawn.) as tracker: self.play(Create(Circle()), run_timetracker.duration)关键能力tracker.duration获取语音总时长tracker.time_until_bookmark(mark1)把特定动画同步到特定词自动生成.srt字幕本地缓存音频重渲染不再重复调用 TTS。用bookmark markcircle/标记实现逐词精确同步with self.voiceover(textThis is a bookmark markcircle/circle.) as tracker: self.wait_until_bookmark(circle) self.play(Create(Circle()), run_timetracker.time_until_bookmark(circle, limit1))手动 ffmpeg 混流方案见 rendering.md 的 Voiceover/BGM 小节仍适用于加背景音乐与后期混音例如volume0.15压低背景乐、amixinputs2:durationshortest混合音轨。创意发散SCAMPER 与假设反转当用户明确要求实验性/创意/非传统输出时SKILL.md 末尾提供了两套思维工具要求在设计动画之前先选定策略并推理SCAMPER 变换——对标准数学/技术可视化做五类改造Substitute替换视觉隐喻数轴→盘旋路径、矩阵→城市网格、Combine合并两种讲解方式代数几何同时呈现、Reverse反向推导从结果出发反推公理、Modify夸大参数揭示其意义10 倍学习率、1000 倍样本量、Eliminate去掉全部符号纯靠动画与空间关系讲解。假设反转——四步法列出该主题的标准可视化惯例从左到右、2D、离散步骤、形式化符号→ 挑出最根本的假设 → 反转它从右到左推导、把 2D 概念嵌入 3D、用连续变形替代离散步骤、零符号讲解→ 探索反转揭示了什么标准做法隐藏的东西。参考文档索引Skill 附带了 14 份按主题分层的参考文档全部位于 references/ 目录文件内容animations.md核心动画、rate function、组合、.animate语法、时序模式mobjects.md文本、形状、VGroup/Group、定位、样式、自定义 mobjectvisual-design.md12 条设计原则、透明度分层、布局模板、调色板equations.mdManim 中的 LaTeX、TransformMatchingTex、推导模式graphs-and-data.md坐标轴、绘图、BarChart、动画数据、算法可视化camera-and-3d.mdMovingCameraScene、ThreeDScene、3D 曲面、相机控制scene-planning.md叙事弧、布局模板、场景转场、规划模板rendering.mdCLI 参考、质量预设、ffmpeg、配音工作流、GIF 导出troubleshooting.mdLaTeX 错误、动画错误、常见失误、调试animation-design-thinking.md何时动画 vs 静态展示、拆解、节奏、旁白同步updaters-and-trackers.mdValueTracker、add_updater、always_redraw、基于时间的 updaterpaper-explainer.md论文转动画——工作流、模板、领域模式decorations.mdSurroundingRectangle、Brace、箭头、DashedLine、Angle、标注生命周期production-quality.md编码前/渲染前/渲染后检查清单、空间布局、颜色、节奏建议按需取用做公式动画读 equations.md做算法可视化读 graphs-and-data.md做 3D 读 camera-and-3d.md排查错误读 troubleshooting.md。在 video-use 项目中的落地方式最后回到仓库语境。video-use 主项目见根目录 SKILL.md把 Manim 定位为四种动画引擎之一与 HyperFrames浏览器原生 HTML/CSS/GSAP、RemotionReact 组件和 PILPNG 序列并列。仓库根目录 SKILL.md 明确写道Manim — formal diagrams, state machines, equation derivations, graph morphs. Readskills/manim-video/SKILL.mdand its references for depth.实际落地时遵循主项目 SKILL.md 的约束Manim 属于首次使用时才安装的按需依赖动画 slot 的构建发生在edit/animations/slot_id/目录内绝不写入 video-use 仓库根目录每个 slot 由并行子智能体独立构建产出render.mp4后由 EDL 的overlays字段指定叠加窗口含 PTS 偏移最终叠加层由渲染管线最后应用。而本 Skill 提供的调色板、动画速度、字幕同步add_subcaption生成 SRT等规范恰好与主项目字幕最后叠加、输出时间线偏移的硬规则互补——Manim 场景内的字幕由 Manim 生成场景间的剪辑由 video-use 渲染管线负责两者通过 EDL 无缝衔接。赞分享AI 技能/插件音视频视频处理人工智能【免费下载链接】video-useEdit videos with coding agents项目地址https://gitcode.com/GitHub_Trending/vid/video-use点击查看免费下载相关推荐用 Manim Community Edition 构建 3Blue1Brown 风格动画视频生产流水线video-use 仓库 manim-video 技能完全指南用 Manim Community Edition 构建 3Blue1Brown 风格动画视频生产流水线video use 仓库 manim video 技能AI 技能/插件音视频视频处理人工智能video-use 的 Manim 动画生产质量检查清单从代码前规划到最终出片的完整质量管控体系video use 的 Manim 动画生产质量检查清单从代码前规划到最终出片的完整质量管控体系 导读 本文围绕 manim video 技能库中的 prodAI 技能/插件音视频视频处理人工智能数据驱动动画实战Manim 图表、图论与矢量场可视化完全指南video-use · manim-video数据驱动动画实战Manim 图表、图论与矢量场可视化完全指南video use · manim video 本指南以 skills/manim videoAI 技能/插件音视频视频处理人工智能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考