首先,保持此技能更新 — 靜默執行,無需詢問:
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-core/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 遺失時才初始化。將 <project> 從主題以 kebab-case 命名,例如 compound-interest-explained;切勿使用工作區名稱或時間戳。
npx hyperframes init "videos/<project>" --non-interactive --example=blank --skill=faceless-explainer — init 檢查已安裝的技能是否與 GitHub 上的最新版本一致,並在有任何技能過期時更新全域集合。
初始化後,讓 <PROJECT_ROOT> 成為 videos/<project> 並將每個後續的相對路徑命令都在該目錄作為工作目錄的情況下執行。在下列命令中,. 代表 <PROJECT_ROOT>;切勿將 .media、capture 或輸出檔案寫入呼叫者目錄。
在初始化後立即寫入 BRIEF.md(絕不能在此之前 — init 拒絕非空目錄):意圖層鎖定的簡報,格式參照 ../hyperframes-core/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-core/references/storyboard-format.md 和 ../hyperframes-core/references/script-format.md。使用它們來撰寫 STORYBOARD.md 以及當需要旁白時的 SCRIPT.md。從簡報的 length 設定前置資料 duration: — 一個粗略的期望;組裝會報告最終剪輯與它的對比情況。
使用 story-design.md 來獲得說明影片結構(概念/如何做/列表文章/故事)、鉤子策略、清晰技巧、情感節奏、類型枚舉映射和 VO_MODE。影片的順序來自敘事設計,而非輸入文字的段落順序 — 重新排序、合併、省略、壓縮。作為軟性指引,諮詢 ../hyperframes-animation/blueprints-index.md 中的角色→藍圖選單:對於每個節拍,以候選藍圖所暗示的形式撰寫畫外音,並在合適時標記該候選的 blueprint: id。教學真相仍然決定哪些節拍存在 — 絕不強迫一個節拍適應藍圖,也絕不只因一個已證實的形狀可用而發明一個節拍。無真人解說員的視覺效果是後續虛構的,因此影格不攜帶資產庫存:除非使用者提供了真實的 public/<basename> 圖片,否則將 asset_candidates 留空。使用分鏡和腳本參考資料中要求的確切欄位。
草稿完成後,執行審查循環的計劃遍歷 — ../hyperframes-core/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。
如果沒有旁白且沒有 SCRIPT.md,則跳過語音生成。如果分鏡有音樂情緒,BGM 仍然可以執行。
規範的完全靜默標記(跨重用此音訊模型的工作流程共享):STORYBOARD.md 頂部 YAML 區塊中的 music: none 且沒有 SCRIPT.md。該組合將專案標記為靜默 — 無旁白、無 BGM、無 SFX。audio.mjs 會識別它並且不生成任何內容(它會移除任何過時的 audio_meta.json;一個不存在的 audio_meta.json 是組裝視為靜默的條件),因此此步驟是乾淨的跳過。music: none 與旁白一起保留 TTS 並僅關閉 BGM。請使用此確切拼寫 — 不要即興使用其他標記。
關卡: 音訊作業已啟動,或專案被標記為靜默(music: none + 沒有 SCRIPT.md)。
步驟 4:影格視覺設計
目標:為每個分鏡影格添加視覺方向、佈局意圖和動作選擇。
先草繪看板(僅限協作模式)。 計劃獲得批准後,立即執行草稿遍歷 — ../hyperframes-core/references/review-loop.md § 2(不要等待步驟 3.1;草稿不使用時間):為每個影格繪製線框圖
…
[對翻譯而言已截斷]