高階影片製作
用程式碼製作出符合品牌規範、僅陳述已驗證事實、且視覺與聽覺皆具有專業水準的影片。以下所稱的「所有人」指的是您為其製作影片的對象,通常會轉達客戶的反饋。範例來自真實的客戶影片(案例研究)。
品質標準是「高級、精緻……像素完美」。以下是以往專案中,所有人認為未達標的評論:「那些藥丸看起來很廉價」、「有點基礎……只是照著劇本走」、「過場太奇怪了」、「太快了我來不及看」、「掉落的動作很奇怪」、「聲音聽起來太年輕了」、「圖片看起來好假」、「無聲然後突然爆炸,有點太過了」。
規則
- 資訊正確性高於一切。 每一個事實、名稱、頭銜、數字、日期、引用、標誌和發音,在顯示於畫面或編入旁白之前,都必須與原始來源進行核對;任何變更後都需再次核對。絕不憑空捏造或猜測;缺少來源時,請驗證或提問。官方頭銜必須逐字複製,標誌只能來自所有人提供的檔案,真實組織使用真實照片(包含完整頭部、無光暈、無生成式臉孔)。產品展示僅使用明確的虛構資料(不存在的網域、文件範例 IP、虛構名稱)。一個錯誤的主張足以破壞整部影片的成果。
- 每個元件都必須達到高級標準。 字型、卡片、圖示、UI、圖表、過場、光線、聲音、音樂和音效,都應為這部影片量身設計,達到高端水準——禁止使用庫存素材、範本或「夠好了」的內容。將每個想法建構成一個大型、目的性強的動態片段,並留有留白空間;真實的螢幕截圖和螢幕錄影即使有攝影機運鏡,看起來仍會顯得「廉價」。禁止使用藥丸標籤、編號晶片、追蹤的全大寫標籤或點連接的中繼資料。生成的圖像僅作為底圖或素材使用,並須以 100% 比例檢查。
- 深度、光線、動態鏡頭——以及完整的畫面。 平面佈局(文字靠左、卡片靠右、單純背景)會顯得像「平淡無奇」。主角時刻需要一個有照明的場景:會反射的地板、3D 旋轉的物件、流動的光線、空氣中的灰塵、從未完全靜止的鏡頭。每一個畫面都應能作為海報使用:多層次的深度、一個光源、主角充滿畫面(文字在手機上也能閱讀),絕不能是黑暗虛空中的一個小元素。簡報中的要點只是最低要求,而非最終設計。
- 每個過場都是一個真實的動態。 一個鏡頭運動、一束光、或一個從一個場景移動到下一個場景的元素。絕不使用單純的白色閃爍,絕不使用彈出效果;撞擊點需要幾幀的預備動作。
- 易讀且穩定的節奏。 標題停留 ≥ 2 秒,結果在其陳述後停留 ≥ 3 秒;清單一次顯示一個項目;各章節之間的能量保持一致。絕不為達到指定長度而塞入內容。
- 旁白是神聖的。 絕不對其進行時間拉伸或壓縮停頓:應刪減詞語並重新錄製。在行與行之間留出呼吸空間,在章節轉換處略長一些。每個章節的開頭都應與前一章節有所連結。整部影片及所有後續修補版本,每個語言只能使用一種聲音和一個模型;讓所有人透過聆聽來選擇。
- 音樂要到位並能承接。 音樂的終止應精準落在視覺高潮點,並在下一句旁白開始前持續播放;絕不能在畫面達到高潮時音樂就消失,也絕不能硬切換曲目,並在結尾處保持克制。
- 像編輯一樣驗證。 您無法觀看或聆聽影片,因此請用您的感官代替:每個場景每種語言的聯繫表、每個過場的幀條、每個文字時刻的完整尺寸靜止圖、自動故障和音頻掃描、每行旁白的音量,以及一個 AI 審查,其結論您必須在根據幀圖採取行動前先確認。未經此方式檢查的剪輯,視同未完成。
- 掌握循環,報告清晰。 決定合理的預設值並說明您的決定;僅針對真正超出您控制範圍的事項(缺少的照片、金鑰、預算)進行詢問。報告時避免提及檔案或程式碼名稱:說明變更了什麼、檢查了什麼、未檢查什麼、檔案位置、以及應該發送哪個檔案。
完整的品味指南,包含每個規則背後的理由,請參閱 quality-bar.md。在進行設計前請先閱讀。
您正在製作的內容
首先選擇影片類型;它決定了影片的結構(詳細資訊和時機請參閱 case-studies.md):
| 類型 | 典型長度 | 旁白 | 圖片 |
|---|---|---|---|
| 產品展示 | 60–100 秒,每種語言一個剪輯 | 通常無;螢幕上的文字行,可選字幕 | 針對產品關鍵概念設計的訂製動態片段;僅使用虛構資料 |
| 品牌/組織影片 | 2–4 分鐘,一個主要語言 + 其他語言版本 | 一位旁白員 | 組織的真實照片、人物和活動 + 動態設計;每個主張都經過事實查核 |
| 活動/會議開場片 | 1.5–3 分鐘,客戶的腳本 | 深沉而有力 | 電影級 3D 場景、深度重建的照片、官方名稱和標誌、以活動標題作為高潮的結尾 |
| 預告片/短宣傳片 | 15–45 秒 | 每個節拍一句短台詞,或無 | 一個想法用三個節拍呈現:鉤子、轉折(主角時刻)、名稱 |
所有類型的製作機制相同:Remotion (React) 以 1080p60 渲染畫面;一個時間軸檔案驅動畫面、旁白、音樂和字幕;Python 在 Docker 中製作旁白、配樂、音效和混音;透過測量和 AI 審查來檢查結果;一個發佈腳本以區塊方式渲染並打包交付物。
開始:了解可用資源
在新的專案中執行 tools/setup.sh。它會以 tools/providers.py 結尾,該工具會檢查 .env 中的金鑰(從不印出),詢問每個服務今日提供的服務,並為每個任務挑選最佳選項:最新的 Gemini Flash 用於審查畫面和聲音、可供試聽的聲音(ElevenLabs 和 Gemini TTS),以及最新的 GPT Image 用於製作底圖。偏好使用 OpenRouter(一個金鑰、多個模型、可見的消費上限);僅有免費的 Gemini API 金鑰仍能涵蓋旁白和審查功能;沒有任何金鑰時,影片仍能進行設計、作曲、所有檢查和發佈。如果缺少某個金鑰會影響品質,請向對方詢問一次——相關措辭、備援方案和金錢規則請參閱 providers.md。請信任工具當前的選擇,而非這些文件中提到的任何模型名稱。
工作流程
在新的影片專案中,請依序完成以下階段;在進行修改時,請直接跳到反饋所觸及的階段,然後再次執行審查和發佈。將此檢查清單複製到您的筆記中並逐項打勾:
影片進度:
- [ ] 0 設定:工具可用、金鑰已檢查、預算已確認
- [ ] 1 需求收集:簡報已引用、品牌檔案已收集、交付物已確認、機器已檢查
- [ ] 2 事實:包含每個主張的來源和狀態的事實表,以及應避免的清單
- [ ] 3 腳本:語言已設定、時間軸中的旁白、每種語言的每個螢幕文字
- [ ] 4 分鏡:每個章節一個想法、已規劃交接、展示一個外觀樣本
- [ ] 5 建構:根據提示建立場景、每種語言檢查靜止畫面
- [ ] 6 旁白:試聽並鎖定聲音、每一行剪輯無誤、經過清理和測量
- [ ] 7 音效:配樂、音效、混音(每行旁白音量 ≥ 音樂音量 6 dB)
- [ ] 8 審查:聯繫表、幀條、掃描、AI 審查;每個發現都已修正或說明;事實已重新檢查
- [ ] 9 發佈:輸出已驗證、壓縮檔已測試、交付狀態已提交、已告知所有人檔案位置及應發送的內容
1. 需求收集
- 閱讀所有人提供的所有資料(簡報、腳本、報告 PDF、聊天截圖、先前的影片)。將他們的文字引用到
docs/brief.md中,並附上討論記錄;注意強制性用語和官方名稱。 - 從來源收集品牌真實資訊:官方標誌檔案、網站 CSS 或品牌 PDF 中的色板、能涵蓋影片所有語言的字体(重音、變音符號、其他文字系統)、每種語言的產品名稱和 UI 用語。
- 預先確定語言和交付物(每種語言的主要版本、附字幕版本、.srt、縮圖、壓縮檔);如果所有人已有先前版本的交付包,請完全比照。
- 檢查機器:可用磁碟空間、Docker 是否正在執行、是否有其他關於同一部影片的渲染或工作階段(兩個代理在同一部影片上工作會互相覆蓋;如果發現此情況,請停止並詢問誰擁有該專案)。
2. 研究與事實查核
- 閱讀真實來源:
tools/webpage.sh <url> <name>在真實瀏覽器中渲染一個頁面,並儲存其文字和螢幕截圖;當網站無法連線時,請遵循 story-and-research.md 中的備援清單(存檔副本、其他公開來源,然後是所有人),而不是猜測。 - 使用 story-and-research.md 中的簡報執行一個研究子代理:每個事實都應有附註日期的來源和一個狀態(VERIFIED / SINGLE-SOURCE / SELF-REPORTED / UNVERIFIED / OWNER-STATED),以及一個應避免的清單。產品影片:閱讀真實產品的程式碼和用語,以便螢幕上的每個標籤、數字和流程都與產品相符。
- 撰寫
docs/factsheet.md。除非某個主張已包含在此文件中並有狀態標示,否則不應出現在螢幕或旁白中;自我報告的數據應標明出處。
3. 故事與腳本
- 根據影片類型選擇結構,然後將旁白撰寫成一個完整的口語段落:每個章節轉折處使用過渡句,將清單融入句子中,數字按照口語方式書寫。每種語言應以其母語撰寫,而非翻譯;絕不要讓聲音說出其不熟悉的語言中的名字——應顯示名字,並以角色介紹該人物。
- 將台詞放入
src/film/timeline.ts,字幕斷點用 " | " 標記(並在顯示為設計字型的台詞上設定onScreen: true,以便其字幕可暫時隱藏),並將每種語言的每個螢幕文字放入src/film/script.ts(其LANGS清單設定影片的語言;第一個是主要語言)。
4. 外觀與分鏡
- 每個章節一個想法,每個想法都有自己的視覺概念、一個主角時刻、以及一個能與相鄰章節交接的進出方式。將其記錄在
docs/storyboard.md中。 - 決定使用真實 3D、深度重建照片或生成底圖的場合(請參閱 remotion-craft.md)。在開始建構整套內容之前,先展示一個代表性幀圖或剪輯片段來確定任何會改變外觀的內容。
5. 建構
- 啟動專案:
<skill>/scripts/new_film.sh <dir> <Film-Name>(該名稱將成為交付檔案的名稱),然後執行tools/setup.sh。入門專案是一個可運作的影片——包含時間軸、場景時鐘、字幕、結尾、玻璃和字型工具包、光暈、鏡面地板、灰塵、光線、深度照片、三個範例場景、音頻引擎和以下所有工具。請替換範例場景;保留其架構。 - 先設定時間軸:場景、命名的提示時刻和旁白插槽位於
src/film/timeline.ts中;場景根據提示進行動畫(cuesOf(scene, lang));npm run cues將相同的數字傳遞給音頻。僅在此處變更時間設定。 - 對於長片,請按照 remotion-craft.md 中的簡報模式,將場景分拆給平行執行的建構子代理;您作為導演,必須在幀圖上驗證每個報告。
6. 旁白
完整方法請參閱 narration.md。撰寫旁白員的簡介和導演的注意事項;將聲音讀錯的內容重新拼寫到 audio/vo/say.json 中;試聽 tools/providers.py 找到的聲音並讓所有人選擇;以一個批次錄製每個段落(tools/vo_prompt.py → tools/tts.py),剪輯並逐字檢查每個台詞(tools/cut_lines.py),清理並調整音量,然後測量後續修補版本是否仍聽起來像同一位旁白員(tools/voice_score.py)。將確切聲音、模型和提示詞鎖定在 README 中。
7. 音樂、音效、混音
完整方法請參閱 music-and-sound.md。預設情況下,以程式碼創作一首免授權的配樂,並在畫面的提示時刻變換;僅當所有人提供授權曲目時,才根據其小節網格進行剪輯。音效設計針對命名的提示點。混音會針對每個台詞對音樂進行閃避,以 −14 LUFS 為目標進行母帶處理,並為 AAC 編碼保留動態餘裕,同時輸出一個語音 vs 音樂的對照表。
8. 審查(每一輪,在展示任何內容之前)
完整檢查清單請參閱 review-and-qa.md:每種語言的預覽和聯繫表、每個過場的幀條、每個文字和字幕時刻的完整尺寸靜止圖、對每個渲染執行 tools/qa_scan.py、對每個混音和交付檔案執行 tools/audio_qa.py,以及 tools/review.py(讓最新的 Gemini Flash 觀看和聆聽一個小型全片副本)。僅針對您可以確認的具體標誌採取行動;其 A/B 偏好、聲音辨識和小字判斷並不可靠。再次根據事實表檢查螢幕上的每個事實。
9. 發佈與交付
tools/release.sh(release-and-delivery.md)建構所有內容:旁白檢查、每種語言的配樂和混音、字幕、縮圖、主要版本和附字幕版本以區塊方式渲染、合併、檢查峰值、計算幀數、壓縮。REDO= 僅重新渲染有變動的區塊;LANGS=、VOICE= 用於子集和聲音版本;ZIP_ONLY=1 僅重新打包。驗證輸出,提交已交付狀態,更新 README,並確切告訴所有人壓縮檔的位置以及可以安全發送。
10. 反饋循環
working-with-owner.md:將聊天截圖和任務進行中的訊息視為該輪的簡報;先對新主張進行事實查核;全面性地修正模式,而非僅針對顯示的幀圖;保留所有人未批評的內容;重新執行審查和發佈;逐點回答。將每個持久性偏好儲存在下一個工作階段可以找到的地方。
入門專案中的工具
執行它們;僅在工具失敗時才閱讀其程式碼(每個工具的前幾行會說明其功能和呼叫方式)。Python 工具在由 tools/setup.sh 建置的 Docker 映像檔中執行(film-audio 和 film-asr;setup.sh all 會新增 film-voice 和 film-depth):docker run --rm -v "$PWD":/p -w /p <image> python <tool> …。Node、zsh 和 Swift 工具在主機上執行。
| 需求 | 工具(從專案根目錄執行) | 執行環境 |
|---|---|---|
| 設定、檢查金鑰和模型 | tools/setup.sh [all], tools/providers.py | 主機 / film-audio |
| 讀取網站(文字 + 螢幕截圖) | tools/webpage.sh <url> <name>, tools/webpage.sh archive:<domain> … | 主機 |
[此處為工具文件後續內容,因原始內容截斷而保留]