Communitygithub.com

jjietay/kaleidoscope

一键生成带有解说的3D教学动画视频(MP4),采用柔和黏土风格配以无声吉祥物,脚本由智能体审核后再配音。适用于用户请求的视频、解说、动画或概念可视化流程。

kaleidoscope 是什么?

Kaleidoscope 是一款 AI 驱动的视频生成技能,专为 Claude Code 或其他支持技能的 AI 编码助手设计。它将当前对话和项目中的知识转化为完整的教学说明视频(MP4),采用统一的 3D 黏土风格,并配有一个无声的吉祥物作为视觉主角。该技能通过多步骤流程运作:首先通过交互式菜单收集用户偏好(如视觉风格、受众、音乐等),然后自动生成脚本,由专门的“脚本智能体”进行事实和节奏审核,再生成配音,接着构建 3D 场景和动画,并执行严格的质量检查(如重叠检测、碰撞检测和音频同步)。其关键特性包括:支持数学绘图的 Manim 集成、严格的闭包开发循环以确保每一步都经过视觉检查才进行构建、以及防止事实虚构。该技能特别适用于教育内容创作者、学生复习概念,以及任何需要将抽象想法(如特征向量、I2C 协议或注意力机制)转化为专业教学动画的开发场景。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jjietay/kaleidoscope/tree/HEAD

在你喜欢的 AI 中提问

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

文档

解说视频

你制作的视频能够帮助用户学习一个概念。你相比普通工具有一个巨大优势:你了解当前对话和项目。善用这些信息。

引擎位于 ~/.claude/skills/kaleidoscope/engine/。在此文件中,make 命令意味着:

node ~/.claude/skills/kaleidoscope/engine/make.mjs <command> <project-dir>

步骤 0:先询问(每次技能启动时)

无论用户是输入 /kaleidoscope 还是用文字请求视频,你的第一件事是通过 AskUserQuestion 询问以下问题,并提供可点击选项。如果用户的消息或当前对话已经回答了某个问题,则跳过该问题(例如,“像新闻片那样”回答了风格问题,“带低保真音乐”回答了音乐问题)。将推荐选项放在第一位并标记为“(推荐)”。在单个调用中询问所有四个问题(该工具最多接受 4 个)。如果主题本身不明确且没有跳过任何问题,则在单独的调用中先询问主题。

问题标题选项(第一个为默认)
视频应该使用哪种风格?风格黏土 3D:统一的柔和黏土风格,由无声吉祥物完成所有动作 · 经典 2D,混合:每个部分使用不同的 2D 风格 · 经典 2D,统一风格:用户指定(新闻片、白板等)
视频面向谁,时长多少?观众考试复习,标准版:使用课程中的符号、数值示例、考试陷阱,5 至 6 分钟 · 考试复习,深度版:同上,8 至 9 分钟,包含推导的每一步 · 初学者,短片:先讲直觉,减少符号,2 至 4 分钟 · (其他:用户指定观众和时长,例如“专家复习,短片”)
什么时候向你确认?检查点一次性生成:直接返回完成的视频 · 分镜后:展示计划并等待批准 · 第一帧后:展示初帧并等待
哪种音乐?音乐宁静(current):柔和的垫音,无节拍 · 低保真(lofi):轻快节拍,更有活力 · 无

当对话暗示某个推荐选项时,将其放在第一位(例如下周有考试:考试复习,深度版)。如果消息只回答了观众问题的一半(例如“为了我的考试”),则保留该问题,仅提供与那一半匹配的选项。观众包括:考试复习、初学者和专家复习(快节奏、高密度);时长包括:短片(2 至 4 分钟)、标准版(5 至 6 分钟)和深度版(8 至 9 分钟)。将答案写入第 4 步的 video.json 中:"_look"(clay 或 classic)、"_brief": { "viewer": ..., "length": ..., "checkpoint": ..., "style": ... } 和 "_render": { "music": "current" | "lofi" | false }。后续每一步以及重建都会读取这些值,不会重复提问。如果用户拒绝回答这些问题,则使用每个问题的第一个选项。

一次性生成,除非用户选择了检查点

步骤 0 之后,不间断地执行以下所有步骤,仅返回完成并检查过的视频。不要询问“我可以继续吗?”,不要展示草稿,不要在步骤之间等待。以下所有检查都由你自己运行并处理。唯一的暂停点是用户选择的检查点:“分镜后”在第 7 步后暂停(展示分镜和脚本智能体的评定结果,然后等待),“第一帧后”在第 9 步的第一次 make look 处暂停(展示其图像,然后等待)。

用户想要的风格(在第 6 步前阅读)

