Communitygithub.com

createsomethingq3k/vibe-knowledge-film

把一个知识点做成「Vibe知识大赏 / 比特新语」那种无旁白、纯代码逐帧画出来的知识短片:深色底发光几何、底部一行字幕、卡在《Vibe知识大赏(开智小曲)》或代码合成配乐上,1920×1080 30fps 约 2:40,产出 mp4 + 事实表 + 制作日志。流程:选题 → 查证事实表 → 字幕稿与分镜 → film.js(Canvas,renderFrame(t) 纯函数)→ 按曲子 drop 卡点 → Playwright 逐帧导出 → ffmpeg 合成 → 自动质检(字幕速度、音画同步、低运动、响度)。用户说「做一条知识大赏 / 像比特新语那样 / 用代码把知识拍成大片 / 无旁白知识短片 / 把这个概念做成动画短片 / 卡开智小曲」,或想复刻、续做《半衰期》样片时都用它。不用于:有旁白配音的讲解片、真人口播、实拍剪辑(那些用 jia-kinetic-explainer、hyperframes 等)。

vibe-knowledge-film 是什么?

vibe-knowledge-film is a Claude Code agent skill that 把一个知识点做成「Vibe知识大赏 / 比特新语」那种无旁白、纯代码逐帧画出来的知识短片:深色底发光几何、底部一行字幕、卡在《Vibe知识大赏(开智小曲)》或代码合成配乐上,1920×1080 30fps 约 2:40,产出 mp4 + 事实表 + 制作日志。流程:选题 → 查证事实表 → 字幕稿与分镜 → film.js(Canvas,renderFrame(t) 纯函数)→ 按曲子 drop 卡点 → Playwright 逐帧导出 → ffmpeg 合成 → 自动质检(字幕速度、音画同步、低运动、响度)。用户说「做一条知识大赏 / 像比特新语那样 / 用代码把知识拍成大片 / 无旁白知识短片 / 把这个概念做成动画短片 / 卡开智小曲」,或想复刻、续做《半衰期》样片时都用它。不用于:有旁白配音的讲解片、真人口播、实拍剪辑(那些用 jia-kinetic-explainer、hyperframes 等)。.

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/createsomethingq3k/vibe-knowledge-film/tree/HEAD

在你喜欢的 AI 中提问

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

文档

Vibe 知识短片(代码逐帧版)

成片规格:1920×1080、30fps、约 159 秒(跟曲子走)或自定、没有人声、一屏一句中文字幕、画面全部由 Canvas 代码画。 示例《半衰期》(examples/halflife/)全部由组件拼成,复刻验证:和原样片 67 帧逐像素一致、混音逐采样一致。examples/gallery/ 是同一套组件换题材的演示。

这类片子观众买账的是三样东西:真实的事实(年份、原始数据、论文)、一直在动的画面、卡在音乐上的揭晓。下面每条规则都是为了守住这三样。

底线(每条都有出过事的原因)

  • 上屏的每个数字、人名、年份、引文都要有出处,写进事实表;查不到就不写,示意画面标「示意」。AI 写引语时很会“编得像真的”——旧版《半衰期》里那句卢瑟福英文名言就是编的。
  • 水印只写用户自己的号名或片名。照着参考帧做时,AI 会把参考作者的名字一起画进去(旧 demo 左上角写着“比特新语”),那等于冒用。
  • 配乐只用用户提供、有授权的文件;不从别人视频里扒音轨,不去来路不明的站下载,skill 也不附带任何曲子。B 站发布时在 B 站投稿流程里添加音乐。
  • 片尾和发布文案都写 AI 制作声明。
  • renderFrame(t) 只由 t 决定:随机数用 VF.rng(种子),不用计时器,不在帧之间存状态。否则导出会抖、每次渲染都不一样。

准备

SK=~/.claude/skills/vibe-knowledge-film
$SK/engine/setup.sh          # 检查 node / ffmpeg(libx264) / numpy,装 playwright 包,找本机浏览器

流程(三个确认点,确认后再往下)

① 选题和路线 → 确认 1

用 AskUserQuestion 问清(推荐项排第一):

  • 选题:用户只给方向时给 3 个候选。好选题 = 硬核概念 × 能落到“你”身上的情感点(熵增 → 生活的力不从心;半衰期 → 遗忘是不是背叛),最好还有一个反直觉的转折。见 references/story.md。
  • 配乐:bgm(用户提供开智小曲等授权文件,画面卡曲子,片长 = 曲长)或 synth(代码合成,片长自定)。
  • 署名(水印写什么)、时长(默认跟曲子 159 秒)。

② 查证 → 事实表

每个要上屏的事实:说法 | 出处 | 可信度(T1 原始文献 / T2 权威二手 / T3 只能当“据说”)| 用在哪一句。 查证常常会改写故事:《半衰期》查到“遗忘是幂律、越旧越稳”,推翻了原副标题,反而成了结尾的反转。查到冲突就停下来告诉用户。

③ 字幕稿 + 分镜 → 确认 2

