プログラミング
Show HN: FableCut – AIエージェントが操作できるブラウザベースのビデオエディタ(依存関係ゼロ)
Show HN: FableCut – A browser video editor AI agents can drive (zero deps) (github.com)
要約
FableCutは、ブラウザ内で動作するノンリニアビデオエディタで、タイムライン全体をJSONドキュメントとして扱います。UIからの手動編集に加え、AIエージェント(Claude Codeなど)がJSONを操作してビデオ編集を行うことが可能です。依存関係がゼロで、単一のNode.jsサーバーで動作し、リアルタイムでのUI更新や、人間とAIが同時に編集できる点が特徴です。
全文翻訳
FableCut
AIエージェントが操作できるブラウザベースのビデオエディタ。
FableCutは、Premiereスタイルのノンリニアビデオエディタで、完全にブラウザ内で動作します。そして、そのタイムライン全体を単一のJSONドキュメントとして公開します。UIから手動で編集することも、AIエージェント(Claude Code、Claude Desktop、またはMCP/RESTを話せるものなら何でも)にビデオをカットさせることもできます。編集中はタイムラインがリアルタイムで更新されます。npm依存関係はゼロです。Nodeサーバーはserver.jsが1つだけです。それだけです。
なぜ興味深いのか
ほとんどの「AIビデオ」ツールは、APIの背後に編集を隠しています。FableCutはそれを逆転させました。プロジェクトファイルがインターフェースなのです。project.jsonはメディア、クリップ、トラック、エフェクト、キーフレーム、トランジションを記述します。JSONを書き込めるあらゆるプロセスがビデオを編集でき、オープンなブラウザUIはサーバーセントイベント(SSE)経由で約150ミリ秒でホットリロードされます。人間とエージェントが同時に同じタイムラインで作業できます。
機能
編集
4つのビデオトラック + 3つのオーディオトラック、ドラッグ/トリム/スプリット/スナップ、アンドゥ/リドゥ
タイムラインの複数選択 — ラバーバンドマーキー(空のトラック領域でドラッグ)、Ctrl/Cmd/Shift+クリックでクリップの追加/削除、Ctrl+Aで全選択、Escで選択解除。選択したクリップ全体をドラッグして移動。Deleteで選択したすべてを削除。Sで選択したすべてをプレイヘッドで分割。インスペクタには「Nクリップ選択中」というバナーが表示されます。
ビート&キューマーカー(再生中にビートに合わせてMキーを押す)とエッジスナップ
クリップ上のデコード済みオーディオ波形
キャンバスのアスペクト比プリセット(16:9、9:16リール、4:5、1:1)+セーフエリアガイド
ルック
12種類のワンクリックフィルタープリセット(シネマティック、ティールオレンジ、ノワール、ヴィンテージ、サイバーパンク…)
調整レイヤー — 1つのクリップがその下のすべてをグレーディングします。Premiereスタイル。
フルグレーディングコントロール:明るさ/コントラスト/彩度/色相、色温度&色合い、ぼかし、グレースケール/セピア/反転、ビネット、アニメーションフィルムグレイン
ブレンドモード(スクリーン、乗算、オーバーレイ…)、フィットモード(コンテイン/カバー/ストレッチ)、エッジごとのクロッピング、角丸、左右反転
クロマキー(グリーンバック)— 許容度/ソフトネス + スピル抑制
AI背景除去(人物切り抜き、ブラウザ内、MediaPipe経由)
モーション
約25プロパティのアニメーションキーフレームとイージング
スピードランプ — キーフレームでスピードを設定すると、エンジンがビデオとエクスポートオーディオミックスをタイムマッピングします(高速からスローモーションへのリール移動)。
カメラシェイクとRGBスプリット/色収差(両方ともアニメーション可能)
17種類のトランジション:フェード、スライド、ワイプ(4方向)、ズーム、アイリス、スピン、ブラー、ウィップパン、グリッチ、ポップ
テキスト
キネティックキャプション:タイプライター、ワードポップ、ワードスライド、カラオケ、レターポップ、ウェーブ、バウンス、シェイク
ネオングロー(TikTokキャプション風)
フォントエディタ:システムフォント、ドロップインカスタムフォント(library/fonts/)、および名前によるGoogleフォント(自動ロード)
グラデーション塗りつぶし、アウトライン、背景ピル、文字間隔、行間、太字、イタリック、大文字、配置、ソフトシャドウ
アニメーションSVGクリップ
ファーストクラスのSVGクリップタイプ:CSS @keyframesでアニメーションするSVGは、プレビューとエクスポートでフレーム精度でレンダリングされます(コンポジターはいつでもアニメーションを一時停止します)。エージェントは、プレーンな.svgファイルとして、独自のベクターオーバーレイ(下部サード、紙吹雪、スパークル)を作成できます。スターターが含まれています。
リファレンスビデオのリメイク
リファレンス編集(気に入ったリール)を与えると、編集ブループリントが返されます。ショット境界、音楽ビート+BPM、ラウドネスカーブ、ショットごとのエネルギー、ドロップ — さらにリファレンスの音楽トラックがメディアに抽出され、同じアイデアを自分の映像で再構築する準備が整います。追加の依存関係はゼロです(ffmpegがデコードを担当。オンセット/テンポ検出はプレーンなNode)。node analyze.js ref.mp4、POST /api/analyze、またはfablecut_analyze_reference MCPツールを使用します。
アセットライブラリ
library/フォルダはUIのタブとして表示されます:要素(オーバーレイアート)、サウンドエフェクト、SVG — ファイルをドロップすると、開いているエディタがリアルタイムでリロードされます。
エクスポート
高速エクスポート:ブラウザがすべてのフレームをレンダリングし、オフラインでオーディオミックスを作成。ffmpegがフレーム精度のCRF-18 MP4をエンコードします(タブを切り替えてもレンダリングを続行)。
ffmpegが利用できない場合のリアルタイムMediaRecorderフォールバック。
クイックスタート
git clone https://github.com/ronak-create/FableCut.git
cd FableCut
node server.js
# → http://localhost:7777
要件:Node 18+ および Chromiumベースのブラウザ。PATHにffmpegがあることがオプションですが推奨されます(高速エクスポート+アップロードリミックス)。AI背景除去は初回使用時にCDNからモデルを取得します。メディアをウィンドウ(または./media/)にドラッグし、クリップをタイムラインにドラッグし、編集し、エクスポートします。
AIエージェントによる操作
エージェントが必要とするすべてはCLAUDE.mdにあります — 完全なスキーマ、セマンティクス、レシピです。能力のあるモデルをそのファイルに向け、エンドツーエンドでエディタを操作できます。
3つの同等のコントロールサーフェス:
MCP(Claude Code / Claude Desktopに最適)— バンドルされたゼロ依存関係のMCPサーバーを一度登録します:claude mcp add -s user fablecut -- node "<path-to>/fablecut/mcp-server.js"
ツール:fablecut_status(エディタを自動起動)、fablecut_docs、fablecut_get_project、fablecut_set_project、fablecut_patch_project、fablecut_import_media、fablecut_analyze_reference。
サーフェスは意図的にトークン効率が高いです:エージェントはドキュメント全体を往復させるのではなく、小さな操作(fablecut_patch_project)でタイムラインをパッチします。コンパクトな1行ごとのクリップ概要(fablecut_get_project {compact:true})を読み取り、必要なマニュアルセクションのみを取得します(fablecut_docs {section:"props"})。
ファイル — project.jsonを読み取り、変更し、リビジョンをインクリメントし、書き込みます。UIはリアルタイムでリロードされます。
REST — GET/PUT /api/project、POST /api/upload、GET /api/library、SSEは/api/eventsで。
例:Claude Codeに「これらの6つのクリップをビートマーカーに合わせてカットし、ティールオレンジのグレーディングを追加し、上にワードポップキャプションを配置し、すべてのカットにウーシュを追加してください」と依頼し、タイムラインが再構築されるのを見てください。または、リファレンスを渡して「このリールが好きです — 分析して、私のクリップで同じ音楽を使ってリメイクしてください」と依頼します。エージェントはfablecut_analyze_referenceを呼び出し、ブループリント(カット、ビート、BPM、エネルギー、ドロップ、抽出された音楽)を取得し、ショットごとにあなたの映像で構造を再構築します。
競合を安全に処理する同時編集:UI、MCPツール、および直接のproject.json書き込みはすべてリビジョンカウンターに同意します。エージェントがタスクを実行中にUIでクリップを編集した場合、エージェントの次の書き込みは、あなたの変更をサイレントに上書きするのではなく、拒否されます(REST APIからの409またはfablecut_set_projectからの競合エラー)。同様に、UIはエージェントの書き込みがまだ保存されていないローカルの微調整を上回ったことを検出し、サイレントにドロップするのではなく、トーストで通知します。
プロジェクトレイアウト
server.js ゼロ依存関係HTTPサーバー:静的ホスティング、REST API、SSE、ffmpegエクスポートパイプライン
app.js エディタ:タイムラインUI、コンポジター、キーフレーム、テキストエンジン、SVGラスタライザ、クロマキー、エクスポーター
index.html シングルページUI
style.css ダークエディタテーマ
mcp-server.js stdio MCPサーバー、エディタをAIエージェントに公開
analyze.js リファレンスビデオアナライザ:ショット、ビート/BPM、エネルギー、ドロップ、音楽抽出(モジュール+CLI)
CLAUDE.md エージェントマニュアル(スキーマ+レシピ)— fablecut_docsによっても提供されます。
project.json あなたのタイムライン(初回実行時に作成。gitignore済み)
media/ プロジェクト映像(gitignore済み)
analysis/ /api/analyzeからのキャッシュされた編集ブループリント(gitignore済み)
library/ デフォルトアセット:elements/ sfx/ svg/ fonts/
exports/ 完成したレンダリング(gitignore済み)
アニメーションSVGオーバーレイの作成
SVGはプレーンなCSS @keyframesでアニメーションします。1つの規約:アニメーション遅延をハードコードしないでください — --d: 0.4s のように設定し、コンポジターはすべてのアニメーションを一時停止し、遅延をリベースすることで時間を制御します。完全なルール+スケルトンはCLAUDE.mdにあります。動作例はlibrary/svg/にあります。
注記
リポジトリには20個のGoogleフォント(library/fonts/、OFL — ライセンスはそこのLICENSES.mdを参照)と、自社作成のSVGオーバーレイおよびアニメーション要素のセット(library/elements/、library/svg/、リポジトリの他の部分と同様にMITライセンス)が含まれています。library/sfx/はあなたが記入する部分です(gitignore済み):サウンドエフェクトサイトは通常、パブリックリポジトリでのファイルの再配布を許可しないため、FableCutはそうしません — library/sfx/README.mdには良い無料ソースがリストされています。エクスポートはコンポジターがブラウザであるためブラウザで実行されます。エージェントはエクスポートをクリックするように(またはメディアからffmpegで直接レンダリングするように)要求します。
ライセンス MIT