Legenda Impacto
高衝擊力字幕模板,適用於 Reels/Shorts/TikTok。當使用者要求以此模板添加字幕時,請直接依照下列步驟套用,無需再次詢問參數。
前置需求
- Premiere Pro(已在 2027/27.0 版本上測試;使用 ExtendScript)以及 Python 3.9+,並執行
pip install -r requirements.txt(需要 Pillow)。 - 一種在 Premiere 中執行 ExtendScript 的方式:Premiere 的 MCP(
execute_extendscript)或 CEP 檔案橋接 — 請參閱儲存庫根目錄中的docs/PREMIERE-BRIDGE.md。 - 字型:Impact(Windows 和 macOS 內建)以及選用的 Anton。如果找不到字型,請設定
CAPTION_FONT_DIR。 - 逐字
.mogrt套件(*_WbW.mogrt)存放於assets/— 儲存庫不包含此套件(請參閱assets/LEIA-ME.md)。這些是 Essential Graphics 模板,包含「Anim Speed」/「Out Animation」控制項和一個文字欄位。
參數(真實來源:style.json 和 scripts/plan_blocks.py)
- 格式 9x16 (1080x1920)。文字全大寫,水平置中,
y_center為 0.54(略低於中央)。 - 字型 Impact。小行 56 px(白色),大行 140 px,直式 76 px;若超出範圍則縮小(最小 60%)。
- 區塊包含 1 到 6 個單字,依據標點符號、暫停時間大於 0.45 秒或持續時間大於 3.3 秒進行分割;絕不以孤立單詞(如 o、de、que…)結尾。
- 區塊類型:
big_below(上方小行 + 下方大行,預設)、big_above(上方大行強調單字)、single_big、single_small和 直式(1 行,若太長則為 2 行,預設大小,白色)。每個區塊有 40% 機率變為直式,同一類型最多連續出現 2 次。 - 當出現數字/金錢/強烈詞彙(
strong列表)時,大行顏色變為紅色#F2381C,最多連續出現 2 次紅色;若已連續 4 個區塊未出現紅色,則強制出現 1 次。 - 動畫:逐字
.mogrt,每個區塊從assets/中現有的模板隨機選取,不重複前一個區塊的模板;同一區塊的兩行使用相同的模板。動畫結尾為硬切(關閉 Out Animation)。動畫速度 150(若區塊持續時間 < 1 秒則為 200)。 - 安全邊界(固定規則):文字絕不超出 Premiere 的 title safe(80% x 80% = 每邊 10% 邊距)。在
make_graphics_script.py中實作(layout_text+clamp_y;style.json中的safe_margin_x/y和safe_tolerance):可用寬度 = 1 - 2*0.10 - 0.02 = 總寬度的 78%(1080 中為 842 px)。當行無法容納時:1) 縮小至min_scale(60%);2) 若仍無法容納,則 分成 2(最多 3)行,進行平衡分割並僅縮小到必要程度;大小會 向下取整,因此最長的行絕不超出邊界。整個區塊也保持在高度 10% 到 90% 之間。 - 交付方式:直接在使用者指定的序列中編輯(不建立副本),除非使用者要求建立副本。
逐步操作
- 確認專案:與使用者確認開啟的專案/序列為何,並將目標序列設定為啟用狀態(ExtendScript 作用於 啟用中的 序列)。
- 轉錄:使用者從 Premiere 匯出 JSON(文字 > 轉錄 > 選單 ... > 匯出;檔案位於「文件」資料夾,名稱為「<序列>.json」)。
- 規劃:執行
PYTHONIOENCODING=utf-8 python -I <skill>/scripts/plan_blocks.py <轉錄.json> <資料夾>/blocks.json。顯示摘要以及[需確認]的單字(信心度 < 0.75)。在blocks.json中修正錯誤(small/big欄位)。 - 軌道:列出所有視訊軌道。V1 = 影片。使用 V2(索引 1)放置小行,V3(索引 2)放置大行/直式字幕,並在所有軌道之上建立一個 新的 軌道(索引 = 目前軌道數量)放置紅色字幕。如果存在覆蓋畫面的舊字幕/標題剪輯,請關閉它們。
- 生成批次:執行
python -I <skill>/scripts/make_graphics_script.py blocks.json <資料夾>/lote.js --tracks 1,2,<紅色軌道索引> [--seed N]→ 產生lote_01.js...(每個 8 個剪輯)和lote_clips.json。 - 在執行前先確認邊界:執行
python -I <skill>/scripts/check_margins.py <資料夾>/lote_clips.json— 必須顯示超出邊界:0(最大寬度 <= 78%)。 - 在 Premiere 中逐一執行每個批次(ExtendScript,
script欄位,包含 return 的 IIFE,僅使用JSON.parse/stringify),等待ok=8/8。如果橋接不穩定,請在 每個 批次前檢查連線。絕對不要一次全部送出(一次數十個剪輯會導致 Premiere 當機)。 - 紅色:列出紅色軌道中的剪輯,並套用「色彩平衡 (RGB)」效果(英文為 "RGB Color Balance"),設定紅色 242、綠色 56、藍色 28。每個剪輯僅套用一次 — 重複套用會複製效果並使紅色變暗(如果再次執行,請刪除並重新建立紅色軌道中的剪輯)。
- 確認:回讀剪輯的文字/字型/大小/位置,並再次執行
check_margins.py;如果可以匯出影格,則匯出 3-4 個影格(一個紅色、一個直式、一個雙行),否則請使用者開啟邊界參考線檢視。儲存專案。 - 交付:說明已完成的工作、有疑問的單字,並告知未在動態中檢視。
快速調整
| 我想要 | 修改處 |
|---|---|
| 大小/字型/位置 | style.json(mogrt_size_small/big/plain, mogrt_font, y_center, gap) |
| 邊界 | style.json 中的 safe_margin_x/y, safe_tolerance |
| 更多/更少的直式字幕 | --plain-prob(預設 0.4) |
| 其他隨機性 | --seed |
| 更多/更少的紅色,更大/更小的區塊 | plan_blocks.py 中的 RULES 或 --config 規則.json |
| 修正文字 | 修改 blocks.json 並重新生成批次 |
替代方案:透明影片(僅在 Premiere 不接受 .mogrt 時使用)
執行 render_captions.py blocks.json out.mov --duration <秒數> --fps 30 可生成帶有 Alpha 通道的 ProRes 4444 影片(5 個影格的「彈出」入場效果,原生紅色,不可編輯)。將其作為匯入的媒體放置到時間軸上。渲染 45 秒的影片大約需要 5 分鐘。
已知限制
- 動畫會按照模板的時間長度播放,而非每個口語單字的精確時間點。
- 自動消音(如「他*媽的」)無法自動處理(請在
blocks.json中編輯)。 - 句子切割可能顯得不自然;請在執行前檢查區塊列表。
- 無法透過腳本更改
.mogrt的顏色(因此才需要為紅色文字使用色彩效果)。