Communitygithub.com

yem-hjk6th/explainer-kit

製作簡短、可驗證的數學/電腦視覺/機器學習解說影片(運算動畫 + 字幕,可選翻譯版本、旁白稿與 TTS 配音),使用本 repo 中的 animkit 函式庫。

explainer-kit 是什麼?

這個技能提供了一個完整的解說影片製作流程,專為數學、電腦視覺與機器學習主題設計。它不僅產出動畫,更強調內容的**可驗證性**與**精確性**,遵循嚴格的風格指南與校驗機制。使用者只要提供主題與來源素材,AI 就會引導完成從研究、分鏡、素材腳本、合成到審查的完整管線。最終產出清晰、附帶字幕與可選旁白的運算動畫影片,非常適合用來解釋論文機制或複雜概念。支援 Claude Code 等 AI 代理程式,並透過明確的檢核點(如獨立的驗證回合、@shot.check 斷言)確保每個畫面上的數字與事實都有出處且經過驗證。工作目錄結構標準化,並提供多種範本與參考文件,讓開發者能快速上手並確保產出品質。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yem-hjk6th/explainer-kit/tree/HEAD/.claude/skills/explainer-video

在你喜歡的 AI 中提問

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

說明文件

解說影片

你要製作特定觀眾能理解且正確的解說影片。結果由兩件事決定: references/STYLE.md 中的規則(來自真實審查意見)以及計算與檢查每個顯示數字的習慣。渲染是最簡單的部分。

Repo 地圖:函式庫 animkit/(API 參考 animkit/README.md)、工具 tools/、範例 examples/、兩個完成的 單集 episodes_example/(複製其分鏡與鏡頭格式;CLAIMS 格式在 references/VERIFY.md 中),你的工作在 episodes/<ID>_<topic>/ 下進行。

0. 開始之前

  1. 環境是否正常?python -I -B -X utf8 tools/selftest.py 必須輸出 all OK。如果缺少 config/animkit.json,請執行 python -X utf8 tools/setup_config.py(設定檔是每次檢出時獨立:新的 clone 或 git worktree 需要重新設定,或設定 ANIMKIT_CONFIG)。問題請參考:SETUP.md。
  2. 只詢問使用者你無法預設的項目(一則訊息,簡短):
    • 主題與來源資料(講義、論文、網頁);每個說法都需要來源;
    • 觀眾以及他們已經知道的內容(決定深度,references/STORYBOARD.md §觀眾期望);
    • 長度;是否需要翻譯版本 / 旁白 / 配音?
    • 是否允許執行真實模型(GPU,下載)?預設:否,使用已知 ground truth 的合成場景。
    • 若未回答的預設值:1080×1440,30 fps,僅字幕,無配音,預定一輪審查。
  3. 建立 episodes/<ID>_<topic>/ 目錄,包含 STATUS.md(階段 / 下一步 / 等待 / 時間,使用 date 指令)。

1. 管線(詳細資訊與指令:references/PIPELINE.md)

階段你產出進入下一階段的閘門
A. 研究來源摘要;可選的參考影片分解(references/REFERENCES.md)你能將機制表述為:輸入 → 公式 → 形狀 → 小數值範例 → 原因
B. 分鏡storyboard.md、CLAIMS_to_verify.md、episode.json(+ 若函式庫缺少某元件則需要 elements_needed.md)長單集的使用者確認大綱;完成獨立驗證第一輪並套用修正 (references/VERIFY.md)
C. 鏡頭shots/sNN_*.py,每個都包含 @shot.check--check-only 通過;檢查連續畫面;完整渲染;修正 check.json 中的警告
D. 組合render/<ID>.mp4 (tools/concat.py)、review/round1/review.html (tools/review_page.py)你已仔細檢查每個鏡頭的連續畫面;螢幕上的數字 = CLAIMS
E. 審查回合review/roundN/feedback.md(使用者的筆記)、review/roundN+1/changes.md、重新渲染每項回饋都有回應;新的 CLAIMS 已驗證(每項目最多 2 輪)
F. 可選翻譯版本 (references/I18N.md)、旁白 (references/NARRATION.md)、配音 (references/TTS.md)每個都有各自的檢查

直接用影片的語言編寫鏡頭(範例為英文):字幕、標題與標籤在腳本中為純文字字串。--lang 僅用於第二個翻譯版本。

微路徑(≤ 60 秒,1–3 個鏡頭)。 相同階段,但較輕量。episodes/<ID>_<topic>/ 中的最小檔案清單:

  1. storyboard.md:一個表格,每個字幕一行(時間範圍、字幕、螢幕上的變化、計算或說明性質)。骨架:templates/storyboard_skeleton.md。
  2. CLAIMS_to_verify.md:螢幕上每個數字/事實一行(說法、來源、如何檢查、測量/計算/推斷/論文)。
  3. 從 templates/shot_template.py 建立 shots/s01_<name>.py,並加入 @shot.check 來斷言每個以字串形式顯示的計算數字。
  4. 驗證:一個新的獨立子代理,搭配 templates/verifier_prompt.md,範圍為所有 CLAIMS 行;套用其修正(舊文字標示刪除線)。
  5. 渲染:--check-only → --sheet-only(檢視 sheet.jpg)→ 完整渲染。
  6. 僅在有 2 個以上鏡頭時才需要 episode.json + tools/concat.py;使用 tools/review_page.py <EP> --round 1 產生審查頁面(一輪)。不要跳過說法表格、@shot.check 或連續畫面的檢查。

