Communitygithub.com

FilmCraft

FilmCraft(Rust 기반 비디오 편집기, Premiere Pro 대안)를 사용하여 프로젝트 생성, 편집, 트리밍, 컬러링, 내보내기 및 MCP 서버/CLI/제어 채널을 통한 앱 자동화를 수행할 때 사용합니다.

FilmCraft란 무엇인가요?

FilmCraft는 Rust로 작성된 기본 비디오 편집기로, Premiere Pro 수준의 기능을 제공하며 모든 상호작용이 고유 ID를 가진 명령으로 구성된 에이전트 인터페이스를 내장하고 있습니다. 이 스킬은 개발자와 AI 에이전트가 FilmCraft를 완전히 제어할 수 있도록 설계되었으며, 42개 네임스페이스에 걸친 710개 명령, 130개의 비디오 효과와 112개의 비디오 전환을 지원합니다. Windows와 Linux에서 0.10.0–0.13.0 버전으로 검증되었으며, 헤드리스 모드(filmcraft-cli mcp)와 앱 브리지 모드(filmcraft --control + filmcraft-cli mcp --bridge)의 두 가지 연결 방식을 제공합니다. 후자는 실제 데스크톱 창을 구동하여 UI 상태, 스크린샷, 클릭, 드래그 및 GUI 전용 명령을 가능하게 합니다. 주요 작업 흐름은 프로젝트 검사, 미디어 임포트, 시퀀스 구축, 컷/트림, 이펙트 적용, 렌더링 확인, 다양한 포맷(MP4, ProRes, DNxHR, GIF, WAV, FCPXML/AAF/OTIO 등)으로 내보내기로 구성됩니다. 이 설명서에는 일반적인 함정(예: 일부 명령 매개변수가 무시됨, 캡션이 sequence_inspect에 없음, file.exportMedia에 디렉터리 전달 금지 등)과 함께 상세한 참조 파일(commands.md, recipes.md, bugs-and-workarounds.md 등)이 포함되어 있어 안정적인 자동화를 보장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kjranyone/artcraft-agent-skills/tree/main/skills/filmcraft

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

FilmCraft — 에이전트 작동법

FilmCraft는 기본 비디오 편집기(Rust 기반, Premiere Pro 수준)로, 에이전트 인터페이스가 내장되어 있습니다. 모든 동작은 ID가 있는 명령입니다. 메뉴, 단축키, 패널, 타임라인 제스처, CLI, 제어 채널, MCP 서버 및 GUI는 모두 하나의 엔진을 구동합니다. Windows와 Linux에서 0.10.0–0.13.0 버전으로 검증되었습니다.

머신 및 환경 경로

플랫폼바이너리CLI기본 데이터 디렉터리
WindowsC:\Program Files\FilmCraft\filmcraft.exeC:\Program Files\FilmCraft\filmcraft-cli.exe%LOCALAPPDATA%\FilmCraft
Linux/usr/bin/filmcraft/usr/bin/filmcraft-cli~/.local/share/filmcraft
macOS/Applications/FilmCraft.app/Contents/MacOS/filmcraftfilmcraft-cli (~/.local/bin 또는 PATH)~/Library/Application Support/filmcraft
  • 로그 위치: <data-dir>/Logs/filmcraft.log
  • 제어 포트: 루프백 전용 (--control <port> 또는 FILMCRAFT_CONTROL_PORT, 예: 9876, 7991, 50051)
  • 명령: 42개 네임스페이스에 710개
  • 효과: 130개 비디오 효과, 112개 비디오 전환, 3개 오디오 전환

