Communitygithub.com

aguspranyoto/2d-animation-hyperframes

将用户提供的带情感标签的旁白脚本(script.txt,包含 [excited]、[curious] 等标签)及其配音,利用项目的视觉参考,在 HyperFrames 中转化为一致的 2D 教育动画。风格:2D 扁平,主白背景配淡速写线条,仅主题和文字为全彩。除非明确要求,否则不撰写旁白。同时涵盖音效:放置位置、检索或合成方法,以及如何将提示音添加到时间线。

2d-animation-hyperframes 是什么?

该技能利用 HyperFrames 框架,将用户批准的带情感标签的旁白脚本和配音(vo.mp3)自动化转化为一致的 2D 教育动画。它的主要价值在于保持创作叙事和视觉风格的高度一致性,特别适合面向印尼儿童的 TK 至 SD 年龄段教育内容。技能支持处理由 ElevenLabs 等工具生成的 JSON 时间戳,以实现精确的语音-动画同步,并依据项目根目录下 `references/visual-style/overall/` 中的视觉参考(如图片)提取并应用统一的风格指南。工作流程从检查脚本与音频的对应关系开始,通过构建测试场景进行风格验证,最终使用 CLI 命令 `npx hyperframes preview` 预览并渲染为 MP4 视频。此外,该技能还提供了详细的音效处理方案,包括优先从 Openverse 或内置库获取免版税音效,以及使用 Python 合成特定音效(如 pop、boing),并通过 `<audio>` 元素以精确的时间、音量和轨道索引将音效嵌入动画时间线。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aguspranyoto/2d-animation-hyperframes/tree/HEAD

在你喜欢的 AI 中提问

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

文档

2D 动画 HyperFrames

使用此技能,根据用户批准的旁白脚本和时序源制作动画视频。标准输入为 vo.mp3 加上 script.txt(带情感标签的旁白),视觉参考位于 references/visual-style/overall/。

示例触发:

/2d-animation-hyperframes 使用 vo.mp3 和 script.txt 创建 2D 动画视频。请遵循 references/visual-style/overall/ 中的视觉参考。

用户的脚本和音频是最终依据。除非用户明确要求,否则不要花代币起草新脚本、重写旁白或生成替代配音。情感标签是演绎指令,而非口语内容:请原样保留,切勿朗读或加字幕。如果请求的文件缺失或不明确,请询问其位置;不要用新编写的脚本替代。

默认受众是 TK 至 SD 阶段的印尼儿童。保持视觉叙事清晰、温馨且适龄。所有动画保持 2D。

输入、脚本格式和时序

在请求或当前项目文件中查找附件。指定路径时使用提供的路径。如果文件不在项目中,请在开始制作前询问在哪里可以找到它们。源文件位于 references/multi-video.md 中描述的工作区布局中:旁白和配音位于 inputs/<slug>/ 下,HyperFrames 项目生成在 videos/<slug>/ 下,共享的视觉参考位于工作区根目录(references/visual-style/overall/)。

script.txt 格式:一个只包含方括号内情感标签的行(例如 [excited]、[ curious ]、[playfully])设定了后续旁白块的演绎方式,直到下一个标签。空行仅用于提高可读性,不代表停顿。示例:

[excited]
Adik-adik, pernah nggak sih kalian melihat jerapah?

[curious]
Wah, lehernya panjang sekali, ya!

标签规则:

  • 标签适用于其后的整个旁白块。用它来驱动场景节奏、角色表情、节奏和视觉重点。
  • 切勿朗读、加字幕或渲染标签。在生成屏幕文字前将其移除。
  • 完全按原样保留标签。如果配音是由 ElevenLabs 生成的,相同的标签就是演绎指令;不要规范化或发明新标签。
  • 无法识别的标签仍然是演绎提示;请保留,不要丢弃。

时序源,按优先级排序:

  1. 如果用户还提供了同一音频的词/段时间戳导出文件(ElevenLabs JSON),则使用它;该文件为可选项,非必需。
  2. 否则从 vo.mp3 推导词级时序:针对 script.txt 文本转录/对齐提供的音频(例如 ElevenLabs Scribe 词时间戳,或 TTS 生成音频时返回的时间戳有效负载)。
  3. 如果 vo.mp3 缺失,请询问。除非用户要求,否则不要合成替代配音。

在动画制作前:

  1. 检查每个脚本块是否对应音频中的一段,并且时序源覆盖了整个 vo.mp3 的时长,包括任何初始偏移或暂停。
  2. 确认脚本文本与提供的音频对应。不要编辑旁白。如果文本、音频和时间戳冲突,请说明不匹配情况并要求提供修正后的文件。
  3. 使用情感标签块(以及如果提供了时间戳导出文件时的段边界)来划分故事节奏和场景变化。使用词时间戳来处理字幕、强调和小型视觉提示。将词语组合成有意义的短语,而不是让每个词都成为一个单独的场景。

