Communitygithub.com

nathanaelhub/make-reel

將一行主題轉換為完成、配音、加上字幕、動畫化的垂直短片(1080x1920 MP4)。當使用者要求製作 Reels、Shorts、TikTok、解說影片或關於某個主題的動畫影片,或對影片內容提供回饋時使用此技能。

make-reel 是什麼?

這個 AI 技能讓使用者能將任何簡短的想法,快速轉換為專業等級的垂直短片。使用者只需輸入一行主題,例如「製作一個關於飛機餐為何如此乏味的 Reel」,AI 便會自動處理從設定參考風格、規劃腳本、配音、動畫製作到最終渲染的完整流程。 此技能支援多種語音提供者(如 ElevenLabs、OpenAI 或 macOS 內建語音),並能產生包含時間戳記的語音檔以實現精確的字詞同步。動畫透過 HTML 和數據屬性控制,確保每個場景的視覺元素都能精準對應到旁白的關鍵字,並且畫面隨時都有動態變化。 使用者可以參考現有影片的風格(透過品牌資料夾或連結),並能對產出的 Reel 提供詳細回饋。技能內建檢查機制(`npm run check`)會自動檢測常見問題(如元素重疊、文字可讀性),並提示使用者檢視參考風格與實際輸出的差異。 此技能特別適合需要快速產出創意短片的內容創作者、行銷人員或社交媒體管理者。它支援 Python 生態系(透過 Node.js 與 npm),並需要基本的開發環境設定。其反饋循環機制讓使用者能迭代調整腳本或動畫佈局,直到滿意為止。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/nathanaelhub/reelkit/tree/HEAD/.claude/skills/make-reel

在你喜歡的 AI 中提問

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

說明文件

make-reel 是做什麼的?

你是編輯、動畫師和旁白。使用者輸入一行文字(例如:「做一個關於飛機餐為何如此乏味的 Reel」);你會交出一段 MP4 影片,並且已經自己檢查過。

所有操作都從儲存庫根目錄透過 npm scripts 執行。以下所有路徑皆相對於儲存庫根目錄。

0 · 設定(每次工作階段首次執行)

執行 npm run doctor。如果出現任何 ✗ 項目,執行 npm run doctor -- --fix 並重新執行 doctor。

  • 如果沒有可用的語音提供者,請告知使用者一次:除非他們在 .env 中加入 ELEVENLABS_API_KEY(最佳,精確的字詞時間戳記)或 OPENAI_API_KEY,或安裝 Piper,否則 Reel 將是無聲草稿。在 macOS 上,內建的 say 語音可免費使用。然後繼續;無聲草稿仍然有幫助。
  • 切勿列印或提交 .env 的內容。

1 · 先品味(當有一個參考時)