멘탈 모델

  • 프로젝트(.fcproj, JSON)는 빈과 항목(Movie, Audio, Image, Sequence, Multi-Camera Source Sequence)을 보관합니다. project_inspect는 트리, activeSequence 및 더티 플래그를 반환합니다. 하나의 시퀀스가 활성화되어 있으며 명령은 이 시퀀스에 대해 동작합니다.
  • 시퀀스에는 video[]와 audio[] 트랙 배열이 있으며, 각각 {id, name, items[], transitions[], muted, locked, ...} 형식입니다. 클립은 {clip, item, name, start, duration, startFrame, durationFrames, sourceIn, sourceOut, speed, reverse, enabled, link, gainDb, effects[]} — 모든 시간은 틱(ticks) 단위입니다.
  • 동영상을 배치하면 서로 다른 ID를 가진 두 개의 연결된 클립(비디오 + 오디오)이 생성되며, link가 서로를 가리킵니다. 기본적으로 하나를 선택하면 둘 다 선택됩니다.
  • 시간은 정수 틱(ticks)으로, 1초에 254,016,000,000틱(48000×5292). seconds와 frame은 프레임 그리드에 스냅됩니다. frame과 timecode(예: "00:00:02:12" 또는 드롭 프레임의 경우 ;)는 정확하게 매핑됩니다. 정확한 컷이 필요할 때는 frame을 선호하세요.
  • 명령은 {"id": "timeline.razor", "params": {...}} 형식입니다. command_list는 ID와 매개변수 문서를 찾습니다. command_run은 하나를 실행하고(실행 취소 가능); command_batch는 여러 개를 실행합니다. 잘못된 매개변수 타입과 알 수 없는 명령은 실패합니다. 알 수 없는 매개변수 이름은 자동으로 무시됩니다(함정 참조).
  • 읽기로 확인합니다(sequence_inspect, project_inspect, captions.list, media.status, jobs.list) 또는 렌더링(render_frame, file.exportFrame). null 결과는 "실행됨"을 의미하며 "의도한 대로 동작함"을 의미하지는 않습니다.

두 가지 연결 모드

모드시작 방법용도
헤드리스filmcraft-cli mcp (--demo, --project p.fcproj, --data-dir d)창 없음, 일괄 빌드, 내보내기, 스크립트
앱 브리지filmcraft --control 50051 + filmcraft-cli mcp --bridge 127.0.0.1:50051실제 창: UI 상태, 스크린샷, 클릭, 키보드, 드래그, GUI 전용 명령

사용자 요청 시 FilmCraft 실행 ("起動して" / "start FilmCraft")

사용자가 FilmCraft를 시작하거나 실행해 달라고 요청할 때(「FilmCraftを起動して」「立ち上げて」「開いて」「start FilmCraft」):

  1. 이미 실행 중인지 확인:
    • Windows: Get-Process filmcraft -ErrorAction SilentlyContinue
    • Linux / macOS: pgrep filmcraft
    • 실행 중인 경우 제어 포트가 응답하는지 확인합니다(filmcraft-cli --bridge 127.0.0.1:50051 inspect).
    • 제어 포트 없이 실행 중인 경우 사용자에게 알립니다: "FilmCraft가 현재 제어 포트 없이 실행 중입니다. 작업을 저장하고 다시 시작하거나, --control 50051을 사용하여 종료 후 다시 실행하도록 허용해 주세요."
  2. --control <port>(기본값: 50051) 및 64자 FILMCRAFT_CONTROL_TOKEN으로 실행:
    • Windows (PowerShell) — scripts/launch.ps1을 사용하여 데스크톱 창이 WinSta0\Default에 표시되도록 합니다:
      powershell -File scripts/launch.ps1 -Port 50051
      
      (이 스크립트는 자동으로 FILMCRAFT_CONTROL_TOKEN을 설정/유지하고, 포트를 구성하며, GUI가 백그라운드 세션에 숨겨지지 않고 로그인한 사용자에게 표시되도록 대화형 작업을 실행합니다).
    • Linux:
      ./scripts/launch.sh 50051
      
    • macOS:
      ./scripts/launch.sh 50051
      
  3. 연결 확인:
    • 1–3초 기다린 후 filmcraft-cli --bridge 127.0.0.1:50051 inspect를 실행합니다.
    • 응답이 오면 FilmCraft가 활성화되어 포트 50051에서 수신 중이며 라이브 타임라인 편집 및 협업 명령이 준비되었음을 보고합니다.

17개의 MCP 도구

