Communitygithub.com

MuhammadaliNazarov/claude-video-skills

使用 Manim Community Edition 製作數學與技術動畫的生產流程。可產出 3Blue1Brown 風格的解說影片、演算法視覺化、方程式推導、架構圖與資料故事。

claude-video-skills 是什麼?

這個技能提供一個完整的製作流程,用於建立高品質的數學與技術動畫,特別適合需要 3Blue1Brown 風格的解說影片、演算法視覺化、方程式推導、系統架構圖以及資料故事等場景。它基於 Manim Community Edition,並強調在編寫任何程式碼之前,必須先規劃好敘事弧線與視覺語言,以確保每個畫面都具有教育意義。此技能支援多種模式,包括概念解說、方程式推導、演算法視覺化與資料故事,並提供詳細的設計原則,例如非對稱佈局、分層不透明度、統一的調色盤與動畫速度參考,以確保視覺呈現的一致性與專業感。工作流程從規劃(plan.md)開始,接著編寫可獨立渲染的場景程式碼(script.py),然後使用 Manim 進行渲染,最後透過 ffmpeg 拼接成最終影片,並可選擇加入配音。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/MuhammadaliNazarov/claude-video-skills/tree/HEAD/skills/video-editor/engine/skills/manim-video

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Manim 影片製作流程

創意標準

這是教育電影。每一幀都在教學,每一個動畫都在揭示結構。

在寫任何一行程式碼之前,先釐清敘事弧線。這個動畫要修正什麼錯誤觀念?「頓悟時刻」在哪裡?什麼樣的視覺故事能帶領觀眾從困惑走向理解?使用者的提示只是起點——請以教學的雄心去解讀它。

先幾何,後代數。 先展示形狀,再寫方程式。視覺記憶的編碼速度快於符號記憶。當觀眾在公式出現之前先看到幾何模式時,這個方程式才顯得有道理。

首次渲染品質不容妥協。 輸出必須在視覺上清晰且美學上協調,不需要反覆修改。如果看起來雜亂、節奏不佳,或像是「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 腳本。不需要瀏覽器、Node.js 或 GPU。

層級工具用途
核心Manim Community Edition場景渲染、動畫引擎
數學LaTeX(texlive/MiKTeX)透過 MathTex 渲染方程式
視訊 I/Offmpeg場景拼接、格式轉換、音訊混流
TTSElevenLabs / Qwen3-TTS(可選)旁白配音

流程

規劃 --> 編碼 --> 渲染 --> 拼接 --> 音訊(可選)--> 審查
  1. 規劃 — 撰寫 plan.md,包含敘事弧線、場景列表、視覺元素、調色盤、旁白腳本
  2. 編碼 — 撰寫 script.py,每個場景對應一個類別,每個類別可獨立渲染
  3. 渲染 — 草稿使用 manim -ql script.py Scene1 Scene2 ...,正式版使用 -qh
  4. 拼接 — 使用 ffmpeg 將場景片段串接成 final.mp4
  5. 音訊(可選)— 透過 ffmpeg 加入旁白及/或背景音樂。請參閱 references/rendering.md
  6. 審查 — 渲染預覽靜態圖,對照規劃檢查,進行調整

專案結構

project-name/
  plan.md                # 敘事弧線、場景拆解
  script.py              # 所有場景集中在一個檔案
  concat.txt             # ffmpeg 場景列表
  final.mp4              # 拼接後的最終輸出
  media/                 # Manim 自動生成
    videos/script/480p15/

創意方向

調色盤

調色盤背景色主色次要色強調色適用場景
經典 3B1B#1C1C1C#58C4DD(藍)#83C167(綠)#FFFF00(黃)一般數學/資訊科學
溫暖學術#2D2B55#FF6B6B#FFD93D#6BCB77平易近人
霓虹科技#0A0A0A#00F5FF#FF00FF#39FF14系統、架構
單色極簡#1A1A2E#EAEAEA#888888#FFFFFF極簡風格

動畫速度

情境run_time後續 self.wait()
標題/開場出現1.5 秒1.0 秒
關鍵方程式揭示2.0 秒2.0 秒
轉換/變形1.5 秒1.5 秒
輔助標籤0.8 秒0.5 秒
淡出清理0.5 秒0.3 秒
「頓悟時刻」揭示2.5 秒3.0 秒

排版字體大小

角色字體大小用途
標題48場景標題、開場文字
標題36場景內段落標題
主體30解說文字
標籤24註解、軸標籤
圖說20字幕、細則

字型

所有文字都使用等寬字型。 Manim 的 Pango 渲染器在等寬字型以外的比例字型上,所有尺寸都會產生壞掉的字距。完整建議請參閱 references/visual-design.md。

MONO = "Menlo"  # 在檔案頂部定義一次

Text("Fourier Series", font_size=48, font=MONO, weight=BOLD)  # 標題
Text("n=1: sin(x)", font_size=20, font=MONO)                  # 標籤
MathTex(r"\nabla L")                                            # 數學(使用 LaTeX)

可讀性的最小 font_size=18。

每個場景的變化

永遠不要對所有場景使用完全相同的設定。對於每個場景:

  • 從調色盤中選取不同的主色
  • 不同的佈局 — 不要總是把所有東西置中
  • 不同的動畫入場方式 — 在 Write、FadeIn、GrowFromCenter、Create 之間變換
  • 不同的視覺重量 — 有些場景密集,有些稀疏

