Communitygithub.com

m2promario-afk/hyperframes-M2PRO

將任意文字(文章、筆記、主題、簡報)轉換為無真人現身的解說影片:畫面完全由場景生成(排版、抽象圖形、圖表、資料視覺化),無需網站或實際素材。

hyperframes-M2PRO 是什麼?

這個名為「Faceless Explainer to HyperFrames」的技能,專為 Claude Code、Cursor 和 Codex 等 AI Agent 設計,能將純文字內容自動轉換為「無真人現身」的解說影片。與傳統影片製作不同,它不依賴任何網站擷取或實際素材拍攝,每個場景的視覺元素(排版、抽象圖形、圖表、資料視覺化)均由 AI 動態生成。該技能支援多種平台,透過 HyperFrames 框架實現結構化工作流程,涵蓋設計系統選擇、故事腳本規劃、語音生成和最終渲染。使用者或 AI Agent 只需提供文字、設定專案並確認設計系統,其餘步驟如音訊生成和子幀建立等,均可自動或半自動完成,特別適合製作知識解說、概念拆解、教學指南或清單類影片。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/m2promario-afk/hyperframes-M2PRO/tree/HEAD/skills/faceless-explainer

在你喜歡的 AI 中提問

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

說明文件

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

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

media-use: 在取得音訊/圖片/標誌前,請先呼叫 /media-use,以從 HeyGen 目錄解析背景音樂/音效/圖片,並從官方來源取得品牌標誌。先執行 --adopt 註冊現有素材。詳見 /media-use 技能。若主機應用程式提供其專屬的音樂或音效工具,請使用那些工具來處理音樂和音效。

無真人現身解說至 HyperFrames

使用此技能將一段文字轉換為解說影片:選擇設計系統、規劃教學故事,並在 HyperFrames 中逐幀建構。無真人現身表示每個視覺元素都在後續步驟中生成 — 沒有擷取步驟,也沒有真實的素材清單。

入口是 /hyperframes。你是協調者。依序執行每個步驟,通過其關卡,然後才繼續。此技能用於從文字解說一個主題,無產品也無網站可擷取。任何其他意圖、單純的「製作影片」、或不確定時 → 先閱讀 /hyperframes — 意圖層負責所有路線決策,且一個新創建任務若未經由意圖層(設定開場規則)產生 BRIEF.md,仍會透過它。

你是協調者。在 videos/<專案>/ 中工作。依序執行步驟並在每個關卡通過後繼續。使用者關卡為步驟 0、步驟 3 和步驟 6。在步驟 0 前閱讀 ../hyperframes/references/brief-contract.md — 它定義了關卡類型以及 BRIEF.md 的 flow/storyboard 如何推導出控制步驟 3/4/6 關卡的模式。除步驟 5 需為每個影格派發一個子代理外,所有步驟均由你親自執行。請勿在此放置設計或動畫規則;這些存在於影格工人子代理、此技能本地 ../hyperframes-animation/rules/ + ../hyperframes-animation/blueprints/ 以及 hyperframes-creative 中。

工作流程:步驟 0 設定 → hyperframes.json;步驟 1 簡報 → capture/extracted/;步驟 2 設計系統 → frame.md;步驟 3 分鏡/腳本 → STORYBOARD.md 和 SCRIPT.md;步驟 3.1 音訊 → audio_meta.json;步驟 4 視覺設計 → 豐富的 STORYBOARD.md;步驟 5 影格 → compositions/frames/NN-*.html 和 index.html;步驟 6 最終渲染 → renders/video.mp4。


步驟 0:設定

目標:在確認的簡報下進入,建立 HyperFrames 專案,並使簡報持久化。

簡報由意圖層確認,而非在此提問。 開場規則,依序:(1) BRIEF.md 存在 → 讀取它且不詢問任何問題 — 簡報已確定,其 flow/storyboard 推導出模式(簡報合約 § 1)。(2) 無 BRIEF.md 但專案存在(磁碟上有 hyperframes.json / STORYBOARD.md)→ 從分鏡的前置資料和已記錄的偏好繼續;切勿重新詢問一個已半完成的專案。(3) 兩者皆無 — 一個直接到達此處的新建立請求 → 閱讀 /hyperframes 並執行其意圖層(references/intent-interview.md):它檢查配方和記住的預設值,進行此路線的提問(../hyperframes/references/routes/faceless-explainer.md),並交回鎖定的簡報。編輯請求則跳過所有這些 — 直接執行編輯。

僅在 hyperframes.json 遺失時初始化。以 kebab-case 方式從主題命名 <專案>,例如 compound-interest-explained;切勿使用工作區名稱或時間戳。

npx hyperframes init "videos/<專案>" --non-interactive --example=blank --skill=faceless-explainer — init 會檢查已安裝技能與 GitHub 最新版本的比對,並在有任何技能過期時更新全域集合。

初始化後,令 <PROJECT_ROOT> 為 videos/<專案>,並將所有後續相對路徑命令以此目錄作為其工作目錄。在下方命令中,. 代表 <PROJECT_ROOT>;切勿在呼叫者目錄中寫入 .media、capture 或輸出檔案。

