mcpField
M
manim-video

manim-video

github.com/nousresearchクリエイティブ・メディア258.1k457 回インストール今日更新
リポジトリ

manim-video について

Manim Community Editionで教育アニメーションや解説動画を制作するワークフローです。数学、アルゴリズム、データ、システム、研究内容の可視化を想定し、シーン計画、レンダリング、結合、任意の音声追加までを扱います。

主な機能

  1. 01ストーリー展開とシーン構成の計画
  2. 02数式、アルゴリズム、データ、システムのアニメーション化
  3. 03Manim Community Editionでのシーン描画
  4. 04ffmpegによるクリップ結合
  5. 05任意のナレーションや音楽の追加
  6. 06計画に沿ったプレビュー画像の確認

活用シーン

  1. 01数学の概念を視覚的に説明
  2. 02アルゴリズムの動作を段階的に表示
  3. 03指標を動きのあるデータストーリーにする
  4. 04研究成果やシステム構成を紹介

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nousresearch/hermes-agent --skill manim-video

インストール後、Claude Code で/manim-videoを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
references/
animation-design-thinking.md
animations.md
camera-and-3d.md
decorations.md
equations.md
graphs-and-data.md
mobjects.md
paper-explainer.md
production-quality.md
rendering.md
scene-planning.md
troubleshooting.md
updaters-and-trackers.md
visual-design.md
scripts/
setup.sh

詳細

Manim 動画制作パイプライン

使用する場面

アニメーションによる解説、数学のアニメーション、概念の視覚化、アルゴリズムのウォークスルー、技術解説、3Blue1Brown スタイルの動画、または幾何学・数学的な内容を扱うプログラムによるアニメーションをユーザーが求めた場合に使用します。Manim Community Edition を使って、3Blue1Brown スタイルの解説動画、アルゴリズムの視覚化、方程式の導出、アーキテクチャ図、データストーリーを作成します。

クリエイティブ基準

これは教育映画です。すべてのフレームが学びにつながります。すべてのアニメーションが構造を明らかにします。

コードを一行でも書く前に、物語の流れを明確にしてください。どのような誤解を解消しますか?「なるほど」と思う瞬間はどこですか?どのような視覚的な物語で、視聴者を混乱から理解へと導きますか?ユーザーのプロンプトは出発点にすぎません。教育的な意欲をもって解釈してください。

代数より幾何を先に。 まず形を見せ、次に方程式を示します。視覚的な記憶は記号的な記憶よりも速く定着します。視聴者が公式より先に幾何学的なパターンを見ることで、方程式に納得感が生まれます。

初回レンダリングの品質は妥協できません。 修正を重ねなくても、出力は視覚的にわかりやすく、まとまりのある美しさを備えている必要があります。ごちゃついていたり、タイミングが悪かったり、「AI が作ったスライド」のように見えたりする場合は、誤りです。

不透明度のレイヤーで注目を誘導します。 すべてを最大輝度で表示してはいけません。主要な要素は 1.0、文脈を補足する要素は 0.4、構造を示す要素(軸、グリッド)は 0.15 にします。脳は視覚的な目立ちやすさをレイヤーごとに処理します。

余白を確保します。 すべてのアニメーションの後に self.wait() を入れてください。視聴者には、表示された内容を理解する時間が必要です。アニメーションから次のアニメーションへ急いで移ってはいけません。重要な発見を示した後の 2 秒間の間は、決して無駄ではありません。

一貫したビジュアル言語。 すべてのシーンで、カラーパレット、統一されたタイポグラフィのサイズ、そろったアニメーション速度を使用してください。技術的には正しくても、各シーンで無作為に異なる色を使う動画は、美的に失敗しています。

前提条件

scripts/setup.sh を実行して、すべての依存関係を確認してください。必要なもの:Python 3.10 以上、Manim Community Edition v0.20 以上(pip install manim)、LaTeX(Linux では texlive-full、macOS では mactex)、および ffmpeg。リファレンスドキュメントは Manim CE v0.20.1 でテストされています。

モード

モード入力出力リファレンス
概念解説トピック/概念幾何学的な直感を伴うアニメーション解説references/scene-planning.md
方程式の導出数式段階を追ったアニメーションによる証明references/equations.md
アルゴリズムの視覚化アルゴリズムの説明データ構造を用いた段階的な実行references/graphs-and-data.md
データストーリーデータ/指標アニメーション付きのグラフ、比較、カウンターreferences/graphs-and-data.md
アーキテクチャ図システムの説明接続を伴うコンポーネントの組み立てreferences/mobjects.md
論文の解説研究論文重要な発見と手法のアニメーションreferences/scene-planning.md
3D 視覚化3D の概念回転する曲面、媒介変数曲線、空間幾何references/camera-and-3d.md

