Communitygithub.com

kinyias/hyperframes-templates

将任意文本——文章、笔记、主题或简介——转化为无面部出镜的解说视频:无需拍摄实景或截取画面,视觉效果按场景生成(排版、抽象图形、图表、数据可视化)。适用于主题解说、概念拆解、教程、列表文章。不适用于基于网站生成的视频(/product-launch-video —— 推广或导览)。不确定 → 请查看 /hyperframes。

hyperframes-templates 是什么?

该技能专为HyperFrames平台设计,用于将纯文本内容(如文章、笔记、主题或简介)自动转化为“无面部出镜”(faceless)的解说视频。它的核心价值在于无需拍摄真人或截取屏幕画面,所有视觉元素(包括排版、抽象图形、图表和数据可视化)均由AI按场景动态生成,非常适合制作主题解说、概念拆解、教程和列表类视频。该技能支持多个主流AI Agent平台(如Claude Code、Cursor、Codex等),通过命令驱动的工作流程,从项目设置、文本抓取、设计系统选择、故事板与脚本撰写,再到音频生成和最终渲染,实现全流程自动化。用户只需提供文本内容,技能会引导用户选择预设的设计风格,并利用HeyGen或本地引擎生成配音、背景音乐等,最终产出完整的视频文件。它在每一步都设置了检查点(Gate),确保用户意图被正确理解和执行,并能处理来自用户的编辑请求。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kinyias/hyperframes-templates/tree/HEAD/.agents/skills/faceless-explainer

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

插件安装: 在执行设置或更新命令之前,请遵循插件执行规则(当该技能位于HyperFrames插件内部时)。独立安装请保留下面的更新说明。

首先,保持本技能最新——在运行前请与用户确认: 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/references/brief-contract.md——它定义了关卡类型,以及 BRIEF.md 的 flow/storyboard 如何推导出控制步骤3/4/6关卡的“模式”。除步骤5外,每个步骤都由你亲自完成,在步骤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)→ 从故事板的 frontmatter 和已记录的偏好恢复;绝不重新审问一个半成品项目。(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/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/references/storyboard-format.md 和 ../hyperframes/references/script-format.md。使用它们编写 STORYBOARD.md,并在需要旁白时编写 SCRIPT.md。设置 frontmatter 的 duration: 为简介中的 length——一个粗略的预期;组装时报告最终剪辑与之的差距。

使用 story-design.md 获取解说结构(概念/教程/列表文章/故事)、钩子策略、清晰度技巧、情感节拍、类型枚举映射和 VO_MODE。视频的顺序来自于叙事设计,而非输入文本的段落顺序——可以重新排序、合并、省略、压缩。作为软指南,查阅 ../hyperframes-animation/blueprints-index.md 中的角色→蓝图菜单:为每个节拍,按照其候选蓝图所暗示的形状编写旁白,并在合适的蓝图匹配时标记该候选 blueprint: id。教学真理仍然决定哪些节拍存在——永远不要为了适应蓝图而强行添加节拍,也永远不要仅仅因为一个经过验证的形状可用就发明节拍。无面部出镜视觉效果是后续生成的,因此帧不携带资产清单:除非用户提供了真实的 public/<basename> 图像,否则将 asset_candidates 保留为空。使用故事板和脚本参考中要求的精确字段。

草稿完成后,运行审查循环的计划传递 —— ../hyperframes/references/review-loop.md § 1:将计划作为提案呈现,并询问两个问题——批准或更改,以及是否先制作草图(推荐)或跳过。反馈以聊天回复的形式出现;循环直到获得批准。这是一个检查点关卡(简介合同 § 1):在自主模式下无需询问任何问题——将相同摘要作为提示发布并继续;草图合并到构建中,最终的预览及其一个问题在步骤6出现。

关卡: STORYBOARD.md 存在,每帧都有必需的叙事字段,SCRIPT.md 在需要旁白时存在,并且用户批准了逐帧计划(自主模式:摘要已作为提示发布)。


步骤3.1:音频

目标:从已批准的脚本生成旁白、单词时间戳、音乐和音频元数据。

在步骤3批准后开始音频处理。在后台运行它,然后继续步骤4。(登录状态已在步骤0中显示;引擎会自动回退。)

在调用之前根据用户的请求选择旁白声音。 如果请求指定了声音、性别或语调,选择匹配的声音ID并通过 --voice <id> 传递它。否则,管道的默认值是 Marcia(女性)(HeyGen)/ am_michael(Kokoro)——因此,如果不传递标志,像“男声”这样的请求将被静默忽略。声音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。当宿主应用自己的工具制作了音乐或音效时,将文件放在 assets/ 下,并在 audio_meta.json 文件中列出,标记为 "source": "host":音乐作为 bgm { "path": "assets/…", "source": "host" },同时在故事板中设置 music: none;音效作为 sfx 条目 { "frame": <n>, "file": "assets/…", "offset_s": 0, "duration_s": <its length>, "source": "host" }。每次音频处理都会保留这些,并且带有宿主音效的帧不会获得查找的提示。

如果没有旁白且没有 SCRIPT.md,则跳过语音生成。如果故事板有音乐情绪,BGM仍可能运行。

规范的完全静默标记(在重用此音频模型的工作流程之间共享):STORYBOARD.md 顶部YAML块中的 music: none,没有 SCRIPT.md,并且没有 sfx: 提示或宿主音频。这种组合将项目标记为静默——随后的视觉步骤跳过所有与音频相关的帧(自动传播或故事板大小)。当且仅当所有这三个条件都满足时,才应用静默路径;具有音乐但无旁白的项目仍必须生成BGM。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

kinyias/hyperframes-templates

Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet `anchor` rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.

kinyias/hyperframes-templates

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

kinyias/hyperframes-templates

Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated motion-first unit, including an animated title. Route fresh creation through hyperframes before using this skill.

相关技能