reel 是做什麼的?
檔案位置與首次設定
- Pipeline 資料夾 = 此技能所在的
video-pipeline資料夾(在此檔案上方三層:video-pipeline/.claude/skills/reel/SKILL.md)。所有指令都從該資料夾執行。 專案位於其內的projects/<日期>-<縮寫>/資料夾。 - PY = pipeline 自帶的 Python。以下所有指令都使用它,絕不使用系統的 Python:
在 Windows 上為
.venv/Scripts/python.exe,在 Mac 或 Linux 上為.venv/bin/python。 - 如果 PY 還不存在,先進行設定,無需要求使用者輸入任何內容:
執行
python install.py(Windows 上可用py install.py,Mac 上可用python3 install.py)。如果它因「找不到 ffmpeg」或「找不到 git」而停止,請為使用者安裝該工具(Windows:winget install ffmpeg/winget install Git.Git;Mac:brew install ffmpeg),如果新指令未被識別,請通知使用者重新啟動 Claude Code,然後再次執行 install。 當 install 印出 READY 時,執行PY scripts/selftest.py並確認結果為「9/9 通過」。
STYLE (每次參考) -> 1 BRIEF -> [關卡: 使用者批准腳本] -> 2 SHOOT (使用者)
-> 3 ALIGN -> 4 CUT -> 5 EFFECTS -> 6 PREVIEW -> [關卡: 使用者意見,循環] -> 7 FINAL
你負責撰寫、剪輯和渲染。使用者負責拍攝、批准和發布。任何內容都不會從這裡發布。
0. 從參考素材建立風格(當使用者傳送參考剪輯時)
PY scripts/style_ref.py <參考.mp4> [更多參考] --name <風格名稱>- 打開它在
styles/refs/<風格名稱>/中寫入的每張圖片,並閱讀 report.json 的數據。 - 撰寫
styles/<風格名稱>.json,只包含與styles/default.json不同的鍵: 字幕字型/大小/顏色/位置/每組字數/大寫、螢幕文字外觀、剪輯緊湊度(cut.max_gap:快節奏剪輯時設更小)、特效間距(effects.min_gap,根據參考的節奏)、音量。 - 撰寫
styles/<風格名稱>.md:用平實的文字說明該剪輯的風格。哪些特效(共 51 種)與你所見的動作匹配、螢幕上多常發生某事、開場鉤子如何呈現、它從不做什麼。加入測量到的數據(每分鐘剪輯次數、鏡頭長度)。 - 向使用者展示 .md 檔案,並詢問你哪裡判斷錯誤。你只能看到抽樣幀,無法看到動態或聲音:請說明這點,並請他們提供喜歡的時間戳(
--at 7.2,12會抓取那些幀)。
字型:字幕可以使用 vendor/claude-video-effects/fonts/ 中的任何字型(Montserrat、Anton、Archivo Black、Inter、Instrument Serif、Playfair Display、Space Mono、Permanent Marker)或使用者放入 fonts/ 的任何 .ttf/.otf 檔案。
1. 腳本
PY scripts/new_project.py "<縮寫>" --lang id --style <風格>(lang: id、en 或 auto)。- 如果存在
~/.claude/youtube/voice.md或~/.claude/instagram/voice.md,請閱讀它們。使用使用者的語言和語氣撰寫。絕不捏造任何數字、結果或客戶;如有需要,請提問,或留下{{angka}}。 - 填寫
script.json:每行對應他們將說的一句話,角色為hook/body/cta。- 鉤子:撰寫 3 個選項,推薦一個,維持在大約 3 秒內可說完。
onscreen:鉤子的簡短文字(以及任何需要標題卡的行)。effects:在某個詞上提示特效:{"fx": "backdrop-word", "on": "GRATIS", "text": "GRATIS"}。 從風格的 .md 中挑選。每個特效至少間隔effects.min_gap秒。不是每行都需要特效。使用使用者自己的 Reels 的特效(orbit、phone-fan、place-in-grid、fan-build、noise、profile-wall、carousel-spin)需要"images": "<資料夾>"。- 圖表和計數器(
liquid-glass-graph、over-the-shoulder-zoom)只能搭配真實數字。
- 在旁邊撰寫
brief.md:鉤子選項、他們將閱讀的腳本、每個特效的拍攝提示(「第 4 行:頭頂上方保留空間」),以及templates/shooting.md中的拍攝規則。 - 關卡: 展示腳本並停止。在使用者批准之前,不要繼續。
2. 拍攝(使用者)
他們將檔案放入 <專案>/raw/。允許多個檔案;它們會按名稱順序使用。
3. 對齊
PY scripts/transcribe.py <專案>(首次執行會下載 Whisper 模型)。 錄音中有多次重新開始,或剪輯仍然重複詞語?請改用PY scripts/burst_transcribe.py <專案>:它會單獨轉錄每一段連續語音(使用 large-v3-turbo 模型),因此暫停後的重新開始絕不會與下一段合併。如果詞語仍然吞掉停頓,請在對齊前執行PY scripts/snap_words.py <專案>。PY scripts/align.py <專案>。以簡短形式向使用者報告結果: 缺失的行或沒有完整鏡次的行,以及任何聽起來值得保留的即興內容。除非某行缺失,否則不要因此停止;在預覽時提及它們。
4. 剪輯
PY scripts/cut.py <專案>
純語音 Reels(使用者只錄製語音,畫面全是動態圖形):
請改用 PY scripts/cut_voice.py <專案> -> 產生 work/voice.wav(乾淨的,-16 LUFS)和 work/prog_words.json(每個保留詞在剪輯軌道中的時間)。在此基礎上建立視覺效果(如果使用者有 HyperFrames,或使用自己的編輯器)。特效步驟需要人臉,因此請跳過。
無授權的背景音樂: 如果存在 .venv-music/(執行 python install.py --music),請使用 .venv-music/<Scripts|bin>/python scripts/music_bed.py work/bed.wav --seconds 30 --seed 1 --prompt "<情緒>, no vocals" 製作背景音樂,聆聽是否有間隙(如果不均勻,嘗試其他種子),並設定 "music": {"file": "<絕對路徑>/work/bed.wav", "db": -22}。
5. 特效
PY scripts/effects.py <專案> plan。透過編輯script.json中的提示來修正任何警告。PY scripts/effects.py <專案> check,然後查看work/check/fx_*.png的每一張。 文字遮擋人臉、超出邊緣、無法閱讀:請修正選項(x、y、較短的text)並再次檢查。PY scripts/effects.py <專案> render。這是慢速步驟(每一幀都經過人臉追蹤)。告知使用者正在執行。
6. 預覽
PY scripts/finish.py <專案>->preview/preview_vN.mp4。PY scripts/finish.py <專案> --check <t1,t2,...>在每個特效的中間以及另外兩三個時間點進行檢查。查看 PNG 圖片:字幕與特效碰撞、鉤子文字無法閱讀、任何遮擋人臉的內容。在展示之前修正。- 關卡: 向使用者提供預覽路徑和簡短的編輯清單:使用的鏡次、剪掉的內容、特效及其位置。請求修改意見。
將意見轉化為修改
| 意見 | 修改方式 | 從哪一步重新執行 |
|---|---|---|
| 「第 3 行使用另一個鏡次」 | choices.json {"take": {"3": 1}} | 對齊 |
| 「保留我在 0:14 說的內容」 | choices.json {"keep_unmatched": ["u3"]} | 對齊 |
| 「刪除第 5 行」 | choices.json {"drop_lines": [5]} | 對齊 |
| 「剪輯太緊/太鬆」 | 風格 cut.max_gap、cut.post_pad | 對齊 |
| 「那裡不要特效」/「更大的詞」 | script.json 特效 | 特效計劃 |
| 字幕外觀、螢幕文字 | 風格 captions / onscreen,或腳本 onscreen | 完成 |
| 音樂 | script.json "music": {"file": "...", "db": -22} | 完成 |
從某個步驟重新執行意味著其後的所有步驟也需重新執行。重新執行對齊或剪輯會導致特效再次渲染(速度慢),因此請先批次處理所有意見。
7. 最終輸出
PY scripts/finish.py <專案> --final->final/final.mp4和final/cover.jpg。- 撰寫
final/caption.md:- 前 125 個字元需包含鉤子;這是動態消息在展開「更多」之前顯示的全部內容。
- 一個行動呼籲。如果是「留言 KEYWORD」,則需與影片相符。
- 最多 5 個主題標籤,與主題相關,放在結尾。使用使用者的語言和語氣。
- 不要捏造數字。不要出現「別滑走」,不要堆砌主題標籤。
- 用一句話提醒他們:熱門音效在 Instagram 內部添加,他們自行發布。
規則
- 風格 .md 檔案是品味指南。在不確定是否要加入某內容時,就不要加入。
- 絕對不要遮擋人臉。絕不放大到 2 倍以上。
- 坦率說明限制:編輯器擅長挑選鏡次和時機;它無法判斷他們的表演能量。如果某個鏡次聽起來平淡,請說「檢查第 3 行的能量」,不要假裝你聽到了。
- 將
projects/排除在 git 之外:原始素材體積龐大且涉及個人隱私。