スタック

プロジェクトごとに Python スクリプトを 1 つ使用します。ブラウザーも Node.js も GPU も必要ありません。

レイヤーツール用途
コアManim Community Editionシーンのレンダリング、アニメーションエンジン
数学LaTeX(texlive/MiKTeX)MathTex による方程式のレンダリング
動画 I/Offmpegシーンの結合、形式変換、音声の多重化
TTSElevenLabs/Qwen3-TTS(任意)ナレーションの音声収録

パイプライン

PLAN --> CODE --> RENDER --> STITCH --> AUDIO (optional) --> REVIEW
  1. 計画 — ストーリー展開、シーン一覧、視覚要素、カラーパレット、ナレーション台本を含む plan.md を作成します
  2. コーディング — 各シーンにつき1つのクラスを含み、それぞれを個別にレンダリングできる script.py を作成します
  3. レンダリング — 下書きには manim -ql script.py Scene1 Scene2 ...、本番には -qh を実行します
  4. 結合 — ffmpeg でシーンクリップを結合し、final.mp4 を作成します
  5. 音声(任意)— ffmpeg でナレーションや BGM を追加します。references/rendering.md を参照してください
  6. レビュー — プレビュー画像をレンダリングし、計画と照合して調整します

プロジェクト構成

project-name/
  plan.md                # Narrative arc, scene breakdown
  script.py              # All scenes in one file
  concat.txt             # ffmpeg scene list
  final.mp4              # Stitched output
  media/                 # Auto-generated by Manim
    videos/script/480p15/

クリエイティブディレクション

カラーパレット
パレット背景プライマリセカンダリアクセント用途
クラシック 3B1B#1C1C1C#58C4DD (BLUE)#83C167 (GREEN)#FFFF00 (YELLOW)一般的な数学/CS
温かみのある学術調#2D2B55#FF6B6B#FFD93D#6BCB77親しみやすさ
ネオンテック#0A0A0A#00F5FF#FF00FF#39FF14システム、アーキテクチャ
モノクローム#1A1A2E#EAEAEA#888888#FFFFFFミニマリスト
アニメーション速度
コンテキストrun_time後続の self.wait()
タイトル/イントロの表示1.5s1.0s
重要な数式の表示2.0s2.0s
変形/モーフィング1.5s1.5s
補足ラベル0.8s0.5s
FadeOut によるクリーンアップ0.5s0.3s
「なるほど」の瞬間の表示2.5s3.0s
タイポグラフィのサイズ
役割フォントサイズ用途
タイトル48シーンタイトル、冒頭のテキスト
見出し36シーン内のセクション見出し
本文30説明テキスト
ラベル24注釈、軸ラベル
キャプション20字幕、注記
フォント

すべてのテキストに等幅フォントを使用してください。 Manim の Pango レンダラーでは、プロポーショナルフォントを使うと、どのサイズでもカーニングが崩れます。詳しい推奨事項は references/visual-design.md を参照してください。

MONO = "Menlo"  # define once at top of file

Text("Fourier Series", font_size=48, font=MONO, weight=BOLD)  # titles
Text("n=1: sin(x)", font_size=20, font=MONO)                  # labels
MathTex(r"\nabla L")                                            # math (uses LaTeX)

読みやすさを確保するため、font_size=18 以上にしてください。

シーンごとの変化

すべてのシーンで同じ設定を使わないでください。各シーンで以下を変えます。

  • 異なる支配色をパレットから選ぶ
  • 異なるレイアウトにする — すべてを常に中央に配置しない
  • 異なるアニメーションの導入方法にする — Write、FadeIn、GrowFromCenter、Create を使い分ける
  • 異なる視覚的密度にする — 情報量の多いシーンと、少ないシーンを設ける

ワークフロー

ステップ 1:計画(plan.md)

コードを書く前に、plan.md を作成します。包括的なテンプレートについては references/scene-planning.md を参照してください。

ステップ 2:コーディング(script.py)

シーンごとに1つのクラスを作成します。各シーンは個別にレンダリングできます。

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_size=48, color=PRIMARY, weight=BOLD, font=MONO)
        self.add_subcaption("Why does this work?", duration=2)
        self.play(Write(title), run_time=1.5)
        self.wait(1.0)
        self.play(FadeOut(title), run_time=0.5)

