從頭到尾製作一部影片
一本 runbook:列出「下一步該做什麼」,按順序排列,並附上每條規則背後可能發生的失敗情況,方便你與規則討論,而不是盲目服從。每個主題的順序都相同;但 模式 會改變。
0 · 選擇模式
在開始任何其他工作之前先決定模式,並將其記錄在影片的 STATUS.md 中的 mode: 欄位。這會影響參考資料的來源以及畫面的構成。
螢幕教學 tutorial | 插圖解說 illustrated | 混合模式 hybrid | 動態解說 motion | |
|---|---|---|---|---|
| 教學內容 | 如何使用應用程式或工具 | 概念:病理學、生理學、任何科學 | 概念,然後是應用該概念的工具 | 新聞事件、意外或案例及其教訓 |
| 步驟 3 | 應用程式的偵察擷取 | 參考資料研究:圖譜、顯微鏡照片、實物 | 兩者皆有,按節拍進行 | 附來源的事實表(每個畫面上的數字都需引用來源) |
| 步驟 9 | 最終擷取 | 無 | 僅限應用程式的節拍 | 無 |
| 畫面 | 應用程式畫面,根據擷取的參考資料建構 | 繪圖,透過 remotion-whiteboard | 每個節拍使用各自類型的畫面 | 排版、地圖、報紙版面、儀錶板,透過 remotion-motion-explainer |
motion 模式不會取代其他模式:任何 繪製 的內容(筆、手、一筆一劃的圖案)仍然屬於 illustrated 模式,並且仍然透過 remotion-whiteboard 處理。motion 模式的關卡 2 是由擁有者批准帶有臨時字幕的無聲預覽。
根據觀眾必須看到的內容來選擇,而不是根據習慣。 如果沒有任何節拍需要真實的介面,就選擇插圖模式。在沒有模式的情況下,曾經有一個病理學的基準被送去擷取一個從未顯示過的應用程式畫面。
順序,以及為什麼是這個順序
0 選擇模式 教學、插圖或混合模式;以及風格
1 決定作品 角度、觀眾、一個核心概念
2 驗證主張 在撰寫任何腳本之前
3 參考資料 擷取應用程式畫面,或研究要繪製的內容
4 腳本 然後進行 lint 檢查
5 ── 關卡 1 ── 在花費任何心力進行錄製之前,讓真人閱讀腳本
5a 分鏡圖 插圖模式:每個節拍一張圖片,根據提示詞觸發事件
5b 關鍵影格 ── 關卡 2 ── 擁有者批准靜態圖稿的外觀
6 錄製旁白 sarvam-tts.py:使用克隆語音,每個節拍錄製一次
7 主音檔 針對發布目標進行處理
8 測量 → 時間格 → 對應文字 錄製結果決定所有時間點,精確到每個詞
9 最終擷取 教學與混合模式:腳本要求的精確流程
10 建構 工具包(插圖模式)或應用程式畫面(教學模式),依照時間格
10b 音效 根據畫面添加音效、背景音樂,並在語音下降低音量
11 視覺 QA 檢查、一個焦點、填滿畫面、事件間距、2 秒規則表、無聲審查
12 渲染
13 發布 中繼資料、章節、上傳、排程
語音優先於畫面。 錄音是時鐘:每個節拍、動畫和剪輯都是根據 測量過的 音訊來放置,然後根據每個詞的轉錄時間。在整份腳本中,字數預估曾出現 25% 的誤差,每個詞的中位數時間誤差為 1.3 秒。請參閱 references/mistakes.md。
擷取兩次(教學、混合模式):在腳本之前進行偵察,這樣腳本就只會承諾應用程式能做到的事;在流程確定之後進行最終錄製。
一次只專注一個焦點。 按照閱讀順序,一次只繪製或書寫一個地方:筆記、圖片、標籤,然後是指標。影片必須在靜音模式下也能教學:focus-check.py 會進行測量,由一個全新的 agent 在無聲狀態下觀看影片進行測試(09-motion.md、11-visual-qa.md)。
兩個人工關卡。 關卡 1,腳本:修改成本低,錄製成本高。關卡 2,外觀:在每個節拍建構之前,先看關鍵影格的靜態圖稿;如果沒有這個關卡,v2 版本就在空白的暗色背景上製作了文字。
先確認自己在哪裡:在影片的 STATUS.md 上使用 scripts/video-status.py(status-and-resuming.md);在停止工作前最後一步更新該檔案。
不可協商的規則
- 在寫出陳述句之前,必須先找到主要來源。 次要來源出錯的頻率高到不容忽視。
- 模擬的介面必須根據擷取的參考資料建構,絕不能憑記憶繪製(教學、混合模式)。某個應用程式編輯器重建了三次,直到實際測量了真實畫面才正確。
- 虛構的輸出必須在畫面上標示(
模擬 — 僅供說明之用);示意圖需註明簡化圖示。 - 任何畫面中不得出現私人資訊:包括示範、側邊欄、即時帳戶參考資料或幻燈片標籤(12-pathology-visuals.md)。
- 在相信文字表單欄位之前,請先讀回來確認。 輸入的值可能會無聲地失敗。
- 絕不手動編輯時間檔案(
beats.json、lines.json)。它們是自動產生的。
它協調使用的技能
| 技能或工具包 | 在影片中的用途 |
|---|---|
| 本技能的工具包 | node <skill>/scripts/install-kit.mjs <project> --style paper-notes:元件、樣式、字型、QA 和建構工具。會先安裝 remotion-whiteboard 的工具包。 |
remotion-whiteboard | 繪圖或手寫內容的必備工具:筆觸、書寫文字、筆。 |
motion-design | 非繪製元素的緩動與編排 |
remotion-best-practices | Remotion API 使用方式 |
remotion-motion-explainer | motion 模式:其自己的模板、元件、語音/字幕/音效腳本及範例(fridge-hack) |
video-promo-kit | 所有模式的步驟 13:縮圖變體(由擁有者挑選)、1:1 輪播圖 + LinkedIn PDF、YouTube 描述/章節/標籤、LinkedIn/Instagram/WhatsApp 文案 |
youtube-uploader | 步驟 13:透過 Data API 上傳(先試跑,獲得擁有者同意後加上 --confirm)、縮圖、字幕、播放清單、排程 |
如果 remotion-whiteboard 不可用,請在建構步驟時停止並告知;絕對不要臨時自行實作一個繪圖元件。install-kit.mjs 會強制執行此檢查。
詳細資訊的位置:請在執行到對應階段時才閱讀該檔案,不要提前閱讀
| 檔案 | 階段 |
|---|---|
references/01-plan-and-validate.md | 1–2 |
references/02-capture-reference.md | 3 和 9:擷取,或插圖模式下的參考資料研究 |
references/03-script.md | 4–5,包含頻道要求事項 |
references/07-art-direction.md | 0(風格)和 5a–10:統一樣式,以資料形式呈現 |
references/08-storyboard.md | 5a–5b,關卡 2 |
references/04-voice.md | 6–8 |
references/09-motion.md | 8(詞語時間)和 10:動畫出現、每 2–4 秒一個事件 |
references/05-build.md | 10,教學模式的畫面、白板手繪,以及繪圖函式庫(objects.tsx) |
references/10-sound.md | 10b |
references/11-visual-qa.md、references/rubric.md | 11 |
references/12-pathology-visuals.md | 3 和 10,用於醫學圖片 |
references/13-longform.md | 超過 12 分鐘的影片、章節 |
references/06-publish.md | 12–13:渲染、ready-to-upload/ → youtube-uploader → _uploaded/(以及用於宣傳素材的 video-promo-kit) |
references/14-lessons-2026-10.md | 任何模式:測量到的語音數據、Whisper 錄音檢查、詞語提示、元件觸發的音效、來自 fridge-hack 建構的 QA 規則(E01 的經驗教訓已整合到 04、05、06、09、11 和 mistakes.md 中) |
references/status-and-resuming.md | 繼續製作影片,或記錄一個決定 |
references/mistakes.md | 當某些行為異常時:在除錯之前先閱讀 |
此技能包含的腳本:每個腳本都接受 --help 參數,並且只讀取指定的專案
| 階段 | 腳本 |
|---|---|
| 狀態 | video-status.py(根據模式,顯示影片處於哪個步驟) |
| 4–5a | check-script.py(TTS 陷阱)、check-storyboard.py(每個節拍有圖片、提示詞、間距) |
| 5b | draft-takes.py(在正式錄音之前,為關鍵影格建立一個草稿時間格) |
| 6 | sarvam-tts.py(透過 API 使用克隆語音進行錄製;需要在 SARVAM_API_KEY 中設定金鑰;--respell 可以指定一系列口語形式的對照表) |
| 7–8 | check-takes.py(用 Whisper 將每段錄音與腳本比對)、master-audio.py、build-audio-grid.py、word-timestamps.py(精確的詞語時間) |
| 10 | install-kit.mjs <project>(工具包、樣式、字型、工具、Python 虛擬環境)、make-paper.py;在工具包中,有 makeBeat/HL(beatspec.tsx)和物件函式庫(objects.tsx,靜態測試 kit-objects) |
| 10b | sound-design.py |
| 11 | focus-check.py、frame-fill.py、event-gaps.py、gap-words.py(每個靜態間隔中說出的詞語)、contact-sheet.py;工具包中的 tools/qa.mjs、tools/stills.mjs(中點、結尾、每隔 N 秒)、tools/build-all.sh(如果畫面太靜態則在渲染前停止) |
| 13 | chapters.py(根據時間格產生 YouTube 章節)、captions-srt.py(根據詞語時間產生上傳用的字幕) |
模板:templates/ 目錄下的 STATUS.md、STORYBOARD.md、MUTE-REVIEW.md。樣式:styles/*.json。
格式
短片:1080×1920,最終輸出為 2160×3840(build-all.sh --deliver-4k)。長度 26–56 秒,一個核心概念;第一行和第一個畫面決定一切。下方 360 像素區域保持乾淨,用於 UI 元素。
長片:1920×1080,30fps;長度七到十二分鐘,或講解式插圖課程 15–30 分鐘(以 3–5 分鐘的章節建構,請參考 13-longform.md)。可選第二語言作為替代音軌。
需要注意時效的資訊
參考資料中的價格、型號名稱、分層邊界和法規日期,在以上標註的 measuredOn 日期時是正確的。任何標記為 VERIFY 的內容,在鏡頭前說出之前,都必須與其主要來源重新核對。切勿將此技能中的任何數字直接繼承到腳本中。