Communitygithub.com

legenda-simples

Legenda「simples」用於 Premiere Pro 的 9x16 垂直影片——短句 (3-4 字,快速段落最多 5 字)、一行、白色附柔陰影、Montserrat Bold、僅句首大寫、無入場動畫(整句出現並以硬切消失)、與語音同步且在安全框內。包含動態剪輯流程(裁切停頓/呼吸並交替縮放)。Podcast 剪輯風格。

legenda-simples 是什麼?

這個技能專為 Premiere Pro 使用者設計,提供一種「簡單」的標題風格,非常適合 Podcast 風格的 9x16 垂直影片。它自動將語音轉錄為每行 3-4 字的短句,使用白色 Montserrat Bold 字體,僅在句首大寫,並加上柔和陰影。與常見的動畫標題不同,此技能完全沒有入場動畫:每句字幕以透明 PNG 靜態圖像的形式,在第一影格完整出現,並在下一個剪輯點以硬切方式消失。字幕時間與語音精確同步,預設為「同步」模式,字幕在說話開始時出現,在說話結束後延遲 0.3 秒消失。它還提供完整的動態剪輯流程(選項 B),可自動從軌道中移除超過 0.3 秒的停頓和猶豫,交替執行 100%/116% 的縮放,生成已剪輯好的序列,並將字幕疊加在上面。該技能完全在 Premiere Pro 中工作(使用 ExtendScript 和 Python 腳本),需要 Montserrat Bold 字型,並支援兩種輸出方式:PNG 靜態圖(預設,不可編輯文字)和 .mogrt 模板(文字可編輯但有逐字動畫)。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gbrand-lab/premiere-legendas-skills/tree/HEAD/skills/legenda-simples

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Legenda Simples — 短句,無動畫,與語音同步

一次一句,白色粗體文字,小寫但開頭大寫(如轉錄內容),無背景,柔和陰影,位於下方三分之一處,無紅色且無入場動畫。例如:「問題是」/「沒有練習」。

前置需求

  • Premiere Pro(已在 2027/27.0 版本測試;ExtendScript)與 Python 3.9+,並執行 pip install -r requirements.txt(Pillow)。
  • 一種在 Premiere 中執行 ExtendScript 的方法(MCP 搭配 execute_extendscript 或基於檔案的 CEP bridge)——請參閱儲存庫根目錄中的 docs/PREMIERE-BRIDGE.md。
  • 已安裝 Montserrat Bold 字型(免費,Google Fonts)。如果找不到,請設定 CAPTION_FONT_DIR 或將 .ttf 檔案放入技能內的 fonts/ 資料夾中。
  • 預設模式(PNG)不需要 .mogrt。只有 .mogrt 替代方案需要 assets/Simple_Text_WbW.mogrt(請參閱 assets/LEIA-ME.md)。

參數(最終依據:style.json 和 scripts/plan_phrases.py 中的 RULES)

  • 9x16(1080x1920)。Montserrat Bold 66 px,白色,柔和陰影(模糊 6,dy 4,55%)。y_center 0.70。
  • 無入場動畫:每句字幕都是一個透明 PNG 1080x1920(由 make_stills.py 產生),在第一影格完整出現,並在硬切時消失。逐字 .mogrt 不適用:其入場是內建的(只有「離場動畫」和「動畫速度」50-500,沒有「入場動畫」)。PNG 的缺點:文字在 Premiere 中不可編輯——要修正,請編輯 blocks.json 並重新產生(只需幾秒鐘)。
  • 每句 3-4 字,透過動態規劃實現:避免 1-2 個單獨的字,不以「的/了/在/是...」結尾,優先在有逗號或停頓處裁切;逗號僅在至少有 3 個字時才裁切。在快速說話時(一句話在 < 0.9 秒內跨過),合併最多 5 個字,但不跨過句子結尾(. ? !)。
  • 安全框:所有內容都在 Premiere 的標題安全框內(80% x 80%);有效寬度 78%(1080 中為 842 px),區塊在高度 10%-90% 內。文字會縮小直到 min_scale,如果仍放不下,則換行;大小向下取整。使用 check_margins.py 確認(應顯示「超出邊界:0」)。
  • 交付:直接在指定的序列上編輯(不複製),除非使用者要求複製。

