메뉴
HN
Hacker News 19일 전

FableCut: AI 에이전트가 제어하는 브라우저 기반 비디오 편집기

IMP
8/10
핵심 요약

FableCut은 프리미어 프로 스타일의 브라우저 기반 비선형 비디오 편집기로, 전체 타임라인을 하나의 JSON 문서로 노출하여 AI 에이전트(Claude Code, MCP/REST 지원 도구 등)가 직접 편집할 수 있게 해줍니다. 사용자가 UI로 수동 편집하는 동안 AI가 같은 타임라인에서 실시간으로 영상을 편집할 수 있으며, npm 의존성 없이 단 하나의 Node.js 서버 파일로만 구동됩니다. 이를 통해 영상 편집 작업의 자동화 및 인간-AI 협업이 가능해진다는 점에서 실무적으로 큰 의미가 있습니다.

번역된 본문

FableCut: AI 에이전트가 제어하는 브라우저 비디오 편집기

FableCut은 AI 에이전트가 직접 제어할 수 있는 브라우저 기반 비디오 편집기입니다. FableCut은 브라우저에서 완전히 실행되는 프리미어(Preimere) 스타일의 비선형 비디오 편집기이며, 전체 타임라인을 하나의 JSON 문서로 노출합니다. UI를 통해 직접 편집하거나, AI 에이전트(Claude Code, Claude Desktop 또는 MCP/REST를 지원하는 모든 도구)가 타임라인이 실시간으로 업데이트되는 것을 지켜보는 동안 영상을 대신 편집하게 할 수 있습니다. npm 의존성이 전혀 없고 단 하나의 node server.js 파일만 있으면 됩니다. 이게 전부입니다.

왜 흥미로운가? 대부분의 "AI 비디오" 도구들은 편집 과정을 API 뒤에 숨깁니다. FableCut은 이를 뒤집어, 프로젝트 파일 자체가 인터페이스가 됩니다. project.json은 미디어, 클립, 트랙, 효과, 키프레임 및 전환 효과를 설명하며, JSON을 쓸 수 있는 모든 프로세스는 비디오를 편집할 수 있습니다. 열려 있는 브라우저 UI는 서버 전송 이벤트(Server-Sent Events)를 통해 약 150ms 이내에 핫 리로드됩니다. 사람과 에이전트가 동시에 동일한 타임라인에서 작업할 수 있습니다.

기능

편집

  • 4개의 비디오 트랙 + 3개의 오디오 트랙, 드래그/트리밍/분할/스냅, 실행 취소/다시 실행
  • 타임라인 다중 선택: 고무줄 올가가니(빈 트랙 영역 드래그), Ctrl/Cmd/Shift+클릭으로 클립 추가/제거, Ctrl+A로 전체 선택, Esc로 선택 해제
  • 선택된 클립을 드래그하여 전체 그룹 이동; Delete 키로 모든 선택 항목 삭제; S 키로 재생 헤드 위치의 모든 선택 항목 분할
  • 인스펙터에 "N개 클립 선택됨" 배너 표시
  • 비트 및 큐 마커(재생 중 비트에 맞춰 M 탭) 및 엣지 스냅 지원
  • 클립에 실제 디코딩된 오디오 파형 표시
  • 캔버스 화면비 프리셋(16:9, 9:16 릴스, 4:5, 1:1) + 안전 영역 가이드

룩(Look)

  • 12개의 원클릭 필터 프리셋(시네마틱, 틸-오렌지, 누아르, 빈티지, 사이버펑크 등)
  • 조정 레이어 — 프리미어 스타일로 한 클립이 아래의 모든 클립에 보정 적용
  • 전체 그레이딩 컨트롤: 밝기/대비/채도/색조, 색온도 및 색조, 블러, 그레이스케일/세피아/반전, 비네팅, 애니메이션 필름 그레인
  • 블렌드 모드(스크린, 곱하기, 오버레이 등), 핏 모드(포함/커버/늘리기), 가장자리별 자르기, 모서리 둥글게, 수평/수직 뒤집기
  • 크로마 키(녹색 화면) - 허용 오차/부드러움 및 스플러 억제 기능
  • AI 배경 제거(인물 컷아웃, MediaPipe를 통한 브라우저 내 처리)

모션

  • 이징(Easing)이 적용된 약 25개 속성의 키프레임 애니메이션
  • 속도 램프 — 속도를 키프레임으로 지정하면 엔진이 비디오를 시간 재매핑하고 오디오 믹스를 내보냅니다(빠르게 전환되다 슬로우 모션으로 가는 릴스 효과)
  • 카메라 흔들림 및 RGB 분할/색수차, 둘 다 애니메이션 가능
  • 17가지 전환 효과: 페이드, 슬라이드, 와이프(4방향), 줌, 아이리스, 스핀, 블러, 휩팬, 글리치, 팝

