01 · 生成视频
暂定片名 Old Brain, Young Money。这是一部逐镜头用生成视频制作的纪录片:旁白先于任何画面录制,每一条被引用的说法都追溯到一份存档来源。
论点,用 Tony 的话说:相对于我们身体演化的漫长历史,金钱是一件年轻的、人造的东西。恐惧与贪婪是为狮子而生的,不是为市场;现代世界放大了这种错位。出路是理解人性,把风险交给机构、时间和分散的市场,并且经常练习做小的决定。
流水线,按顺序
Tony 在 9 月 25 日的一次记录里说出了这个论点。它被原样存档,成为这部片子的主心骨。结局在第一个镜头出现之前就定了:真相留在片中,邀请放在片尾字卡上。
apex-philosophy/captures/2026-09-25.md · Linear 项目“The Evolution of Financial Decisions” · 质量标杆:Tony 提供的一段高端纪录片参考片
来源文件记录了每一个人物和每一个事实。标注 VERBATIM 的引述,必须是存档网页中的原文片段,由脚本机械地检查。转述会写明自己是转述。文件还记录了脚本不许说的话:Markowitz 的 50/50 分配只能表述为 1952 年的做法,因为他后来说过“Now I don't do that”;Ted Benna 并没有把养老金的消亡归咎于 401(k)。
research/sources.md · research/audit_quotes.py · research/raw/
第 01 稿只有冷开场和第一章。第 06 稿是完整的影片,长 9:57。Tony 批准了接近 9:15 的目标,第 07 稿用四处删减达到了它。留下来的结构:凌晨两点的冷开场,接着是 一 · 为狮子而生,二 · 恐惧与贪婪,三 · 风暴,四 · 出路,最后是结尾。
script/draft-01.md … draft-08.md · script/directions.json(逐句节奏)
Tony 从 Fish Audio 里挑了声音“Anthony”,语速 0.85,逐句生成。一个配音工具把每一句录音按声音、语速、模型和文本做键缓存,所以重新渲染某一稿时,只会重录改动过的句子。一个重抽工具对一句话取多条录音,留下最接近目标语速的那一条。每一条录音都用 Whisper 逐条核对,因为 Whisper 处理很长的拼接文件时,既会循环,也会漏字。
tools/voice.py · tools/reroll.py · audio/cache · audio/drafts/draft0N-narration.mp3
每一行都从它所说明的那句话开始,并标注类型:B-roll、角色、时钟、界面、扫描、图形或复用。类型决定路线:B-roll 与角色镜头用生成视频,手机界面与数据卡用设计出来的屏幕,脑部扫描用真实解剖结构,章节卡用 HyperFrames 排版。剪辑再加上 4 秒的前导,以及 9 秒的片头与片尾字卡。
script/shotlist.md · script/shotlist.json · tools/shotlist.py
影片跟随一位女性。她的身份由一段标准的 FACE 描述承载,原样粘贴进每一条提示词;只有服装和场景段落会变。一张由静帧组成的角色设定表(正面、四分之三侧面、侧面、眼部特写、全身、早晨与夜晚的服装),是此后每一次参考图生视频调用的参照集。
visuals/character/her.md · sheet A-01 … A-07 · Seedream 5 Pro stills via Renoise
一批付费测试用同样的镜头跑了 Seedance 2.5 和 MiniMax H3 Max。Seedance 动作流畅、人物身份最稳,但场景参考图会劫持构图。H3 Max 的 B-roll 很强,却在一个含两个动作的角色镜头里插入了硬切。由此得出的规则:角色只给身份参考,每个镜头只做一个动作;B-roll 交给 H3。每条路线的价格表,都读自厂商自己的页面,并记录在决定旁边。
visuals/tests · tools/runway_i2v.py · tools/heygen_video.py · tools/gen.py · tools/rn (Renoise CLI)
每个生成的片段,都连同它的提示词、请求、任务记录,以及章节日志里的一行一起写下。有真实物件的地方,就用真实物件:第一枚硬币是来自 The Met 开放获取馆藏的真实 Lydian 金币(stater);大脑是真实的 MNI152 解剖结构,由扫描工具扫过,光晕放在已发表的坐标上;支付界面是对 2007 年实验的带字幕复原。
visuals/coldopen · visuals/ch1 … ch4 · visuals/scan · tools/scan.py · each clip: .mp4 + .prompt.txt + .request.json + .task.json + LOG.md
每一章是一个 HyperFrames 项目,每个场景是一个子合成。时间线由构建脚本依据录音缓存生成,所以每一刀都落在它所属的那句话上。必须精确的屏幕是设计出来的,不是生成的:带虚构提醒的手机锁屏、来自 Fed、SSA、CDC 和 BLS 的数据卡、一张 Benna 的 NPR 卡、一段每帧滚动两像素的助手对话。第二到第四章共用一个库,所以时间线代码只存在一份。
edit/cold-open · edit/ch1 … ch4 · edit/lib/timeline.py · edit/lib/comps.py · tools/build_index.py per chapter · npx hyperframes check
生成的配乐垫底,用人声组(voiceover group)为旁白让出空间,因此人声永远最突出。时钟、心跳、风声和狮子都是生成的音效;有两个撞击声来自库存音效库。其中一课已写成脚本里的一条规则:让声音模型生成“轻柔”的东西,得到的是近乎无声的文件,所以每个音效在放入之前,都先量它的峰值。
carve.mjs (group voiceover) · tools/runway_sfx.py · tools/audio_levels.py (fails on a lane mismatch)
章节验证器先在一章已知良好的版本和一个已知有问题的版本上校准,这样“通过”才有意义。它转写交付的渲染文件,要求每一个旁白字在混音下都被识别出来,要求没有任何一句被淹没,并读取响度。Tony 随后的审看,修掉了没有任何仪器标出的问题:一个让手机文字抖动的缓慢变焦,以及一段太响太久的扫描仪嗡声。
tools/verify_chapter.py · ch1-v4 · cold-open-v5 · ch2-v1 · ch3-v1 · ch4-v1 · phone copies for review on Remote Control
总装工具把冷开场和四章拼接起来,在拼接后的文件里按实测,以纯增益把每一部分统一到 −14.0 LUFS,峰值 −1.0 dBFS。结果就是开发版剪辑 1,长 9:29.8,另有一份 480p 的手机副本供审看。片尾字卡仍写着“text to come”。
tools/assemble_film.py · edit/film/renders/old-brain-young-money-dev1.mp4 · git: every step is a commit in the project repo
对外放行之前的关卡
这条工作流教给工作室的事