OpenFilm 开源:Agent 负责粗剪,最后一成在编辑器里自己手改

用编程 Agent 做视频的朋友,大概都遇到过这种情况:Agent 做出来的片子九成都对,剩下一成(一句字幕、一个颜色、一个片段的入点)要么再让它改一轮,要么只能整片重来。

10 月 4 日上线的 OpenFilm 给的答案很干脆:Agent 负责从零到一,剩下的你在它的编辑器(Studio)里像用剪辑软件一样拖、改、裁,改动直接写回文件,Agent 下一轮还能看到、不会覆盖。我们看的时候它刚 9 天,237 star,10 月 10 日到 12 日连发了 v0.1.3–v0.1.6,迭代很快。

之前站里聊过 HyperFrames(Agent 写 HTML 渲染 MP4)和 OpenMontage(把整条制片流水线拆成几百个技能文件),OpenFilm 走的是第三条路:格式尽量简单,然后给人一个真正能改的编辑器。

三句话说清它的设计

  • 一个 HTML 文件:整部片子就是一个 film.html,把动画网页、实拍素材、图片、声音按轨道剪在一起,样式用 CSS 写。Agent 本来就懂网页,不用学新东西
  • 一个函数:每个镜头是一张网页,只要实现 frame(t),在第 t 秒把完整画面画出来。three.js、WebGL、canvas、SVG、CSS、GSAP、视频都能用。README 特意说了:不需要 Remotion 或 HyperFrames 这样的框架
  • 一个真编辑器:Studio 里能移动、缩放、旋转网页里的任何元素,改文字、颜色、样式;时间线上能放置、裁切、修剪每个片段

film.html 长什么样

官方的最小示例大致是这样(做了精简):

<meta name="viewport" content="width=1920, height=1080">
<section>
  <iframe src="title.html#t=0,4"></iframe>
</section>
<section>
  <video src="assets/footage.mp4#t=12,18" at="4" speed="0.5"
         style="left:160px; top:90px; width:1600px; height:700px"></video>
</section>
<section>
  <audio src="assets/music.mp3" volume="0.6"></audio>
</section>

规则很好懂:

元素 / 属性 含义
<section> 一条轨道,顺序就是时间线上的上下层,第一条在最上层
<iframe> / <video> / <img> / <audio> 一个片段:网页、视频、静帧或声音
#t=12,18 取源文件第 12–18 秒
at="4" 片段从时间线第 4 秒开始
left/top/width/height 画面里的位置和尺寸
overrides 你在编辑器里对网页元素做的修改,Agent 再编辑时会保留

每个镜头网页只要暴露一个 window.film 对象:frame(t) 必填,duration、ready(字体、图片、模型加载完成的 Promise)、width/height 可选。

唯一的硬规则:同一个 t 必须画出同一帧

不管之前画过什么,同一个 t 永远画出同一张图。原因是渲染器会乱序、并行地请求帧,还会在两帧之间插帧做动态模糊。遵守这条,同一个镜头在任何尺寸、任何机器上渲染出来都一样。

Python、Blender、视频生成模型产出的内容,以视频或图片素材的形式放进轨道。也就是说,Seedance、可灵、MiniMax H3 生成的镜头都能作为 <video> 片段剪进来,OpenFilm 负责包装、字幕、动效和合成。

力气花在“检查”上

README 里有句话很实在:OpenFilm 把功夫花在模型最容易出错的地方,也就是检查成片。look 命令会把检查表里的每一帧按两种不同的乱序各渲染一次,找出前后不一致的帧(说明违反了上面那条规则),同时报告页面错误、字体没加载、声音文件缺失,以及被画面边缘裁掉的文字。

Agent 看不到动画,最常见的翻车就是字体没加载、字幕出界、动画依赖上一帧导致跳帧,这几样它都能提前抓出来。

五个命令

Agent 自己会调这些命令,你也可以用 npx -y openfilm@latest <命令> 手动执行:

命令 作用
openfilm 打印给 Agent 看的完整手册
openfilm open [文件夹/url] 在 Studio 里打开一部片子:新建、本地已有、GitHub 上的都行
openfilm look [对象] [t 或 a-b] 检查整片、单页或某个素材
openfilm render [a-b] 输出 MP4;--4k 出 4K,--blur 加动态模糊,--alpha 出透明通道
openfilm get [对象] 从你接入的服务拉配音、音乐、音效、转写、图片、视频

Studio 能改什么、能导出什么

Studio 跑在你本机浏览器里:画面里的文字和图层,时间线上片段的位置、外观、音量、速度,还有字幕,都能改。改动保存进片子的文件;还能存命名版本随时回退(依赖 git)。

导出选项很全:视频、GIF、整段声音或分轨、字幕、静帧、幻灯片、透明视频,甚至可以把时间线导出给 Premiere Pro 和 DaVinci Resolve。也就是说,它可以当“AI 粗剪 + 专业软件精修”的前半段。

