Communitygithub.com

分鏡腳本 (Storyboard)

將短影音腳本逐字拆解為分鏡,生成帶有畫面文字、剪輯備註和音效的 9:16 分鏡圖,並根據拍攝場景分組,產出可在瀏覽器開啟的分鏡板。

分鏡腳本 (Storyboard) 是什麼?

此技能專為創作者設計,可將已完成的最終腳本轉換為詳細的短影音分鏡(適用於 Reels、TikTok、Shorts)。它會逐字分割腳本,為每個鏡頭指定類型(臉部、分割畫面、螢幕錄影、圖形、B-roll)、畫面文字、剪輯備註和音效,並將鏡頭分組為「拍攝場次」(例如:所有臉部鏡頭在同一場、每個 App 的螢幕錄影各一場)。輸出的分鏡資料夾包含 `board.html`(可在瀏覽器中檢視所有鏡頭)、`PNG` 格式的逐格分鏡圖,以及一張聯絡表。這份分鏡也可直接作為提示詞,讓 AI 逐一構建影片圖形素材。首次使用時會引導使用者完成設定,分析他們 3 到 5 部現有影片,建立個人風格設定檔(包括平均鏡頭長度、畫面文字風格、色彩、音效習慣),確保後續所有分鏡都符合其內容調性。支援 Cursor、Claude Code、Codex 等平台,需 Python 3、Chrome/Edge 和 ffmpeg。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Chefy3x/storyboard-skill/tree/main/storyboard

在你喜歡的 AI 中提問

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

預覽

來自技能 README

分鏡腳本 (Storyboard) preview
分鏡腳本 (Storyboard) preview

說明文件

分鏡腳本 (Storyboard) 是做什麼的?

分鏡是一支影片的拍攝計畫與剪輯計畫。完成分鏡後,使用者能從頭到尾閱讀它,依場次拍攝,並將每個鏡頭交給剪輯(或交給 Claude),且清楚知道畫面上有什麼、文字說什麼、聲音是什麼。

保持精簡。 只需鏡頭與場次,不需要弧線圖、鏡頭轉場、品牌套件或核對清單。若使用者需要更多,他們會主動提出。

初次執行:引導設定

在 ~/.claude/storyboard-profile/profile.md 不存在時、技能剛安裝後,或使用者要求設定或重新學習其風格時,執行設定。一次一步引導使用者:用一句話說明這個步驟的目的,執行它,然後在需要詢問的地方停下來等待。保持每則訊息簡短;多數進行此設定的創作者並非開發者。

  1. 歡迎。 一則簡短訊息:說明技能功能(輸入腳本,每行輸出一個畫面,Claude 再據此建立圖像)以及設定約需五分鐘。接著說明第一件事是需要看看他們的影片。

  2. 檢查工具。 尋找 Python 3、Google Chrome(或 Chromium / Edge)和 ffmpeg。若使用連結,yt-dlp 是加分項。缺少任何工具時,提供一個適用於其系統的安裝指令(例如 Mac 上 brew install ffmpeg,Windows 上 winget install ffmpeg),並提議代為執行。等 Chrome 和 ffmpeg 都能運作後再繼續。

  3. 詢問創作者資訊。 一則訊息,每行回答一個問題:他們的暱稱與平台、內容主題、影片通常長度、以及如何結尾(留言關鍵字、追蹤、個人檔案連結)。

  4. 索取他們的影片。 這是重要步驟,所以要說明原因:他們的分鏡應該像他們的影片,而不是套用模板。要求提供 3 到 5 部最能展現其風格的已發布影片,若他們有製作螢幕錄影或圖形素材,最好包含一部這類影片。他們可以將檔案拖入對話中(會貼上路徑)或貼上連結。若已安裝 yt-dlp,則用它下載連結;若連結無法下載,則要求提供檔案。將所有內容放入 ~/.claude/storyboard-profile/source/。

  5. 研究影片。 針對每部影片:

    • 畫格: 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 各佔多少)、平均鏡頭長度、構圖(中景或特寫、受訪者位置、背景)、前兩秒如何鉤住觀眾、畫面上的文字(字重、大小寫、顏色、強調樣式、位置)、字幕風格、主要色彩、重複出現的圖形或疊加層、音效習慣,以及行動呼籲如何呈現。

  6. 挑選他們的臉部靜態圖。 選擇一幀他們對著鏡頭說話、且未內嵌字幕的乾淨畫格,裁切為 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。從此以後,所有臉部鏡頭都使用這張圖。

  7. 撰寫設定檔。 將 ~/.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; }
    

    使用他們已安裝的字型;若找不到,則挑選最接近的已安裝字型。

  8. 展示給他們看並確認。 建立一個範例畫面(他們的標題樣式疊加在他們的臉部靜態圖上),渲染出來,用三行摘要說明設定檔內容,並詢問哪些地方需要調整。不斷修正直到他們認為看起來像他們的內容為止。

  9. 交接。 告知他們設定完成以及下一步該做什麼:「貼上腳本並說『幫我製作分鏡』。」如果他們的風格改變,隨時可以重新執行設定。

如果他們想跳過設定,則使用套件的預設外觀進行分鏡,並在最後再次提供設定選項。

格式

每個鏡頭包含:

欄位內容
typeface(對著鏡頭說話)、split(上方螢幕,下方圓角框內為臉部)、screen(螢幕錄影)、graphic(在剪輯中建立)、b-roll(實景素材)
vo此鏡頭中口白念出的確切腳本文字
on_screen_text燒錄在畫面中的文字,通常為空白
edit_note一至兩行:畫面上有什麼、什麼在動、構圖方式
sfx音效,通常為空白
thesis只有一個鏡頭設為 true
statusreal(畫面即為素材)、stand-in(顯示意圖)、to-capture(尚未拍攝)

