Communitygithub.com

kinyias/hyperframes-templates

為現有的單一主體說話頭影片添加字幕或隱藏式字幕,無需編輯原始素材。適用於純逐字字幕、嵌入主體後方的電影感字幕、VFX 特效字幕、「炸/特效/酷炫字幕」,或從 35 種風格目錄中選取具名身份。根據視覺識別而非後端引擎進行路由。安靜的 `anchor` 軌道是預設值;僅當使用者明確要求完全電影感處理時,才嵌入每個字。工作流程從頭到尾在本地執行,包括轉錄和主體遮罩;請先分割多鏡頭素材再套用。

hyperframes-templates 是什麼?

這個 AI 助手技能用於為單一主體的說話頭影片添加字幕或隱藏式字幕。它支援三種模式:標準模式(預設)會建立乾淨的逐字底部第三字幕軌道,並在關鍵時刻將重點字詞合成到主體後方;電影感模式則完全採用嵌入方式,所有字幕都合成在主體後方;主題模式則提供完整的風格化構成(如軍火、終端、霓虹燈、星塵、踩踏)。用戶從 35 種視覺身份目錄中選取一種,引擎和編譯器會自動決定,無需用戶選擇後端。流程包含決策關卡(拒絕不合適的片段)、初始化、創意 JSON 編寫、預覽和最終渲染。它支援 Claude Code 等 AI 編碼工具,並可作為 HyperFrames 外掛程式使用。關鍵注意事項包括:保持原始素材不變、僅在明確要求時才嵌入所有字詞,以及遵循嚴格的字幕模型(丟棄 filler、軌道顯示一般內容、嵌入顯示重點高潮)。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kinyias/hyperframes-templates/tree/HEAD/.agents/skills/embedded-captions

在你喜歡的 AI 中提問

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

說明文件

外掛程式安裝: 在執行設定或更新命令前,若此技能位於 HyperFrames 外掛程式內,請遵循外掛程式執行規則。獨立安裝則保留以下更新說明。

首先,保持此技能最新 — 請在使用前與使用者確認後執行: npx hyperframes skills update embedded-captions。若一切已是最新,則快速無操作;否則它會更新此技能及其依賴的核心領域技能。

嵌入式字幕

一個目錄,事先選定(CATALOG.md — 35 種身份;背後的引擎是後端細節)。標準(預設)會建立一個乾淨的逐字軌道(承載大部分文字的底部第三字幕)+ 一個在關鍵時刻合成到場景中、主體後方的嵌入高潮。電影感是純嵌入 — 沒有軌道,每個字幕都合成在主體後方(字體突出、堆疊、遮蔽效果)。主題是完整的風格化構成 — 主體範式 × 英雄場景 × 前端特效 × 底板反應,從註冊表中組合(themes/README.md):ordnance terminal neonsign stardust stomp。大部分解說/旁白是標準;嵌入是稀缺的、應得的亮點 — 嵌入每個字是常見錯誤;主題適用於 VFX 等級的要求(「炸」、「特效」、「像 AE 做的」)。


執行環境需求

外掛程式安裝使用捆綁的、清單固定版本的 CLI 進行遮罩、轉錄和渲染;無需原始碼簽出。本地預覽和字幕測量輔助工具還需要 Sharp、Puppeteer(及其 Chromium 瀏覽器)和 GSAP。請在字幕專案中安裝這些,而不是在唯讀外掛程式內:

npm install --prefix <project> --save-dev --save-exact [email protected] [email protected] [email protected]

保留專案的鎖定檔案。若這些相依項目已存在,請使用其鎖定的版本,而非覆蓋它們。Bash 和 FFmpeg/ffprobe 必須在 PATH 中。遮罩和轉錄可能在首次使用時下載其自有模型。

