/stickman
將一個主題轉化為完全由程式碼渲染完成的火柴人電影:平面 2D 角色、暮色調色板、電影風格的鏡頭運動與真實音效。這個技能涵蓋四種輸出:影片、旁白腳本、YouTube 標題以及縮圖提示。
它可以在任何 Claude 能夠執行程式碼的地方運作,包括 Claude 免費方案。無需付費工具,也不使用任何 AI 圖片或影片工具。ElevenLabs 是選用項目,僅用於旁白。
以下所有內容均相對於此技能所屬的資料夾(即包含此檔案的資料夾)。請在首次使用時找到其絕對路徑,並在每個腳本中使用該路徑。在 Claude Code 中,它為 ${CLAUDE_SKILL_DIR}。在下列指令中稱之為 SKILL。請使用 python3,在 Windows 上使用 python。
步驟 1:釐清需求的內容
使用者可能想要完整套件,或僅需要其中一部分。只執行被要求的項目:
| 請求 | 執行 |
|---|---|
| 故事點子 | 執行底下的「故事點子」,然後停止 |
| 製作影片 | 步驟 2-6 |
| 撰寫旁白腳本 | 閱讀 references/script-playbook.md,交付腳本,然後停止 |
| 標題或縮圖 | 閱讀 references/packaging-playbook.md,交付配對,然後停止 |
| 完整套件 | 先腳本、再影片、最後標題與縮圖提示 |
故事點子
如果尚未指定長度,請先詢問影片應多長。然後提供 5 個點子,並加以編號,以便使用者可以透過編號選擇。每個點子應包含一個簡短名稱、一句描述發生什麼事的情節,以及結局。每個點子都需符合該長度:20 秒以下表示單一角色和一個簡單轉折。點子必須易於使用 references/engine.md 中的內容來製作動畫,且每個點子都必須是原創的。稍後,「製作點子 3」即指該點子。
步驟 2:在開始建構前先詢問
除非請求中已清楚說明,否則請在一則訊息中一起詢問這些問題,如果有的話,請使用提問工具。跳過任何已經回答過的項目。如果沒有人可以回應,請使用預設值並說明。
- 風格: 2D 或 3D?預設 2D。兩者使用相同的外觀。3D 會加入圍繞場景的真實鏡頭移動。
- 長度: 多長?預設 30 秒。如果有 MP3,旁白會決定長度。
- 旁白: 是或否?如果已附加 MP3,則跳過此項。如果是,使用者需提供 MP3 及其腳本文字,或要求你為 ElevenLabs 撰寫腳本並回傳 MP3。不需要 SRT。
- 音效: 是或否?預設是。
- 背景音樂: 是或否?預設否。如果是,如果有上傳的曲目則使用它,否則使用程式碼製作的音樂背景。
- 故事板: 你想先看看故事板嗎?除非請求中已指定,否則務必詢問此項。如果沒有人可以回答,則跳過。
不要假設音樂、音效或旁白。安靜的房間環境音不是音樂。
步驟 3:設定
python3 SKILL/scripts/doctor.py
python3 SKILL/scripts/new_film.py film # 加入 --3d 以使用 3D
doctor.py 會安裝任何缺少的套件。如果 Chromium 完全無法執行,請前往「如果無法渲染」。
然後按順序閱讀:
references/style-bible.md:外觀與絕不違反的規則。references/production.md:快速路徑與已知陷阱。references/engine.md:工具包,以便重複使用而非重新繪製。references/film-craft.md:無對白或短片的敘事與鏡頭。
此外,在相關時閱讀:references/script-playbook.md 以撰寫腳本、references/voiceover.md 以處理 MP3、references/sound.md 以進行混音、references/symbolic-beats.md 用於約一分鐘或更長的影片、references/3d.md 用於 3D。
步驟 4:規劃影片
在編寫任何繪圖程式碼之前先完成這些,因為在程式碼內規劃會產生幻燈片,而非影片:
- 一句讓分心的觀眾也能理解的話。
- 一個節拍表,每個節拍包含動作、感受、鏡頭與音效。
- 一個世界: 所有角色和道具的固定位置清單。每個鏡頭只是該世界上的攝影機。
- 一個鏡頭清單,使用影格數而非秒數。目標是每 30 秒 8-11 個鏡頭,並包含一個展示地理環境的廣角鏡頭。
- 如果被要求製作套件,則需指定縮圖時刻,以便其作為真實場景存在。
如果被要求提供故事板,請在渲染前遵循步驟 5 中的「故事板」。
步驟 5:建構
- 替換
film/film.js,保留引擎檔案。從入門影片中的模式開始。 - 在最繁忙的時刻檢查靜止畫面,並檢視圖片:
python3 SKILL/scripts/stills.py film sheet.jpg 1 4.5 9 ...。通常需要兩輪。 - 故事板(如果被要求)。 執行
python3 SKILL/scripts/storyboard.py film。它會寫入film/storyboard.jpg,每個鏡頭一個編號預覽,由與最終影片相同的程式碼繪製。向使用者展示一個表格,每行對應一個鏡頭(鏡頭、時間、發生什麼事、攝影機、音效),並展示或發送圖片。如果無法在此處顯示圖片,請發送檔案,或僅提供表格並說明。然後停止並等待。根據使用者的要求修改影片,如果改動很大則重新執行故事板,只有在獲得批准後才進行渲染。 - 編輯
film/audio_mix.py中標記的區塊以符合音效簡報。 - 使用一個指令渲染、混音、合併與審核:
python3 SKILL/scripts/build.py film --out my-film.mp4
如果環境限制指令執行時間,請在背景執行此指令並進行輪詢。再次執行相同指令會從中斷處繼續,因為每個鏡頭都是獨立的檔案。修正後,使用 --shots 3 7 僅重新處理那些鏡頭,或使用 --audio-only 重新混音。
步驟 6:檢查,然後交付
build.py 會以審核結果結束。修正每個 ISSUE,或說明為何某個被標記的時刻是預期的。然後檢視 film/contact_sheet.jpg,它來自編碼後的檔案。請用肉眼檢查這些項目,因為審核無法做到:
- 臉部表情應傳達預期的情緒,眉毛不應意外地顯得生氣。
- 手部應接觸到所持物品,且沒有東西越過臉部。
- 每次行走時手臂應以正確方式彎曲。
- 門應先打開,然後角色再走進去。
- 角色在每個鏡頭中與物體的距離保持一致。
- 任何地方都沒有裝飾性圓圈。
交付 MP4 並附上簡短說明。坦白告知你無法聽到混音效果:你已經測量過,因此使用者應自行聆聽。不要聲稱你沒有執行過的檢查。如果使用者要求標題和縮圖,請從包裝手冊中新增配對。
如果無法渲染
如果無法執行程式碼或沒有瀏覽器,請在可行時執行 python3 SKILL/scripts/bundle_player.py film,它會寫入一個 HTML 檔案來播放影片並錄製即時 WebM。如果你完全無法執行任何動作,請說明缺少什麼,並提供腳本、標題和縮圖提示(這些無需渲染)。切勿將 WebM 重新命名為 MP4。
原創性規則
使用者分享的參考影片、標題、縮圖或逐字稿僅用於一般模式:長度、措辭、結構、節奏。切勿複製或儲存他人作品中的任何具體內容,也切勿重複使用前提、角色、情節、台詞或外觀。每部影片都應有自己的故事。