把知识点变成代码渲染的知识视频:agent 写代码装配场景 → 无头浏览器逐帧渲染 → FFmpeg 合成。
配音默认由 engine/tts.py 用晓晓音色自动生成(画面反向对齐声音,无长气口);也可交付无声片交剪映文本朗读。
渲染零 API key、零云端服务。git clone && npm i 就能出无声片;接 TTS 配音需 pip install -r engine/requirements.txt(edge-tts,国内走代理)。
npm install
python -m pip install -r engine/requirements.txt # 语音依赖 edge-tts>=7.3.1
node engine/serve.js --root examples/calculus-priority # 终端 A:起服务
python engine/tts.py --config scenes/<选题>/config.json # 生成晓晓配音 + 写回真实 dur
node engine/shoot.js --out output/demo # 终端 B:渲全片
node engine/encode.js --frames output/demo --audio output/<选题>/voice/voice.mp3 --out output/demo.mp4打开 http://127.0.0.1:5173 可以直接在浏览器里看(可交互预览,空格暂停不管用,刷新即可)。
「#vibe知识大赏」那类视频(如《运气的形状》)看上去是视频,底层其实是网页动画: 用 GSAP/Three.js 把知识结构写成代码,再一帧帧渲染出来。手搓一条很爽,但第 10 条就会 发现每次都在重写同样的时间轴、分叉树、粒子聚字。
这个 repo 把那些重复劳动收进组件库,让"写代码"变成"填配置 + 偶尔写个新组件"。
- 确定性帧驱动:画面是时间
t的纯函数(window.Viz.seek(t))。网页实时播放和 逐帧离屏渲染得到同一批画面——不掉帧、不漂移、可重渲单帧、可逐帧质检。 (实时录屏做不到这些,所以本引擎不用录屏。) - 配置驱动 + 组件沉淀:常见母题(时间轴/分叉树/3D 特写/粒子/双栏对比)填 JSON 即可; 新母题写新组件,过质检后入库,下次就变成填配置。
- 配音反向对齐:
engine/tts.py先把每镜旁白合成晓晓语音,把真实时长写回shot.dur, 画面/字幕/合成跟随声音,杜绝人工长气口。无代理时可退回「无声片 + SRT → 剪映文本朗读」。
engine/ 渲染引擎(serve/shot/encode + qc 质检 + runtime 页面)
components/ 组件库(每组件 = index.js + README + 默认配置)
themes/ 主题(一色一义 5 色制)
examples/ 原创可跑示例
scenes/ 你的选题工作区(不进 git)
docs/ 七阶段手册 / 配音对接(TTS·剪映) / 质检说明
SKILL.md agent 入口(七阶段工作流 + 红线 + 自检)
| 依赖 | 用途 |
|---|---|
| puppeteer-core | 驱本机 Chrome/Edge 逐帧截图(不下载浏览器) |
| three | WebGL 场景 |
| ffmpeg-static | 合成 MP4(自带二进制) |
| pngjs | 质检时解码 PNG |
| edge-tts (Python) | 自动配音(晓晓等神经网络音色);需 pip install -r engine/requirements.txt,国内走代理 |
Node ≥ 18。
Windows 下 npm install 报 TAR_ENTRY_ERROR [safe-delete] ... trash operation
某些环境(含 WorkBuddy 沙箱)会往 PATH 注入 safe-bin 并设 GENIE_TRASH_DIR,
导致 npm 移动文件失败、依赖包静默缺文件。绕过:
export PATH=$(echo "$PATH" | tr ':' '\n' | grep -v 'safe-bin' | paste -sd:)
unset GENIE_TRASH_DIR
npm installWindows 下 git fetch / git push -u 报告成功,但 git status 显示 [gone]
同一个 safe-bin 环境还会拦截 git 新建 .git/refs/remotes/<remote>/ 嵌套目录:
远端分支确实存在,本地却 git rev-parse origin/main 报 unknown revision。
手动回填远程追踪引用即可(不影响远端,只修本地视图):
mkdir -p .git/refs/remotes/origin
git ls-remote origin refs/heads/main | cut -f1 > .git/refs/remotes/origin/main按顺序探测:PUPPETEER_EXECUTABLE_PATH → Chrome → Edge(Windows/macOS/Linux 常见路径)。
都没有就设环境变量指向你的浏览器可执行文件。
MIT