Communitygithub.com

k8s-animate

创建一个3Blue1Brown风格的Manim动画视频,使用官方Kubernetes图标解释Kubernetes流程,可选配音。仅限人工调用——只有当用户输入 /k8s-animate 时运行;切勿自行触发。

k8s-animate 是什么?

k8s-animate 是一个用于生成 Kubernetes 流程讲解动画视频的 AI 助手技能。它基于 Manim 库和 3Blue1Brown 式的风格,利用官方 Kubernetes 社区图标(CC-BY-4.0 许可)并以简洁的图形化动画呈现复杂的集群操作,如节点加入、Pod 调度等。用户可通过 voiceover 参数选择是否开启本地 Kokoro TTS 语音(默认开启),视频输出为 1080p60 的 MP4 文件。该技能完全由人工触发,仅当用户明确输入 /k8s-animate 命令时才执行,适合需要在课程、博客或演讲中清晰展示 Kubernetes 内部机制的场景。工作流程包括环境检查、故事板协商、场景编写及预览渲染,支持 macOS、Arch Linux 和 Debian/Ubuntu 系统。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wielenmaker/k8s-animate/tree/HEAD

在你喜欢的 AI 中提问

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

文档

创建Kubernetes讲解视频

输出是一个MP4讲座视频:图形化、动画化、几乎没有文字,无字幕。

参数 voiceover=on|off(默认 on)。 on 使用本地Kokoro TTS语音进行旁白;off 生成无声视频,绝不安装或加载Kokoro。

参数 setup: 仅安装,不生成视频。执行下面的“检查环境”步骤,然后停止。

两个文件夹。 SKILL 是技能的基础目录(存放此文件的文件夹)。它包含 .venv/、icons/、references/ 和 scripts/。OUT 是 <用户工作目录>/<主题>,每个视频创建一次。场景文件、media/ 和最终的 MP4 都位于 OUT 中,绝不在 SKILL 中(更新或删除技能会删除 SKILL)。使用绝对路径;不要依赖当前目录。

技能附带内容

  • icons/:官方Kubernetes社区图标(带标签集合,CC-BY-4.0)。仅使用这些图标表示Kubernetes组件和资源。 切勿重新绘制、改色为其他内容,或用通用形状替换此处有图标的组件。对于没有图标的概念(CSR、证书、数据包、iptables规则),使用参考中的简单形状,如 Doc 和 Packet。
  • references/node_join.py:一个完整、经过批准的示例(kubeadm节点加入)。模仿其风格、调色板和辅助类。
  • references/kokoro_service.py:连接到manim-voiceover的Kokoro-82M。
  • references/kit.py:共享调色板、辅助工具以及 Explainer 基场景和 voiced(Scene)。新场景从此导入。
  • scripts/setup.sh [voiceover=on|off] [--yes]:报告缺少的内容并打印安装计划(macOS、Arch、Debian/Ubuntu);仅当带有 --yes 时才安装。
文件组件文件组件文件组件
apikube-apiserverpodPodcmConfigMap
etcdetcdrsReplicaSetsecretSecret
schedkube-schedulerdeployDeploymentpvPersistentVolume
c-mkube-controller-managerstsStatefulSetpvcPersistentVolumeClaim
c-c-mcloud-controller-managerdsDaemonSetscStorageClass
kubeletkubeletjobJobnsNamespace
k-proxykube-proxycronjobCronJobsaServiceAccount
control-plane控制平面节点svcServicerole / c-roleRole / ClusterRole
node工作节点epEndpointsrb / crbRoleBinding / ClusterRoleBinding
hpaHorizontalPodAutoscaleringIngressquotaResourceQuota
crdCustomResourceDefinitionnetpolNetworkPolicylimitsLimitRange

Manim会丢弃这些SVG中嵌入的文本,并且api、c-m、sched、kubelet、k-proxy共享相同的齿轮图形。始终使用 Icon(name, label) 辅助程序为图标添加标签。

工作流程

1. 检查环境

运行 bash SKILL/scripts/setup.sh voiceover=<on|off>。如果它输出 Ready.,则继续。否则它会输出缺少的内容和计划(首次在此机器上运行):向用户展示该计划,并在安装前请求确认。

  • 确认后,使用 --yes 再次运行。它很慢(torch、系统包),因此在后台或使用长超时运行。
  • 如果计划中包含 sudo 行,而你无法输入密码:将命令提供给用户自行运行(! bash SKILL/scripts/setup.sh voiceover=<on|off> --yes)。
  • Kokoro是免费的、Apache-2.0许可(适用于付费课程)、离线且接近商业品质;如果用户不想要,建议使用 voiceover=off。

2. 商定故事板

如果未给出主题,请询问主题。然后在聊天中提出一个故事板并等待批准,因为渲染需要几分钟:

  • 6–12个节拍,每个节拍包含:1–3个字的步骤标签、屏幕上移动的内容、一句旁白。
  • 通过运动讲述故事:盒子中的图标、弧线上的数据包、状态的颜色变化。屏幕上只有短标签。
  • 事实必须符合当前Kubernetes版本。如果不确定某个细节,请如实说明,不要猜测。

3. 编写场景

模仿 references/node_join.py:

  • 一个 NARRATION 字典(节拍 → 句子)作为类属性,每个节拍对应一个方法;Explainer.construct 在 with self.voice(line) 内部循环遍历它们。
  • 编写 OUT/<主题>.py,包含 from references.kit import *,继承 Explainer,并在底部添加 <名称>Voiced = voiced(<名称>)。节拍函数为 def beat(self, i)。无声的 <名称> 和有声的 <名称>Voiced 来自同一代码。
  • 切勿将场景文件命名为标准库模块(operator.py 会破坏Python的导入)。
  • 重用调色板(深色 #0b1220、K8s蓝色 #326ce5、金色令牌、蓝绿色网络、琥珀色NotReady、绿色Ready)以及辅助程序 Icon、Packet、Doc、Step、Pill、send。
  • 类应保持小型,代码尽量精简。
  • 术语的拼写方式应与旁白中的发音一致:kubeadm → "kube admin"、etcd → "et-cee-dee"、kubectl → "kube control"。

4. 预览,然后渲染

从 OUT 目录运行manim:PYTHONPATH=SKILL SKILL/.venv/bin/manim --media_dir OUT/media ...。

  1. 预览:... -ql <主题>.py <名称>,然后使用ffmpeg提取约8帧生成一张联系表,查看一次。修复重叠、标签裁剪以及暗淡或不可读的文字。
  2. 最终渲染:voiceover=off 时运行 ... -qh <主题>.py <名称>,voiceover=on 时运行 <名称>Voiced。将 OUT/media/videos/<主题>/1080p60/<名称>.mp4 复制到 OUT/<主题>.mp4。
  3. 当 voiceover=on 时,确认MP4包含音频流(使用 ffprobe)。
  4. 完成后打开MP4(macOS上使用 open;Linux上使用 xdg-open,或者如果没有显示器,则只打印路径)。

报告MP4的绝对路径、时长、需要留意的地方(非常见术语的发音),并提醒用户图标需要注明“Kubernetes社区图标,CC BY 4.0”(结尾画面已显示)。语音选项:af_heart(默认)、am_michael、am_fenrir;通过 voiced(<名称>, voice="am_michael") 传入一个。

相关技能