黏土用于动作场景,Manim 用于图表,视频中始终包含吉祥物。 阅读 styles/clay.md。用户选择了黏土风格,取代之前的混合风格,以确保各视频之间的一致性。2D 风格是可选的经典风格;请参见下文。

  • 不要强行将图表放入黏土场景(用户要求如此)。 当 2D Manim 画面比黏土更能帮助观众理解时(例如曲线、分布、等高线、投影或平面上的其他几何图形),将该部分设为 Manim 部分,使用 Manim 的深色背景(styles/math-manim.md)。永远不要构建一个复制数学曲线的黏土模型:用户曾要求删除这些模型。执行动作的对象和吉祥物的物理动作,仍使用黏土。视频可以从黏土部分切换到 Manim 部分再切换回来,同一对象保持相同颜色。

  • 一种风格,多个部分。 视频被拆分为大约 15 到 40 秒的部分(钩子、每个想法、你的案例、结尾)。每个部分都有自己独立的纯色背景、摄影机和布景。相邻的两个部分从不共享背景。

  • 吉祥物负责动手。 他是无声的,没有口型同步,叙述者是画外音。他行走、拉、推、搬运和用自己的手关闭设备,因此脚本中的每个动作都是观众看到他执行的动作。这是用户在一段视频中吉祥物只是站着观看后提出的要求。他默认保持面无表情,make check 会在他停留在一个位置时发出警告。

  • 物体必须连接。 弹簧要触及其墙壁,图钉要接触其地图,手要握住它拿的东西。用户曾发现一个弹簧在各项检查都通过后却未接触墙壁。make bake 测量 models.js 中的每个连接点(JOINS),因此新的连接点要添加到那里,并在静帧中检查接触。

  • 仅使用我们自己的模型。 使用 styles/library/clay 中的工具包。永远不要下载模型。如果视频需要新物体,以相同风格将其添加到工具包中。

  • 每个部分是一个连续镜头。 部分内部没有剪辑和新的幻灯片:物体随着语音到达、移动和连接,摄影机缓慢移动。部分结束于下一个部分开始的状态,或者在下一个部分的背景中消失。

  • 画面解释,文字仅用于命名。 文字保持平面和清晰,通过 HTML 覆盖在 3D 场景上。每帧包含:起头语(小型大写字母,包括部分和来源)、最多 8 个字的标题、几个 1 到 4 个字的标签(带细引线),以及底部最多一行说明文字。永远不要出现一列句子、子弹列表、颜色含义图例。 屏幕上最多约 15 个字。

  • 公式演绎语音(用户要求如此)。 静止的公式不比读笔记更好。使用 eqn() 逐个构建公式:术语随着语音逐个出现,当语音移动时移动,当提到“消去”时闪烁或爆裂,仅在提到重要内容时弹跳。make look 会对静止的公式以及“消去”句子但屏幕上没有消去动画的情况给出错误。参见 styles/clay.md。

  • 物理运动。 物体像真实对象一样运动:手臂伸展、球落下弹跳、积木下落并停稳、脉冲传播。没有静态盒子的堆积。

  • 同一对象在所有视频中保持相同颜色(机器人始终为橙色,地图始终为黄色)。

如果分镜违反了以上规则,在编写代码前修改分镜。

硬性规则

  • 在此处,即主对话中,进行思考。 你自己编写脚本、分镜和场景,因为上下文就在这里。切勿将这些步骤交给子智能体:子智能体开始时没有上下文。第 7 步中的脚本智能体是唯一例外,它特意以无上下文状态启动。
  • 切勿仓促对待核心解释。 用户通过这些视频学习。遵循 reference/script.md 中的节奏规则,并修复所有节奏警告。
  • 切勿编造事实。 每个数字、公式和主张都来自你验证过的来源:用户的代码、数据手册、规格书、论文、文档。将它们列在 storyboard.md 中。报告你无法验证的任何内容。
  • “你的案例”是可选的。 仅当当前对话或项目中确实有匹配的示例时才添加(例如用户遇到的错误、修复、测量到的数字)。切勿凭空捏造。
  • 无重叠。 任何视觉元素都不能覆盖另一个:文字叠文字、文字叠图形、或一个图形隐藏另一个图形。每个标签、公式、箭头和对象都有自己的空间。check 会在文字重叠时发出警告,review 会将每个测量到的重叠写入 overlaps.md。拥挤程度由用户判断,因此请在全尺寸的帧中检查。ID 检查也有帮助:make look 会添加一张显示最小间隙的图像,并在文字与其他元素距离小于 12 像素、文字叠在图形上、文字对比度低以及模型被其他元素遮挡时发出警告。在 make final 之前修复所有重叠。
  • 字幕每行不超过一行。 每个字幕提示最多 42 个字符,且不能同时显示两个提示,因此播放器永远不会显示两行。引擎会自动处理;verify 会报告违反规则的提示。不要通过修改 make.mjs 中的 SUB_MAX 来强制适应某个提示。
  • 闭包循环(用户要求如此,引擎强制执行)。 每次编辑后:make look,阅读它列出的所有图像,修复你所看到的,然后再次查看。只有这样才能构建。切勿盲目编辑和构建,因为构建耗时较长,而查看只需要几秒钟。每张图像的右上角有一个检查数字,只有当所有图像的数字按顺序匹配时,门才会打开:
    1. 编辑。如果你更改了 script.md,运行 make voice。如果视频包含 Manim 部分并且你更改了 manim_scenes.py 或语音,运行 make manim:make look 绘制 Manim 帧,但不会生成它们。
    2. make look <dir>:它会测量每个场景的每一帧,并绘制其临近帧和运动部分。全部阅读。然后运行 make look <dir> --ok <digits>。若无此操作,make build 会停止执行。
    3. make build <dir>。遇到任何碰撞时会停止。
    4. 阅读 build/review/moving.md 中的每个片段。然后运行 make look <dir> --moving-ok <digits>。
    5. make final <dir>。如果源文件在查看或构建之后发生变化,或者存在未解决的碰撞或重叠,则停止。 将每一步作为独立命令运行,在第一次失败时停止,并确认编辑已应用。
  • 每个读者都检查临近帧和运动部分。 任何判断视频的智能体或会话都读取每个编辑部分的临近帧,以及每个移动对象的所有帧:吉祥物和物体,在其整个运动过程中。视频的抽样帧不计数:手掌可能在抽样帧之间穿过桌面。
  • 新缺陷需添加防护措施。 当用户发现缺陷时,首先将其添加到 reference/faults.md 和 engine/test/selftest.mjs 中,并确认测试在该缺陷上失败。然后修复视频。不要只修复视频。每次修改检查后运行 make selftest。

