代码拍电影:2313星项目 cinecode 的5条反AI铁律
结论先行: GitHub 上有个 2313 星的项目叫 cinecode,它不是"用 AI 生成视频",而是用代码画出每一帧。没有生成模型,没有 GPU 算力账单,产出的是一个 -14 LUFS 母版的 MP4。
但这个项目真正值得老板抄走的,不是技术,是它把"品味"变成了一条条可执行、可测量、能被脚本拦截的铁律。
我把它拆成了 5 条。每一条都是可以直接搬进你自己公司的规则。
一、项目说明:它到底是什么
cinecode 是一个 Agent Skill 包(Claude Code / Cursor / Codex 都能装)。你给它一句话的想法,它和你一起把它做成一部短片。
它的定位原话:"You make a short film with the user. Their taste decides; you do the rest: story, script, picture, sound, edit, checks. The aim is a film worth the wait."
翻译过来:你决定品味,剩下它做:剧本、画面、声音、剪辑、检查。
| 项目 | 数据 |
|---|---|
| 星标 / Fork | 2313 星 / 398 个 fork |
| 许可证 | MIT |
| 作者 | Sarp Yıldız(@sarpstar) |
| 技术栈 | three.js(WebGL)+ ffmpeg + Node 22 + Python 3 |
| 风格库 | 58 种风格配方,51 种来自 LemoLab(MIT) |
| 脚本数 | 39 个 Python/Node 脚本 |
| 文档量 | references/ 目录 524 KB,24 个参考文件 |
| 依赖 | 仅标准库,three.js 走 CDN |
| 成本 | 无生成模型调用,代码渲染不烧 token |
关键认知:这套东西的产出不是"AI 视频",是"用代码渲染的动画短片"。 所以它没有扩散模型那种"脸会飘、手会崩"的随机性,也不会把你的片子训进别人的模型里。
它能做的片子包括:短片、YouTube 长纪录片、广告与产品片、竖屏科普短视频、音乐视频、参考视频改编、自己素材的重新剪辑。
二、五条反 AI 铁律(这是本文的核心思想)
我把最值钱的部分单独拎出来。这 5 条,每一条都在对抗 AI 生成内容的通病。
铁律 1:素材永远来自"外面的真实事物",不靠灵感
AI 写东西最爱重复训练集里最顺的那个答案。这个项目的做法很硬:先从外部随机抽一个真实的东西(博物馆藏品、动物、NASA 照片、老发明、历史地点、手工艺),再把你的想法和它交叉。
我实跑了一下它的抽牌工具,出来的结果是这样的:
s1: seed: Study of a Female Nude (possibly for an unrealized allegorical painting)
place: a theatre's fly tower · form: a list of ten
medium: mosaic · era: ancient Egypt · engine: a dare
来源: clevelandart.org/art/2010.249.a
法国的黑粉笔画、剧场的舞台塔、清单体、古埃及、镶嵌画。这不是 AI 想的,这是从真实档案里发牌发出来的。 你的片子从此不会撞进任何人(包括模型)的惯性路径。
[🖼 建议截图:制作卡片段,展示镜头行与声音层的具体数字]
铁律 2:每一条意见都要变成一个数字
原文:"notes as numbers",即「what changes, by how much」。
AI 协作最大的坑是,你说"这里感觉不对",它给你改三处,你也不知道改了什么、好了没有。这个项目强制每条反馈落成可量化的动作:
• 声音上「再小声点」→ 变成 0:12–0:18 这一段 +4 dB,对着底噪
• 节奏上「太快了」→ 变成镜头数从 12 改成 8,平均镜长 6 秒改 4 秒
• 画面上「糊」→ 变成运动模糊关掉、颗粒关掉、印刷色调开
翻译成老板语言:你的团队现在说的话,有多少能直接变成工单? 大多数管理沟通传到最后都变成了形容词,而形容词不能被验收。
铁律 3:不许用 AI 惯性审美,且要被脚本拦住
这是最狠的一条。原文明确写了:kit 里没有默认字体,也没有默认配色。
那些"AI 一上手就会用"的视觉,灯塔、灯笼、霓虹、漂浮气球,永远不能作为默认值。要用,必须在卡上写明理由:
- Habit image: <那个图像>: <为什么这个故事需要它>
守卫脚本会拦住"悄悄把这些图像带进来"的卡片、路线图或剧本。
同时还有一条更狠的:每一帧都要问自己:"这一帧能不能属于另一部电影?" 如果能,就重做。
翻译成商业语言:这就是差异化测试。一个能套在任何人身上的广告片,等于没有广告片。cinecode 把它做成了硬门,不是提醒。
[🖼 建议截图:capture.mjs 的状态文件,显示 state / done / total / eta_s 四个字段]
铁律 4:所有工具都是纯函数,可复现
核心约定只有一句:frame = f(t, seed),每一帧都是时间的纯函数。
意思是:单独渲染第 250 帧和连着渲染第 250 帧,像素完全一致。任何一帧可以乱序、并行、单独渲染。
这带来三个直接好处:
• 改了第 3 镜,第 7 镜一帧不动(位级相同)
• 整个渲染可以后台跑、断点续跑(状态文件记录 state / done / total / eta_s)
• 任何时候都能只渲染 3 帧给你看,而不是让你等 5 分钟
翻译成老板语言:这一条直接决定了"能不能大规模并行"。 如果你的内容生产链路里有一环不可复现,你的质检、你的 A/B 测试、你的成本核算全部会塌。
铁律 5:声音从第一版就有,且每部片子有自己的"声音身份"
原文:"Sound from version 1",而且旁白永远不是裸 TTS。
具体到数值:
| 指标 | 目标 |
|---|---|
| 整体响度 | -14 LUFS 积分,真峰 ≤ -1 dBTP |
| 英雄时刻 | 瞬时约 -10 LUFS |
| 混音起点 | -16 到 -14 LUFS |
| 峰值 | ≤ -2 dBFS |
| 编码 | AAC 320k / 48 kHz |
更狠的是它要求逐场测量:某个场景的响度偏离中位数超过 3 LU,或者 2-5 kHz 刺耳度比中位数高 3 dB,直接标出来。理由很实在:整体 -14 LUFS 会掩盖一个特别吵或者特别刺耳的场景。
至于每个场景配什么声音,也规定死了:冲击音要分五层(瞬态 0-20ms、本体、房间、衰减尾音 0.5-3 秒、40-80 Hz 的次低频),一扇铁门是五层都有,一个杯子放在桌上只有三层。
翻译成老板语言:你的品牌视频如果声音是"随便配的",观众说不出哪里不对,但就是觉得廉价。 声音不是配上去的,是设计出来的。
三、设计哲学:它到底相信什么
我把项目的信条提炼成四条,你可以直接拿去改造自己的团队。
哲学一:品味在用户,判断在工具
"最终决定权永远是用户的"。它甚至不允许 AI 自己选旁白的声音,必须生成 2-3 个候选文件让你用耳朵挑,而且必须逐字听。工具的职责是执行机械规则,品味必须留给人。
哲学二:先看,再问
原文:"Show before you ask. Never ask for an OK on something the user has not seen."
还有一句更狠的:"your own eyes before anything long renders"(长渲染之前先用自己的眼睛看)。
所以流程永远是:文字计划 → 静帧 → 才渲染。而不是:渲染 5 分钟 → 给你看 → 你说不满意。
哲学三:库是词汇,不是清单
原文:"Libraries are vocabulary, never a checklist."
58 种风格库、命名过的运镜词典(推轨、环绕、变焦推、FPV、肩扛、速度斜坡、焦点转移、匹配剪辑、甩镜、J-cut)、字体库,这些是词汇表,不是打勾清单。如果你只是逐条勾选,画出来的一定是"所有风格都用了"的怪东西。
哲学四:单调和杂乱是同一种毛病
原文:"Monotony is a fault just like clutter."(单调跟杂乱一样是缺陷。)
它要求:每一两秒必须有新东西进到眼睛或耳朵;但不变的是影片的身份,一种视觉语言,一个会回来但每次都变样的签名。
翻译成内容生意的语言:这正是"稳定人设"和"内容重复"之间的分界线。 大部分账号的日常更新之所以失效,就是因为把"单调当稳定"了。
四、详细教程:从零跑通一部片子
第 0 步:装环境
需要四样:Node.js 22+、Python 3.9+、ffmpeg、Chrome/Chromium/Edge。
node -v # 需要 v22 或更高
python3 -V # 需要 3.9 或更高
ffmpeg -version
磁盘:快速模式几百 MB 就够,电影模式每部片子渲染期间要几个 GB(1080p24 的 PNG 全尺寸帧是 2-6 MB/张,30 秒约 720 帧,约 1.5-4 GB)。
GPU 不是硬要求,但 capture.mjs --probe 会告诉你机器上有没有,掉到 CPU 渲染就慢。
第 1 步:装技能
git clone <项目仓库地址> ~/.claude/skills/cinecode
Windows 用户把 ~/.claude/skills/cinecode 换成 %USERPROFILE%\.claude\skills/cinecode。
装完新开一个对话。技能靠对话启动时加载,老对话里装是看不见的。
Cursor 用户装到 ~/.cursor/skills/cinecode。
第 2 步:开一个空文件夹,写下你的想法
mkdir my-film && cd my-film && claude
然后直接说:
用 cinecode 一起做一部片子:<你想讲什么,一两句话>
不用写模式,它会按工作量推荐。你写得越少,它问得越多;你写得越全,它越少打扰你。
可选补充(不知道就留空):
时长:<15秒 / 1分钟 / 5分钟…>
投放位置:<抖音竖屏 / YouTube 横屏…>
声音:<要旁白 / 不要 / 我自己的歌:文件>
视觉参考:<你想到的某部电影、某张照片、某个画家,或"你推荐">
第 3 步:选模式和用途
第一个问题会同时问两个:
模式:快速模式 vs 电影模式。快速模式单文件出片,约 3 次批准;电影模式是六个门控步骤的制片厂流程,分阶段或一次性到草稿。
★ 推荐规则:按作品大小,不按用途。60 秒以内、单镜头或少数场景走快速;60 秒以上、多场景、需要研究素材或档案素材走电影。
用途:电影质感 vs 广告产品。广告产品会额外跑"差异化测试"(把竞品名字换进去必须不成立),并输出 9:16、1:1、16:9 三版带安全区。
第 4 步(电影模式):走六个门
| # | 步骤 | 你会看到什么 |
|---|---|---|
| 1 | 访谈 | 3 个 call、6 个问题,中间夹一张方向看板 |
| 2 | 路线图 | 一屏内容:logline、转折、带时间的分镜、视觉、音色、钩子、三个风险、差异化测试 |
| 3 | 剧本与文字 | 完整剧本一次性给全,同时选生产节奏 |
| 4 | 风格帧 | 最终质量的一张静帧,之后每一帧的标尺 |
| 4b | 字体方向 | 3 张字体样卡,你挑 |
| 5 | 动态分镜 | 低分辨率、已定时、带临时声音的视频,你只看节奏对不对 |
| 6 | 渲染、声音、成片 | 先半尺寸混音草稿,再全尺寸、-14 LUFS 母版、质检、交付 |
第 4b 步那个生产节奏选择,是整个项目最实用的一个开关:
• Aşama aşama(逐步):每一步都给你看、等你点头。适合长片。
• Hepsini üret, taslakta göster(一次到草稿):不再打断你,一路跑到草稿。适合短片和急活。
它会写进 STATE.md 的 Pace: steps 或 Pace: through。选 through 之后,每个选择自动走 ★ 推荐项,并记进 STATE.md,草稿里会列出做过的选择,你想改随时说。
[🖼 建议截图:qc.py sheet 生成的接触印相表,每 2 秒一格]
第 5 步:看质量控制
所有检查都是命令行,跑的是测量不是感觉:
python3 tools/qc.py hook renders/film-v1.mp4 # 钩子硬规则:前2秒必须有运动
python3 tools/qc.py all renders/film-v1.mp4 # 全套:黑帧、冻结、重复帧、亮度、剪辑点、响度、频谱
python3 tools/qc.py sheet renders/film-v1.mp4 2 6 # 每2秒一格的接触印相表
python3 tools/qc.py phone renders/film-v1.mp4 0.5,1.5,10 # 390px 宽,手机可读性
python3 tools/qc.py action renders/film-v1.mp4 0,3,7.5,12 # 每个镜头的"主体动作"
python3 tools/qc.py sceneloud renders/film-v1.mp4 0,3,7.5,12 # 逐场响度与刺耳度
其中 qc.py action 特别值得注意:它先把摄影机运动抵消掉,再看剩下的画面变化够不够。变化太小就报警,意思是"镜头在动,主体没动",这是 AI 视频和廉价动画最常见的病。
还有一条我觉得是整套方法里最聪明的:"一句话测试"。给一个完全没看过项目的助手,只给接触印相表和一句话:"用一句话说这部电影讲什么"。把它的话和你的 logline 并排放。如果它没说中主题或转折,先修这个,其他意见都往后排。
翻译成老板语言:这是最便宜的质检。 一张缩略图 + 一个陌生人,比你自己重看十遍更容易发现"我懂了我没懂"。
第 6 步:交付和清理
成片躺在项目文件夹最上层:<标题>.mp4。带字幕的另有一份 -altyazili.mp4。
最终确认后,它会一次问两个问题:要不要清理中间文件(会告诉你清哪些、留哪些、腾多少空间),要不要把这个格式存下来(存了下次说"照这个格式做"就能复用视觉、字体、声音、镜头语言和节奏)。
它从来不让你碰 git,也从不提 git。 版本历史是它自己在本地悄悄留的。
五、归纳总结:六条可以直接搬走的观点
观点一:把品味编译成规则,而不是期待 AI 有品味
这是整个项目的方法论内核。AI 不知道什么是"高级",但它极其擅长执行被写下来的规则。所以"高级感"必须被翻译成:首帧有运动、一个镜头一个动作、撞库色卡要理由、每帧必须通过"能不能属于另一部电影"测试。
观点二:可复现性是规模化的前提
frame = f(t, seed) 这一条,价值超出影视。你做任何需要批量生产、需要 A/B、需要回滚的内容流水线,不可复现的环节就是不可规模化的环节。
观点三:先看再问,是把返工成本前置
大部分 AI 协作的返工发生在"我以为你看过了"。它把"看静帧"设成硬门,连守卫脚本都会拦。这就是把 5 分钟的渲染等待,换成 3 秒的静帧确认。
观点四:惯性审美是最大的同质化来源
它把"灯塔、霓虹、气球"这类东西明确列为 AI 惯性,且不许做默认值。这条可以直接搬到你的文案、你的选题、你的视觉模板上。 你团队出的东西越来越像彼此,通常不是因为能力不够,是因为都在往同一个默认分布上靠。
观点五:差异化的判定标准是"能不能套给别人"
"这一帧能不能属于另一部电影?"换成商业语言就是:你的广告片能不能只换品牌名就成立? 不能,就说明你没做出差异化。
[📝 建议此处加入你自己的相关经历:你团队在内容生产或产品交付里,哪一次是因为"改了一处要重跑全流程"而多花的时间]
观点六:内容生产的成本正在从"生成"转移到"验收"
550 美元做游戏那篇我写过,这里是同一个结论的另一面:当生产几乎免费,稀缺的就是判断。 所以整个项目的重心不是"怎么做得更炫",是"怎么让判断更准"。三条质检工具、一个独立观众、一句话测试,都是在干这件事。
**六、给你老板的三条动作
• 拿你团队最近一条内容做"能不能属于另一部电影"测试。 把品牌名遮住,如果它看起来属于任何一家同行,问题不在执行,在你没选。
• 把下一条内容的反馈全部改成数字。 不要"再高级点",要"这个镜头从 6 秒压到 4 秒,这个画面从 70% 亮度降到 55%"。不能被验收的意见等于没有意见。
• 把"改一处只动一处"当硬指标。 你现在的内容链路里,改一个 logo 是不是要重跑全流程?如果是,规模化那天你会撞墙。
最后一句
cinecode 最让我服气的地方,是它敢把"品味"写成硬规则,然后用脚本强制执行。守卫程序 1815 行,专门拦截破折号、没看过的静帧、悄悄带进来的默认审美、没登记的密钥。
它证明了一件事:当工具足够锋利,AI 协作的质量就不再取决于你今天有多清醒。
这就是我认为每个做内容、做产品的老板都该看一眼的东西。
Frequently Asked Questions
Who is behind TopDigg?
TopDigg is created by Eric, a researcher focused on AI trends and SEO/GEO strategies.
How often is content updated?
Blog posts are published regularly. AI Daily is updated daily with the latest AI news.
Can I republish or share content from TopDigg?
Please contact us for content licensing and collaboration inquiries.
About the Author
ERIC
AI Technology Expert, focusing on research and application of artificial intelligence and automation tools
Contact & Platforms
