/edit-my-video
原始片段輸入,產出 1080x1920 的 Reel,完全依照使用者的風格。使用者通常不具技術背景:請用簡短的訊息一步步說明,所有技術工作由你完成,絕不讓他們碰程式碼。絕不使用 AskUserQuestion 彈出視窗(直接在對話中詢問)。絕不在任何地方發布或上傳任何內容。你為他們撰寫或顯示在螢幕上的任何文字,都不要使用 em dash。
SK = 這個技能的資料夾。STYLE = 風格資料夾(預設:存在 SK/config.json 中的那個,否則是由 /build-my-style 建立的,否則為 ~/edit-style;如果沒有任何一個有 STYLE.md,詢問它在哪裡或建議先使用 /build-my-style)。WORK = 每個影片一個資料夾,<edits 資料夾>/<slug>/(slug = 短 kebab-case,例如 github-repos)。每個路徑都要用引號括起來,因為路徑中可能包含空格。腳本以 python3 "SK/scripts/<name>.py" ... 執行;每個腳本在無參數執行時會印出自己的用法。
在本次工作階段第一次編輯之前,請閱讀:references/creative-rules.md(最重要的檔案:如何設計以及嚴格的品味檢查)和 references/engine.md(負責渲染的 HyperFrames 模式)。在步驟 4 之前閱讀 references/storyboard.md。
最重要的一條規則
STYLE.md 是護欄,而非選單。它固定了視覺風格(顏色、字型、動態感覺、音量、安全區域、曾被拒絕的設計)。但它並不限制你能創作的內容。對每一句台詞,思考「什麼視覺效果最能解釋這個想法」,然後在風格的框架內重新設計。第一次測試編輯時,編輯器從風格頁面複製了模板(像是「只能做三件事」的檢查清單),創作者說它「極度受限」且「完全沒有即興發揮」。請變化版面配置;絕不要連續兩次使用相同的版面;讓視覺元素變大。
步驟(請用一行簡短文字說明你正在進行哪個步驟:「步驟 3 of 8:尋找最佳 take」)
1. 環境檢查(數秒)
python3 "SK/scripts/setup.py" --check。將缺少的項目以簡短的清單顯示:項目名稱、用途、一行解決方法。對於任何他們必須手動安裝的軟體(ffmpeg、Node、Python、Chrome),告訴他們將命令貼到終端機應用程式中(Command + Space,輸入 Terminal),然後說「完成了」。只有在他們同意後才執行 --install(安裝 faster-whisper、playwright、HyperFrames、語音模型):「我可以安裝免費的編輯工具嗎?大約 5 分鐘,一次性安裝。」然後執行 python3 "SK/scripts/style.py" check "STYLE"(檢查風格資料夾是否完整)以及 python3 "SK/scripts/style.py" serve "STYLE"(如果頁面伺服器未啟動,則啟動它;記下 URL)。僅第一次執行時:詢問編輯檔案要存放在哪裡(建議放在風格資料夾旁邊的 edits/ 資料夾),並儲存:setup.py --save --style "STYLE" --edits "<folder>"。
2. 接收素材(一則訊息)
只詢問你尚未擁有的資訊:
- 原始片段資料夾(通常包含多次重複的 take;你將選取每句台詞的最後一次 clean take)
- 影片的主題,以及腳本或筆記(如果有的話)
- 行動呼籲的評論關鍵字
- 目標長度(建議 25 到 40 秒)
- 音樂:只有在他們指定曲目時才加入。否則不使用音樂(創作者會自己挑選音樂)。
然後
mkdirWORK 並執行python3 "SK/scripts/style.py" resolve "STYLE" --out "WORK/style.json"。 完整閱讀 STYLE.md:特別是Feedback from edits、Rejected和Kept,最新的優先。這些是創作者從過去編輯中給予的修正,會覆蓋所有其他設定。
3. 選取 take、裁剪、轉寫文字(每 5 分鐘素材約需 1 分鐘)
takes.py "WORK" "<clip>" ... --prompt "<他們將會說的台詞>"列出每個嘗試,標記重拍。 閱讀WORK/takes/*.txt。選取每句台詞的最後一次完整 clean take(跳過結巴;透過移動in來修剪不好的開頭)。寫入WORK/edl.json(格式請參考cut.py的使用說明)。cut.py "WORK" --prompt "<names>":將幀精確的片段放入WORK/hf/assets/v/,語音標準化至 -16 LUFS,邊緣緊湊,並產生words.json/words.txt並包含 Reel 時間碼。查看progress/01-cut-takes-in-order.jpg。- 對照他們原本的意思閱讀
words.txt。Whisper 可能會誤聽名稱:使用captions.py fix "WORK" "49=ArtCraft"在 words.json 中修正(僅修正以匹配實際說出的內容)。 用一行一個拍子告訴他們裁剪的結果,以及影片長度。
4. 先做分鏡(在使用者批准前不渲染任何東西)
遵循 references/storyboard.md:寫入 WORK/storyboard.json(每個想法一個拍子:文字、時間碼、版面、視覺、動畫、字幕、音效),在他們真實的片段上為每個拍子建立一個靜態圖,並合成計劃中的視覺元素(真實螢幕截圖、真實應用程式圖示、JPG),對 3 到 4 個關鍵拍子(鉤子、主要想法、回報、CTA)提供 2 到 3 個替代方案(A/B/C)。然後執行 storyboard.py page "WORK" --style "STYLE" 並開啟 http://localhost:<port>/storyboards/<slug>/(open <url>)。說:「你的分鏡已開啟。在有選項的地方選擇 A、B 或 C,對每個拍子選擇 Approve 或 Change,在任何地方添加筆記,按下 Submit,然後告訴我完成了。」等待「完成」。 然後執行 storyboard.py review "WORK" --style "STYLE" 將他們的選擇和筆記合併到 storyboard.json 中。僅重建他們更改過的拍子並再次顯示,直到所有部分都獲得批准。
5. 變化版本(可選,提供一次:「想看看鉤子移動的 2 或 3 個版本,然後我再建立整支影片嗎?」)
針對 2 到 3 個關鍵時刻:建立足夠長的編輯以涵蓋它們(步驟 6),將 hf/index.html 複製為 hf/index-<beat>-B.html 並重新設計該拍子,然後執行 render.py slice "WORK" <beat>-A <start> <end> 和 render.py slice "WORK" <beat>-B <start> <end> --index "WORK/hf/index-<beat>-B.html"(每個 2 到 4 秒,渲染約需 6 秒)。在 storyboard.json 的那些替代方案中放入 "video": "variations/<name>.mp4",然後執行 storyboard.py page "WORK" --style "STYLE" --variations,開啟 .../storyboards/<slug>/variations.html,等待完成,執行 storyboard.py review ... --variations,將勝出的版本保留在 index.html 中。
6. 建立編輯(創意部分)
render.py new "WORK" --title "<video> v1":建立一個已固定風格的 HyperFrames 專案,包含風格顏色、字型、字幕陰影以及動作套件(engine/kit.js),位於WORK/hf/。- 收集真實素材:
shoot.py web <url> <png> --mobile(頁面完全載入後截圖),shoot.py icon "<App>" <png>(真實 macOS 應用程式圖示),否則從工具網站取得官方標誌。 - 根據已批准的分鏡逐拍編寫
WORK/hf/index.html(模式與套件 API 請參考references/engine.md),讓每個視覺效果的時間與它歸屬的文字(words.txt 中的文字)對齊。每個拍子都是全新設計;為每個視覺場景加上data-visual="<what it is>"和data-layout="face|split|full"。 - 字幕:
captions.py make "WORK" --skip <a-b>(跳過螢幕上已有文字描述的時刻),然後手動編輯WORK/caps.json:將它們分組,使其閱讀自然(2 到 3 個字),設定top使其永遠不會擋住嘴巴,每個拍子設定cls,為一個重點字設定html。captions.py inject "WORK"。 - 音效:編寫
WORK/cues.json(每個剪輯、面板、圖示、台詞、重點字都在鎖定的音量等級上獲得提示音;不要雙重擊),只有在他們指定一首音樂時才加入音樂,然後執行mix.py "WORK"(將混音標準化至 -16 LUFS)。 render.py check "WORK"(修正所有錯誤),render.py snap "WORK" <times> --name <beat>並查看你更改過的幀。在你進行的每一步,將一張編號的圖片放入WORK/progress/(腳本會完成大部分工作)。
7. 在展示任何東西之前,先渲染並自我審查
render.py render "WORK" --out "WORK/<Video name> - v1.mp4",然後執行 qa.py "WORK" "<that mp4>"。修正每一個 FAIL。然後實際查看它列出的每張圖片(2 fps 的接觸表,以及繪有安全區域的全尺寸特寫):文字擁擠、視覺元素太小或太高而導致空白區域、字幕擋住嘴巴、連續兩次使用相同版面、任何突兀的地方、任何黑色的地方、數字/名稱與文字不符。自動化檢查會遺漏人眼能捕捉到的問題(這個技能的第一次測試通過了檢查,但卻有一個模糊的重點字和空的半卡)。進行一次修正、重新渲染、再次執行 qa.py,然後 open "<mp4>"。
用幾行文字告訴他們:檔案在哪裡、長度多少、逐拍發生了什麼事,以及你猜測了什麼。
8. 回饋循環(每次他們給予意見時)
修正問題、重新渲染(重新渲染約需 20 秒)、再次執行 qa.py、開啟影片。並將意見寫入他們的風格,讓下一次編輯已經知道:
python3 "SK/scripts/feedback.py" "STYLE" --video <slug> --rule "<從現在起這樣做>"(或 --rejected "<永不再做>"、--kept "<喜歡這個>")。使用他們的措辭,每個意見一個標記;他們喜歡的東西和討厭的東西一樣重要。這個腳本會先備份 STYLE.md 並記錄日誌。用一行文字說明你新增了什麼。如果意見是關於一個鎖定的數值(shine、縮放曲線、字幕陰影),告知該設定存在於他們的風格頁面的實驗室中,並提議開啟該頁面,而不是無聲地覆蓋鎖定。
所需時間(M 系列 Mac,從約 8 分鐘素材產生 15 秒完成的 Reel)
take 選取:每 5 分鐘素材約 1 分鐘 · 裁剪 + 轉寫文字:約 15 秒 · 分鏡靜態圖:約 2 分鐘 · 變化版本渲染:每個約 6 秒 · 渲染:約 20 秒 · QA:約 30 秒。