텍스트

  • 키네틱 자막: 타자기, 단어 팝, 단어 슬라이드, 가라오케, 글자 팝, 웨이브, 바운스, 셰이크
  • 틱톡 자막 느낌을 위한 네온 글로우
  • 폰트 에디터: 시스템 폰트, 커스텀 폰트 드롭인(library/fonts/), 이름만으로 모든 구글 폰트 불러오기 — 자동 로드됨
  • 그라데이션 채우기, 윤곽선, 배경 알약 모양, 자간, 행간, 굵기, 이탤릭, 대문자, 정렬, 부드러운 그림자

애니메이션 SVG 클립

  • 일급 SVG 클립 종류: CSS @keyframes로 애니메이션되는 SVG가 미리보기 및 내보내기에서 프레임 단위로 정확하게 렌더링됨(컴포지터가 애니메이션을 언제든 정지시킬 수 있음).
  • 에이전트는 자체적인 벡터 오버레이 — 하단 3분의 1 자막, 종이 조각, 반짝이 — 를 일반 .svg 파일로 작성할 수 있습니다. 스타터 포함됨.

참조 영상 리메이크

  • 참조 편집본(마음에 드는 릴스)을 제공하면 편집 청사진을 받습니다: 샷 경계, 음악 비트 + BPM, 라우드니스 곡선, 샷별 에너지, 드롭 지점 — 더불어 참조의 음악 트랙이 미디어로 추출되어, 자신의 영상 소스로 동일한 아이디어를 재구성할 준비를 마칩니다.
  • 추가 종속성 없음(ffmpeg가 디코딩을 수행; 온셋/템포 감지는 순수 Node로 처리). node analyze.js ref.mp4, POST /api/analyze 또는 fablecut_analyze_reference MCP 도구 사용.

에셋 라이브러리

  • library/ 폴더가 UI에서 탭으로 표시됨: 엘리먼트(오버레이 아트), Sound FX, 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 기반 브라우저. ffmpeg 필요.

