
今天拆的是 FableCut:把一整条时间线写成一份 JSON 文件、让编码 Agent 直接改、你在浏览器里实时看着它重排的剪辑器。文章给全它在链条上的位置、三条上手入口、五处已知阻塞,以及今天该不该动手的判断。
project.json 的文件里:Agent 改这个文件,你开着的那扇编辑器窗口就跟着刷新,项目自己报的时间是约 150 毫秒2。project.json 里装着一次剪辑的全部内容:画布尺寸与帧率、轨道清单、每条素材、每个片段的入点与时长、每个属性的关键帧曲线、片段头尾的转场、标题文字与它的动画、滤镜与调色、绿幕抠像与背景移除、导出用的裁剪框5。项目自己把这个文件称作接口,官网首页的说法是「凡能写 JSON 的东西都能剪视频」2。fablecut_status(顺手把编辑器进程拉起来)、fablecut_docs、fablecut_get_project、fablecut_set_project、fablecut_patch_project、fablecut_import_media、fablecut_analyze_reference、fablecut_encode_profiles6。fablecut_get_project 传 compact:true 时每条片段压成一行,约为完整文档的十分之一;fablecut_patch_project 只发要变的那几笔,服务端自己重读一遍最新文档再合并,所以你刚在界面上拨过的滑块不会被它盖掉5。drawFrame(t) 这个纯函数,给一个绝对时间就把整帧画出来,导出就是把同一个函数放进循环里跑7。
docs/screenshot.png,取自主分支,2026 年 9 月 19 日。中栏是节目监视器,右侧是检视面板,时间线上 V1 放背景片、V2 与 V3 各放一条文字、V4 放三个叠加 SVG;A1 与 A2 是导入视频后自动拆出来的左右声道链接音轨,这是 1.7.0 加入的行为。右上角那个 Export 按钮,就是 Agent 按不动的那一步。1./media/ 的素材。ffmpeg 可选,装在 PATH 上更好——快导出和上传时的重封装都靠它28。它没有 npm 依赖,装完只有一条 node server.js,跑在 http://localhost:7777;1.3.1 版之后服务端只绑 127.0.0.1,要让局域网里别的机器访问得自己设环境变量1。library/fonts/LICENSES.md)10。音效目录 library/sfx/ 里只有一份说明文件,项目写明音效站的素材通常不允许重新分发到公开仓库,所以留给你自己填;而 CLAUDE.md 的配方一章里已经写着「把 library/sfx 里的 impact-hit.mp3 放到 A2 轨」这样的做法,Agent 照着走会扑空510。./media/,合成一份 edit blueprint5。这一步要 ffmpeg 在 PATH 上。它交回的是结构,配色、字幕、音效这些风格部分仍然归你。git clone https://github.com/ronak-create/FableCut.git,cd FableCut,node server.js,浏览器打开 http://localhost:77778。/plugin marketplace add ronak-create/FableCut,再 /plugin install fablecut@fablecut。插件会替你注册 MCP 服务端,并装上 edit-video 和 remake-reel 两个技能;它把时间线和素材放在插件自己的数据目录里,升级插件不会碰到你的片子211。claude mcp add -s user fablecut -- node "<路径>/mcp-server.js",服务端只讲 stdio,不认 Claude 专属的环境变量5。fablecut_status:它会把编辑器拉起来,报出界面地址、当前项目摘要和 media/ 里有什么5。素材进门有三条路——拖进窗口、点界面上的 + URL(只收 https,会挡掉内网地址与远程 SVG),或者让 Agent 调 fablecut_import_media5。
docs/demo/static-shim.js 把编辑器原本要发给服务端的四个请求改成从内存里应答,所以它演示的是真的编辑器界面,导出和真实素材导入都不在那个页面里。想在本地跑完整功能,还是得 clone 下来开服务端。212
media/ 里的源文件用 ffmpeg 直接渲染一个文件」5。三套导出引擎都长在浏览器的合成器上:快导出由浏览器逐帧渲染、把 JPEG 和一段离线混音推给服务端的 ffmpeg 进程编码;WebCodecs 导出由浏览器硬件编出 H.264 码流、服务端只做复制与封装;两套都跑不了时退回 MediaRecorder 实时录屏5。node:test 测试,在 CHANGELOG 里都还挂在 [Unreleased] 下面15。package.json 和仓库里的 server.json 都写 1.7.0,MCP 官方注册表上那一条还停在 1.6.01617。npm 上没有这个包,registry.npmjs.org/fablecut 返回 404。
[Unreleased] 那一节当成「我手上还没有」的清单。这段落差来自 8 月底之后主分支上一直在动,属于版本节奏的问题。GET /api/frame?src=…&t=… 端点,用 ffmpeg 抽一帧返回 JPEG,再用一个 MCP 工具包起来,让多模态 Agent 在定入点之前先看画面;issue 里估这一条大约是 30 行服务端代码加一个工具,写下的完成标准是「Agent 能对任意已登记素材的任意时间点请求一帧,并拿到一张可以拿来推理的图」18。已经有的那一半是耳朵:参考片分析能给出镜头边界、节拍、能量曲线和 drop 的位置5。[Unreleased] 里已经记下这条修复:导出改成等 requestVideoFrameCallback 的 mediaTime、用 currentTime 寻址、卡顿时暂停,并说明早先那条 JPEG 管道本身就是逐帧对应的15。https:// 直链,预览看着正常,导出时画布被污染,快导出和 WebCodecs 都编不出 JPEG。media.src,或者用别的方式让素材留在另一个源上。media.src 只能是 /media/… 这样的同源路径,直链会让画布过不了 CORS 检查,两个导出引擎都编不出帧;远端地址要走 POST /api/import-url 先下载到本地,那个端点只收 https,并且挡掉 localhost、私有网段、链路本地和 CGNAT 地址,连跳转过去的情况也挡,远程 SVG 同样被拒5。同一个端点旁边还有一处坑:用外部工具直接拷进 ./media/ 的 mp4 跳过了 +faststart 重封装,播放会卡住,得自己先跑一遍 ffmpeg -c copy -movflags +faststart5。fablecut_import_media 或界面上的 + URL 进来;自己拷进去的 mp4 先重封装一次。library/fonts/LICENSES.md10。音效是唯一要你自备的一类素材,理由写在 library/sfx/README.md:音效站通常不允许把文件重新分发到公开仓库10。127.0.0.1,素材不进任何云端,参考片分析用的 ffmpeg 也在你这台机器上跑。会另外产生费用的,是你自己接上去的模型服务8。| 方案 | 你给它什么 | 它给你什么 | 它在这一层 | 许可与公开体量 |
|---|---|---|---|---|
| FableCut(本期) | Node 18 以上、一个 Chromium 浏览器、放进 ./media/ 的素材 | 浏览器里的编辑器加一条 JSON 时间线,MCP/REST/文件三种改法;导出要你自己按键 | 剪辑器本体:项目文件即接口,渲染器就是浏览器里的合成器 | MIT;675 star、71 fork、260 次提交1 |
| kinocut(第 4 期) | 一个本地媒体文件,加 PATH 上的 FFmpeg | 有类型的工具调用和一张回执:成片、每步的哈希、质量分、待人工确认项 | Agent 与 FFmpeg 之间的执行与验证层 | Apache-2.0;157 star、39 fork21 |
| video-use(第 3 期) | 一个装原始素材的文件夹,加一把 ElevenLabs key | 按词边界剪出的成片,连转写稿、剪辑决定和字幕一起交回 | 方法论与资产层里的剪辑手艺 | MIT;25,096 star、3,051 fork22 |
| video-shotcraft(第 1 期) | 一句需求,加你产品的截图 | 一支还能继续改的 Remotion 宣传片工程 | 站在 Remotion 之上的镜头与动效资产库 | Apache-2.0;8,948 star、802 fork23 |
| OpenMontage(第 2 期) | 一句需求,加你的素材 | 走完工序的成片,带审批门、决策日志和预算上限 | 流程与方法层,安排哪个阶段谁做什么 | AGPL-3.0;59,936 star、7,570 fork24 |
| HyperFrames | 用 HTML、CSS 和 JavaScript 写的合成 | 确定性渲染出的 MP4 | 渲染底座;kinocut 可以把 HyperFrames 当可选后端调起来 | Apache-2.0;51,368 star、4,678 fork25 |
| hypit | 一支参考视频,或者一句描述 | 一套以词为锚点的工作流,换宿主、换语言、换比例都能重跑 | 视频工作流的描述语言 | 自订许可;10,050 star、1,235 fork26 |
node server.js,打开 http://localhost:7777,把三五个素材拖进去,再让 Agent 调一次 fablecut_status。走通了之后,先拿前面那条参考片分析练手——给它一段你喜欢的成片,看它切出来的镜头边界和节拍跟你眼睛看到的是不是一回事,这一步不用写一行代码。127.0.0.1。你要的是一套能嵌进自己服务的渲染后端,那往下走一层,kinocut 那一类的工具接口更合适;FableCut 的价值长在浏览器这个界面上,把界面拿掉,它剩下的东西和你自己写一段 ffmpeg 脚本的距离就会缩短。github.com
ronak-create.github.io
news.ycombinator.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
registry.modelcontextprotocol.io
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.