初始化後立即寫入 BRIEF.md(絕不在此之前 — init 拒絕非空目錄):意圖層鎖定的簡報,格式依照 ../hyperframes/references/brief-format.md。將 <MEDIA_DIR> 解析為已安裝的 /media-use 技能目錄。然後使用 node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes . 記錄每個基於偏好的答案(brief-format.md 列出了子集)。若意圖層採用了一個配方,請執行 node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes . --name <名稱>;它會將其 frame.md 複製到專案中(步驟 2 將被跳過)並傳回步驟 3 起草所用的骨架。配方填寫答案,而非批准;審查關卡仍然執行。

在繼續進行設定之前,顯示登入狀態 — 執行 npx hyperframes auth status 並逐字轉述其輸出。它會報告語音/背景音樂將使用 HeyGen 或本地引擎,並在未登入時提供登入方式。根據下列情況分支:

  • 協作模式: 等待使用者登入或明確選擇 offline / go。
  • 自主模式: 陳述狀態並繼續使用可用的本地引擎。

當沒有離線提供者時,請勿靜默地省略必要能力;應提出阻礙。請勿將此決策併入其他問題或將金鑰寫入儲存庫的 .env 檔案。授權所有權和離線備援方案:/media-use references/setup-providers.md § 提供者。

關卡: hyperframes.json 和 BRIEF.md 存在;基於偏好的答案已記錄(簡報合約 § 2);已顯示登入狀態(已登入,或繼續以離線模式執行)。


步驟 1:簡報(無擷取)

目標:將使用者的文字作為資訊來源納入專案中。沒有網站擷取,也沒有真實素材 — 這是個無真人現身的解說。

逐字儲存使用者的完整輸入,然後手動建立合成的擷取套件:

  • capture/extracted/visible-text.txt — 完整的文章/筆記/主題/簡報,逐字保留。這是資訊的來源,而非故事模板(步驟 3 會重塑它)。
  • capture/extracted/tokens.json — { "title": "", "description": "", "colors": [], "fonts": [] }。從簡報中填寫 title/description。除非使用者明確提供了品牌顏色或字型,否則將 colors/fonts 留空(設計預設集無論如何都會提供完整的調色盤)。

如果使用者貼上了腳本或希望保留其措辭,請逐字儲存為 user_script.txt;VO_MODE(逐字或重構)來自 BRIEF.md — 意圖層在腳本送達時會詢問。僅在簡報中恰好缺少此資訊時在此詢問一次,並為步驟 3 儲存答案。

不要執行 npx hyperframes capture(沒有網址)。不要建立 asset-descriptions.md 或填充 capture/assets/ — 無真人現身的視覺元素將在步驟 4-5 中發明,而非擷取。唯一的例外是:如果使用者提供了真實圖片,請將其放置於 public/<基名稱> 下,並在步驟 3 中標記它。

關卡: capture/extracted/visible-text.txt 和 capture/extracted/tokens.json 存在;你能用一句清晰的句子說明解說主題和目標受眾。


步驟 2:設計系統

目標:選擇一個內建的影格預設集;腳本會將其轉換為此影片的 frame.md + 字幕外觀。

當 BRIEF.md 指定了 style_preset — 使用者已在意圖層透過展示範例選擇 — 使用它;僅在簡報未指定時,判斷才由你決定。然後你做一個決定 — 選擇哪個預設集:閱讀 ../hyperframes-creative/references/design-spec.md 並瀏覽 ../hyperframes-creative/frame-presets/;選擇外觀最符合主題、語氣和目標受眾的預設集。然後執行:

node <SKILL_DIR>/scripts/build-frame.mjs --preset <名稱> --hyperframes .

腳本會自動完成後續步驟:將預設集的 FRAME.md 複製為 frame.md 並重新混搭 capture/extracted/tokens.json 中的任何品牌標記(品牌顏色按角色映射到預設集的顏色鍵;預設集的顯示字型 + 正文字型替換為品牌字型),將預設集的字幕外觀複製到 .hyperframes/caption-skin.html,並進行自我驗證(映射錯誤時退出碼為 1)。當退出碼為 0 時即可繼續 — 無需手動編輯規格。

無真人現身的解說通常沒有品牌顏色/字型(tokens.json 的 colors/fonts 為空)→ 腳本會保留預設集自己的調色盤,即完整的可出貨設計。僅在使用者指定了品牌顏色/字型時,才在執行前將其加入 tokens.json,並僅在必要時事後手動調整 frame.md。

關卡: build-frame.mjs 退出碼為 0 — frame.md 存在於指定的預設集下,並且(當預設集提供時).hyperframes/caption-skin.html 作為字幕外觀來源存在;所選預設集已記錄為偏好(--key style_preset --workflow <此工作流程>,簡報合約 § 2)。


步驟 3:分鏡與腳本

目標:將文字轉換為已批准的逐幀教學計畫。