螢幕時間 = 語音時間(sync 模式,預設)

  • 字幕在說出第一個字時開始(零延遲),並在最後一個字結束後加上 tail 0.3 秒時消失,僅在之後有靜音時延長至 min_dur 0.8 秒(絕不侵入下一句)。如果字幕停留時間 < 0.5 秒,則僅在能容納在 5 個字內且前一句未結束時,才與前一句合併。
  • 專案備註:也存在 schedule_mode: "lag" 模式(閱讀時間:每句至少停留 ~0.9 秒,如果語音更快,下一句會延後進入,最多 0.9 秒)。這會使字幕與語音脫鉤(開始和結束不再一致,持續時間與所說的內容無關),因此預設為 sync。僅在使用者要求更慢的閱讀速度時才使用 lag(使用 --config 搭配 {"schedule_mode":"lag"})。
  • 誠實的限制:非常密集的語音(~3.6 字/秒,峰值 6 字/秒)會導致某些句子很短(0.36-0.8 秒)。這是語音的問題,不是字幕的問題。

選項 A — 僅在已編輯的序列上加入字幕

  1. 與使用者確認專案/序列,並使其保持作用中。
  2. 轉錄:從 Premiere 匯出的 JSON(文字 > 轉錄 > ... > 匯出;會放在文件「<序列名稱>.json」)。
  3. PYTHONIOENCODING=utf-8 python -I <skill>/scripts/plan_phrases.py <transcricao.json> <pasta>/blocks.json;顯示列表和需要[確認]的字詞。
  4. python -I <skill>/scripts/make_stills.py <pasta>/blocks.json <pasta>/png --track 1(產生 PNG + JSX;每次產生使用新資料夾——Premiere 會鎖定已匯入的 PNG)和 python -I <skill>/scripts/check_margins.py <pasta>/png/stills_clips.json。
  5. 在 Premiere 中,保持序列作用中:執行 stills_import.jsx(將 PNG 匯入到一個 bin 中),然後依序執行 stills_01.jsx...,一次一個(ok=20/20)。時間已直接設定在影格網格上(--fps,預設 30)。

選項 B — 完整動態剪輯(裁切 + 縮放 + 字幕)

  1. 將影片匯入專案,並從 Premiere 取得轉錄。
  2. python -I <skill>/scripts/plan_edit.py <transcricao.json> <pasta>:移除 > 0.3 秒的停頓和猶豫(空白文字),在標點處進行約 3 秒的子裁切,交替執行 100%/116% 的縮放,並寫入 clips.json 和已在裁切時間上的 blocks.json。在腳本頂部調整(GAP、ZOOM_ALT、SUB_MIN/MAX)。
  3. python -I <skill>/scripts/build_cut_script.py <pasta>/clips.json <pasta> --item <專案中的檔案名稱> --name "<名稱> 已編輯 9x16" -> montar.jsx;在 Premiere 中執行(原始序列不會被修改)。
  4. 字幕:使用此資料夾中的 blocks.json 執行選項 A 的步驟 4 和 5。
  5. 儲存專案並列出交付內容:裁切、縮放、可疑字詞以及未檢查的項目。

替代方案 .mogrt(可編輯文字,含逐字入場動畫)

python -I <skill>/scripts/make_graphics_script.py <pasta>/blocks.json <pasta>/lote.js --track 1(使用 assets/Simple_Text_WbW.mogrt;動畫速度在 style.json 中),然後執行批次檔 lote_NN.js。僅在使用者接受動畫時使用。

Premiere 技巧(實務中發現)

  • importFiles 需要絕對路徑(new File(...).fsName);createNewSequenceFromClips 會從垂直影片繼承 1080x1920。
  • 渲染:app.encoder.encodeSequence(...) + startBatch() 可能無法進入 Media Encoder 佇列。有效的方法是:seq.exportAsMediaDirect(saida, preset, app.encoder.ENCODE_ENTIRE)(在 Premiere 內渲染,90 秒影片約需 5 分鐘)。預設檔:<Premiere 資料夾>/MediaIO/systempresets/.../H264 Match Source - High bitrate.epr(使用 glob 搜尋;位於安裝目錄內)。「MooV」預設會產生 .mov/.mp4 中的 PCM 音訊;如果要上傳,請使用 ffmpeg -c:v copy -c:a aac 重新封裝。
  • 匯出影格(透過 QE 使用 exportFramePNG)可能會失敗;字幕的 PNG 不需要這樣做:PNG 中看到的內容就是影片中會出現的內容。

快速調整

我想要調整位置
字型/大小/位置/陰影style.json(font_path、mogrt_font、mogrt_size、y_center、shadow_*)
更長的螢幕時間RULES 中的 min_dur、tail(在 sync 模式下僅會因靜音而延長)
3 個字而非 4 個透過 --config 使用 {"max_words": 3}
更多/更少的裁切和縮放plan_edit.py 中的 GAP、ZOOM_ALT、SUB_MIN/SUB_MAX

已知限制

  • PNG 不是可編輯文字(修正方法 = 編輯 blocks.json 並重新產生)。
  • Premiere 的轉錄可能出錯;請在套用前檢查 blocks.json。
  • 參考字型似乎是 Proxima Nova Bold(較窄);實際使用 Montserrat Bold(免費)。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能