工作流程

步驟 1:規劃(plan.md)

在任何程式碼之前,撰寫 plan.md。完整的範本請參閱 references/scene-planning.md。

步驟 2:編碼(script.py)

每個場景一個類別。每個場景都可獨立渲染。

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:self.play(FadeOut(Group(*self.mobjects)))

步驟 3:渲染

manim -ql script.py Scene1_Introduction Scene2_CoreConcept  # 草稿
manim -qh script.py Scene1_Introduction Scene2_CoreConcept  # 正式版

步驟 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  # 預覽靜態圖

關鍵實作注意事項

LaTeX 的原始字串

# 錯誤:MathTex("\frac{1}{2}")
# 正確:
MathTex(r"\frac{1}{2}")

邊緣文字的 buff 需大於等於 0.5

label.to_edge(DOWN, buff=0.5)  # 切勿小於 0.5

取代文字前先淡出

self.play(ReplacementTransform(note1, note2))  # 而不是直接在 note2 上使用 Write

切勿對未加入的 Mobject 進行動畫

self.play(Create(circle))  # 必須先加入
self.play(circle.animate.set_color(RED))  # 然後才能動畫

效能目標

品質解析度FPS速度
-ql(草稿)854x480155-15 秒/場景
-qm(中等)1280x7203015-60 秒/場景
-qh(正式版)1920x10806030-120 秒/場景

始終在 -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何時使用動畫 vs 靜態顯示、分解、節奏、旁白同步
references/updaters-and-trackers.mdValueTracker、add_updater、always_redraw、基於時間的 updater、模式
references/paper-explainer.md將研究論文轉為動畫——工作流程、範本、領域模式
references/decorations.mdSurroundingRectangle、Brace、箭頭、DashedLine、Angle、註解生命週期
references/production-quality.md編碼前、渲染前、渲染後檢查清單、空間佈局、色彩、節奏

創意變體(僅在使用者要求實驗性/創意性/獨特輸出時使用)

如果使用者要求創意性、實驗性或非傳統的解說方法,請在設計動畫之前選擇一種策略並進行推理。

  • SCAMPER — 當使用者希望對標準解說進行新的詮釋時
  • 假設反轉 — 當使用者希望挑戰某個主題的傳統教學方式時

SCAMPER 轉換

對標準的數學/技術視覺化進行轉換:

  • 替代:替換標準的視覺隱喻(數線 → 蜿蜒路徑,矩陣 → 城市網格)
  • 結合:合併兩種解說方法(代數 + 幾何同時進行)
  • 反向:逆向推導——從結果開始,解構回公理
  • 修改:誇大某個參數以顯示其重要性(10 倍的學習率、1000 倍的樣本數)
  • 消除:移除所有符號——僅透過動畫和空間關係進行解釋

假設反轉

  1. 列出關於這個主題通常如何被視覺化的「標準」做法(從左到右、2D、離散步驟、正式符號)
  2. 選取最根本的假設
  3. 反轉它(從右到左推導、將 2D 概念嵌入 3D、以連續變形取代步驟、完全零符號)
  4. 探索這個反轉揭示了哪些標準做法所隱藏的東西

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

MuhammadaliNazarov/claude-video-skills

The user's CINEMATIC editing skill, separate from the everyday video-editor. Use only when the user wants something more cinematic, artistic, filmic, moody or "like Gawx" — a personal documentary, a travel film, a making-of, a story Reel with a film look — or says creative, cinematic, film look, moody, aesthetic, short film, Gawx. Low-key red/teal film grade (Cine_Gawx LUT), grain, halation, vignette, framed 4:5 / 1.37:1 / 2.39:1 pictures, small red chapter cards, music-led montage bursts, object close-ups, bookend storytelling with the meaning said out loud. For normal talking-head Reels with one-word captions use video-editor instead.

MuhammadaliNazarov/claude-video-skills

The user's scriptwriting and storytelling skill for short-form video (Instagram Reels first, also TikTok, Shorts, YouTube hooks). Writes hooks, full spoken scripts, on-screen text scripts, captions, B-roll shot lists and CTAs, using proven viral format families (Advice, Opinion, Relatable, Storytelling, Easy-to-use), story structures (normal → explosion → new normal; stakes → big question → head fake → re-hook; the Kallaway hook → lock-in → body/re-hook format; but/therefore) and current platform research. Use whenever the user asks to write, plan, brainstorm, fix or rate a script, hook, caption, video idea, content calendar, story, or "what should I post", or says script, hook, idea, format, storytelling, caption, CTA, or "make this go viral".

MuhammadaliNazarov/claude-video-skills

The user's one video editing skill. Edit any video by conversation, from raw footage to a finished file. Instagram Reels / vertical 9:16 (the default; the user mainly posts on Instagram), YouTube 16:9 hooks and long form, and anything else (montage, travel, interview, tutorial, screen recordings). Transcribes with ElevenLabs Scribe, cuts retakes and dead air, colour grades with cinematic LUTs (including Apple Log), adds word-timed captions (one word at a time in red/white or red/black by default; yellow and documentary styles too), split-explainer layouts learned from reference Reels, HyperFrames motion graphics, punch-ins, B-roll, free sound effects, music beds, and renders locally. Use whenever the user drops footage, names a video file, or says edit, cut, Reel, Instagram, YouTube, captions, subtitles, grade, LUT, Apple Log, animate, overlay, highlight this screen recording, or render.

相關技能