渲染會等待 CLI 成功退出後才進行合成。舊的 HF_TIMEOUT_S shell 看門狗不再使用:大型部分檔案並非渲染完成的證明。明確的內建簽出引數或 HYPERFRAMES_ROOT 會選擇貢獻者 CLI 而非外掛程式固定版本。可透過 CLI/終端機正常取消停滯的渲染;字幕輔助工具不會強制終止或從程序快照恢復渲染。

操作流程(簡而言之)

透過 /hyperframes 路由,意圖層僅確認輸入(哪個片段)並宣佈身份選擇為延後詢問 — 短清單需要探查的片段,因此它保留在下面的步驟 1;該層的運行形狀問題不適用(素材未經編輯,無需審查腳本)。BRIEF.md(若存在)攜帶已確認的輸入和任何使用者筆記 — 請先閱讀它。

下面的製作說明很長;管線本身很短 — 且所有確定性任務都是計算或編譯的,絕非手寫:

  1. 決策關卡(拒絕不良片段)→ 從 CATALOG.md 選取一種身份(35 種身份;引擎/編譯器透過查詢推導 — 永遠不要提出模式/類別問題)
  2. hyperframes init(若專案目錄已存在且包含影片則跳過 — matte.cjs/transcribe.cjs 會將目錄中的任何影片視為 source.mp4)→ bash scripts/prepare.sh <project>(遮罩 ∥ 轉錄 ∥ 音訊包絡平行進行,然後安全區域 v2 配合場景調色板/光學/燈光 — 一個命令,無遺漏)
  3. 編寫一個小的創意選擇 JSON(先讀取 safe-zones.json):電影感 → cinematic.json → make-cinematic.cjs(推導 plan.json 並編譯它);主題 → theme.json → make-theme.cjs(軌道/面板/詩詞/接管範式;anchor 是安靜的軌道預設值)
  4. 視覺 QA:node scripts/preview-frames.cjs <project> → 約 2 秒/幀的忠實合成預覽(無需渲染)。請在支付渲染費用前檢查 § 視覺 QA。
  5. render-and-composite.sh → 關卡(時序 / 遮蔽+英雄 / 溢出 / 交接)→ final.mp4

人們常遺漏的負載規則:

  • 軌道(預設)+ 嵌入(升級)。 drop(填充詞,不顯示)/ rail(逐字底部第三字幕,在前方,承載大部分文字)/ embed(合成在主體後方的重點詞)。標準模式兩者皆做,僅嵌入亮點。請參閱 § 字幕模型。
  • 影片以未經編輯的狀態交付(標準/電影感;主題模式的 PLATE 預算是唯一批准的例外 — 註冊表控管的反應節拍(充電變暗、衝擊、搖晃、顆粒)根據每個主題 DNA 定義,並在遮罩合成後套用,使主體+文字+底板作為一個畫面移動) — 字幕是唯一添加的東西;遮罩只是讓主體遮蔽嵌入軌道。絕不調色/重新著色/掃描線素材。
  • 兩本規則書:軌道 → references/rail.md(簡短),嵌入製作 → references/composition-craft.md(豐富,僅嵌入)。按需瀏覽。

字幕模型 — 軌道 + 嵌入

每個口語短語都是以下三種之一:

是什麼如何顯示
drop填充詞 — 呃/嗯、口吃、自我修正不顯示
rail預設 — 一般口語內容(逐字)乾淨的底部第三字幕,在前方,可讀。一個重點詞可以獲得內聯 emphasis 高亮(強調色 / 活躍詞彈出)— 它保留在軌道上。
embed一個被升級的亮點 — 標題性節拍一個大字合成在主體後方(遮罩遮蔽),設計好的入場+出場

軌道承載大部分文字;嵌入是稀缺的、應得的亮點。 稀缺是每個節拍/區塊,而非每個片段:每個區塊(思想)≤1 個英雄,絕不兩個同時可見,英雄視窗之間至少有一個節拍的間隔(編譯器在低於 0.6 秒時會發出警告)。短片段 → 通常 1–2 個;長解說 → 大約每個段落一個。在多個英雄中,最大的創作英雄是 APEX(它單獨獲得完整的鎖定嵌入 + 寬度適應提升);較小的則是次要峰值,它們在其列中作為超大強調行(前景,衰減運動)— 並非每個節拍都需要遮罩展示,這正是讓 apex 成為事件的原因。嵌入每個字仍然是常見錯誤。

