分鏡腳本 (Storyboard) 是做什麼的?
分鏡是一支影片的拍攝計畫與剪輯計畫。完成分鏡後,使用者能從頭到尾閱讀它,依場次拍攝,並將每個鏡頭交給剪輯(或交給 Claude),且清楚知道畫面上有什麼、文字說什麼、聲音是什麼。
保持精簡。 只需鏡頭與場次,不需要弧線圖、鏡頭轉場、品牌套件或核對清單。若使用者需要更多,他們會主動提出。
初次執行:引導設定
在 ~/.claude/storyboard-profile/profile.md 不存在時、技能剛安裝後,或使用者要求設定或重新學習其風格時,執行設定。一次一步引導使用者:用一句話說明這個步驟的目的,執行它,然後在需要詢問的地方停下來等待。保持每則訊息簡短;多數進行此設定的創作者並非開發者。
-
歡迎。 一則簡短訊息:說明技能功能(輸入腳本,每行輸出一個畫面,Claude 再據此建立圖像)以及設定約需五分鐘。接著說明第一件事是需要看看他們的影片。
-
檢查工具。 尋找 Python 3、Google Chrome(或 Chromium / Edge)和
ffmpeg。若使用連結,yt-dlp是加分項。缺少任何工具時,提供一個適用於其系統的安裝指令(例如 Mac 上brew install ffmpeg,Windows 上winget install ffmpeg),並提議代為執行。等 Chrome 和 ffmpeg 都能運作後再繼續。 -
詢問創作者資訊。 一則訊息,每行回答一個問題:他們的暱稱與平台、內容主題、影片通常長度、以及如何結尾(留言關鍵字、追蹤、個人檔案連結)。
-
索取他們的影片。 這是重要步驟,所以要說明原因:他們的分鏡應該像他們的影片,而不是套用模板。要求提供 3 到 5 部最能展現其風格的已發布影片,若他們有製作螢幕錄影或圖形素材,最好包含一部這類影片。他們可以將檔案拖入對話中(會貼上路徑)或貼上連結。若已安裝
yt-dlp,則用它下載連結;若連結無法下載,則要求提供檔案。將所有內容放入~/.claude/storyboard-profile/source/。 -
研究影片。 針對每部影片:
- 畫格:
ffmpeg -i v1.mp4 -vf "fps=1,scale=360:-2" -q:v 4 source/v1_%03d.jpg,然後檢視它們。 - 剪輯點:
ffmpeg -i v1.mp4 -vf "select='gt(scene,0.1)',showinfo" -f null - 2>&1 | grep -o "pts_time:[0-9.]*"會給出剪輯時間點,藉此得知平均鏡頭長度。說話頭像中的跳躍剪輯因畫面變化極小而可能被遺漏,因此需將數量與 1 fps 的畫格數進行比對。 - 口白: 若已安裝
whisper(或其他轉錄工具),則進行轉錄。若未安裝,則從畫格中讀取內嵌字幕,或請他們貼上腳本。
記錄你實際觀察到的情況,而非猜測:鏡頭類型的混合比例(臉部、螢幕、B-roll 各佔多少)、平均鏡頭長度、構圖(中景或特寫、受訪者位置、背景)、前兩秒如何鉤住觀眾、畫面上的文字(字重、大小寫、顏色、強調樣式、位置)、字幕風格、主要色彩、重複出現的圖形或疊加層、音效習慣,以及行動呼籲如何呈現。
- 畫格:
-
挑選他們的臉部靜態圖。 選擇一幀他們對著鏡頭說話、且未內嵌字幕的乾淨畫格,裁切為 9:16 比例(
ffmpeg -ss <t> -i v1.mp4 -frames:v 1 -vf "crop=ih*9/16:ih,scale=540:960" face.jpg),並儲存為~/.claude/storyboard-profile/face.jpg。從此以後,所有臉部鏡頭都使用這張圖。 -
撰寫設定檔。 將
~/.claude/storyboard-profile/profile.md儲存為包含以下區段的檔案:創作者(步驟 3)、鏡頭(類型混合、平均長度、構圖)、鉤子、畫面文字、字幕、色彩、音效、行動呼籲、重複出現的圖形。接著撰寫~/.claude/storyboard-profile/theme.css,覆寫套件的變數以符合他們的視覺風格::root { --ink: #111; --accent: #ff5a1f; --on-accent: #fff; --bg: #f4f1ea; --grid: rgba(0,0,0,.05); --font: "Montserrat", sans-serif; }使用他們已安裝的字型;若找不到,則挑選最接近的已安裝字型。
-
展示給他們看並確認。 建立一個範例畫面(他們的標題樣式疊加在他們的臉部靜態圖上),渲染出來,用三行摘要說明設定檔內容,並詢問哪些地方需要調整。不斷修正直到他們認為看起來像他們的內容為止。
-
交接。 告知他們設定完成以及下一步該做什麼:「貼上腳本並說『幫我製作分鏡』。」如果他們的風格改變,隨時可以重新執行設定。
如果他們想跳過設定,則使用套件的預設外觀進行分鏡,並在最後再次提供設定選項。
格式
每個鏡頭包含:
| 欄位 | 內容 |
|---|---|
type | face(對著鏡頭說話)、split(上方螢幕,下方圓角框內為臉部)、screen(螢幕錄影)、graphic(在剪輯中建立)、b-roll(實景素材) |
vo | 此鏡頭中口白念出的確切腳本文字 |
on_screen_text | 燒錄在畫面中的文字,通常為空白 |
edit_note | 一至兩行:畫面上有什麼、什麼在動、構圖方式 |
sfx | 音效,通常為空白 |
thesis | 只有一個鏡頭設為 true |
status | real(畫面即為素材)、stand-in(顯示意圖)、to-capture(尚未拍攝) |
時間長度根據口白以每秒 3.4 個字計算。切勿手動設定。
場次根據拍攝地點分組:label、detail(需要準備什麼)和 shots(鏡頭編號)。
步驟
-
讀取設定檔並取得腳本。 讀取
~/.claude/storyboard-profile/profile.md並遵循其內容:他們的鏡頭長度、鏡頭類型混合比例、文字風格、行動呼籲。當設定檔與以下預設值衝突時,以設定檔為準。尚無設定檔?先提供設定選項。若腳本不在對話或檔案中,則要求提供腳本,並註明目標長度(若他們未指定,則使用設定檔中慣常的長度)。不要編輯腳本。若某行讀起來有問題,請提出來讓使用者修正。 -
將腳本逐字分割為鏡頭。 合併後,所有
vo欄位的內容必須與腳本完全相同。不要改寫、刪減或添加任何一行。- 在畫面改變的地方切分, 而非在句子結尾。逗號就是很好的切分點。
- 目標為每個鏡頭 2 到 6 秒(7 到 20 個字)。超過約 8 秒就應拆分,除非一個連續的畫面真的需要承載那句台詞。
- 鏡頭 1 必須包含說話者的臉部(使用
face或split鏡頭)。第一秒出現臉部能抓住觀眾注意力。 - 僅標記一個
thesis鏡頭: 這句話點出影片的主題。 - 最後一個鏡頭:說話者的臉部說出行動呼籲。 如有留言關鍵字,它應以口頭說出並存在於字幕中,而非作為畫面上的大型藥丸按鈕。
- 變化鏡頭類型。 連續三個
face鏡頭是不允許的。用face處理主張、題外話和行動呼籲;用screen處理任何正在展示的內容。
-
精簡地填寫欄位。
on_screen_text:鏡頭 1 的標題、列表編號(01 SCRIPT),以及最多一個重點金句。其他位置留空;其餘內容由字幕承載。edit_note:畫面上有什麼、什麼在動、以及構圖(中景或特寫)。隱私提示也放在此處:模糊電子郵件、裁切顯示使用者名稱的檔案路徑。sfx:整支影片中只使用兩到三個音效,僅用於關鍵時機(開場提示音、上線時的撞擊聲)。
-
根據拍攝地點將鏡頭分組為場次, 而非按照鏡頭順序。
- 臉部: 每個臉部鏡頭加上每個分割鏡頭中的臉部部分,構成一個場次。
- 螢幕錄影: 每個應用程式或工具工作階段各一場,全程使用同一個真實專案。
- 離開桌面的拍攝: 僅在需要 B-roll 鏡頭時使用。
detail: 需要準備什麼(開啟哪個專案、要執行什麼、先清除螢幕上的哪些內容)。
-
在使用者的工作目錄中(若有更好的位置請詢問)的
storyboard/<video-slug>/資料夾內撰寫storyboard.json:{ "title": "AI edits my videos", "target_seconds": 50, "shots": [ {"type": "face", "vo": "My last couple of videos were all edited by Claude.", "on_screen_text": "CLAUDE EDITS MY VIDEOS", "edit_note": "Mid shot, headline holds 4s.", "sfx": "", "thesis": false, "status": "to-capture"} ], "sittings": [ {"label": "Face", "detail": "Same shirt and light for every face line.", "shots": [1]} ] } -
為每個鏡頭建立一個畫面(下一節)作為
frames/f01.html、frames/f02.html,依此類推。編號對應鏡頭的順序。 -
渲染:
python3 <this skill's folder>/kit/render.py storyboard/<video-slug>它會使用無頭 Chrome 渲染出 540x960 的
frames/out/fNN.png、一張frames/out/contact-sheet.jpg以及board.html:每個畫面旁邊附有口白、文字、剪輯備註、音效和時間長度,以及場次資訊。它會輸出運行時間以及臉部與螢幕的秒數。 -
檢查聯絡表, 然後修正並重新渲染:確認文字是否疊在臉上、有無重疊、文字是否在安全區域內、以及任何隱私問題。
-
簡短回報: 鏡頭數量、運行時間與目標長度的比較、臉部與螢幕的秒數,以及還有哪些尚未拍攝的內容。為使用者打開
board.html。
畫面
盡可能使用最真實的來源,優先順序如下:
-
真實素材。 鏡頭中真實網站或應用程式的螢幕截圖(使用無頭 Chrome 或 Playwright,桌面版寬度 1440,行動版寬度 390),或從使用者自己的素材中擷取靜態幀(
ffmpeg -ss <time> -i clip.mp4 -frames:v 1 still.jpg)。將圖片放入frames/資料夾,並以檔案名稱參照。 -
自建畫面。 使用 kit/frame-kit.css 中的類別,將畫面撰寫為 HTML body 片段。片段中的
{{face}}會變成frames/face.jpg(若存在),否則變成設定中的臉部靜態圖,再不然則變成中性剪影。設定的theme.css會自動將每個畫面重新設定為他們的色彩和字型。類別 用途 .f畫面容器,永遠是外層元素 .hl頂部的標題,用 <em>包住一個關鍵字.lbl搭配.n+.t編號列表標籤( 01 SCRIPT).face滿版臉部畫面(一個 <img src="{{face}}">).faceboxsplit鏡頭中的臉部框.term一個 Claude Code 終端機( .p提示、.tool工具呼叫、.ok、.dim).chat+.bub+.vid一個代理聊天訊息,可選地包含影片 .shot一個螢幕截圖卡片( <div class="shot"><img src="..."></div>).tbl一個資料表格( .h表頭、.r列、.r.new新的一列).big一個大型重點金句 .room一個帶有說明的 B-roll 佔位符 使用行內
style="top:..px"設定垂直位置。範例片段:<div class="f"> <div class="lbl"><span class="n">01</span><span class="t">SCRIPT</span></div> <div class="term" style="top:200px"> <div class="bar"><i></i><i></i><i></i></div> <div class="p">write me a 45 second script about ...</div> <div class="ok"> ✓ script.md</div> </div> <div class="facebox"><img src="{{face}}"></div> </div> -
當螢幕被無法繞過的登入頁擋住時,使用真實資料模擬。 不要代表使用者登入。使用真實數字建立螢幕,並標記為 stand-in。
畫面規則:
- 安全區域: 將文字保持在底部 20% 和右側 12%(按讚與留言欄)之外,並保持頂部 8% 淨空。套件的位置已經遵循這些規則。
- 他們的標題風格: 遵循設定檔中關於畫面文字的筆記(大小寫、字重、如何強調單字)。預設為粗體大寫,並以
<em>包住一個關鍵字。在滿版臉部畫面上,套件會將文字設為白色並加上柔和的陰影。 - 隱私: 任何畫面中不得出現包含使用者名稱的檔案路徑、電子郵件、API 金鑰或
.env內容。在表格中使用假 ID。
使用分鏡建立影片
分鏡獲得批准後,它本身就成為提示詞。逐一建立圖形素材:「從分鏡建構鏡頭 4,作為 9:16 動態圖形:須符合畫面、畫面文字和剪輯備註。」最初版本永遠不會完全正確;將其放入剪輯中,與畫面進行比對,反覆調整直到吻合為止。