hf-kit 是做什么的?
基于 HyperFrames 0.8.77 的扩展层。所有内容均源于系统的研究:涵盖 16 个细分领域的 48 个 YouTube 视频,详细数据位于 research/ 目录。以下路径均相对于仓库根目录。请阅读 SPEC.md 了解契约,并遵循 hyperframes-core 的编排规则。
以下提到的 hyperframes 指 npx [email protected] 或本地安装的 0.8.77 版本。Python 工具需要 Python 3.10+ 并安装 numpy 和 Pillow,同时确保 ffmpeg 在系统 PATH 中。
工作流
-
选择风格。
styles/README.md将领域映射到风格 ID,再对应到模块、字幕和混音预设。风格 JSON 文件中包含了测量范围(各段落的切割率、镜头长度、每分钟字数、LRA、静默时长)以及主目标值(-14 LUFS、-1 dBTP)。 -
搭建脚手架。
python tools/scaffold.py <dir> --format 16:9|9:16 --duration S --style <id> [--blocks a,b]。它会生成包含风格标记的index.html,将hyperframes.json锁定到 v0.8.77 注册表,并将模块复制到compositions/目录。如果目标目录非空,则会拒绝覆盖。 -
使用模块。 模块目录
blocks/README.md提供:pill-label、chapter-card、number-card(简洁或货币风格)、progress-badge、question-card、doc-highlight、film-gate、world-camera、ui-window、tier-board、face-banner-stack(带有针对圆角 16:9 话题框的topic-top布局)、zoom-through、blur-swap。每个模块都是一个子编排,使用data-composition-variables声明变量;通过data-variable-values传递值。examples/<block>/中提供了每个模块的可用示例。请使用纯#root和纯后代选择器来定义模块样式。切勿使用复合选择器#root[data-composition-id=...]:它虽然能通过检查,但会导致渲染空白。 -
生成字幕。
python tools/captions.py words.json --variant cards|karaoke|speaker|keyword|punch --format 9:16 --out compositions/captions.html。输入格式为[{text,start,end,speaker?,class?}]或hyperframes transcribe生成的 JSON。 -
处理声音。
sound/MIX.md提供了 10 个可直接复制的hyperframes-audio预设(如语音优先平滑、转折处停顿、重音处静音、剪辑前淡出等),每个预设都注明了来源行。sound/sfx/包含 11 个生成的音效,sound/SFX.md将事件映射到文件和电平。7 个情绪音轨未包含在仓库中:运行python sound/gen_bed.py可将所有音轨渲染到sound/beds/目录,目标响度为 -20 LUFS;python sound/gen_bed.py --mood <name> --seconds N --out bed.wav可渲染任意时长的音轨。两个生成器都是确定性的,输出为 CC0 许可。 -
使用 YouTube 背景素材或音乐。
python tools/bg_source.py <url> [--download --out assets/ --audio]。- 仅当 yt-dlp 报告素材为创用 CC 许可时,才输出 ACCEPT(退出码 0),并打印用于描述的引用行。视频下载至少需要
--min-height参数(默认 1080);--audio模式没有高度限制。 - 当标准许可的上传者在标题或描述中声称“可重用”时,输出 REVIEW(退出码 3)。标题中声称“无版权”仅为上传者个人声明。请核实上传者是否为原始创作者,并截取许可条款截图。
- 其他情况输出 REFUSE(退出码 2)。
每次决策都会追加到
sources/provenance.jsonl文件中(使用--log参数可更改路径)。即使素材声明为创用 CC,内容 ID 仍可能声称其是对他人作品的重传,因此请优先选择原始频道。将下载的素材保留在项目的assets/目录中,切勿将其提交到公共仓库。 - 仅当 yt-dlp 报告素材为创用 CC 许可时,才输出 ACCEPT(退出码 0),并打印用于描述的引用行。视频下载至少需要
-
渲染前检查。 运行
hyperframes lint <dir>和hyperframes check <dir>;接着运行hyperframes snapshot <dir> --frames 6并查看联系表。通过 lint 检查不意味着视觉效果通过。 -
渲染与测量。 运行
hyperframes render <dir> --output out.mp4,然后运行python tools/check.py out.mp4 --style <id>。它会将每项测量结果与风格的参考范围以及主响度线进行对比。结果仅供参考:偏差表明剪辑偏离了参考值,是否需要调整由你的分析决定。
研究结论(简版)
- 在全部 16 个细分领域中,切割率和响度并未区分出离群片和对照片。真正起区分作用的是:人物面临风险、前几秒内点明风险、屏幕上的证据以及明确的答案(详见
research/TECHNIQUES.md中的“什么没有区分离群片和对照片”)。 - 硬切计数是下限指标。在旁白下节奏不可靠。音频部分未进行人工聆听:声音结论来自 R128 数值、频谱和字幕标签。
文件位置
| 需求 | 路径 |
|---|---|
| 契约与规则 | SPEC.md |
| 风格及其测量范围 | styles/README.md, styles/<id>.json |
| 模块目录与示例 | blocks/README.md, examples/<block>/ |
| 混音预设与音效映射 | sound/MIX.md, sound/SFX.md |
| 技巧库与情绪表 | research/TECHNIQUES.md |
| 领域 DNA 表及参考清单 | research/niches/<niche>.md |
| 每个视频的一张卡片和一个数据文件 | research/cards/<niche>/<id>.md, research/data/<id>.json |
| 知识章节(音乐与情绪、声音设计、视觉特效与动画) | research/knowledge/ |