主なパターン:

  • すべてのアニメーションに字幕を付けます:self.add_subcaption("text", duration=N) または self.play() の subcaption="text"
  • シーン間で一貫性を保つため、ファイルの先頭に共有カラー定数を定義します
  • すべてのシーンで self.camera.background_color を設定します
  • 終了時にクリーンアップします — シーンの最後にすべての mobject を FadeOut します:self.play(FadeOut(Group(*self.mobjects)))
ステップ 3:レンダリング
manim -ql script.py Scene1_Introduction Scene2_CoreConcept  # draft
manim -qh script.py Scene1_Introduction Scene2_CoreConcept  # production
ステップ 4:結合
cat > 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
ステップ 5:レビュー
manim -ql --format=png -s script.py Scene2_CoreConcept  # preview still

実装上の重要事項

LaTeX には raw 文字列を使用
# WRONG: MathTex("\frac{1}{2}")
# RIGHT:
MathTex(r"\frac{1}{2}")
画面端のテキストでは buff >= 0.5 にする
label.to_edge(DOWN, buff=0.5)  # never < 0.5
テキストを置き換える前に FadeOut する
self.play(ReplacementTransform(note1, note2))  # not Write(note2) on top
追加されていない mobject をアニメーションしない
self.play(Create(circle))  # must add first
self.play(circle.animate.set_color(RED))  # then animate

パフォーマンス目標

品質解像度FPS所要時間
-ql(下書き)854x480155-15s/シーン
-qm(中画質)1280x7203015-60s/シーン
-qh(本番)1920x10806030-120s/シーン

常に -ql で反復作業を行ってください。最終出力の場合にのみ -qh でレンダリングします。

参考資料

ファイル内容
references/animations.md基本的なアニメーション、レート関数、合成、.animate 構文、タイミングパターン
references/mobjects.mdテキスト、図形、VGroup/Group、配置、スタイル設定、カスタム mobject
references/visual-design.md12 のデザイン原則、不透明度のレイヤリング、レイアウトテンプレート、カラーパレット
references/equations.mdManim での LaTeX、TransformMatchingTex、導出パターン
references/graphs-and-data.md軸、グラフ描画、BarChart、アニメーション付きデータ、アルゴリズムの可視化
references/camera-and-3d.mdMovingCameraScene、ThreeDScene、3D サーフェス、カメラ制御
references/scene-planning.md物語の展開、レイアウトテンプレート、シーン遷移、計画テンプレート
references/rendering.mdCLI リファレンス、品質プリセット、ffmpeg、ボイスオーバーのワークフロー、GIF のエクスポート
references/troubleshooting.mdLaTeX エラー、アニメーションエラー、よくある間違い、デバッグ
references/animation-design-thinking.mdアニメーションと静止表示の使い分け、分解、ペース配分、ナレーションとの同期
references/updaters-and-trackers.mdValueTracker、add_updater、always_redraw、時間ベースのアップデーター、パターン
references/paper-explainer.md研究論文をアニメーションにする — ワークフロー、テンプレート、分野ごとのパターン
references/decorations.mdSurroundingRectangle、Brace、矢印、DashedLine、Angle、注釈のライフサイクル
references/production-quality.mdコーディング前、レンダリング前、レンダリング後のチェックリスト、空間レイアウト、色、テンポ

クリエイティブな発想の転換(実験的/創造的/独自の出力をユーザーが求めている場合のみ使用)

ユーザーが創造的、実験的、または型破りな説明方法を求めている場合は、アニメーションを設計する前に戦略を選び、その考え方を整理してください。

  • SCAMPER — 標準的な説明に新たな視点を加えたい場合
  • 前提の逆転 — 何かが通常どのように教えられるかに疑問を投げかけたい場合
SCAMPER による変換

標準的な数学/技術の可視化を、次のように変換します。

  • 置き換える:標準的な視覚的メタファーを置き換えます(数直線 → うねる道、行列 → 街区)
  • 組み合わせる:2 つの説明方法を統合します(代数的手法と幾何学的手法を同時に使う)
  • 逆転する:逆向きに導出します — 結果から始め、公理へと分解します
  • 変更する:パラメーターを極端に変えて、その重要性を示します(学習率を10倍にする、サンプル数を1000倍にする)
  • 取り除く:すべての記法を取り除きます — アニメーションと空間的な関係だけで説明します
前提の逆転
  1. このトピックの可視化で「標準」とされる要素を列挙します(左から右、2D、離散ステップ、形式的な記法)
  2. 最も根本的な前提を選びます
  3. それを逆転させます(右から左への導出、2D の概念を3Dに埋め込む、ステップの代わりに連続的に変形させる、記法をゼロにする)
  4. 逆転によって、標準的な方法では隠れている何が明らかになるかを探ります

コメント