按六段式写(钩子 → 片名 → 历史锚点 → 机制演示 → 反直觉转折 → 落回观众 → 献词与参考),一屏一句、≤ 6.5 字/秒、关键词用 {} 高亮、需要出处的句子带第 4 项小字。 分镜每段写:画面在演什么(一句字幕对应一个屏上动作)、“真的在算”的东西(用真数据、真公式、固定种子跑模拟)、音效。模板 templates/事实表与字幕分镜.md。把事实表 + 字幕分镜给用户看,点头再写代码。

④ 建片、写 film.js

$SK/engine/new_film.sh <片目录> <片名>                 # 六段式骨架
$SK/engine/new_film.sh <片目录> <片名> --from halflife  # 从《半衰期》起步 / 对照

先按要演的内容挑组件:references/components.md 有“讲什么 → 用什么”对照表,examples/gallery/组件图鉴.png 是全部组件的样子。骨架模板已经用组件拼好六段,换数据和文字即可;组件不够用再在 film.js 里写局部函数(API 见 references/engine.md,完整写法见 examples/halflife/film.js)。规则:

  • 最难的那一镜先做,出静帧看立不立得住,再做别的。
  • 字幕、场景、音效都按“分镜时间”写;卡曲子的事交给 warp(第 ⑤ 步),不要逐个改时间点。
  • 场景里每 2–3 秒要有新动作;长停留加微动(流光、扫光、缓推),引擎自带的呼吸镜头幅度小,单靠它压不住“静止”。
  • 新出现的字(场景里画、字幕里没有的)加进 strings。

⑤ 配乐与卡点

  • bgm:曲子放进片目录,跑 python3 $SK/engine/analyze_bgm.py <曲子> --json out/bgm.json。如果是开智小曲,先比对 data/kaizhi-xiaoqu.json 的 sha256:一致就直接用里面的小节网格和建议锚点;不一致(别的来源会整体偏 0.1–0.3 秒)就以新测的 低频突入点 为准重建网格。然后在 meta.music.warp 写锚点:片名闪白 → 第 1 个 drop,设问/静默 → 回落段,反转揭晓 → 第 2 个 drop,落点和献词 → 乐句开头。细节见 references/music.md。
  • synth:在 meta.music.synth 按段落写各声部电平、静默包络(照着示例的 SYNTH 改)。

⑥ 自检(不出全片)

node $SK/engine/export.mjs <片目录> events          # 音效表 + 字幕时序
node $SK/engine/export.mjs <片目录> stills          # out/stills.png,16 格总览;也可指定秒数 3,16.9,43.6
cd <片目录> && python3 -m http.server 8765 --bind 127.0.0.1   # 浏览器开 film.html 拖时间轴、听配乐

逐格看:字有没有压线出界、画面有没有空一半、曲线贴不贴数据点、有没有东西飘错位置、字幕和动作对不对得上。这些代码不报错,只有看才看得出来——《半衰期》在这一步抓到了 5 个。

⑦ 出片 + 质检

$SK/engine/build.sh <片目录>        # 音效表 → 配乐 → 逐帧渲染 → -14 LUFS 合成 → qa.py(后台跑,约 5–12 分钟)
$SK/engine/build.sh <片目录> --skip-render   # 只改了声音

qa.py 报 ✗ 必须改,! 要么改、要么交付时说明是有意的。机器也会冤枉人:报“黑场”先抽帧看,深色底常被误判。读法见 references/qa.md。

⑧ 交付 → 确认 3

给用户:成片路径、片长、质检结果、还不够好的地方。补 制作日志.md(每个翻车点:现象 → 原因 → 改法,做教程时就是镜头清单)。需要发布文案时见 references/publish.md。

命令速查

命令作用
engine/setup.sh环境检查与安装
engine/new_film.sh <目录> <片名> [--from halflife]新建片子(复制一份引擎快照进去,日后升级引擎不影响旧片)
node engine/export.mjs <目录> events / stills [秒,…] / render [起 止]导出音效表 / 总览图 / 视频(给起止秒只渲一段)
python3 engine/audio.py <目录>配乐 + 音效 → out/mix.wav
python3 engine/analyze_bgm.py <曲子> [--json 文件]BPM、小节、能量曲线、低频突入点
engine/build.sh <目录> [--skip-render]一键成片 + 质检
python3 engine/qa.py <目录> [成片]单独质检

参考文件(用到再读)

文件什么时候读
references/story.md选题、六段式、字幕规则、事实表分级
references/style.md视觉规范:配色、字体、五层画面、版式坐标、动效密度
references/components.md写场景前:21 个组件 + 5 个数据工厂、“讲什么 → 用什么”、参数
references/engine.mdVF 基础 API、meta 字段、场景写法
references/music.md配乐两种模式、开智小曲结构、drop 检测、warp 锚点、音效表
references/qa.md质检每项的含义、阈值和常见误报
references/pitfalls.md动手前扫一遍:做《半衰期》踩过的 30 个坑 + 同类项目的坑
references/publish.md发布文案、AI 声明、音乐与引用的处理
examples/halflife/完整示例:film.js(组件版)、事实表与字幕分镜、制作日志
examples/gallery/组件图鉴:同一套组件换题材;组件图鉴.png 总览
data/kaizhi-xiaoqu.json开智小曲的实测结构与建议锚点

相关技能