桌面版(macOS / Windows)就是 Studio 加一个侧边聊天栏,可以接你已经装好的 Claude Code、Codex,也可以填自己的 Key 用内置 Agent。桌面版自带 ffmpeg 和无头浏览器。

怎么上手

装成 Skill(已经在用 Claude Code / Codex / Cursor 的推荐这个):

npx skills add openfilm/openfilm

装完直接说需求,比如官方示例“给我的 CLI 做一支 20 秒的发布视频,带音乐”。Agent 不支持 skills 的话,就让它“运行 npx -y openfilm@latest,照打印的手册做”。

桌面应用:从官网或 GitHub Releases 下载,适合不想碰命令行的朋友。

从示例片开始(最快理解格式的办法):

npx -y openfilm@latest open https://github.com/openfilm/examples/tree/main/one-prompt

环境要求:Node 22.2+、ffmpeg,三大系统都行,版本保存要 git;首次运行会下载约 100 MB 的无头 Chromium。制作、编辑、渲染都不需要账号;配音、音乐、图片、视频生成要在 Settings → Providers 里填自己的 Key(ElevenLabs、OpenAI、Google、fal 等)。

给 AI 短剧做 30 秒预告:一套分工示例

下面是我们按 OpenFilm 的格式和命令设计的一套流程(命令和格式来自官方 README,提示词是示例),适合已经用 Seedance、可灵或 H3 生成好镜头的团队:

  1. 整理素材:新建文件夹,6–8 个镜头放进 assets/,按 shot01.mp4、shot02.mp4 命名,配乐放 assets/music.mp3;片名、主角名、上线日期写进 brief.md
  2. 给 Agent 下需求,比如:
用 assets 里的 8 个镜头做一支 30 秒竖屏预告(1080×1920)。
节奏:前 3 秒用 shot05 的冲突画面做钩子,配一行大字台词;
中段快切 shot01–shot04,每个镜头 1–2 秒,卡 music.mp3 的鼓点;
最后 5 秒做片名卡和「10 月 20 日 每日更新」字样,片名用金色描边书法字。
字幕统一放在画面下三分之一,字号不小于 64px。做完先跑 look 检查。
  1. 看结构:一般第一条轨道放片名卡、字幕这类网页镜头,第二条放生成的镜头,第三条放音乐
  2. 跑 look:重点看中文字体有没有加载、竖屏文字有没有被裁、有没有前后渲染不一致的帧(通常是动画用了 Date.now() 或累加状态),让 Agent 修到干净为止
  3. 在 Studio 里手改最后一成:台词上挪 40 像素、shot03 入点后挪 0.3 秒、片名卡的金色调暗一点。这些改动写进 overrides,之后让 Agent 再加镜头也不会覆盖。满意了存个版本,比如“v1-给制片看”
  4. 导出:openfilm render 出 MP4;要 15 秒版就先存档再让 Agent 改;后期同事用达芬奇调色的,直接导出时间线

常见坑

现象 可能原因 处理
渲染和预览不一样、偶尔跳帧 镜头依赖上一帧状态、用了随机数或系统时间 改成只由 t 计算画面,随机数用固定种子
中文字体显示成方块 字体没在 ready 里等加载完 字体放进项目文件夹,在 ready 里等它加载
竖屏字幕被裁 页面按横屏尺寸写的 需求里写清画幅,look 会报出来
第一次运行卡住 在下载约 100 MB 的 Chromium 等一会儿,或用自带浏览器的桌面版
“保存版本”不可用 没装 git 装 git 后重试

和同类怎么选

工具 定位 适合谁
OpenFilm 极简格式 + 可手改的编辑器,能导出 PR / 达芬奇时间线 想让 Agent 粗剪、自己精修的人
HyperFrames HTML→MP4 渲染框架 偏程序化、模板化批量出片
OpenMontage 完整制片流水线 + 大量技能文件 想让 Agent 从调研到成片全包
Remotion 系 React 组件写视频,生态成熟 有前端能力、要做数据驱动动画

几点建议:

  • 做 AI 短剧、漫剧的团队,可以把它当“后期包装台”:镜头用视频模型生成,片头、字幕、花字、转场、配乐交给 Agent 在 OpenFilm 里做
  • 做知识类、产品类视频的,动画都是网页画的,可控、可复现,比反复抽卡省钱
  • 项目很新(0.1.x),接口可能还会变,重要项目建议固定版本号,别总用 @latest

版权提醒

格式、CLI、Studio 和桌面应用都是 MIT 许可,OpenFilm 名称和 logo 是商标(见仓库 TRADEMARK.md)。生成类素材的版权和费用看你接的服务商,比如 ElevenLabs 免费套餐生成的内容通常不能商用;实拍素材、音乐、字体的授权要自己负责。

有人已经拿它给 AI 短剧做过包装或预告了吗?想知道中文字体和竖屏字幕这块实际踩了哪些坑。

官网和桌面版:https://openfilm.dev
示例片仓库:GitHub - openfilm/examples: Films made with OpenFilm, each a folder you can open, change and render · GitHub