將每週的 changelog .md 轉換為完成的品牌 changelog 影片(方形 1080,約 45-60 秒,Annie 配音,動畫品牌背景,模擬 UI 視覺化,低調字幕)。當使用者提供 changelog/摘要 markdown 並想要每週影片,或說「changelog 影片」時使用。自包含——字型、背景、詞彙表和腳本都隨此技能提供。
Changelog → 品牌影片
輸入:一個 changelog .md(主題 + 項目,例如每週 HyperFrames 摘要)。
輸出:一個 lint 乾淨、seam-gate 綠燈的 HyperFrames 專案,位於
projects/active/weekly-changelog-<range>/。僅在要求時才渲染。
首先載入,不可協商: motion-doctrine(+ cut-the-curve、
oversized-cursor(如果出現游標)、seam-craft)和 captions-overlay。
此技能提供 changelog 專用管線;doctrine 提供運動法則。
首要原則:視覺化,不要列舉
每個主題都透過實際 UI 的動畫模擬或忠實類比來展示體驗的變化——絕不使用文字項目符號。
在撰寫腳本之前,將每個主題/項目路由到 references/visualization-registry.md;
註冊表決定 ui-recreate / ui-analog / terminal / checklist。
文字 checklist 是最後手段,僅保留給真正非視覺的項目(可靠性修復清單)。
管線
1 · 解析 + 編輯剪裁
- 提取:週範圍、重點統計(版本數、提交數)、主題、項目。
- 預算:總長 45-60 秒。 標題 ≤2 秒,片尾 ≤3.5 秒,4 個主題各約 9-12 秒。
- 每個主題保留一個主要視覺化 + 最多 3 個口語項目。
其他所有內容僅作為片尾的「完整摘要」指標存在。剪裁是關鍵:
一個有 30 個項目的 changelog 仍然只產生 ≤14 個口語節拍。 - 按故事順序排列主題:主打功能 → 產品表面 → 效能 →
可靠性(摘要通常已經這樣排列)。
2 · 視覺化路由
對於每個主題,從 references/visualization-registry.md 中選擇表面,
並寫一行:theme → surface → 模擬執行的 2-4 個序列動作,每個動作對應一個腳本短語。
如果沒有註冊表表面符合且沒有忠實類比,則為 checklist 場景——不要為我們無法誠實呈現的內容發明假 UI。
3 · 雙層腳本(口語 vs 顯示)
根據 references/script-voice.md 將腳本寫成標記行:
對話式語氣,每個技術術語從 references/lexicon.json 攜帶 spoken 發音形式,
而 display 保持標準拼寫。字幕顯示 display;配音讀取 spoken。
任何不在詞彙表中的術語:停止並詢問使用者如何發音,然後將其添加到詞彙表中。
儲存為專案中的 script-tokens.json。
4 · 配音 — Annie(HeyGen,固定)
# 僅口語層文字;words JSON = 口語文字的基準時間戳
# 儲存庫原生路徑:changelog-video 技能從 hyperframes 儲存庫根目錄執行,
# 因此直接使用追蹤的 hyperframes-media TTS 輔助工具(無需 `npx hyperframes
# skills` 安裝步驟)。如果您將技能複製到另一個儲存庫,請替換為
# 您自己的 media-use / hyperframes-media heygen-tts.mjs 路徑。
node skills/hyperframes-media/scripts/heygen-tts.mjs ./vo-spoken.txt \
-o voiceover.mp3 --words vo-words.json \
--voice 330290724a1b470fb63153f34d4c0183 # Annie — 逼真(請勿替換)
需要 heygen CLI ≥0.3.0 並已認證(heygen auth login --oauth)。
然後將口語時間戳對齊到顯示標記:
node <SKILL_DIR>/scripts/align-captions.mjs \
--tokens script-tokens.json --words vo-words.json --out captions.json
captions.json 是字幕軌輸入(顯示拼寫,口語時間)。
對齊器會印出 MISMATCH 警告——在構建前解決每一個(通常是詞彙表中的拼寫導致 TTS 呈現為多個單詞)。音訊是時鐘:所有節拍時間來自 vo-words.json;重新生成配音會重新打開每個接縫。
5 · 構建
嚴格遵循 references/build-spec.md:品牌標記 + 字型(捆綁在
<SKILL_DIR>/assets/ 中)、動畫背景編碼、場景支架、
chrome、字幕軌、每個場景一個配額的綠色時刻。然後是 doctrine 順序:
ledger.json(所有普通接縫 cut-the-curve LEFT)→ seam-stamp →
內部節拍對齊配音單詞 → seam-gate 驗證。
6 · 關卡(全部綠燈後再呈現)
bun run --cwd packages/cli hyperframes check(或從儲存庫本地
skills/hyperframes-cli/技能安裝的hyperframesCLI)—
0 錯誤(對比:暗色文字 ≥ .66 alpha)。請勿使用
npx hyperframes@latest;追蹤的儲存庫本地 CLI 是此技能產生的組合合約的真相來源。seam-gate.mjs verify— 0 失敗。- 重新啟動預覽伺服器(它會快取 bundle),透過
__player.seek在原始組合頁面上抽查 3-4 個節拍。 - 除非使用者要求,否則不要渲染。在要求的渲染之後,從 MP4 驗證幀(
ffmpeg -ss <t> … -frames:v 1):字幕存在,背景影片不是黑色,沒有微小/凍結的幀。
專案佈局
projects/active/weekly-changelog-<range>/
├── index.html # 單文件主控(場景作為幻燈片,帶有 stamped seams)
├── ledger.json # 向量 ledger(seam-stamp 輸入)
├── script-tokens.json # 雙層腳本(配音 + 字幕的真相來源)
├── vo-spoken.txt # 生成:口語層,一行
├── voiceover.mp3 + vo-words.json + captions.json
├── bgm.mp3 # 從 <SKILL_DIR>/assets/bgm.mp3 複製(預設曲目),除非使用者提供
└── assets/fonts/ + assets/bg-pattern-<dur>s.mp4
反模式
| 不要這樣做 | 改這樣做 |
|---|---|
| 為 UI 變更使用項目符號幻燈片 | 模擬表面展示變更的動作 |
| 為無法呈現的項目使用假 UI | 誠實的 checklist 場景 |
| 在 TTS 文字中使用純 "JSON"/"CLI" | 詞彙表口語形式;顯示保持標準 |
| 在字幕中使用語音拼寫 | 字幕始終渲染顯示層 |
| 猜測未知術語的發音 | 詢問,然後擴充詞彙表 |
| 口語說出每個 changelog 項目 | 每個主題 ≤3 個;摘要連結承載其餘內容 |
| 到處使用綠色強調 | 每個場景一個綠色時刻(#5ef17c) |