用户要求的内容(保留这些)

每个项目都是用户要求或通过试听选择的。引擎会自动完成大部分工作。

主题内容自动完成?
语音Chatterbox 的内置语音,通过 engine/tts/slow-reference.wav 减慢到约 160 词/分钟;每个段落一口气读完以保持语调是
停顿句号精确停顿 0.6 秒,逗号最多 0.3 秒,根据脚本的标点设置是;若无法设置停顿则 voice 发出警告
不好的录音词句与脚本不同的部分(Whisper 检查)使用新种子重录,最多重试 3 次;保留最佳录音是;若仍有误则发出警告
快速片段短语速度超过视频常规节奏 1.3 倍(符号词计数加倍)则重录;用户发现“lambda v is v, scaled by lambda”过快是;警告“fast”:为其单独设短句并加 [pause]
负数读作“negative”,切勿读作“minus”voice 出错并停止
重复词“one one”需加逗号成“one, one”,否则语音会出错是
写作连贯段落;仅当想法结束或动画播放时使用 [pause]。已拒绝:每句后停顿、断句、快语速、拉伸(模糊)语音、Kokoro你负责,参见 reference/script.md
音乐可听、稳定,约比语音低 13 dB(musicVolume 0.37;用户从 0.26 提高了 3 dB),轻柔闪避;两个已批准曲目,current(默认)和 lofi。已拒绝:强弱起伏、音乐过轻听不到、4 首其他曲目是;你选择曲目,参见 SOUND.md
音效使用 engine/sfx.mjs 中的工具包,经过试听确认;飞入嗖嗖声比其他音效低 4 dB(用户觉得有点响)。新视频启用(_render.sfx: true),旧视频禁用你在提示音处添加 s.sfx;引擎混合
音频48 kHz 立体声是;verify 检查
字幕软字幕,从不烧录;用户的 mpv 以较小字体显示(sub-scale=0.7)是
单行字幕每个提示一行,最多 42 个字符,不能同时显示两个提示。用户在 ROS 2 系列的第 1 个视频中看到两行是;verify 报告违反规则的提示
无重叠任何文字或图形都不覆盖另一个check 警告文字重叠,overlaps.md 和你的帧检查清单处理其余部分
风格统一的 3D 黏土风格,带无声吉祥物,以及我们自己的模型;曲线和图表使用 Manim 深色背景(用户要求:不要强行将图表放入黏土)。已拒绝:下载的模型、全深色视频、文字列、颜色图例、堆积幻灯片make check 对既非黏土也非 Manim 的场景或没有吉祥物的视频报错;其余内容由你负责,参见“用户想要的风格”
数学五个公式步骤(需要、图片、公式、含义、验证)。曲线、图表或逐步变化的公式使用 Manim:manim() 用于 2D,或 manim({ threeD: true }) 用于 3D 图片,不使用手绘画布make check 对孤立公式发出警告;其余内容由你负责,参见 reference/script.md 和 styles/math-manim.md
测验分镜中不含任何测验你负责
观看mpv <dir>/out/<slug>.mp4放入报告

机器设置

在第 1 步前运行 make config。它会打印本机的设置,由安装程序或 /setup-kaleidoscope 写入。

voice 行指定语音:Chatterbox(自然,在 NVIDIA GPU 或 Apple Silicon 上效果最佳)或 Kokoro(小型快速,在 CPU 上运行,约 150 词/分钟)。项目可以在 video.json 中选择自己的语音:"_tts": {"engine": "kokoro"}。在没有 GPU 的情况下,Chrome 使用 SwiftShader 渲染帧,ffmpeg 使用 libx264 编码。

…

[以下内容已截断,无法完整翻译]

相关技能