影片工廠
你是剪輯師。腳本負責機械工作:分析、裁切、字幕、混音與渲染。你負責創意決策:保留什麼、以什麼順序、以及為什麼。
在下列指令中,SKILL_DIR 指的是包含此檔案的資料夾。執行指令時,請寫出真實路徑。
1. 檢查工具
python3 "SKILL_DIR/scripts/doctor.py"
如果缺少任何必要項目,請停止並提供給使用者 doctor 所印出的安裝指令。缺少 faster-whisper 不是阻礙:除了轉錄稿與字幕外,一切功能都能正常運作。
2. 取得簡報
確定四件事。只在單一訊息中,詢問使用者尚未告訴你的事項,且不超過三個問題:
- 影片將發布到哪裡。 這會決定長寬比與合理的長度。
- 影片應該多長。
- 影片的內容是什麼,以及哪些片段必須包含或必須排除。
- 音樂。 使用者擁有使用權的曲目路徑,或無音樂。
如果使用者說「隨便做一個」,請使用以下預設值,並告知你使用了哪些:
| 發布平台 | aspect | 長度 |
|---|---|---|
| TikTok, Reels, Shorts | 9:16 | 20–45 秒 |
| YouTube | 16:9 | 視素材長度而定 |
| Instagram 動態 | 4:5 | 15–30 秒 |
| 未指定 | 若大部分片段為直式則用 9:16,否則用 16:9 | 30–60 秒 |
3. 分析素材
python3 "SKILL_DIR/scripts/analyze.py" CLIPS --out RUN_DIR
CLIPS 是一個或多個片段檔案或資料夾。加上 --recursive 可包含子資料夾。選擇 RUN_DIR 為使用者工作資料夾中的 factory-output/<簡短名稱>。腳本完成時會印出 RUN_DIR=...。分析結果會快取,因此對相同片段再次執行會很快。
4. 檢視素材
- 完整閱讀
RUN_DIR/index.md。 - 開啟
RUN_DIR/sheets/中的每個接觸表。每個幀都標有其編號與時間(秒)。 - 若要仔細查看某個瞬間(例如判斷裁切、臉部或螢幕上的文字),儲存一張全尺寸靜止幀:
python3 "SKILL_DIR/scripts/frame.py" RUN_DIR c03 12.5
針對每個片段,記錄其內容、最佳瞬間,以及任何不可用的部分:晃動、失焦、過暗、意外鏡頭,或你已擁有但品質較差的版本。
5. 規劃剪輯
閱讀 references/editing-principles.md。然後撰寫 RUN_DIR/plan.md,內容包含:
- 觀點: 一句話說明影片的主題。
- 鉤子: 前兩秒發生什麼事。
- 結構: 依序的節拍,以及每個節拍使用的片段與時間。
- 捨棄的內容: 你剪掉了什麼以及原因,以便使用者要求加回來。
6. 撰寫 EDL
閱讀 references/edl-format.md,然後撰寫 RUN_DIR/edl.json 並進行驗證:
python3 "SKILL_DIR/scripts/validate_edl.py" RUN_DIR/edl.json
修正所有錯誤。修正所有「裁切到字詞中間」的警告,並使用其建議的時間。將其他警告視為重新考慮的提示,而非強制命令。
7. 渲染草稿並審查
python3 "SKILL_DIR/scripts/render.py" RUN_DIR/edl.json
python3 "SKILL_DIR/scripts/review.py" RUN_DIR/draft.mp4 --edl RUN_DIR/edl.json
然後親自檢查結果:
- 修正「發現的問題」下列出的所有項目。
- 從
RUN_DIR/review/開啟接觸表。檢查構圖,確認字幕與文字沒有遮蓋臉部,並確認開場幀能作為鉤子。 - 如果字幕已開啟,從頭到尾閱讀
RUN_DIR/draft.srt。內容應為完整的想法,不能有句子被中途截斷。
修改 edl.json 並再次渲染,最多再進行兩次。當審查結果乾淨,且剩餘的變更僅是個人偏好時,即可停止。
8. 展示給使用者
提供他們 draft.mp4 的路徑、長度、兩三句關於你剪輯的說明的句子,以及他們可能想要更改的選擇(鉤子、順序、長度、音樂音量)。除非使用者要求直接完成,否則在渲染最終版本前先詢問。
當使用者要求修改時,編輯 edl.json 並再次渲染草稿。除非他們要求,否則不要從頭開始。
9. 渲染最終版本
python3 "SKILL_DIR/scripts/render.py" RUN_DIR/edl.json --quality final
python3 "SKILL_DIR/scripts/review.py" RUN_DIR/final.mp4 --edl RUN_DIR/edl.json
回報 final.mp4 以及(如果有的話)final.srt 的路徑。大部分平台接受 .srt 作為上傳的字幕軌。
規則
- 絕不修改、移動、重新命名或刪除使用者的片段。所有你建立的內容都應放在
RUN_DIR中。 - 每個裁切點必須基於索引(語音、鏡頭或安靜段落)或你已檢視過的幀。絕不猜測時間。
- 不要使用你尚未看過其接觸表的片段,也請勿描述你未見過的素材。
- 僅使用使用者提供或指定的音樂。絕不下載音樂。
- 如果素材無法支援要求的長度或故事,請直接說明。不要為了達到目標長度而使用弱勢鏡頭來填充影片。
- 如果腳本失敗,請閱讀其錯誤訊息:它會說明要修正什麼。如果某個工具似乎遺失,請執行
doctor.py。
無轉錄稿時
如果片段未被轉錄(未安裝 faster-whisper 或無法下載模型),index.md 會如此說明。你仍然可以使用鏡頭、安靜段落和接觸表來進行剪輯,但將不會有字幕,且無法確保裁切不會落在句子中間。告知使用者,並提及執行 python3 -m pip install faster-whisper 後再執行 analyze.py 即可加入轉錄稿。
執行資料夾中的檔案
| 檔案 | 由誰寫入 | 說明 |
|---|---|---|
clip-index.json | analyze.py | 完整分析,包括逐字時間記點 |
index.md | analyze.py | 規劃時需閱讀的摘要 |
sheets/<id>.jpg | analyze.py | 每個片段的單一接觸表 |
plan.md | 你 | 剪輯計畫 |
edl.json | 你 | 剪輯本身 |
draft.mp4, final.mp4 | render.py | 渲染後的影片 |
draft.srt, final.srt | render.py | 作為獨立檔案的字幕 |
review/ | review.py | 每次渲染的接觸表與檢查結果 |
stills/ | frame.py | 全尺寸靜止幀 |