도구목적
command_list모든 명령 (filter, enabled_only)
command_run하나의 {id, params} 실행
command_batch{steps:[{id,params}], stop_on_error} 실행 → {completed, failed, results}
doc_inspect단일 호출로 프로젝트 트리 + 활성 시퀀스 반환
project_inspect트리, 항목, 활성 시퀀스, 더티 플래그
sequence_inspect활성 시퀀스: 설정, 트랙, 클립, 전환, 마커
media_import절대 경로로 파일 가져오기 (paths, bin, image_sequence)
render_frameseconds(또는 재생 헤드) 위치의 PNG, max_side
render_previewrender_frame과 동일 (브리지: 프로그램 모니터)
ui_inspect창/UI 상태 (도구, 작업공간, 선택, 대화상자, 재생, 요소 개수)
ui_elements화면 요소 (id, label, rect, prefix)
ui_clickid 또는 x,y로 클릭 (button, count, modifiers)
ui_drag지점 또는 요소 ID 간 누르기–이동–놓기 (steps)
ui_key키 또는 단축키 (Space, Cmd+Z, Shift+Delete)
ui_type포커스된 필드에 텍스트 입력
ui_screenshot창 또는 하나의 panel PNG
ui_control모든 제어 방법: ui.set, ui.menu.list, ui.playback, ...

리소스: filmcraft://document (48 KB JSON: 프로젝트 + 시퀀스) 및 filmcraft://commands (192 KB 카탈로그). 프롬프트는 없습니다.

표준 워크플로우

  1. 조사. project_inspect / doc_inspect; 헤드리스는 --demo 또는 --project가 없으면 비어 있는 상태로 시작합니다. 브리지 모드에서는 먼저 ui_inspect를 실행합니다.
  2. 빌드. file.newProject → file.import (절대 경로) 또는 file.importDemoFootage → file.newSequence → timeline.place.
  3. 컷. playhead.set + timeline.razor, timeline.trim, timeline.slip, timeline.move, edit.clear / edit.rippleDelete.
  4. 스타일. effects.apply + effects.setParam; sequence.applyVideoTransition; lumetri.applyPreset; graphics.newText; markers.add; captions.add.
  5. 확인. sequence_inspect/captions.list 읽기; 특정 시간에 render_frame을 실행하고 PNG를 확인합니다(이렇게 하면 잘못된 클립, 검은 프레임, 누락된 전환 등을 잡아낼 수 있습니다. 읽기 전용으로는 알 수 없는 문제입니다).
  6. 내보내기. wait:true와 함께 file.exportMedia 실행 (offlineMedia와 생성된 파일 확인); NLE 왕복을 위해 file.exportInterchange 실행.
  7. 저장. file.saveAs (디렉터리 생성? 아니요 — 상위 디렉터리가 반드시 존재해야 함); 그런 다음 project_inspect.dirty를 다시 읽습니다(저장 후 false).

명령 찾기

command_list {filter:"razor"}는 id, 레이블, 메뉴 및 매개변수와 일치합니다. filmcraft-cli commands razor, describe <id> 및 filmcraft-cli inspect도 셸에서 동일한 작업을 수행합니다. 전체 701개 ID와 매개변수 문서는 references/commands.md에 있습니다. 검증된 단계별 JSON은 references/recipes.md에 있습니다.

다음 명령으로 시작하세요: file.newProject, file.import, file.newSequence, timeline.place, timeline.razor, timeline.trim, timeline.slip, timeline.move, timeline.select, edit.clear, edit.rippleDelete, edit.undo, effects.apply, effects.setParam, sequence.applyVideoTransition, sequence.setTransition, markers.add, captions.newTrack, captions.add, graphics.newText, file.exportMedia, file.exportInterchange, file.exportFrame, file.saveAs.