원문 보기
원문 보기 (영어)
FableCut A browser video editor that AI agents can drive. FableCut is a Premiere-style non-linear video editor that runs entirely in your browser — and exposes its whole timeline as one JSON document. Edit it by hand, from the UI, or let an AI agent (Claude Code, Claude Desktop, or anything that speaks MCP/REST) cut your video for you while you watch the timeline update live. Zero npm dependencies. One node server.js . That's it. Why it's interesting Most "AI video" tools hide the edit behind an API. FableCut flips that: the project file is the interface . project.json describes media, clips, tracks, effects, keyframes and transitions — any process that can write JSON can edit video, and the open browser UI hot-reloads within ~150 ms via server-sent events. A human and an agent can work on the same timeline at the same time. Features Editing 4 video tracks + 3 audio tracks, drag/trim/split/snap, undo/redo Timeline multi-select — rubber-band marquee (drag on empty track area), Ctrl/Cmd/Shift+click to add/remove clips, Ctrl+A to select all, Esc to deselect. Drag any selected clip to move the whole group; Delete removes all selected; S splits all selected at the playhead. Inspector shows an "N clips selected" banner. Beat & cue markers (tap M on the beat during playback) with edge snapping Real decoded audio waveforms on clips Canvas aspect presets (16:9, 9:16 reels, 4:5, 1:1) + safe-area guides Look 12 one-click filter presets (cinematic, teal-orange, noir, vintage, cyberpunk…) Adjustment layers — one clip grades everything below it, Premiere-style Full grade controls: brightness/contrast/saturation/hue, temperature & tint , blur, grayscale/sepia/invert, vignette , animated film grain Blend modes (screen, multiply, overlay…), fit modes (contain/cover/stretch), per-edge cropping, corner radius, flip H/V Chroma key (green screen) with tolerance/softness + spill suppression AI background removal (person cut-out, in-browser via MediaPipe) Motion Keyframe animation on ~25 properties with easing Speed ramps — keyframe speed and the engine time-remaps video and the export audio mix (the fast-into-slow-mo reel move) Camera shake and RGB-split/chromatic aberration , both animatable 17 transitions: fades, slides, wipes (4 directions), zoom, iris, spin, blur, whip-pan, glitch , pop Text Kinetic captions: typewriter, word-pop, word-slide, karaoke, letter-pop , wave , bounce , shake Neon glow for that TikTok caption look Font editor: system fonts, drop-in custom fonts ( library/fonts/ ), and any Google Font by name — loaded automatically Gradient fills, outline, background pills, letter-spacing, line-height, weights, italic, uppercase, alignment, soft shadows Animated SVG clips A first-class svg clip kind: CSS- @keyframes -animated SVGs render frame-accurately in preview and export (the compositor freezes the animation at any time). Agents can author their own vector overlays — lower-thirds, confetti, sparkles — as plain .svg files. Starters included. Remake a reference video Give it a reference edit (a reel you like) and get back an edit blueprint : shot boundaries, music beats + BPM, a loudness curve, per-shot energy, the drop — plus the reference's music track extracted into your media, ready to rebuild the same idea with your own footage. Zero extra dependencies (ffmpeg does the decoding; onset/tempo detection is plain Node). node analyze.js ref.mp4 , POST /api/analyze , or the fablecut_analyze_reference MCP tool. Asset library library/ folders surface as tabs in the UI: Elements (overlay art), Sound FX , SVG — drop files in, the open editor refreshes live Export Fast export: browser renders every frame + an offline audio mix, ffmpeg encodes a frame-accurate CRF-18 MP4 (keeps rendering if you switch tabs) Realtime MediaRecorder fallback when ffmpeg isn't available Quick start git clone https://github.com/ronak-create/FableCut.git cd FableCut node server.js # → http://localhost:7777 Requirements: Node 18+ and a Chromium-based browser. ffmpeg on PATH is optional but recommended (fast export + upload remuxing). AI background removal fetches its model from a CDN on first use. Drop media into the window (or ./media/ ), drag clips onto the timeline, edit, export. Driving it with an AI agent Everything an agent needs is in CLAUDE.md — the complete schema, semantics and recipes. Point any capable model at that file and it can operate the editor end to end. Three equivalent control surfaces: MCP (best for Claude Code / Claude Desktop) — register the bundled zero-dependency MCP server once: claude mcp add -s user fablecut -- node " <path-to>/fablecut/mcp-server.js " Tools: fablecut_status (auto-starts the editor), fablecut_docs , fablecut_get_project , fablecut_set_project , fablecut_patch_project , fablecut_import_media , fablecut_analyze_reference . The surface is token-efficient by design : agents patch the timeline with small ops ( fablecut_patch_project ) instead of round-tripping the whole document, read a compact one-line-per-clip summary ( fablecut_get_project {compact:true} ), and fetch only the manual sections they need ( fablecut_docs {section:"props"} ). The file — read project.json , modify, bump revision , write. The UI live-reloads. REST — GET/PUT /api/project , POST /api/upload , GET /api/library , SSE at /api/events . See CLAUDE.md for the full list. Example: ask Claude Code "cut these six clips to the beat markers, add a teal-orange grade, put a word-pop caption on top and a whoosh on every cut" — and watch the timeline rebuild itself. Or hand it a reference: "here's a reel I like — analyze it and remake it with my clips, same music" . The agent calls fablecut_analyze_reference , gets the blueprint (cuts, beats, BPM, energy, drop, extracted music), and rebuilds the structure shot-for-shot with your footage. Conflict-safe concurrent editing : the UI, the MCP tools, and direct project.json writes all agree on a revision counter. If you edit a clip in the UI while an agent is mid-task, the agent's next write is rejected (409 from the REST API / a conflict error from fablecut_set_project ) instead of silently overwriting your change. The UI similarly detects when an agent write supersedes a not-yet-saved local tweak and tells you with a toast instead of dropping it silently. Project layout server.js zero-dependency HTTP server: static hosting, REST API, SSE, ffmpeg export pipeline app.js the editor: timeline UI, compositor, keyframes, text engine, SVG rasterizer, chroma key, exporters index.html single-page UI style.css dark editor theme mcp-server.js stdio MCP server exposing the editor to AI agents analyze.js reference-video analyzer: shots, beats/BPM, energy, drop, music extraction (module + CLI) CLAUDE.md the agent manual (schema + recipes) — also served by fablecut_docs project.json your timeline (created on first run; gitignored) media/ project footage (gitignored) analysis/ cached edit blueprints from /api/analyze (gitignored) library/ default assets: elements/ sfx/ svg/ fonts/ exports/ finished renders (gitignored) Authoring animated SVG overlays SVGs animate with plain CSS @keyframes . One convention: never hardcode animation-delay — set --d: 0.4s instead, and the compositor drives time by pausing all animations and rebasing their delays. Full rules + a skeleton in CLAUDE.md ; working examples in library/svg/ . Notes The repo ships with 20 Google Fonts ( library/fonts/ , OFL — see LICENSES.md there) and a set of self-authored SVG overlays and animated elements ( library/elements/ , library/svg/ , MIT like the rest of the repo). library/sfx/ is yours to fill (gitignored): sound-effect sites typically don't allow redistributing their files in a public repo, so FableCut doesn't — library/sfx/README.md lists good free sources. Export runs in the browser because the compositor is the browser; agents ask you to click Export (or render directly with ffmpeg from media/ ). License MIT