构建 2D 视觉风格

每个场景的默认风格关键词:

2D 扁平,主白背景配淡速写线条。仅主题和文字为全彩。

在设计场景之前,请一起检查 references/visual-style/overall/ 中所有可用的图片。将它们视为本项目视觉特征的权威依据。提取一份简洁的风格指南,涵盖:

  • 调色板、饱和度、对比度、光照和辉光;
  • 形状语言、线条粗细、纹理和细节密度;
  • 角色比例、表情和重复出现的设计特征;
  • 构图以及扁平 2D 艺术品如何暗示深度;
  • 排版、文字动画、节奏、转场和视觉母题。

将一份统一的风格指南应用于每个场景和新创建的素材。如果参考文件冲突,遵循出现次数最多或最新批准的指示;仅在冲突会实质性地改变结果时才询问。保持结果为 2D:使用图层、视差、重叠、缩放、阴影和渐变来表现深度。除非用户要求,否则不要将其变成 3D 模型或 3D 渲染的外观。

HyperFrames 制作工作流

  1. 使用 HyperFrames 作为动画和渲染框架。在用户的活动视频项目文件夹中工作,并保留其资产和参考。
  2. 根据批准的旁白、情感标签块和词时间戳来规划场景。保持旁白不变;将视觉动作和字幕与音频时间线对齐。将音乐和音效放在暂停处或不会掩盖语音的音量水平。
  3. 使用实际的 vo.mp3、script.txt 和视觉参考构建一个简短的 2D 测试场景。预览并检查风格一致性、可读性以及语音开始、暂停、转场和结束时的同步性。
  4. 根据预览效果进行有针对性的修改,然后将批准的视觉语言扩展到整个视频。在测试场景经过审核之前,不要创建完整动画。
  5. 从项目文件夹运行 HyperFrames 预览(npx hyperframes preview)。它将启动基于浏览器的 HyperFrames Studio 并热重载文件更改。对于此 CLI 工作流,独立的桌面 Studio 应用是可选的。
  6. 使用当前的 HyperFrames CLI 工作流将批准的项目渲染为 MP4。报告输出路径和任何制作限制。不要声称预览就是渲染完成的最终视频。

如果可用,请使用已安装的 HyperFrames 创作说明。如果缺少设置或依赖项,请说明确切的缺失步骤。未经用户授权,请勿安装软件或更改全局设置。

启动新视频

从工作区根目录生成 HyperFrames 项目,而不是手动搭建;每个视频一个项目。

python tools/new-video.py <slug>                    # 搭建 + 转录 + 块映射
python tools/new-video.py <slug> --force            # 重新构建已有的 videos/<slug>
python tools/new-video.py <slug> --no-transcribe    # 仅搭建

它会读取 inputs/<slug>/(vo.mp3 + script.txt)并写入 videos/<slug>/,然后为每个带标签的块打印一行包含绝对和本地开始/时长的信息。完整布局、输出和生成后的步骤见 references/multi-video.md。

音效

音效位于旁白下方,绝不能覆盖旁白。在每个视觉打击(元素出现、剪辑、笑点、揭示)上放置一个重音——而不是每个字幕都放。在提示音之间留出静默。

  • 默认路线:通过 media-use 技能(Openverse 或该技能附带的 21 个文件库 audio/assets/sfx/)检索 CC0/CC BY 音效。当已有匹配的库存音效时,绝不生成新音效。
  • 自定义路线:使用 Python(numpy + 标准库 wave,44.1 kHz 单声道 16 位,峰值归一化 0.7,种子噪声)合成一个一致的音效系列。pop、boing、whoosh、chime、stamp 和 sparkle 的配方见 references/sfx.md。
  • 将每个提示音作为带时序的 <audio> 元素添加到根合成上:唯一的 id、以绝对秒数表示的 data-start、等于文件长度的 data-duration、0.22–0.38 的 data-volume,以及一个不与其他可听片段重叠的 data-track-index。
  • 在渲染之前,npm run check 必须报告 0 个错误,并且没有 clip_ends_past_root_duration 或 duplicate_audio_track 警告。

范围

此技能从提供的媒体素材创建动画;它通常不创建或修改旁白。如果用户只要求提供故事板或视觉计划,则基于相同的音频和 script.txt 提供,而不起草脚本。如果用户明确要求编写脚本,请处理该单独请求,并在生成新的配音或替换现有音频之前获得批准。

相关技能