閱讀 ../hyperframes-creative/references/story-spine.md(鉤子語言、先提供價值再提供證據、分鏡作為提案、可追溯來源的視覺元素),references/story-design.md,../hyperframes-animation/blueprints-index.md,../hyperframes/references/storyboard-format.md,以及 ../hyperframes/references/script-format.md。使用它們來編寫 STORYBOARD.md,並在需要旁白時編寫 SCRIPT.md。從簡報的 length 設定前置資料 duration: — 作為粗略預期;組合時會報告實際長度與此值的比較。

使用 story-design.md 來決定解說結構(概念 / 實作指南 / 清單 / 故事)、鉤子策略、清晰化技巧、情感節奏、類型枚舉映射和 VO_MODE。影片的序列來自敘事設計,而非輸入文字段落順序 — 可以重新排序、合併、省略、壓縮。作為軟性指引,請參考 ../hyperframes-animation/blueprints-index.md 中的角色→藍圖選單:對於每個節奏,以候選藍圖暗示的形狀編寫旁白,並在合適時標記該候選藍圖的 blueprint: ID。教學的真實性仍決定哪些節奏存在 — 絕不為了適應藍圖而強加節奏,也絕不為了有現成的證明形狀而發明節奏。無真人現身的視覺元素在後續步驟中發明,因此影格不攜帶素材清單:除非使用者提供了真實的 public/<基名稱> 圖片,否則將 asset_candidates 留空。使用分鏡和腳本參考文件中確切的必要欄位。

起草後,執行審查循環的計畫審查 — ../hyperframes/references/review-loop.md § 1:將計畫作為提案呈現,並詢問兩個問題 — 批准或修改,以及是否先建立草稿(建議)或跳過。回饋以聊天回覆方式進行;循環直到獲得批准。這是一個檢查點關卡(簡報合約 § 1):在自主模式下無需詢問 — 直接發布相同的摘要作為提示並繼續;草稿會整合到建置中,最終預覽及其一個問題將在步驟 6 進行。

關卡: STORYBOARD.md 存在,每個影格都具有必要的敘述欄位,SCRIPT.md 在需要旁白時存在,並且使用者批准了逐幀計畫(自主模式:摘要已發布作為提示)。


步驟 3.1:音訊

目標:根據批准的腳本生成旁白、單字時間戳、音樂和音訊元資料。

在步驟 3 批准後開始音訊處理。在背景下執行,然後繼續進行步驟 4。(登入狀態已在步驟 0 顯示;引擎會自動備援。)

在調用前,根據使用者的要求選擇旁白語音。 如果請求指定了語音、性別或語氣,請選擇匹配的語音 ID 並透過 --voice <id> 傳遞。否則管線預設為 HeyGen 上的 Marcia(女聲) / Kokoro 上的 am_michael — 因此像「男聲」這樣的請求若未傳遞旗標則會被靜默忽略。語音 ID 是特定於提供者的;根據步驟 0 的登入狀態選擇的提供者進行解析:HeyGen(已登入)透過 node <MEDIA_DIR>/audio/scripts/heygen-tts.mjs --list(或 GET /v3/voices?engine=starfish);Kokoro(離線)透過 <MEDIA_DIR>/audio/references/tts.md 中的語音表(am_/bm_ 前綴為男聲,af_/bf_ 前綴為女聲)。當使用者未表達偏好時,在管線預設值之前,先回退到記住的語音(簡報合約 § 2),並說明你使用了哪個;僅當兩者皆未指定時才省略 --voice。當使用者在此次執行中明確選擇了語音,請記錄它(prefs.mjs record --key voice)。

node <SKILL_DIR>/scripts/audio.mjs --script ./SCRIPT.md --storyboard ./STORYBOARD.md --hyperframes . --out ./audio_meta.json --voice <語音-id> &

音訊腳本負責處理旁白、單字時間戳、從 HeyGen 音樂庫查找背景音樂以及時間元資料。背景音樂情緒來自分鏡的 music: 欄位。這使用 HeyGen 音訊 API 進行檢索(而非生成),並使用與文字轉語音相同的 ~/.heygen 憑證。有關提供者詳細資訊,請閱讀 ../media-use/audio/references/tts.md。當主機應用程式的自有工具生成音樂或音效時,請將檔案放在 assets/ 下,並在 audio_meta.json 檔案中標記為 "source": "host":音樂作為 bgm { "path": "assets/…", "source": "host" } 並在分鏡中設定 music: none;音效作為 sfx 條目 { "frame": <n>, "file": "assets/…", "offset_s": 0, "duration_s": <其長度>, "source": "host" }。每次音訊處理都會保留這些,且包含主機音效的影格不會再有查找提示。

如果沒有旁白且沒有 SCRIPT.md,則跳過語音生成。如果分鏡有音樂情緒,背景音樂仍可能執行。

正式的完全靜音標記(跨重用此音訊模型的工作流程共享):在 STORYBOARD.md 的頂層 YAML 區塊中設定 music: none,無 SCRIPT.md,且無 sfx: 提示或主機音訊。此組合標記專案為靜音 —

…

[截斷以利翻譯]

相關技能