
今天拆的是 OpenEdit:VEED 官方开源的一套 agent 驱动剪辑命令行,没有界面也没有时间线,编码 Agent 自己写一张 HTML 页、用无头 Chrome 逐帧渲成 MP4;文章给全它在链条上的位置、三步上手路径、十二处已知阻塞,以及免费软件背后那三笔分别落在 VEED 学分和 fal 账单上的钱。
@veedstudio/openedit-cli 一共发过 8 个版本,最新 0.3.0 在 2026-09-29 17:00(UTC+08)上传,4 2026-09-27 到 10-03 这一周被下载 824 次。5
render 渲染;OpenEdit 补上的是一个裸命令行给不了的三样东西——一次登录就能用到的 VEED 托管服务、把时间量出来的剪辑与音频工具、一个只重渲你改过那一段的渲染器。7 它自己的定位也很清楚:编排是一份 agent 技能,从 Claude Code(或任何读 .claude/skills/ 的壳)里跑起来,没有 node run.js 这种入口。8weave-viewer-cli 的 v0.13.0,构件仍只有 macOS arm64 与 Windows x64 两个平台。11npx skills add veedstudio/open-edit --skill open-edit,然后打开 claude、codex 或 gemini,说一句「给我这段视频加上字幕」。1 第一次运行会自己把工作区搭好:把当前目录变成一个普通的 npm 项目(没有 package.json 就建一个最小的,把 CLI 精确锁成一个开发依赖,有 git 就 git init,把 runs/ 加进忽略列表),往三个 Agent 的设置里各注册一个会话启动钩子。8 钩子装的是一条 preflight 命令,Agent 每开一个新会话就会先跑一遍,报告工作区到底准备好没有——技能里特别提醒,要看最后那行 preflight: 输出,不能看退出码。7runs/<key>/ 下面,技能里把这句写成纪律:「代码就是那条剪辑」——以后想改一个镜头、或者拿这条片子去套另一支视频,靠的就是这个文件夹,所以它需要的东西一件都不能放在外面。7runs/<key>/transcript.json,而且都要求带逐词时间戳——技能里把理由写了出来,没有逐词时间的转写字幕会漂,这种稿子会被拒收。12performance.now、Date.now、requestAnimationFrame、定时器和随机数都被换成一个虚拟时钟,每个工作线程把每一帧推到它自己的序号上,于是同一份页面在几台机器、几个并发下渲出来的帧完全一样;输出切成小段缓存在 <out>.render/ 里,改动一处只用 --from/--to 重渲压到的那几段,其余帧按流拷贝接回去。13
.claude/skills/open-edit/SKILL.md 的页面截图,2026-10-05 采集:正文第一段写着「成片由你自己以 HTML 页面的形式写出来,再用 render 渲染」,下面那张表把转写、剪接、去背、联音、任意 fal 模型、字体、素材图、混音一共十几项需求各自对应到一条命令。7--fal 那条路完全不需要 VEED 登录。7stills 去 Wikimedia Commons 取有授权的图片,并把每个文件的许可条款记在旁边;fonts 把 Google Fonts 下成本地的 woff2 文件。13 没有素材也能开工:技能里列了四条路——素材在路上就等、要口播数字人就交给 Fabric、要别的模型出的片段就走 fal、什么都没有就用静图加图形加音频从零搭一条。7
docs/examples/news-comic.webp(720×1280):README 把这一条和另外两条并列,那组示例的提示词是在 fal 上用 Seedance 2.0 生成三条 hooks、再做三套动态图形处理。画面是一条竖屏新闻播报,左上角一个插播角标,底部一条字幕条,人物胸前爆出一个漫画式气泡。1| 你提供 | 它交回 |
|---|---|
| 一台 macOS、Windows 或 Linux 机器,Node 20.18.1 或更新,装好 ffmpeg 与 ffprobe8 | 一个被搭好的工作区:私有 package.json、精确锁定的 CLI 开发依赖、git init(有 git 时)、runs/ 忽略项,以及三个 Agent 各自的一条会话钩子8 |
| 三选一的 Agent 壳:Claude Code、Codex 或 Gemini CLI1 | 十几条命令:转写、剪接、拼接、去背、联音、任意 fal 模型、字体、素材图、混音、渲染、与 VEED 编辑器往返13 |
| 一次转写来源的选择(VEED 托管,或本地 WhisperX 的两个档,或你自己的服务),它会记住12 | 一份带逐词时间戳的 transcript.json,以及按这份时间轴排布的字幕图层12 |
| 素材,或者一句「什么都没有」的说明7 | runs/<key>/ 一个文件夹:页面源码、素材、渲染片段、混好的音轨、成片;技能把这里叫「可以被拆开重做的剪辑」7 |
想让钱花得更少时,一个自己的 fal key(FAL_KEY,或指向 key 文件的 OPEN_EDIT_FAL_KEY_FILE)13 | 任意 fal 模型的调用结果,附一行账单:key 能读 fal 计费时给实际扣费,读不到时在 fal 标价旁写 cost: unknown13 |
npx skills add veedstudio/open-edit --skill open-edit--dry 看一遍它要做什么,再真跑一次:npx @veedstudio/openedit-cli init --dry --workspace "$WORKSPACE"
npx @veedstudio/openedit-cli init --workspace "$WORKSPACE"--auto-approve 会连机器级的安装也一起做,技能里写明「必须先把每一项动作摊给用户看过、拿到明确的同意,才允许用它」。判断成没成看最后那行 preflight:,走到 ready — OPEN_EDIT_ROOT=… 就算好了。7Make a 20-second title sequence for my launch, no footage, in my brand colours
Add subtitles to my video clip.mp4--stills 只出几个时间点的静帧,别直接渲染整条。13veed-github-token-helper[bot] 署名,格式统一为「Mirror from veed-llm-editor (#N)」;3 一位外部贡献者 2026-08-08 提的 PR #11 在 2026-08-28 被关闭,状态不是 merged。14 你能做的:把它当成厂商发布的快照,改动自己 fork 一份维护,别指望社区反馈闭环。--verify、probe-qa 全部报干净——PR #11 里写明了原因:库里的配方只声明拉丁字体栈加拉丁系统字体尾巴,引擎只解析它取到的 webfont,没有逐字形的系统字体回退,所以中日韩文稿会画成 tofu,而 tofu 有墨迹也有对比度,检查器看不出来。触发条件是转写里出现中日韩文字。现状是这条修复没被合并进公开仓库:在 main 分支和 0.3.0 的发布包里都搜不到 PR #11 提到的那道字体覆盖处理,也搜不到 tofu 字样。14 你能做的:让 Agent 在页面里显式加载一套覆盖中文的字体(项目自带的 fonts 命令能把 Google Fonts 下到本地),成片出来后自己看一遍第一屏。openedit init --dry --workspace .,直接停在 unsupported-platform 上,提示渲染只支持 macOS arm64 或 Windows x64。触发条件是用 0.2.0 或更早的版本。现状是这条报错来自 2026-09-28 提交的 #26;维护者第二天回复:0.3.0 起渲染换成无头 Chrome,平台检查已经删掉,Linux x64 与 arm64 都能拿到 Chrome 构建;Chrome 起不来通常是缺系统库,npx playwright-core install-deps chromium-headless-shell 能补;他同时写明 Linux 还没进 CI,出问题请在 #26 里报发行版和具体的卡点。10 你能做的:升到 0.3.0 再试,缺库就按上面那条补;另外仓库里还挂着一份开放 PR #20,用 Steam Proton 把旧的 Windows 引擎拉起来在 Linux 上渲,作者自己标了实验性质,并注明嵌入式 H.264 视频解码在他测的环境里仍然失败。15generate 或 generate-set 做口播数字人。现状是 FABRIC.md 写明生成扣的是某个工作区的 AI Playground 学分,先合成语音、再交给 Fabric One Lipsync,两笔落在同一个额度上,报给你的数是两者之和;同一份文件还写明「VEED 不报单笔价格,也不报单笔扣费,所以没有东西可以核对」——那个数是项目自己的估算。--yes 会把脚本、人物与声音、报价、工作区绑在一起一小时,其中任何一项对不上它就拒绝执行而不是照扣;中断过的任务已经付过钱,要用 generate --resume 收回来,不能重跑 --yes。17 还有一条:账号上有多个工作区时,它不会替你挑,只会把每个工作区的名字和余额列出来让你选,而且「记住的选择不算数」,花钱那一遍仍要显式带上 --workspace。17 你能做的:先用 sample-presenter 挑人物和声音(它标着花 0 学分),把脚本压短再批,批之前把工作区和余额一起过目。cost: unknown。触发条件是用 fal run、lipsync、background-removal --fal 或 --fast。现状是这些调用全部记在你自己的 fal 账号上,不经过 VEED 工作区;fal 按输出的帧数或秒数计价,任务结束前拿不到总数;key 读不到 fal 的计费时,它只能在 fal 的标价旁边写一句 cost: unknown。同一份材料里也写了缓和的一面:同样的输入重跑会续用已经付过的那笔任务,不会重复买。13 你能做的:先按输出长度自己估一遍,再决定要不要批量。
veed/video-background-removal/fast 是每 30 帧 0.012 美元(开边缘细化)/ 0.008 美元(不开);19 2026-10-05 打开 fal 的模型页,写的是每 30 帧 0.015 美元。20 同一页上完整版的标价是每 30 帧 0.0225 美元(开细化)/ 0.015 美元(不开),这两个数与代码里一致,对不上的只有 fast 那一个。你能做的:估算以 fal 页面为准,最后以 fal 账单为准。render 的产物。现状是技能里写明 render 的输出是无声的,声音要用 mux-audio 叠上去,而多条音轨要先交给 mix-audio 合成一条——旁白压住背景音乐,输出响度统一到 −14 LUFS / −1 dBTP。7 你能做的:把配音和混音排进流程,别等渲完才发现。#stage 就按 1920×1080 拍。 症状是成片的画幅和你想要的形状不一样。触发条件是页面里没有 #stage 或 [data-stage] 元素。现状是渲染器默认拍这个元素本身的大小,取不到才回落到 1920×1080;带素材时画布与帧率改用素材自己的,frames 会把两个数打出来,喂给 --fps 的要写成 30000/1001 这样的分数,是它旁边那个小数不行。7 你能做的:在页面里显式给出 #stage。__seek 就不会动。 症状是某段动画在浏览器预览里能动,渲染出来是静止的。触发条件是你用了渲染器不认识的那种动画方式。现状是渲染器接管了 performance.now、Date.now、requestAnimationFrame、定时器和随机数,也会把 CSS 与 Web Animations、GSAP 的全局时间线设到当前帧,除此之外随时间变化的东西必须收进 window.__seek(t)(它可以是异步的)。7 你可以做的:把自绘动画都收进 __seek,再用 --stills 抽几个时间点确认它真的在动。veed-pull 之后发现有些改动没有跟回来。触发条件是你在 VEED 编辑器里用了字幕轨、变速、裁剪、滤镜这类元素。现状是 VEED.md 写明这些是「计划带不动」的东西,命令会把它们逐条打印出来告诉你;另外每个镜头文件都要能下载成功,有一个下不来整条命令就失败,需要你在 VEED 里重新发一次。21 你能做的:改动尽量在本地页面上做,再推给 VEED;要用 VEED 的编辑器改,就先把会丢的那几类避开。veed/lipsync/v2 是每秒输出视频 0.07 美元;24 veed/video-background-removal 是每 30 帧 0.0225 美元(开细化)/ 0.015 美元(不开)。20
| 方案 | 你给它什么 | 它给你什么 | 它在这一层 | 许可与公开体量 |
|---|---|---|---|---|
| OpenEdit | 一个编码 Agent、一段素材或一句「没素材」,加一次转写来源的选择 | 一张 HTML 页渲成的 mp4,加一个能拆开重做的工程目录 | 命令行工具箱加技能,自带渲染器 | Apache-2.0,1,503 star2 |
| HyperFrames(第 14 期) | 一份 HTML / CSS 工程 | 逐帧拍出来的 mp4 | 渲染底座 | Apache-2.0,56,746 star26 |
| hypit(第 15 期) | 一条参考视频 | 可重跑的 SVML 作品源码 | 工作流描述语言 | 改过的 Apache-2.0,19,202 star27 |
| OpenChatCut(第 16 期) | 素材与一句自然语言 | 可撤销的真时间线工程 | 编辑器加 MCP | AGPL-3.0,2,110 star28 |
| Toonflow(第 17 期) | 一台机器、四类模型 Key、逐段授权 | 一张可继续编辑的无限画布工程 | 编排与工作台 | MIT,16,454 star29 |
| ViMax(第 18 期) | 三类模型接口、一个工程目录、按天排的时间 | 从想法或剧本推到多镜头成片的一条产线 | 自带 Agent runtime 的多 Agent 编排 | MIT,12,541 star30 |
| OpenCreator(第 19 期) | macOS 或 Windows 机器、一个可用的 Codex 登录态 | 十项创作工具加一个 Agent 会话 | Codex 之上的宿主外壳 | Apache-2.0,12,593 star31 |
| ArcReel(第 20 期) | 一台能跑 Docker 的机器、两套模型凭据、一段原文 | 资产、分集、分镜、视频,加一份剪映草稿 | 自部署的产线工作台 | AGPL-3.0 附附加条款,5,295 star32 |
| video-use(第 2 期) | 一个装满素材的文件夹 | 读着词级转写稿剪出来的 final.mp4 | 编码 Agent 的剪辑技能包 | MIT,28,045 star33 |
| Diffusion Studio(第 13 期) | 一份 JSX 时间线 | 同一份文件上的协同编辑 | 编辑器 | MPL-2.0,3,214 star34 |
| Remotion | 一份 React 工程 | 程序化生成的视频 | 渲染底座 | 自订许可(GitHub 识别为 NOASSERTION),61,857 star35 |
raw.githubusercontent.com
github.com
github.com
npmjs.com
api.npmjs.org
raw.githubusercontent.com
raw.githubusercontent.com
raw.githubusercontent.com
github.com
github.com
raw.githubusercontent.com
raw.githubusercontent.com
github.com
github.com
github.com
raw.githubusercontent.com
github.com
raw.githubusercontent.com
raw.githubusercontent.com
fal.ai
veed.io
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.