FableCut: 為 AI Agent 設計的零依賴瀏覽器影片編輯器

FableCut: 為 AI Agent 設計的零依賴瀏覽器影片編輯器

FableCut 透過將專案檔視為主要介面,實現 AI 驅動的影片編輯

FableCut 是一款 Premiere 風格的非線性影片編輯器,完全在瀏覽器中運行,且不具備任何 npm 依賴。與傳統將編輯邏輯隱藏在 API 後面的 AI 影片工具不同,FableCut 將其整個時間軸——包括媒體、片段、軌道、效果、關鍵影格與轉場——全部暴露為單一的 project.json 文件。這種架構允許任何能夠編寫 JSON 的程序來編輯影片,同時瀏覽器 UI 會透過伺服器傳送事件 (SSE) 在約 150ms 內熱重載更改。

AI Agent 整合與控制介面

AI Agent 可以遵循專案中 CLAUDE.md 文件提供的架構與食譜,進行端到端的 FableCut 操作。系統提供了三種主要方式讓 Agent 與編輯器互動:

Model Context Protocol (MCP)

對於 Claude Code 或 Claude Desktop 的使用者,FableCut 包含一個零依賴的 MCP 伺服器。此介面專為 Token 效率而設計,允許 Agent 使用小型操作 (fablecut_patch_project) 來修補時間軸,而不是重寫整個文件。Agent 還可以根據需求獲取專案或特定文件部分的精簡摘要。

直接檔案操作

Agent 可以讀取 project.json、修改內容並增加 revision 計數器。由於 UI 會即時重載,這些更改會立即顯示在編輯器中。

REST API

FableCut 提供 REST API 進行程式化控制,其端點包括專案管理 (GET/PUT /api/project)、媒體上傳 (POST /api/upload) 以及資產庫 (GET /api/library)。

核心編輯與動態功能

FableCut 為手動與 Agent 驅動的編輯提供了專業的功能集:

  • 時間軸管理: 支援 4 個影片軌道與 3 個音訊軌道,具備拖曳、修剪、分割與吸附功能。它包含用於多選的橡皮筋選取框,以及用於節奏編輯的節拍/提示標記。
  • 視覺效果: 包含 12 種濾鏡預設值、用於全域調色的調整層,以及對亮度、對比度、飽和度、色調、色溫、色相、模糊與底片顆粒的完整控制。
  • 進階合成: 具備具備溢色抑制功能的色鍵 (綠幕) 功能,以及透過 MediaPipe 實現的 AI 驅動背景移除。
  • 動態與轉場: 支援 25 種屬性的關鍵影格動畫(具備緩動效果),以及可同時對影片與音訊進行時間重映射的變速功能,以及 17 種不同的轉場效果(包括故障效果與甩鏡效果)。
  • 字體排版: 提供動態字幕(打字機效果、卡拉 OK 等)並具備霓虹發光效果,並可透過名稱自動載入任何 Google Font。
  • SVG 疊加: 支援 CSS 動態 SVG 的影格精確渲染,允許 Agent 編寫如底端資訊條或紙屑效果等向量疊加層,並以純 .svg 檔案形式呈現。

參考影片分析與重製

FableCut 包含一個專門的工具 (analyze.js),可以從參考影片中提取「編輯藍圖」。此藍圖包含鏡頭邊界、音樂節拍、BPM、音量曲線與每鏡頭的能量值。AI Agent 可以使用 fablecut_analyze_reference MCP 工具來分析參考影片,然後使用使用者自己的素材來重建相同的結構。

技術架構與並行編輯

FableCut 是以單頁應用程式構建的,並具有 Node.js 後端 (server.js)。它使用基於 Chromium 的瀏覽器進行渲染,並可選擇使用 ffmpeg 進行快速、影格精確的 MP4 匯出。

為了防止在並行編輯期間發生數據丟失,FableCut 實作了 revision 計數器。如果人類編輯者在 UI 中進行更改時,AI Agent 正在修改專案,系統會偵測到衝突。REST API 會回傳 409 錯誤,並且 UI 會透過彈出通知告知使用者,而不是靜默地覆寫更改。

社群洞察

Hacker News 的使用者強調了使用 JSON 與 SSE 進行 Agent 互動,比傳統 API 更具效率。一些貢獻者建議針對未來版本進行進一步改進,例如:

"I was hoping to see some very clever use of vision and maybe waveform analysis to give the model 'eyes and ears' to edit audio and video."

其他使用者指出,基於 JSON 的方法為模組化模板與 Agent 驅動的示範影片旁白提供了機會。

Sources