軌道表面身份正是建立這個(軌道 = rail.html,嵌入 = index.html 中的高潮)。列流身份則放棄軌道,讓所有內容都採用嵌入風格 — 僅在需要氛圍勝過逐字的要求時推薦它們,絕不用於解說/旁白(其中文字必須可讀)(CATALOG.md 為每個身份編碼了這一點)。


步驟 0 — 從目錄中選取一種身份

一個前端,背後三個引擎。 使用者從 CATALOG.md 中選取一個身份(35 個條目:10 個經典 + 25 個主題);引擎、編譯器和創作檔案透過目錄行查詢推導。永遠不要將「標準 vs 電影感 vs 主題」作為問題提出 — 這些是後端名稱(一個產品即使有多個引擎也只有一個 UX)。目錄編碼了路由所需的一切:閱讀表面、語調、推薦對象、場景需求、真正接近配對(loud↔ordnance、neon↔neonsign、cream↔stardust)的鄰近筆記。

身份選擇是一個偏好關卡(../hyperframes/references/brief-contract.md § 1):在自主模式(「給我驚喜」/「替我決定」)中,從你的短清單中自行選取,並陳述一行原因而非詢問。

程序:探查片段 → 從目錄中短清單 2–3 個身份 → 推薦一個並附上一行原因 → 使用者選取(自主模式:你選取,陳述原因)→ 創作該身份的檔案。身份是引擎鎖定的(無交叉組合;打開一個是驗證事件 — 請參閱 dna/README.md)。

始終提出你的推薦,讓使用者在創作前選取。不要默默使用預設值。

(完整的身份表格位於 CATALOG.md — 路由的單一事實來源。下面的引擎文件描述了每個後端的創作合約。)

CATALOG.md 是這裡的完整答案空間:此工作流程不會搜尋 HyperFrames 元件註冊表。 構成工作流程在創作具名外觀前執行 npx hyperframes catalog;這個則不得如此。其引擎是鎖定的編譯器,它們消費 cinematic.json / theme.json 並自行發出構成,因此註冊表項目 — 包括 caption-* 區塊 — 沒有東西可以掛載進去。註冊表區塊在設計好的畫面上設定文字樣式;此技能透過遮罩將字幕燒錄到某人的素材中。當沒有身份符合要求時,請說明並選取最接近的,而非超出目錄範圍。

推薦啟發法:使用 CATALOG.md 中的「短清單啟發法」— 它們是身份層級的(例如「炸」短清單 ordnance/stomp/terminal/loud 並根據什麼應該爆炸來選取),絕非類別層級。不確定 → anchor。

  • 電影感 → 為鎖定模板編寫 cinematic.json,由 make-cinematic.cjs 編譯。
  • 主題 → 閱讀 themes/README.md,創作 theme.json,執行 scripts/render-theme.sh(編譯 + 渲染 + 底板反應 → final_fx.mp4)。

決策關卡 — 先執行

在任一模式前探查影片並分類場景。

ffprobe <video.mp4>                    # 規格
ffmpeg -ss <t> -i <video.mp4> -vframes 1 sample.png   # 在 20/50/80% 處

