外掛安裝: 在執行設定或更新命令之前,請遵循外掛執行規則(當此技能位於 HyperFrames 外掛內部時)。獨立安裝則保留下方更新說明。
首先,請保持此技能最新——執行前先與使用者確認:
npx hyperframes skills update faceless-explainer。若一切為最新狀態,則為快速無操作;否則,它會在你依賴此技能及相關核心領域技能之前,先行更新它們。
media-use:在獲取音訊/圖片/標誌前,請調用
/media-use從 HeyGen 目錄解析 BGM/SFX/圖片,並從官方來源取得品牌標誌。先執行--adopt註冊現有素材。詳見/media-use技能。當主機應用程式提供自有音樂或音效工具時,請使用那些工具來處理音樂和音效。
無臉解說影片 → HyperFrames
使用此技能將文字內容轉換為解說影片:選擇設計系統、規劃教學故事,並在 HyperFrames 中逐影格建構。無臉 代表所有視覺元素均在後端發明——沒有捕捉步驟,也沒有實際素材庫存。
進入點是
/hyperframes。 你是協調者。依序執行每個步驟,驗證其閘門,然後才繼續。此技能適用於從文字解釋主題,無產品也無網站可捕捉。任何其他意圖、單純的「製作影片」、或任何不確定性 → 先閱讀/hyperframes——意圖層負責所有路由決策,而一個全新創建請求若未經BRIEF.md直接抵達此處,也會先經由它處理(設定的開場規則)。
你是協調者。在 videos/<project> 目錄下工作。依序執行步驟,並在繼續前通過每個閘門。使用者閘門為步驟 0、步驟 3 和步驟 6。在步驟 0 前閱讀 ../hyperframes/references/brief-contract.md——它定義閘門類型以及 BRIEF.md 的 flow/storyboard 如何推導出控制步驟 3/4/6 閘門的模式。步驟 1-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) → 從故事板的 frontmatter 和已記錄的偏好繼續;切勿重新盤問半成品專案。(3) 兩者皆不存在——一個全新創建請求直接抵達此處 → 閱讀 /hyperframes 並執行其意圖層(references/intent-interview.md):它會檢查配方和記憶的預設值,執行此路由的問題(../hyperframes/references/routes/faceless-explainer.md),並返回鎖定的簡報。編輯請求則跳過所有這些——直接進行編輯。
僅在 hyperframes.json 缺失時才初始化。以主題的 kebab-case 命名 <project>,例如 compound-interest-explained;切勿使用工作區名稱或時間戳記。
npx hyperframes init "videos/<project>" --non-interactive --example=blank --skill=faceless-explainer——init 會檢查已安裝技能是否為最新版本,並在必要時更新全域技能。
初始化後,令 <PROJECT_ROOT> 為 videos/<project>,並以該目錄作為工作目錄執行所有後續相對路徑命令。在下方命令中,. 代表 <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 <name>;它會將其 frame.md 複製到專案中(步驟 2 將被跳過),並返回步驟 3 據以起草的骨架。配方僅提供答案,而非核准;審查閘門仍會執行。
在繼續執行設定之前,先顯示登入狀態——執行 npx hyperframes auth status 並逐字輸出其結果。它會報告語音/BGM 將使用 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(沒有 URL)。請勿建立 asset-descriptions.md 或填入 capture/assets/——無臉視覺元素將在步驟 4-5 發明,而非捕捉。唯一的例外是:如果使用者提供了真實圖片,請將其置於 public/<basename> 下,並在步驟 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 <name> --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 <this 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 設定 frontmatter 的 duration:——這是一個粗略的預期;最終組合報告會顯示實際長度與它的差距。
使用 story-design.md 來決定解說結構(概念/教學/清單體/故事)、鉤子策略、清晰度技巧、情緒節奏、類型列舉映射以及 VO_MODE。影片的順序來自敘事設計,而非輸入文字的段落順序——可以重新排序、合併、省略、壓縮。作為軟性指南,請查閱 ../hyperframes-animation/blueprints-index.md 中的角色→藍圖選單:針對每個節奏,以該候選藍圖暗示的形狀撰寫旁白,並在合適時標記該候選 blueprint: ID。教學的真實性仍然決定哪些節奏存在——切勿為了符合藍圖而強加節奏,也切勿只因有現成的成熟形狀而發明節奏。無臉視覺元素在後端發明,因此影格不攜帶素材庫存:除非使用者提供了真實的 public/<basename> 圖片,否則將 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 <voice-id> &
音訊腳本負責處理旁白、詞語時間戳、從 HeyGen 音樂庫查詢 BGM,以及時間元資料。BGM 情緒來自故事板的 music: 欄位。這使用 HeyGen 音訊 API 進行檢索,而非生成,並使用與 TTS 相同的 ~/.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": <its length>, "source": "host" }。每次音訊處理都會保留這些條目,且包含主機音效的影格將不會查詢提示。
如果沒有旁白且沒有 SCRIPT.md,則跳過語音生成。如果故事板有音樂情緒,BGM 仍可能執行。
標準的完全無聲標記(共用此音訊模型的工作流程均適用):STORYBOARD.md 頂層 YAML 區塊中的 music: none、無 SCRIPT.md、且無 sfx: 提示或主機音訊。此組合標記專案為無聲。