Communitygithub.com

yem-hjk6th/explainer-kit

制作简短、经过验证的数学/计算机视觉/机器学习讲解视频(计算动画+字幕,可选翻译版本、解说脚本和TTS配音),使用本仓库中的animkit库。

explainer-kit 是什么?

该技能帮助AI代理(如Claude Code、Cursor或Codex)自动生成经过验证的数学、计算机视觉或机器学习概念的讲解视频。它提供了一个完整的管线:从研究源材料、编写故事板和验证所有声明的数值,到渲染最终视频(计算动画+字幕),并可选择添加翻译、解说脚本和TTS配音。其核心原则是:每一个显示的数值都必须被计算并验证来源,确保内容绝对正确。支持多种平台(CLI脚本),并通过严格的检查(如@shot.check)和独立验证轮次来防止错误。它特别强调图优先、公式其次的呈现方式,以及针对特定观众的知识水平调整深度,适合用于创作教育内容、论文讲解或可视化算法机制。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yem-hjk6th/explainer-kit/tree/HEAD/.claude/skills/explainer-video

在你喜欢的 AI 中提问

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

文档

讲解视频

你制作的讲解视频要让特定观众看得懂,而且 必须正确。决定结果的有两件事: references/STYLE.md 中的规则(它们来自真实的审校反馈),以及计算并核对每个显示数值的习惯。渲染是最简单的部分。

仓库结构:库 animkit/(API 参考 animkit/README.md),工具 tools/,示例 examples/,两个完成的剧集 episodes_example/(复制其故事板和镜头格式;声明格式见 references/VERIFY.md),你的工作放在 episodes/<ID>_<topic>/。

0. 开始之前

  1. 环境正常吗?python -I -B -X utf8 tools/selftest.py 必须打印 all OK。如果缺少 config/animkit.json,运行 python -X utf8 tools/setup_config.py(配置是每检出一次:新的 clone 或 git worktree 需要重新执行,或者设置 ANIMKIT_CONFIG)。问题:见 SETUP.md。
  2. 只向用户询问你无法默认设定的内容(一条消息,简短):
    • 主题和源材料(讲义、论文、网页);你需要为每个声明提供来源;
    • 观众以及他们已知的内容(设定深度,见 references/STORYBOARD.md §观众);
    • 时长;是否想要翻译版本/解说/配音?
    • 是否可以运行真实模型(GPU,下载)?默认:否,使用已知真实情况的合成场景。
    • 未回答时的默认值:1080×1440,30 fps,仅字幕,无配音,计划一轮审校。
  3. 创建 episodes/<ID>_<topic>/ 目录以及 STATUS.md(阶段/下一步/等待的内容/来自 date 的时间)。

1. 管线(详细信息和命令:references/PIPELINE.md)

阶段你需要产出进入下一阶段前的检查点
A. 研究源摘要;可选参考视频分解(references/REFERENCES.md)你能将机制表述为:输入 → 公式 → 形状 → 小数值示例 → 原因
B. 故事板storyboard.md,CLAIMS_to_verify.md,episode.json(+ elements_needed.md 如果库缺少某些元素)长剧集需用户同意大纲;完成独立验证轮次 1 并应用更正(references/VERIFY.md)
C. 镜头shots/sNN_*.py,每个包含 @shot.check--check-only 通过;检查联系表;完整渲染;修复 check.json 中的警告
D. 合成render/<ID>.mp4(tools/concat.py),review/round1/review.html(tools/review_page.py)你已查看每个镜头的联系表;屏幕上的数值 = 声明
E. 审校轮次review/roundN/feedback.md(用户的笔记),review/roundN+1/changes.md,重新渲染每条反馈都得到回应;新声明已验证(最多每项两轮)
F. 可选翻译版本(references/I18N.md),解说(references/NARRATION.md),配音(references/TTS.md)每项都有自己的检查

直接以视频的语言编写镜头(示例中使用英语):字幕、标题和标签在脚本中就是普通字符串。--lang 仅用于第二个翻译版本。

微路径(≤ 60 秒,1–3 个镜头)。 相同阶段,更精简。episodes/<ID>_<topic>/ 中的最小文件列表:

  1. storyboard.md:一个表格,每行一个字幕(时间范围,字幕,屏幕上的变化,计算性的或说明性的)。框架:templates/storyboard_skeleton.md。
  2. CLAIMS_to_verify.md:每行一个屏幕上的数值/事实(声明,来源,检查方法,测量/计算/推断/论文)。
  3. shots/s01_<name>.py 基于 templates/shot_template.py,包含一个 @shot.check,用于断言每个计算出的数值与其显示的字符串一致。
  4. 验证:一个全新的子代理,使用 templates/verifier_prompt.md,范围涵盖所有声明行;应用其更正(旧措辞加删除线)。
  5. 渲染:--check-only → --sheet-only(查看 sheet.jpg)→ 完整渲染。
  6. 仅当有 2 个或以上镜头时才需要 episode.json + tools/concat.py;使用 tools/review_page.py <EP> --round 1 生成审校页面(一轮)。不要跳过声明表、@shot.check 或联系表检查。

