关于 slideshow
slideshow 是用于将 HyperFrames 合成制作并展示为交互式幻灯片的技能。它定义幻灯片元数据、片段和分支热点,并指导验证及浏览器演示,而非导出 MP4。
主要功能
- 01在合成场景中定义幻灯片
- 02设置片段和分支热点
- 03验证幻灯片目标及时间
- 04在浏览器中演示幻灯片
- 05支持演讲者备注和导航
适用场景
- 01将 HyperFrames 合成改为幻灯片
- 02通过热点创建分支演示
- 03检查幻灯片片段和场景链接
- 04共享观众标签页进行演示
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ heygen-com/ hyperframes --skill slideshow安装后在 Claude Code 中输入/slideshow确认已加载。
附带文件references/standalone-harness.md
详细介绍
**插件安装:**在运行设置或时效性检查命令之前,如果此技能位于 HyperFrames 插件中,请遵循插件执行规则。
HyperFrames 幻灯片
幻灯片放映是一个普通合成(适用 /hyperframes 契约),再加上一个 JSON 岛,用于说明哪些场景是幻灯片以及它们如何连接。交付内容是一套可运行的幻灯片,而不是 MP4。
与视频项目的区别
- 每张幻灯片都是合成文件中的顶层场景:
data-composition-id、data-start、data-duration、data-label、data-width、data-height。没有包裹它们的主根合成。 - 每个合成只有一个岛,位于
<body>顶部附近,直接写在 HTML 中(绝不通过脚本生成;present会静态读取文件):
<script type="application/hyperframes-slideshow+json">
{
"slides": [
{ "sceneId": "hook", "notes": "Pause on the number." },
{
"sceneId": "problem",
"fragments": [11.0, 15.0],
"hotspots": [
{
"id": "h1",
"label": "Where does $40B come from?",
"target": "market-detail",
"region": { "x": 55, "y": 60, "w": 40, "h": 20 }
}
]
}
],
"slideSequences": [
{ "id": "market-detail", "label": "Market sizing", "slides": [{ "sceneId": "mkt-math" }] }
]
}
</script>
sceneId等于某个场景的data-composition-id(也可以指定startTime/endTime)。notes仅供演讲者使用。ttsScript、ttsAudioUrl和ttsDurationMs目前保留但尚未接入。- 片段使用绝对时间线时间(与
data-start使用同一时钟,而非幻灯片内的偏移量),且必须位于幻灯片的[start, end]范围内。导航会跳转,不会播放:每个停留状态在时间线直接跳转到该时刻时都必须显示正确。没有片段的幻灯片会在其内部某个静止帧进入。 - 分支幻灯片是普通场景,只列在
slideSequences中,绝不放入主slides数组。热点的target是序列id;region是百分比框(省略时表示全屏按钮)。返回时会回到包含该热点的幻灯片。 - 面向观众、必须阅读的文字,在 1920×1080 分辨率下至少为 40 px。在手工制作任何具名视觉效果之前,先运行
npx hyperframes catalog --query "<the visual, in English>" --json搜索;该命令会对整个注册表排序,且无需安装任何内容。
移植现有页面
- 保留源页面的外观、运动、交互和媒体行为;移植其小部件、播放器和可视化组件,不要用近似效果替代。
- 页面原本通过滚动、滚轮或摄像机图层驱动的运动,应改为在幻灯片导航时从一个焦点移动到下一个焦点,绝不能让页面看起来在滚动。每次移动都应直接完成,不要添加源页面没有的反向运动。
- 屏幕截图、帖子、图表、代码以及任何含有可读文字的图像都是证据:保持其宽高比(
object-fit: contain),并检查四条边是否有裁切。 - 每个复制的
<video>/<audio>都需要data-start和data-duration(播放声音时还需设置data-has-audio="true"),且不能设置preload="none"。自定义媒体控件应读取原生元素的事件和currentTime,绝不能使用自己的计时器。 - 堆叠隐藏的幻灯片必须同时设置
opacity: 0、visibility: hidden和pointer-events: none,否则不可见图层会拦截点击。
展示并交接
- 切勿将演示文稿渲染为 MP4:
render只保留第一个场景,并会静默截断。需要静帧时,对每张幻灯片运行snapshot --at。 - 反复运行
npx hyperframes check --json,直到检查通过。幻灯片规则会检查每个sceneId是否都能解析、每个热点的target是否存在、片段是否位于所属幻灯片内,以及主线幻灯片是否重叠。 - 运行
npx hyperframes present <project-dir>来展示,并交接它输出的网址:“点击 Present,或按 P,打开观众标签页。” - 项目根目录中的
index.html应能打开并正常运行演示文稿:在<hyperframes-player src="…">外层包上<hyperframes-slideshow>;如有需要,将原始合成内容放在子文件夹中。该组件负责 Present(P)、上一张/下一张、计数器、全局静音、全屏、滑动、热点、演示者备注(可编辑,按演示文稿保存)以及在离开幻灯片时停止媒体。不要自行实现这些功能。 - 屏幕共享:在 Google Meet 中共享观众标签页,这样即使在后台也会继续渲染。在 Zoom 中,将观众标签页拖到独立窗口中并共享该窗口;被完全遮挡的窗口会停止运行。
- 从不带
present的裸播放器包打开演示文稿时,需要使用变通方案:references/standalone-harness.md。
评论
支持 Markdown