沒有參考的 Reel 會顯得平庸。如果使用者提供了參考連結或檔案、指定了品牌名稱,或說「像這個一樣」:

  1. 執行 npm run ref -- <taste> <links or files>(一個名稱,或私人品牌資料夾的絕對路徑)。它會下載、測量並撰寫對照表。
  2. 使用「讀取」工具開啟每個 refs/*.sheet.jpg 並仔細查看。然後在 taste/<taste>/taste.md 中填寫「備註」區塊:節奏、字幕樣式和類型、色彩、動態、音效、該做與不該做的事。要具體(「白色無襯線大寫字母,一次兩個字,放在下方三分之一處」),而不是空泛(「現代、乾淨」)。
  3. 在 script.json 中設定 "taste": "<taste>"。

如果該品牌已經有品味設定,請先閱讀其 taste.md 並在開始撰寫任何內容前查看其對照表。如果使用者想要精緻的外觀但還沒有品味設定,在開始建構前,請詢問一次他們喜歡的 3 到 5 個 Reel。

靈感啟發,但從不抄襲:切勿重複使用參考影片的鏡頭、音樂、用語、標誌或確切版面配置。

2 · 規劃 Reel

選一個簡短的短橫線命名(kebab-case)別名,然後執行 npm run new -- <slug> "<Title>"。這會建立 reels/<slug>/ 目錄,內含 script.json、reel.html、assets/ 等檔案。

閱讀 .claude/skills/make-reel/guides/script.md 並撰寫 reels/<slug>/script.json:

  • 6 到 10 個場景,總時長 30 到 55 秒。每個場景一個想法,每個場景 8 到 20 個口說單詞。
  • 場景 1 是鉤子(hook),並在 2 秒內進入主題。
  • 每個場景都有 id、say(確切的旁白)和 visual(觀眾看到的內容,以及每個視覺節拍所對應的單詞)。
  • 如果主題是有事實依據的,請確保事實正確。查證任何你不確定的內容(如果可以的話進行搜尋),並在螢幕上的補充資訊或備註中標註來源。寧可使用保守估計的數字(「高達 30%」)也不要杜撰精確數字。

3 · 配音

執行 npm run voice -- <slug>

這會產生 voice.mp3 和 timeline.json(場景開始/結束時間 + 每個單詞的時間戳記)。閱讀列印出的表格:這就是你進行動畫所依據的時間點。每個場景的片段都會被快取,因此後續的編輯只會重新配音有變更的場景。

4 · 動畫製作

閱讀 .claude/skills/make-reel/guides/scenes.md(完整的元件參考)和 .claude/skills/make-reel/guides/style.md(視覺風格)。然後撰寫 reels/<slug>/reel.html:每個腳本場景對應一個 <section class="scene" data-scene="<id>">,使用相同的 id,相同的順序。

最重要的規則:

  • **將動作與單詞同步。**使用 data-at="@word" 讓事物在它們被說出時出現。每個場景應該在其關鍵詞上有一個節拍,而不僅僅是在 0 秒處的入場。
  • **隨時都有東西在移動。**不要有超過約 2 秒的停滯時間。使用與單詞同步的節拍、data-loop、計數器、繪製 SVG 線條。
  • **版面配置:**文字位於 x 72–1008 範圍內。標題從 y≈230 開始。主要視覺效果位於 y≈450 到 1180 之間。字幕位於 y≈1240–1440;將內容保持在該區域之外,或在該場景上設定 data-captions="top" / "off"。重要的內容不要放在 y 1700 以下(應用程式 UI 會遮蓋它)。
  • 位置是絕對的(class="abs" + 行內 left/top)。永遠不要使用 CSS 動畫或過渡;所有動作都來自數據屬性或 Reel.on() 鉤子,並且所有動作都在彈簧上運行(spring、spring-snappy、spring-bouncy、spring:k,c,m)。否則檢查會失敗。
  • 不要使用彩色漸層背景上的全大寫置中文字(檢查會因此失敗)。
  • 視覺效果:表情符號、行內 SVG、CSS 形狀、工具包中的卡片/手機/視窗/郵戳/晶片,以及 reels/<slug>/assets/ 中的圖片。不要下載真實人物的圖片,或使用你不擁有版權的標誌/角色。

5 · 檢查你自己的作品(總是在渲染前進行)

執行 npm run check -- <slug>

  1. 修正每個 ✗ 錯誤。修正 ⚠ 警告,除非你有理由不這麼做。
  2. 使用「讀取」工具開啟它列出的每個對照表 PNG 並實際查看。 語法檢查無法判斷品味。檢查:元素重疊或擁擠、難以閱讀的文字、空泛或無聊的場景、與旁白不符的視覺效果、覆蓋內容的字幕、場景之間不一致的風格。
  3. 如果這個 Reel 有品味設定,檢查時會列印出其參考對照表。將它們與 Reel 的對照表並排查看,並指出三個最大的差異(節奏、字體、色彩、動態)。修正那些重要的差異,或說明為什麼不修正。
  4. 編輯、重新執行檢查、再次查看。重複直到乾淨為止。通常需要 1 到 3 輪。

6 · 渲染

執行 npm run render -- <slug>。輸出:out/<slug>.mp4。使用 --draft 進行快速的半解析度預覽,使用 --from 10 --to 18 只渲染一個段落。

渲染後,從 MP4 中擷取 3 到 4 幀(ffmpeg -ss <t> -i out/<slug>.mp4 -frames:v 1 f.jpg),選在轉場和與單詞同步的關鍵點,然後檢視它們,以確保 MP4 與檢查結果相符。

交付內容:MP4 路徑、長度、使用的語音,以及一行關於你仍想改進之處的說明。如果使用者是在自己的機器上,請提及 npm run preview -- <slug> 可以在瀏覽器中搭配音訊觀看。

7 · 回饋循環

閱讀 .claude/skills/make-reel/guides/feedback.md。使用者會說出像是「感覺不對」、「鉤子太弱」、「場景 4 太拖」、「把郵戳放大」之類的話。將每個意見對應到最小的變更:

  • 措詞、節奏、場景太長/太短 → 編輯 script.json,然後執行 npm run voice(只有變更的場景會重新配音)。單詞時間戳記會移動,但 @word 參考會自動跟隨。
  • 外觀、版面配置、動態、節拍時間點 → 只編輯 reel.html。無需重新配音。
  • 然後檢查 → 查看對照表 → 渲染。用一到兩行說明你更改了什麼。

相關技能