changelog-video

changelog-video

热门

将每周更新日志 .md 文件转换为完整的品牌化更新日志视频(方形1080p,约45-60秒,Annie配音,动画品牌背景,模拟UI可视化,低调字幕)。当用户提供更新日志/摘要markdown并希望生成每周视频,或说“更新日志视频”时使用。自包含——字体、背景、词典和脚本均随技能一起提供。

3.6万Star
3412Fork
更新于 2026/7/19
SKILL.md
readonly只读
name
changelog-video
description

将每周更新日志 .md 文件转换为完整的品牌化更新日志视频(方形1080p,约45-60秒,Annie配音,动画品牌背景,模拟UI可视化,低调字幕)。当用户提供更新日志/摘要markdown并希望生成每周视频,或说“更新日志视频”时使用。自包含——字体、背景、词典和脚本均随技能一起提供。

更新日志 → 品牌化视频

输入:一个更新日志 .md(主题+条目,如每周HyperFrames摘要)。
输出:一个lint干净、seam-gate绿色的HyperFrames项目,位于
projects/active/weekly-changelog-<range>/。仅在用户要求时渲染。

首先加载,不可协商: motion-doctrine(+ cut-the-curve
oversized-cursor(如果出现光标)、seam-craft)和 captions-overlay
此技能提供更新日志特定的流水线;doctrine提供运动法则。

首要原则:可视化,而非罗列

每个主题通过实际UI的动画模拟或忠实类比来展示变化体验——绝不用文本要点。
在编写脚本之前,将每个主题/条目路由到 references/visualization-registry.md
注册表决定 ui-recreate / ui-analog / terminal / checklist。文本清单是最后的手段,
仅用于真正不可视的条目(可靠性修复列表)。

流水线

1 · 解析 + 编辑裁剪

  • 提取:周范围、标题统计(发布次数、提交数)、主题、条目。
  • 总时长预算:45-60秒。 标题≤2秒,结尾≤3.5秒,4个主题各约9-12秒。
  • 每个主题保留一个英雄可视化 + 最多3个口头条目。其余所有内容仅作为结尾的“完整摘要”指针存在。
    裁剪是关键:一个包含30个条目的更新日志仍然只产生≤14个口头节拍。
  • 按故事顺序排列主题:主打功能 → 产品表面 → 性能 → 可靠性(摘要通常已按此顺序排列)。

2 · 可视化路由

对于每个主题,从 references/visualization-registry.md 中选择表面,并写一行:
theme → surface → 模拟执行的2-4个顺序动作,每个动作与一个脚本短语关联
如果没有注册表表面适合且没有忠实的类比,则作为清单场景——不要为我们无法诚实表示的内容发明虚假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 →
VO 单词上的内部节拍 → seam-gate verify。

6 · 门控(全部通过后再展示)

  1. bun run --cwd packages/cli hyperframes check(或仓库本地 skills/hyperframes-cli/ 技能中的已安装 hyperframes CLI)——
    0 错误(对比度:暗文本 ≥ .66 alpha)。不要使用 npx hyperframes@latest
    跟踪的仓库本地 CLI 是此技能生成的组合合约的真相来源。
  2. seam-gate.mjs verify — 0 失败。
  3. 重启预览服务器(它会缓存构建包),通过原始合成页面上的 __player.seek 抽查3-4个节拍。
  4. 除非用户要求,否则不要渲染。在请求渲染后,从 MP4 中验证帧(ffmpeg -ss <t> … -frames:v 1):字幕存在,背景视频非黑,无微小/冻结帧。

项目布局

projects/active/weekly-changelog-<range>/
├── index.html            # 单文档主文件(场景作为幻灯片,带戳记的接缝)
├── ledger.json           # 向量账本(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 诚实的清单场景
在TTS文本中使用纯文本“JSON”/“CLI” 词典口语形式;显示保持标准
在字幕中使用语音拼写 字幕始终显示显示层
猜测未知术语的发音 询问,然后扩展词典
说出每个更新日志条目 每个主题≤3个;摘要链接承载其余部分
到处使用绿色强调 每个场景一个绿色时刻(#5ef17c)