時間長度根據口白以每秒 3.4 個字計算。切勿手動設定。

場次根據拍攝地點分組:label、detail(需要準備什麼)和 shots(鏡頭編號)。

步驟

  1. 讀取設定檔並取得腳本。 讀取 ~/.claude/storyboard-profile/profile.md 並遵循其內容:他們的鏡頭長度、鏡頭類型混合比例、文字風格、行動呼籲。當設定檔與以下預設值衝突時,以設定檔為準。尚無設定檔?先提供設定選項。若腳本不在對話或檔案中,則要求提供腳本,並註明目標長度(若他們未指定,則使用設定檔中慣常的長度)。不要編輯腳本。若某行讀起來有問題,請提出來讓使用者修正。

  2. 將腳本逐字分割為鏡頭。 合併後,所有 vo 欄位的內容必須與腳本完全相同。不要改寫、刪減或添加任何一行。

    • 在畫面改變的地方切分, 而非在句子結尾。逗號就是很好的切分點。
    • 目標為每個鏡頭 2 到 6 秒(7 到 20 個字)。超過約 8 秒就應拆分,除非一個連續的畫面真的需要承載那句台詞。
    • 鏡頭 1 必須包含說話者的臉部(使用 face 或 split 鏡頭)。第一秒出現臉部能抓住觀眾注意力。
    • 僅標記一個 thesis 鏡頭: 這句話點出影片的主題。
    • 最後一個鏡頭:說話者的臉部說出行動呼籲。 如有留言關鍵字,它應以口頭說出並存在於字幕中,而非作為畫面上的大型藥丸按鈕。
    • 變化鏡頭類型。 連續三個 face 鏡頭是不允許的。用 face 處理主張、題外話和行動呼籲;用 screen 處理任何正在展示的內容。
  3. 精簡地填寫欄位。

    • on_screen_text:鏡頭 1 的標題、列表編號(01 SCRIPT),以及最多一個重點金句。其他位置留空;其餘內容由字幕承載。
    • edit_note:畫面上有什麼、什麼在動、以及構圖(中景或特寫)。隱私提示也放在此處:模糊電子郵件、裁切顯示使用者名稱的檔案路徑。
    • sfx:整支影片中只使用兩到三個音效,僅用於關鍵時機(開場提示音、上線時的撞擊聲)。
  4. 根據拍攝地點將鏡頭分組為場次, 而非按照鏡頭順序。

    • 臉部: 每個臉部鏡頭加上每個分割鏡頭中的臉部部分,構成一個場次。
    • 螢幕錄影: 每個應用程式或工具工作階段各一場,全程使用同一個真實專案。
    • 離開桌面的拍攝: 僅在需要 B-roll 鏡頭時使用。
    • detail: 需要準備什麼(開啟哪個專案、要執行什麼、先清除螢幕上的哪些內容)。
  5. 在使用者的工作目錄中(若有更好的位置請詢問)的 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]}
      ]
    }
    
  6. 為每個鏡頭建立一個畫面(下一節)作為 frames/f01.html、frames/f02.html,依此類推。編號對應鏡頭的順序。

  7. 渲染:

    python3 <this skill's folder>/kit/render.py storyboard/<video-slug>
    

    它會使用無頭 Chrome 渲染出 540x960 的 frames/out/fNN.png、一張 frames/out/contact-sheet.jpg 以及 board.html:每個畫面旁邊附有口白、文字、剪輯備註、音效和時間長度,以及場次資訊。它會輸出運行時間以及臉部與螢幕的秒數。

  8. 檢查聯絡表, 然後修正並重新渲染:確認文字是否疊在臉上、有無重疊、文字是否在安全區域內、以及任何隱私問題。

  9. 簡短回報: 鏡頭數量、運行時間與目標長度的比較、臉部與螢幕的秒數,以及還有哪些尚未拍攝的內容。為使用者打開 board.html。

畫面

盡可能使用最真實的來源,優先順序如下:

  1. 真實素材。 鏡頭中真實網站或應用程式的螢幕截圖(使用無頭 Chrome 或 Playwright,桌面版寬度 1440,行動版寬度 390),或從使用者自己的素材中擷取靜態幀(ffmpeg -ss <time> -i clip.mp4 -frames:v 1 still.jpg)。將圖片放入 frames/ 資料夾,並以檔案名稱參照。

  2. 自建畫面。 使用 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>
    
  3. 當螢幕被無法繞過的登入頁擋住時,使用真實資料模擬。 不要代表使用者登入。使用真實數字建立螢幕,並標記為 stand-in。

畫面規則:

  • 安全區域: 將文字保持在底部 20% 和右側 12%(按讚與留言欄)之外,並保持頂部 8% 淨空。套件的位置已經遵循這些規則。
  • 他們的標題風格: 遵循設定檔中關於畫面文字的筆記(大小寫、字重、如何強調單字)。預設為粗體大寫,並以 <em> 包住一個關鍵字。在滿版臉部畫面上,套件會將文字設為白色並加上柔和的陰影。
  • 隱私: 任何畫面中不得出現包含使用者名稱的檔案路徑、電子郵件、API 金鑰或 .env 內容。在表格中使用假 ID。

使用分鏡建立影片

分鏡獲得批准後,它本身就成為提示詞。逐一建立圖形素材:「從分鏡建構鏡頭 4,作為 9:16 動態圖形:須符合畫面、畫面文字和剪輯備註。」最初版本永遠不會完全正確;將其放入剪輯中,與畫面進行比對,反覆調整直到吻合為止。

相關技能