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