Communitygithub.com

NaxFur/duo-sketch-reel

製作一部 9:16 比例的雙角喜劇短片(30-45 秒,英文),包含兩位 3D 角色 — 眼鏡宅(刺蝟頭、眼鏡、連帽衫)與 Claude(書桌上的橘色低多邊形小機器人)— 全部透過 Blender 從一份 storyboard.json 渲染完成。

duo-sketch-reel 是什麼?

這是一套專門為開發者與 AI 代理(如 Claude Code、Cursor、Codex)設計的技能,用於自動化產出「Nerd + Claude」雙角喜劇短片的完整工作流程。使用者只需提供一個 `storyboard.json` 檔案(描述場景、對白、鏡頭與時序),便可透過 pipeline 從頭到尾完成:主題發想、事實查證、腳本撰寫、草稿配音(macOS 內建語音)、ElevenLabs 高品質音軌、Whisper 語音比對檢查、Blender EEVEE 最終渲染、封面圖生成以及品質保證報告。輸出為 9:16 格式的 MP4 影片,適合社群媒體 Reels。核心特色在於「一個 episode 就是一份資料夾 + JSON」,不產生任何圖片或影片中間檔案;所有 Blender 場景、角色、燈光、攝影機、螢幕疊加、配樂與音效皆由程式自動生成。支援 macOS(完整功能)與其他平台(可跳過 `--say` 草稿步驟),並已內建兩個範例可在 `examples/` 找到。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/NaxFur/reel-studio/tree/main/skills/duo-sketch-reel

在你喜歡的 AI 中提問

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

說明文件

雙角喜劇短片(Nerd + Claude)

一部 3D 短劇,描述 Nerd 慌張而 Claude(橘色機器人)面無表情地回答。一切都是 程序化的 Blender:場景、兩個骨架、表演、燈光、攝影機、螢幕、疊加、配樂和音效,全部建構自 每集一個檔案 storyboard.json。新的一集只是數據,不是程式碼。不使用任何圖片或影片生成。

一集是一個資料夾:<任何名稱>/<YYYY-MM-DD>_<slug>/,內含 storyboard.json 和 research.md。流程 會將所有其他內容寫入該資料夾(assets/、project/、renders/、final.mp4、cover.png、qa/)。\n儲存庫的 examples/ 中有兩集完成的範例:複製一份作為起點。

工作流程(依序進行,不可跳過)

  1. 主題(5 分鐘)。一個開發者 / AI 相關的真實痛苦點和一個開發者今天就能使用的祕訣。笑點應圍繞 觀眾如何與他們的 AI 互動,而非工具本身。規則與點子庫:references/retention.md。
  2. 研究 → research.md:螢幕上出現 / 語音中提及 / 字幕中的每一項事實,都需附上 URL + 查證日期, 且必須來自第一手來源(官方文件、README、原始碼)。劇本中虛構的故事片段(時間、數量、人名)需另闢 「虛構」章節。若無法查證則捨棄並註明原因。
  3. 腳本 + 分鏡 → storyboard.json(複製一份範例並改寫)。結構與詞彙請參考:references/storyboard.md。 目標長度 30-40 秒,10-14 句台詞,第一詞 ≤ 0.5 秒,每 1.5-3 秒一個剪輯,Nerd 開場,Claude 結尾, 最後一幀切回第一幀。
  4. 草稿配音(macOS):pipeline.sh <集數> --say stills(系統語音,無需額外授權)。觀看 renders/stills/sheet.jpg(每個拍點結束時的靜止畫面)。修正構圖 / 疊加碰撞,重新執行。 若無 macOS?跳過 --say:先錄製或生成音軌(步驟 5),再執行 stills。
  5. 配音。每句台詞一個音檔,存放於 assets/audio/dialogue_raw/<拍點ID>.mp3(例如 L01.mp3、...)。 參考集數使用 ElevenLabs eleven_v4 搭配兩個圖書館語音 — Nerd = "Quinn - Soft Nerd Boy", Claude = "Sarcastic Nigel" — 並在每個拍點的 tts 中加入語音標籤(例如 [deadpan] It was ugly.)。 若在 Claude 中使用 ElevenLabs 連接器:先估算一句台詞(約每個字元 1 個點數,含標籤), 再逐句生成,並從其 content_url 下載每段音軌。一集 11-14 句台詞約需 700-900 點數。 您也可以自行錄製:檔案名稱相同即可。
  6. 實際建置 + 靜止畫面:pipeline.sh <集數> stills。project/whisper_check.txt 會列出每句腳本與 聽寫結果的比對(比率 < 0.8 表示需聽一遍確認)。配音長度會比草稿長:再次檢查靜止畫面表。
  7. 最終版本:pipeline.sh <集數> final(16 個樣本、3 個工作程序,M 系列 Mac 上約每幀 3 秒: 一部 38 秒短片約需 1 小時;可在背景執行)。它會渲染 final.mp4、B 鉤子變體 final_b.mp4、 cover.png,並執行 qa.py → qa/report.md(必須顯示「Blocking: none」)。

嚴格規則

  • 角色:不可重新設計 Nerd 或 Claude(engine/scene/nerd.py、mascot.py)。Claude 沒有嘴巴: 它透過身體擠壓、彈跳、眼睛和手臂來「說話」。
  • 短劇可虛構故事(這是喜劇),但絕對不能虛構產品功能、數字、基準或引述。
  • 笑點道具(印章、鑰匙、勾勾)應比該詞所說明的畫面早 0.2-0.3 秒出現,絕不可落在最後一個詞上。
  • 先做草稿配音,再做付費語音;先做靜止畫面,再做最終渲染。

檔案

  • pipeline.sh <集數> [--say] [build|stills|draft|final]
  • engine/scene/ Blender 端:build_scene.py(進入點)、animate.py(根據分鏡表控制表演 / 燈光 / 攝影機)、 env.py 場景、nerd.py、mascot.py、lights.py、tl.py(錨點,與腳本共用)。
  • engine/scripts/:build_timeline.py(音軌 → 時間軸 + Whisper 文字 + 嘴型同步)、make_screens.py (螢幕模板)、make_overlay.py(掛鉤、字幕、項目、標題卡、captions.srt)、 make_audio.py + synth.py(配樂 / 音效)、master_audio.py(-14 LUFS)、stills.py、draft.sh、 render_final.sh、encode.sh、make_cover.py、cover_title.py、qa.py、make_textures.py。
  • 工具與路徑(環境變數,macOS 預設值):BLENDER(Blender 5.x 二進位檔)、 DUO_PYTHON(一個包含 numpy、scipy、soundfile、pillow 的 Python;預設 ~/.venvs/duo-reel/bin/python)、 WHISPER_MODEL(whisper.cpp 模型,預設 ~/whisper-models/ggml-medium.en.bin)、whisper-cli 及 ffmpeg 需在 PATH 中、字型 DUO_FONT_DISPLAY / DUO_FONT_MONO / DUO_FONT_SANS / DUO_FONT_EMOJI。
  • references/storyboard.md(結構、所有預設)、references/retention.md(掛鉤 / 結構 / 主題)、 references/lessons.md(曾經出錯的案例)。

相關技能