我让Claude Code用代码画了一支翻墙微纪录片,效果惊人
前几天在X上刷到两个仓库:一个是有人让Claude做的音乐动画I'm Upping My P(doom),另一个是51秒的Riso海报风讽刺短片dario-shabi。两部片子都没有用任何剪辑软件,画面和配乐全是代码生成的。
我就想试试:用同样的方法,让Claude Code做一支我指定内容的片子。题目选了“翻墙”,一分半左右,微纪录片的口吻,讲防火长城和翻墙这几十年的猫鼠游戏。成片在这里:
它不是“剪”出来的,是“画”出来的
先说原理,这是整件事最反直觉的地方。
传统剪辑是把素材拖到时间线上裁一裁。这套方法里没有素材。Claude写的是一个网页,网页里有一块1920×1080的画布,还有一个函数:给它一个时间点,它就在画布上画出那一刻应该出现的画面。第3秒该有一个“墙”字浮出来,第37秒该在时间轴上点亮2015年,都写在代码里。
导出的时候,一个脚本在后台打开这个网页,从第0秒开始,每隔三十分之一秒问一次“这一刻画面长什么样”,把画布截下来,一共三千多张图,再交给ffmpeg合成MP4。
打个比方:这不是拿一堆照片拼相册,而是给了一台自动写字的机器一份乐谱,它按拍子把每一页画出来。改画面不用重新拍,改乐谱重新过一遍就行。
配乐也是同一份代码生成的。网页里有一个很小的合成器,鼓、贝斯、和弦垫、铃声都是用公式算出来的波形,一个音频文件都没有导入。这部分我完全没管,只说了一句“克制一点,纪录片感”。
旁白是整部片子的时间轴
这是我这次觉得最值得复刻的一点。
我先让Claude写了七段旁白稿,一段对应一个场景。稿子定下来以后,用Fish Audio(户晨风音色)逐段合成音频,每段单独一个文件。这样每段音频多长,脚本一量就知道,第几秒到第几秒该放哪个场景,自动算出来。
画面的动作也跟着旁白走。代码里有一个小机关:告诉它“第2段旁白念到‘逐步升级’这个词的时候”,它就返回那个时刻。旁白说到“国际出口”,画面上的三个出口方块就亮起来;说到“3431家机场”,大数字开始跳。字幕也是从同一份稿子切出来的,不用另做。
AI写好稿子之后,我基本上都没有改。所以旁白的话,你可以认为它主要就是由AI写的。
1-2小时内做了六个版本
第一版出来以后,我就干一件事:看片,说哪里不对。Claude改,重新渲染,两分半钟出一版,速度很快。
我提的意见大概是这些:标题卡的小字看不清、软路由那页文字和图案叠在一起、承德案那页不要画放射线、约谈那个盖章太花删掉、引号要用中文的、字幕末尾不要标点、音乐在某处突然变空。
有意思的是它自己也会检查。每渲染一版,它会把一百多帧拼成一张总览图自己看一遍,找文字重叠、元素出画这种问题,先改掉一部分再交给我。但它看不出来的东西也不少,比如“这个褪色效果只盖住了半个单词”,这种要人眼盯。
三个坑
一、年份会被读成“一千九百九十六”。 Fish Audio看到“1996年”会当成数量念。对策是送去合成的文本把年月日全换成中文数字,“一九九六年”“九月”“二十日”,字幕里仍然显示阿拉伯数字。这条规则我让它写进了合成脚本,以后每个项目自动生效。
二、旁白情感太满。 默认合成出来语气起伏很大,不像纪录片。对策是在文本前面加一个平稳的情感标签,再把模型的“起伏参数”从默认的0.7调到0.35左右,音量补3分贝。第一个音色我听着不对,换了一个才顺耳,这个只能多试。
三、内容越加越长。 一开始定的是一分钟、最多一分半。旁白稿改了几轮,加了承德案、加了泄露事件、结尾改长,最后是110秒。每次加内容它都会报一次时长,是我自己一直说“再加一句”。想守住时长,稿子定稿前就要数字。
能复刻的部分
机器是M3 Max的MacBook,需要装的只有Node、Chrome和ffmpeg。三个模板仓库clone下来放在一个目录里,Claude Code在这个目录里开工,风格从模板里学,内容全部重写。
我这边给它的东西其实很少:两个参考仓库的链接、一段口述的主题和要求、Fish Audio的音色ID和一个API key。剩下的分镜、代码、配乐、字幕,都是它写的。我的工作是看片和提意见。
说句实话,这条路线的短板也明显。画面是几何图形、文字和网点,没有实拍,也画不了写实的人物。适合讲道理、讲时间线、讲数据的片子,不适合讲故事。
最后
渲染一版两分半钟,这个节奏让我想到一件事:以后做这类片子,可能会像改文章一样,改好就发。未来视频剪辑会变成什么样子,我现在真的是不敢想了,这一切的发展真的都太快了。下一支我想试试有实拍素材混进去的做法,让代码画的图形叠在真实画面上。不知道行不行~