讀取樣本。若以下情況則拒絕:

  • 多個說話者 / 硬剪輯(分割並渲染每個鏡頭,或拒絕)
  • 無人類主體(此技能用於說話頭)
  • 少於 3 秒,無語音,或臉部從未清晰可見 — transcribe.cjs 在音訊接近靜音時會發出警告(Whisper 會在靜音上產生幻覺單詞如「謝謝你。」;請留意並拒絕,而非為虛構單詞加字幕)
  • 原始素材已有燒錄進去的字幕/隱藏式字幕/大量文字圖形 — 添加第二個字幕系統會衝突,且素材以未經編輯狀態交付(無覆蓋/修補)。燒錄文字通常只在片段中間出現:取樣一個 1fps 聯絡表(ffmpeg -i in.mp4 -vf "fps=1,scale=160:-1,tile=10x5" sheet.png),不要相信 3 個點狀幀。
  • 轉錄稿是垃圾 — 非母語/口音重的語音可能會被轉錄成自信滿滿的胡言亂語。在創作前理智檢查 transcript.json;若它無法解析為語言,嘗試 WHISPER_MODEL=medium 一次,否則拒絕(虛構單詞的逐字軌道比沒有字幕更糟)。
  • 忙碌的手持拍攝,運動快速(遮罩閃爍)

飛行前探查(無成本,防止最糟的失敗)

  1. 鏡頭剪輯探查。 在 20%、50%、80% 處取樣幀。若出現不同的主體/場景,在剪輯前修剪片段。
  2. 信箱/柱箱探查。 第一幀有黑條?計算安全內容矩形並將字幕放置限制在其中。
  3. 亮度探查。 取樣字幕區域的平均亮度 — 低於 60 → 亮色文字按原樣可讀,60-180 → 添加字形遮罩,180+ → 不透明文字 + 遮罩(絕不單獨使用亮色文字)。電影感模板是奶油色 + screen 且鎖定 — 使用此探查來_選擇合適的身份_(亮場景 → ink,或不透明軌道 anchor 主題),絕非重新著色一個。
  4. 按語調的身份推薦(你推薦;使用者選取 — 請參閱步驟 0 + CATALOG.md)。 解說 / 訪談 / 必須可讀的文字 → 軌道/面板表面身份;詩意 / 社交 /「電影感」 → 按語域使用列流身份;「炸 / 特效 / VFX」 / 命名世界 → 主題身份。不確定時 → anchor(文字可讀,場景安全)— 但提出短清單並讓使用者選擇。

管線 — 5 步驟

1. hyperframes init <project> --non-interactive --video <video.mp4> --skill=embedded-captions
2. bash scripts/prepare.sh <project>       # 遮罩 ∥ 轉錄(平行)→ 安全區域。一個命令。
                                           #   → frames_fg/ transcript.json safe-zones.json
3. [代理步驟 — 唯一的創意步驟] 編寫一個小 JSON;見下方各模式的說明
   電影感:創作 cinematic.json → node scripts/make-cinematic.cjs <project>
   主題:     創作 theme.json → bash scripts/render-theme.sh <project>   (編譯 + 渲染 + 底板特效)
4. node scripts/preview-frames.cjs <project>   # ~2秒/幀合成預覽 → § 視覺 QA(在渲染前)
5. bash scripts/render-and-composite.sh <project>  # 關卡 → final.mp4 + history/ 快照
   (主題模式:跳過步驟 3b/5 — render-theme.sh 已經執行編譯 + render-and-composite
    + _postfx.sh;交付物是 final_fx.mp4,final.mp4 是底板反應前的版本)

步驟 1 的 init 會檢查已安裝的技能是否與 GitHub 上的最新版本一致,並更新任何過時的全局技能集。

步驟 3 因模式而異:

步驟 3 — 電影感模式(純嵌入)

  1. 先讀取 safe-zones.json。 旁白平面位於 zones.hugLeft/hugRight — 靠近主體輪廓的乾淨條帶(遠離身體的文字讀起來像是漂浮的,而非嵌入;遠角是備用方案,非預設值)。英雄預設為 heroAnchor/heroBands.best(居中在主體上,約 30–55% 被遮蔽)。recommendation:"fg" 將旁白移至前景以提高可讀性;只要 heroBands.feasible,英雄就保持嵌入 — 英雄前景是最後的手段。
  2. DNA 是你在步驟 0 中選取的身份

…[為翻譯而截斷]

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相關技能