Hadi Got Motion 是做什麼的?
一個內建於技能的動態工作室:12 種運動風格,每種都有自己獨特的移動方式,以及一個品味標竿。 每一幀都建立在真實素材之上:檔案照片與印刷品、真實字體、真實數據、真實錄音。程式碼負責剪輯、鉸鏈、計時與打光;程式碼從不繪製藝術作品。品味標竿是 Mr Pemberton's Mistake,一部來自維多利亞時代版畫的剪紙鬧劇(請參閱 references/case-pemberton.md)。
所有操作皆透過一個指令 hgm 執行(此處為 scripts/hgm;執行 hgm install 後,它將加入 PATH)。每個 hgm 指令都會印出簡短摘要,並將詳細資訊寫入檔案,讓 Token 用於品味,而非管線。開始前請務必閱讀下方的 Token 預算章節;這是工藝的一部分,而非事後才想到的事。
工作順序:工具檢查 → 簡報選擇器 → 估算 → 設定 → 導演 → 語音 → 素材 → 動畫 → 審查 → 交付。 在簡報與設定完成之前,絕不開始建構。
要繼續製作一部影片? 請閱讀專案的 HANDOFF.md 並在專案目錄內執行 hgm state。不要重新閱讀技能的參考資料、舊影片或整個影片檔案。
0–1 · 工具檢查與簡報選擇器(一次對話)
- 不要詢問也無需解釋。執行
bash <此 skill 資料夾>/scripts/hgm picker,若已提及任何內容,則加上--title "…" --duration 45 --concept "…"參數。對read_me呼叫一次["elicitation"]視覺化,然後使用完全照印出的載入器字串來執行show_widget。 - 回傳行格式為
Motion graphic details — Tools: … · Title: … · Duration seconds: … · Pacing: 1–5 · Concept: … · Motion style: … · …。僅概念為必填:無標題則自行命名;無時長則設為 30 秒;無節奏則設為 3;無地圖外觀或不需地圖。 - 若有任何遺漏且使用者未選擇「Not now」,則在背景啟動
hgm install。 - 空白 widget、無 widget 工具、上傳的腳本或跳過表單:請參閱
references/setup.md。
2 · 時間估算(緊接在答案之後)
執行 hgm estimate --answers "<答案行,原文不動>"。用一兩句話提供其前兩行,然後開始。無需等待確認。
「讓 Claude 決定」:從頭到尾,不問問題
當風格為「讓 Claude 決定」(或「你決定」、「給我驚喜」,或表單被跳過)時:
- 不再詢問任何問題。像導演一樣決定一切:最能服務概念的風格、節奏(除非概念明確需要平靜或狂亂,否則設為 3)、僅在故事穿越真實地點時才使用地圖、僅在剪紙鬧劇或紙偶劇中使用行走、角色與語音、腳本,以及來自檔案館的圖片(僅在已連線時才使用 ChatGPT)。
- 重新執行
hgm estimate --style <id> --duration <s> --pace <1-5> --script write|have|none,並用兩行告訴使用者你選擇了什麼、為什麼,以及需要多久時間。 - 唯一無法跳過的步驟是 ElevenLabs 登入(如果需要語音且尚未連線)。如果無法完成,則製作一部配樂與文字影片。
3 · 設定(在任何建構前完成)
如有需要則執行 hgm install,然後執行 hgm new <slug> --style <id> --pace <1-5>(id 列表:cutout-farce, kinetic-editorial, kinetic-swiss, editorial-collage, period-print, paper-theatre, real-maps, stat-hits, footage-led, silent-film, title-sequence, object-diorama),接著執行 hgm doctor。ElevenLabs 登入(hgm connect-voice)與 ChatGPT 圖片連線(hgm connect-images)在 references/setup.md 中有精確用語;請逐字遵循,且絕不處理金鑰。全部綠燈 → 用一行話說 「Setup done」。
4 · 導演方向
hgm ref <style-id>會一次性印出此風格所需的一切:styles.md中其對應章節、其運動語言、所有風格下的共同規則,以及taste.md(品味標竿與反 AI 外觀檢查清單)。不要打開整個參考檔案。- 事實需要研究,絕不臆測。 如果影片陳述事實(歷史、科學、人物、數字、「如果…會怎樣」),則在撰寫任何腳本之前,由子代理將其研究至
FACTS.md:hgm ref research。腳本僅來自已確認的事實;戲劇張力來自真實的細節。 - 未提供腳本: 在一則訊息中提出 3 個概念(一個處於某情境的角色、一個 1.5 秒的鉤子、一個升級到結局)並自行刪除最安全的那個。在「讓 Claude 決定」模式下,不要提案:直接選擇最強的並開始執行。每 30 秒的字數由節奏決定(
pacing.json中的words30:節奏 1 為 50 字,節奏 3 為 66 字,節奏 5 為 82 字)。以結局台詞作結。 - 規劃場景。 在
BRIEF.md中撰寫場景計畫:每個場景一行,包含其時間範圍、地點及變化方式。除非故事需要單一場景,否則世界會根據節奏的scenery秒數而改變。在同一背景上增加新道具不算變化(請參閱 taste.md 中的「Scenery」)。 - 鎖定世界觀 在
BRIEF.md中設定五條規則:調色盤(2–3 種顏色,每個節拍加一個強調色)、印刷或線條、紋理(一種顆粒感)、光線、字體(一個系列)。
5 · 語音:語音是時鐘(若無旁白則跳過)
hgm voices --list→ 將角色分配寫入audio/cast.json→ 建立audio/script.json(text透過 [audio tags] 承載表演指令,caption為螢幕上顯示的乾淨文字,gap_after為動作留出空間)。hgm voice-all會印出一行摘要以及任何 ✗ 行(完整記錄在review/voice.log中)。使用skip_start、caption或hgm voices <id>來修復 ✗ 行。詳細資訊:hgm ref elevenlabs。
6 · 素材:優先線上搜尋,其次 ChatGPT
- 將機械部分委派給子代理(Agent 工具,
model: "sonnet"):提供其視覺清單、BRIEF 世界規則以及指令hgm assets <key> "query" …(圖片)和hgm assets --audio <key> "query"(音效)。它會針對每個 key 回傳前 3 個候選項目,所有結果整合成一個組合工作表與一個簡短文字清單。你以縮圖檢視該工作表並選擇;然後hgm pick <key>:<n>:<name>(你或子代理)會下載並記錄來源。來源資訊:hgm ref sources。 - 僅當檔案館無法提供時,才使用 ChatGPT(
hgm img inbox/<name>.png "<提示詞>"或提示詞包):請參閱hgm ref imagegen。 - 地圖:
hgm map-data …然後hgm map-reel:請參閱hgm ref maps。絕不繪製或猜測地理資訊。 - 剪裁與裝配 在
assets/build_assets.py中進行(hgm grid、hgm zoom、hgm cut、hgm explode;配方請見hgm ref cutout-farce-recipe)。子代理可以進行座標讀取與剪裁;你只需檢查單一的explode工作表。
7 · 動畫
- 建構在
<slug>.mjs(脚手架)中。hgm api會列出每個輔助函式及其簽名:使用它而非閱讀脚手架或舊影片。保留時間軸輔助函式;取代 DEMO 區塊。 - 一個狀態物件,使用
at(sec, {key: [from, to]}, dur, ease)。每個動作都有一個音效提示;字幕與文字對齊。at()會根據節奏縮放每個持續時間(PC.k);使用PC.shot與PC.scenery進行剪輯與場景變換。hgm voice-all會套用該節奏的說書人速度與間隙。 - 以該風格的移動方式移動(其幀率、是否以雙幀或三幀步進、其緩動函數、鏡頭、轉場)。脚手架已套用設定檔。切勿為每種風格都使用相同的平滑緩入緩出:這種千篇一律正是 AI 的破綻。
- 行走動作屬於剪紙鬧劇(以及紙偶劇的跳躍與滑行):
walk(style, t, {facing}),hgm ref walks,hgm walks觀看示範。 - 一次寫好影片檔案,然後透過小幅編輯來修改。切勿為了更改一個場景而重寫整個檔案。
- 需要避免的陷阱:在首次建構前參閱
hgm ref traps。
8 · 審查:看起來要像設計師(這是值得花費 Token 的地方)
hgm stills 0,1,3,6,10,...(12–18 個時間點,包含動作中間幀)會寫入review/contact.jpg。檢視一次,並根據品味檢查清單進行判斷:第 0、1、3 和 10 秒是否有鉤子;每個節拍是否有一個主角;沒有東西遮住臉;沒有東西只是「存在」;場景是否按計畫改變,或者連續的幀是否共享同一個背景?有沒有人會猜這是 AI 製作的?- 一次修復所有發現的問題,然後只針對更改過的時刻再次
hgm stills。只縮放(hgm zoom)到你正在判斷的單一事物。
9 · 建構與交付
hgm build(渲染、混音、封裝;在背景執行),然後hgm frames 0.2,<mid>,<end>並從最終 MP4 檔案中查看這些幀。hgm cover <t>會製作一個無文字的純封面。- 發送 MP4 與封面(SendUserFile)。說明長度、與簡報相比的任何更改,以及你無法驗證的項目(Claude 無法聽音:混音是透過電平與時間碼檢查的)。
- 保持
CREDITS.md完整。回饋意見要精確:精準套用那些修改,重新檢查那些幀,重新建構。
Token 預算
根據前三部影片(Pemberton 338 輪、Hyderabad 116 輪、Wright brothers 72 輪)測量:每一輪都會重新讀取整個對話,因此成本是輪數乘以上下文大小。對話開始時大約有 90K Token,之後才會開始任何實際操作。螢幕截圖、工作表或 cat 命令會留在上下文中,並在後續每一輪中重新計費。因此:
- 減少輪數。 將獨立的指令批次處理為一個工具呼叫(
hgm stills … && hgm frames …)。規劃好修復清單,然後一次套用。 - 輸出要小。 使用
hgm指令,而不是對參考資料、舊影片或記錄檔使用cat、ls或sed。hgm ref、hgm api與hgm state只會印出需要的內容。絕不印出 JSON、完整的語音清單兩次,或影片檔案本身。將長時間工具輸出重導向到檔案,並使用tail -3查看。 - 圖片要小,數量要少。 每輪審查使用一張合成圖;220 像素的幀已足夠判斷。絕不讀取原始靜止幀、原始下載檔或全尺寸幀;改為縮放至裁切區域。
- 機械性工作使用子代理(
model: "sonnet"):素材搜尋與下載、剪裁與裝配檢查、渲染、來源記錄。它們會回傳一個簡短清單和一張工作表。保留主要模型用於概念、腳本、風格、選擇以及設計師的審查。 - 在上下文變得太重之前交接。 當上下文約達 200K Token(或視窗的 40%,以先發生者為準;大約 50 次工具呼叫)時,完成當前步驟,執行
hgm handoff,填寫其「Next」行,然後告訴使用者:「在一個新的對話中繼續:continue <slug>。」 一個新對話會從 HANDOFF.md 與hgm state恢復,大約只需 5K Token。
| 階段 | 主對話輪數 | 可能增加的上下文 |
|---|---|---|
| 選擇器 + 估算 | ≤ 4 | ≤ 8K(視覺化指南佔大部分) |
| 設定 | ≤ 3 | ≤ 2K |
| 研究(子代理寫入 FACTS.md) | ≤ 2 | ≤ 3K(你閱讀 FACTS.md,絕不讀搜尋結果) |
方向(+ hgm ref) | ≤ 6 | ≤ 12K |
| 語音 | ≤ 4 | ≤ 4K |
| 素材(子代理進行搜尋) | ≤ 6 | ≤ 10K(一個組合工作表 + 一個 explode 工作表) |
| 動畫(影片僅寫一次) | ≤ 8 | ≤ 25K(你寫入的影片檔案) |
| 審查(≤ 4 張合成圖) | ≤ 12 | ≤ 12K |
| 建構 + 交付 | ≤ 4 | ≤ 4K |
| 整部影片 | ≤ 50 | 結束時低於 ~180K |
在概念、風格選擇與設計師審查上盡情花費。它們成就了影片;預算應來自管線,絕不來自外觀審視。
不可協商事項
- 語音: 僅限 ElevenLabs。
- 圖片: 優先使用檔案館;需要時才用 ChatGPT 圖片。絕不使用 Higgsfield。無 AI 影片。絕不使用程式碼繪製角色、插圖或標誌。
- 引擎: canvas + anime.js + FFmpeg。僅在真正需要 3D 時使用 three.js;僅在構想需要物理光線時使用 Blender。
- 來源記錄與金鑰: 為每個來源註明出處。絕不在請求中包含使用者的電子郵件或個人資料。絕不印出金鑰。