2. 不可違反的規則

  • 每個可計算的視覺元素都必須被計算(投影、注意力權重、重塑、反投影、擬合線條)並在 @shot.check 中斷言,包括顯示的字串:ck.eq("depth on screen", f"{z:.3f}", "1.976")。從完整精度格式化;絕不重新四捨五入已列印的值。說明性視覺元素需加上 shot.tag("Illustration");降維的圖示必須說明。
  • 每個數字都有來源(論文 § / 表格 / 方程式、官方程式碼檔案 + 行號,或我們自己的腳本),記錄在 CLAIMS_to_verify.md 中,標記為 測量 / 計算 / 推斷 / 論文。比較必須說明指標、單位,以及較低或較高哪個更好;百分比必須說明其分母。
  • 每個符號在出現處都必須定義,每次出現時;觀眾可能不知道的術語,需要使用彈出式側視窗 (animkit.Popup) 簡短說明後關閉。
  • 一個字幕 = 一個視覺變化,不超過 12 個字且不超出畫面寬度(渲染時會發出警告;在 42 px 字型大小下,通常每行約 8 個較長的單詞,最多 2 行),停留 2–3 秒,不允許靜止畫面。
  • 先放圖片,再放公式,逐項點亮公式,每個術語使用顏色標記或連結到圖片的對應部分。
  • 我們自己的測試必須標示為我們的(不是論文的實驗),第一次出現時標示,之後每次出現使用相同標籤。
  • 獨立驗證:撰寫某個說法的人不得驗證該說法;修正視為一個新的說法;最多兩輪,之後照字面套用並進行抽查。舊文字以刪除線標示(~~舊文字~~ → 新文字),絕不無聲刪除。
  • 翻譯或旁白中不得有虛構的事實:它們只能陳述經過驗證的字幕 / CLAIMS 的內容。
  • 完整檢查清單:references/STYLE.md(§A 內容, §B 節奏, §C 視覺文法, §D 交付前, §E 成為規則的審查者回饋)。在撰寫分鏡前閱讀,並在每個審查回合前再次閱讀。

3. 工作風格

  • 閱讀 animkit/README.md 中你需要的 API 章節(內容很長:先用 grep 搜尋元素,再閱讀該部分)。從 episodes_example/ 中最接近的鏡頭複製模式,而不是自行發明排版。templates/shot_template.py 是一個最小完整的鏡頭範本。
  • 使用 --still t1 t2(PNG 畫面)和 --sheet-only(12 幀連續畫面)迭代鏡頭;最後才做完整渲染。每次都要自己檢查連續畫面(重疊、文字超出畫布、方框 = 缺少字型、字幕壓在圖片上)。靜止畫面不會被後續渲染更新:每次編輯後都要重新執行 --still。
  • 3D 場景:animkit/README.md §3D 場景(PinholeCam, OrbitCam 方位角/仰角慣例:az=90, el=0 是側視圖)。2D 圖示例如針孔側視圖:§2D 側視圖(使用等比例的 Plot2D)。
  • 以 python -I -B -X utf8 執行 Python;絕不在另一個工作階段正在渲染時編輯函式庫檔案 (references/PITFALLS.md)。
  • 保持 STATUS.md 簡短且即時;在 effort_log.csv 中記錄工作量 (item,size,start,end,render_s,iterations,note)。
  • 長單集或許多鏡頭:按照 references/DISPATCH.md 將工作分攤到多個工作階段/子代理(主工作階段約 300k 上下文預算,一次性子代理 ≤ 150k,切換前使用交接檔案)。

4. 交付

告知使用者:影片路徑、審查頁面路徑(review/roundN/review.html,可在瀏覽器中開啟;它提供每個鏡頭的評論框和「複製全部」按鈕)、哪些是計算出的 vs 說明性的、驗證了哪些內容以及由誰驗證、未解決的問題。當使用者的筆記回來時,逐字儲存為 review/roundN/feedback.md(每行一個鏡頭 ID,例如 E03-02: ...),逐項回覆,並將任何一般性偏好轉換為你的單集本地規則的新的一行(附加到 episodes/ 中的 STYLE_local.md),以便下一集從該規則開始。

參考索引

檔案何時閱讀
references/PIPELINE.md開始時;階段指令、檔案格式、閘門
references/STYLE.md撰寫分鏡時;每次審查回合前
references/STORYBOARD.md階段 B:觀眾深度、分鏡 + CLAIMS 格式、故事模式
references/REFERENCES.md研究參考影片 / 來源論文時
references/VERIFY.md + templates/verifier_prompt.md建立 CLAIMS 後、模型執行後、旁白/翻譯後
references/REVIEW.md階段 D–E:審查頁面、回饋檔案、回合
references/I18N.md為英文單集製作翻譯版本時 (--lang)
references/NARRATION.md為每個視覺片段製作口述腳本時
references/TTS.md本地 TTS 配音、時間校準、混音時
references/DISPATCH.md多工作階段/子代理工作、成本、共享機器禮儀
references/PITFALLS.md某個環節出錯時;修改函式庫前
templates/工作階段和子代理的提示、骨架檔案、一個鏡頭範本

相關技能