/stickman
將一個主題轉變為完全由程式碼生成的成品火柴人電影:平面 2D 角色、黃昏色調、電影風格的鏡頭運動和真實音效。此技能涵蓋四種輸出:影片、旁白腳本、YouTube 標題和縮圖提示。
它可在 Claude 能執行程式碼的任何環境中執行,包括 Claude 免費方案。無需付費工具,也無需使用 AI 圖像或影片工具。ElevenLabs 為選用,僅用於旁白。若無 MP3,此技能會使用免費開源語音(scripts/tts.py,詳見 references/free-voice.md)自行朗讀腳本,因此完全不需要 ElevenLabs 即可製作有旁白的電影。
以下所有內容均相對於此技能所在的資料夾(即包含此檔案的資料夾)。請找出其絕對路徑,並在每個腳本中使用。在 Claude Code 中,此路徑為 ${CLAUDE_SKILL_DIR}。在以下命令中以 SKILL 表示。請使用 python3,在 Windows 上則使用 python。
步驟 1:確定使用者的需求
使用者可能想要完整套件或僅部分內容。只執行被明確要求的項目:
| 要求 | 執行內容 |
|---|---|
| 故事點子 | 執行下方的「故事點子」,然後停止 |
| 製作影片 | 步驟 2-6 |
| 撰寫旁白腳本 | 讀取 references/script-playbook.md,提供腳本,停止 |
| 將腳本轉為旁白 | 讀取 references/free-voice.md,執行 tts.py,提供 vo.mp3,停止 |
| 標題或縮圖 | 讀取 references/packaging-playbook.md,提供配對,停止 |
| 完整套件 | 腳本,然後影片,最後標題和縮圖提示 |
故事點子
如果尚未指定長度,請先詢問影片應多長。然後提供 5 個點子,並編號,讓使用者可以透過編號選擇。每個點子需包含簡短名稱、一句說明劇情發展的簡單句子,以及結局。讓每個點子符合該長度:少於 20 秒表示一個角色和一個簡單轉折。點子必須易於使用 references/engine.md 中的內容進行動畫製作,且每個點子必須是原創的。後續的「製作點子 3」即表示該點子。
步驟 2:建置前先詢問
除非請求已清楚說明,否則請在一次訊息中同時詢問以下問題,若有提問工具則使用之。跳過任何已回答的項目。如果無人可回答,則使用預設值並說明。
- 風格: 2D 或 3D?預設為 2D。兩者使用相同外觀。3D 會增加場景周圍的實際鏡頭移動。
- 長度: 多長?預設為 30 秒。若有 MP3,則由旁白決定長度。
- 旁白: 是或否?如果附有 MP3 則跳過此項。如果是,他們需提供 MP3 及其腳本文字,或要求你為 ElevenLabs 撰寫腳本並帶回 MP3。無需 SRT。或者,當沒有 MP3 時的預設值:免費內建語音會朗讀腳本(無論是他們的還是你撰寫的),因此他們永遠無需離開聊天室。僅在使用者關心情況下詢問使用哪種語音;
references/free-voice.md中有試聽。 - 音效: 是或否?預設為是。
- 背景音樂: 是或否?預設為否。如果是,則使用他們上傳的曲目(若有),否則使用程式碼製作的音樂背景。
- 分鏡表: 是否想先看分鏡表?除非請求已明確說明,否則務必詢問此項。如果無人可回答,則跳過。
不要預設音樂、效果或旁白。安靜的房間環境音不是音樂。
步驟 3:設定環境
python3 SKILL/scripts/doctor.py
python3 SKILL/scripts/new_film.py film # 加上 --3d 可啟用 3D
doctor.py 會安裝任何缺少的元件。如果 Chromium 完全無法執行,請前往「如果無法渲染」。
免費語音: 在規劃之前立即製作,因為語音會決定時間點。將腳本儲存為 film/script.txt,然後執行 python3 SKILL/scripts/tts.py film film/script.txt --voice am_michael,並在 film/audio_mix.py 中設定 VOICE = "vo.wav"。詳情請見 references/free-voice.md。
然後,依序閱讀:
references/style-bible.md:外觀和永不妥協的規則。references/production.md:快速路徑和已知陷阱。references/engine.md:工具包,以便重複使用而非重新繪製。references/film-craft.md:無對白或短片的故事和鏡頭。
同時在相關時閱讀:references/script-playbook.md 用於撰寫腳本,references/free-voice.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,它會寫入一個可播放影片並錄製即時 WebM 的 HTML 檔案。如果完全無法執行任何操作,請說明缺少什麼,並提供腳本、標題和縮圖提示(這些無需渲染)。切勿將 WebM 重新命名為 MP4。
關於原創性的規則
使用者分享的參考影片、標題、縮圖或逐字稿僅供參考一般模式:長度、措辭、結構、節奏。切勿複製或儲存他人作品中的任何具體內容,也切勿重複使用前提、角色、情節、台詞或外觀。每部電影都應有其自己的故事。