시간을 낭비하는 함정

  1. 명령 매개변수는 관대합니다 — 알 수 없는 키와 일부 잘못된 타입은 자동으로 무시됩니다. timeline.trim {seconds:-1}는 {"delta":0}을 반환합니다(키는 delta입니다); timeline.place {seconds:"2"}는 0에 배치합니다; fps:"fast"는 23.976으로 대체됩니다. 일부 명령은 유효성 검사를 수행하지만(graphics.set, markers.add), 잘못된 매개변수를 오류로 잡아내는 데 의존하지 마십시오. 매개변수 문서를 읽은 다음 상태를 다시 읽으십시오.
  2. file.newSequence는 활성 시퀀스를 전환하고 {sequence: id}를 반환합니다. sequence.open은 {item: id}를 필요로 합니다 — sequence나 클립 id를 전달하면 오류가 발생합니다. 열기/새로 만들기 후에는 항상 sequence_inspect를 다시 읽으십시오.
  3. 전환은 클립에 있지 않습니다. sequence_inspect.video[i].transitions[]에 {id, effect, from, to, start, duration, align, reverse, params}로 존재합니다. sequence.removeTransition {transitions:[id]}; sequence.setTransition은 duration/align/params를 편집합니다.
  4. 캡션은 sequence_inspect에 없습니다. captions.list를 사용하세요; 큐에는 id, start, end, text가 포함됩니다. captions.newTrack은 알 수 없는 포맷 문자열에 대해 자동으로 Subtitle으로 대체됩니다.
  5. 절대 file.exportMedia에 디렉터리를 전달하지 마십시오. 무기한 멈춥니다(두 번 재현, >3분, 출력 없음). 전체 파일 경로를 사용하십시오.
  6. 포맷이 확장자보다 우선합니다. out.mp4와 함께 format:"gif"를 사용하면 out.mp4.gif를 씁니다. out.mp4와 함께 ProRes를 사용하면 out.mp4.mov를 씁니다. 결과의 path가 권위적입니다.
  7. timeline.place에서 duration이 소스보다 길면 경고 없이 클립의 나머지 부분에 대해 마지막 프레임을 유지합니다. 미디어를 고려하여 트림하십시오.
  8. 마커 없이 range:"inOut"을 사용하면 전체 시퀀스를 내보냅니다, 자동으로. range:"custom" + startSeconds/endSeconds가 신뢰할 수 있는 하위 범위입니다.
  9. jobs.list는 도구가 아니라 명령입니다. command_run {id:"jobs.list"}; jobs.cancel {job}은 부분 파일을 제거합니다. wait:false 내보내기는 {job, path, poll, cancel}을 반환합니다.
  10. 데모 푸티지는 합성입니다. 데모 미디어의 상호 교환 내보내기(FCPXML/AAF/OMF)는 클립을 손실합니다. 실제 온디스크 미디어를 사용하면 왕복이 가능합니다(references/formats-and-roundtrip.md 참조).
  11. edit.clear(Backspace)는 간격을 남깁니다. edit.rippleDelete는 간격을 닫습니다. sequence.lift/extract는 선택이 아닌 시퀀스 인/아웃 마커가 필요합니다.
  12. lumetri.applyPreset은 이전 룩을 대체하지 않고 매번 새로운 Lumetri 효과를 추가합니다. 이전 효과를 제거하거나 매개변수를 직접 설정하십시오.
  13. GUI 전용 명령은 command_list에 표시되지 않습니다: window.workspace.{editing,assembly,color,effects,audio}, window.workspace.reset, window.toggleFullScreen, app.about. 브리지에만 존재합니다.
  14. HEVC 내보내기는 여기서 사용할 수 없습니다("등록된 인코더 없음"). H.264, ProRes, DNxHR, MJPEG, MXF, 이미지 시퀀스 및 오디오는 모두 작동합니다.
  15. 헤드리스 세션의 prefs.set은 세션 범위입니다 — 두 개의 --data-dir 세션 간에 유지되지 않았습니다. 영구 환경설정에는 GUI를 사용하십시오.
  16. MCP 도구 인수는 엄격합니다(알 수 없는 키 → JSON-RPC -32602; 잘못된 타입 → 역직렬화 메시지와 함께 isError). 그러나 command_run.params는 변경 없이 전달됩니다.

참조 맵

파일내용
references/recipes.md빌드, 컷, 효과, 컬러, 캡션, 그래픽, 프록시, 멀티캠, TTS, 내보내기, GUI에 대한 검증된 JSON
references/commands.md전체 701개 명령, 네임스페이스별 그룹화, 매개변수 문서 포함
references/mcp-and-control.mdMCP 세부 정보, 오류 형태, 리소스, 제어 방법, GUI 전용 명령
references/cli.mdfilmcraft-cli 하위 명령, 플래그, 종료 코드, 오프라인 미디어, 헤드리스 작업
references/formats-and-roundtrip.md내보내기 매트릭스 + 독립적 검증, 상호 교환 왕복
references/bugs-and-workarounds.md최소 재현 코드와 함께 재현된 모든 결함
references/maintenance.md버전 재확인, 명령 덤프, 이 스킬 새로 고침
scripts/probe.shMCP 핸드셰이크 + 도구 개수 + 버전
scripts/dump-commands.sh명령 카탈로그 재생성
scripts/smoke-test.sh빌드 → 렌더 → 내보내기 → 독립적 검증

커뮤니티: https://discord.gg/artcraft · https://getartcraft.com/apps/filmcraft · https://github.com/storytold/filmcraft.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