2. 永远不可选的规则

  • 每个可计算的视觉元素都必须被计算(投影、注意力权重、重塑、反向投影、拟合线)并在 @shot.check 中断言,包括 显示的字符串:ck.eq("depth on screen", f"{z:.3f}", "1.976")。格式来自全精度;绝不重新舍入已打印的值。说明性视觉元素需添加 shot.tag("Illustration");降维的绘图要注明。
  • 每个数值都有来源(论文 § / 表格 / 公式,官方代码文件 + 行号,或我们自己的脚本)在 CLAIMS_to_verify.md 中,标记为 measured / computed / inferred / paper。比较中需说明度量标准、单位,以及是否越低越好或越高越好;百分比需说明其分母。
  • 每个符号在出现的地方都要定义,每次出现;观众可能不认识的术语需添加弹出式侧边窗口(animkit.Popup)简要说明后关闭。
  • 一个字幕对应一个视觉变化,不超过 12 个单词,宽度不超过帧(渲染会发出警告;在 42 像素宽度下,通常每行约 8 个长单词,最多 2 行),每个持续 2–3 秒,没有任何静态内容。
  • 图优先,公式其次,逐项点亮显示,每个术语用颜色标注或链接到其对应的图片部分。
  • 我们自己的测试要标明为原创(非论文的实验),首次出现时标记,之后使用相同标签。
  • 独立验证:谁写了声明,谁就不验证它;修正视为新声明;最多两轮,之后按措辞应用并进行抽查。旧措辞需加删除线(~~旧~~ → 新),绝不静默删除。
  • 在翻译或解说中不编造事实:它们只能说明已验证的字幕/声明内容。
  • 完整清单:references/STYLE.md(§A 内容,§B 节奏,§C 视觉语法,§D 交付前,§E 成为规则的审校反馈)。在编写故事板前阅读它,并在每个审校轮次前再次阅读。

3. 工作风格

  • 阅读 animkit/README.md 中你需要的 API 部分(内容较长:用 grep 搜索元素,然后阅读该部分)。从 episodes_example/ 中最相似的镜头复制模式,而不是自己发明布局。templates/shot_template.py 是一个最小化的完整镜头模板。
  • 使用 --still t1 t2(PNG 帧)和 --sheet-only(12 帧联系表)迭代镜头;最后才进行完整渲染。每次都要自己查看联系表(重叠、文字出画、方块 = 缺失字形、字幕覆盖图片)。静止帧不会因后续渲染而刷新:每次编辑后重新运行 --still。
  • 3D 场景:animkit/README.md §3D 场景(PinholeCam, OrbitCam 方位角/俯仰角约定:az=90, el=0 是侧视图)。例如针孔侧视图的 2D 图:§2D 侧视图(等比例 Plot2D)。
  • 以 python -I -B -X utf8 运行 Python;在其他会话渲染时绝不编辑库文件(references/PITFALLS.md)。
  • 保持 STATUS.md 简短且最新;在 effort_log.csv 中记录工作量(item,size,start,end,render_s,iterations,note)。
  • 长剧集或大量镜头:按照 references/DISPATCH.md 将工作拆分到多个会话/子代理中(主会话上下文预算约 300k,一次性子代理 ≤ 150k,切换前传递文件)。

4. 交付

告知用户:视频路径,审校页面路径(review/roundN/review.html,在浏览器中打开;每个镜头有评论框和“复制全部”按钮),哪些是计算性的、哪些是说明性的,验证了什么以及由谁验证,未解决的问题。当用户反馈回来时,逐字保存为 review/roundN/feedback.md(每行一个镜头 ID,例如 E03-02: ...),逐条回应,并将任何通用偏好转换为你的剧集本地规则的新行(追加到 episodes/ 中的 STYLE_local.md 中),以便下一集从该规则开始。

参考索引

文件何时阅读
references/PIPELINE.md开始时;阶段命令、文件格式、检查点
references/STYLE.md编写故事板时;每个审校轮次前
references/STORYBOARD.md阶段 B:观众深度、故事板 + 声明格式、故事模式
references/REFERENCES.md研究参考视频/源论文时
references/VERIFY.md + templates/verifier_prompt.md声明完成后,模型运行后,解说/翻译后
references/REVIEW.md阶段 D–E:审校页面、反馈文件、轮次
references/I18N.md英文剧集的翻译版本(--lang)
references/NARRATION.md每个视觉片段的解说脚本
references/TTS.md本地 TTS 配音、时间安排、混音
references/DISPATCH.md多会话/子代理工作、成本、共享机器礼仪
references/PITFALLS.md出现问题时;修改库之前
templates/会话和子代理的提示词、框架文件、镜头模板

相关技能