FilmCraft 전문가
FilmCraft(ArtCraft의 Premiere Pro급 편집기)에서 Claude Code 또는 SKILL.md 호환 에이전트(필름크래프트 MCP 서버 연결 필요, SoundCraft와 EffectCraft는 선택적 핸드오프 대상)로 비디오를 편집하기 위한 실무 지식입니다. 과별 요약은 references/에 있습니다. 아래의 모든 매핑은 2026-11-03 기준 command_list(716개 명령어) 및 effects.list(304개 효과)에서 확인되었습니다.
출처. 워크플로는 Adobe의 Premiere Classroom in a Book 2026 Release(Adobe Press)를 참고하였으며, 2026-11-03 기준 FilmCraft의 라이브 명령어 카탈로그와 대조하여 검증했습니다. 이 스킬은 독립적으로 작성되었으며 책의 텍스트를 재생산하지 않습니다.
무엇을 잘라낼지, 왜 잘라낼지(훅, 템포, 유지율, 구조)에 대해서는 video-editor 스킬과 함께 사용하세요. FilmCraft 외부에서 명령줄 트랜스코딩, 프로빙 또는 일괄 변환을 위해서는 ffmpeg를 참조하세요.
검증 범례. "(verified)" / "Verified:" = 명령어가 실제 라이브 FilmCraft 세션에서 실행되었고, 설명된 동작이 관찰되었습니다. 표시 없는 매핑 = 명령어/효과 ID가 2026-11-03 기준 라이브 카탈로그에 존재하며 매개변수가 일치하지만, 종단 간 테스트는 되지 않았습니다. "Not available" = 해당 날짜에 카탈로그에서 검색했으나 일치하는 항목이 없음(스냅샷, §0 참조).
0. 앱은 매일 업데이트됩니다 — "없음"이라고 말하기 전에 다시 확인하세요
ArtCraft 앱은 거의 매일 업데이트됩니다. 이 스킬과 references/에 있는 모든 "없음" 또는 "누락" 항목은 2026-11-03 기준 스냅샷이며, 영구적인 한계가 아닙니다.
- 사용자에게 기능이 없다고 말하거나 해결 방법으로 빠지기 전에, 먼저 라이브 카탈로그를 필터(
command_list/list_effects/effects.list)로 검색하세요. 명령어가 존재한다면 그것을 사용하세요. - 여기에 설명된 Adobe 방식이 목표입니다. 앱이 지원하는 즉시 이 방식을 완전히 적용하세요.
- 이 스킬이 없는 것으로 나열한 명령어를 발견하거나 매핑이 변경된 경우, 이 스킬을 업데이트하거나(또는 저장소에 이슈를 열어) 스냅샷이 정확하게 유지되도록 하세요.
에이전트를 위한 기본 규칙
- 시간: 254016000000 틱 = 1초. 대부분의 명령어는
seconds,frame또는timecode도 허용합니다. 트랜지션 지속 시간은frames단위입니다. - 키프레임 시간:
effects.setParam {time, keyframe:true}는 타임라인 시간을 사용합니다.effects.setInterpolation,setKeyframe,moveKeyframe및deleteKeyframe은mediaTime= 소스 시간 =sourceIn + (t_timeline − start)를 사용합니다(검증됨). - ID: 타임라인 클립과 프로젝트 항목은 서로 다른 ID를 가집니다.
timeline.place는 연결된[video, audio]쌍을 반환합니다.sequence_inspect는 매우 장황합니다(~15k 토큰, 3개 클립 기준). 특정 질문에는state.inspect,graphics.list,essentialSound.inspect,mixer.inspect,captions.list를 사용하세요. - 배치:
command_batch {stop_on_error:false}는 모든 항목을 실행하고 각 단계별로ok/오류를 보고합니다. 각 단계는 자체 실행 취소(edit.undo)가 가능합니다. - 내보내기: 항상 명시적인
path를 전달하세요(없으면 사용자의 홈 폴더에<시퀀스 이름>.mp4로 저장됩니다). 결과를 얻으려면wait:true를 사용하세요. 먼저export.resolve로 확인하세요. - 사용자 파일: 요청하지 않는 한 사용자 프로젝트를 열거나 저장하지 마세요. 실험에는
file.newProject+file.importDemoFootage(OceanSunset, Aurora, CityNight, Dunes, Plasma, Forest)를 사용하세요. - 시각적 확인: 여러 지점에서
render_frame {seconds, max_side:480}을 사용하세요. 색상의 경우scopes.read(숫자, 그림 아님)를 사용하세요.
핵심 개념 (요약)
- 프로젝트: 빈, 클립, 시퀀스 및 설정을 보관하지만, 미디어 파일에 대한 참조만 저장합니다. 클립을 삭제/이름 변경해도 원본은 절대 건드리지 않습니다.
- 빈: 프로젝트 폴더(
file.newBin,project.moveToBin). 검색 빈(file.newSearchBin)은 동적 메타데이터 컬렉션입니다. - 시퀀스: 타임라인입니다. 설정(프레임 크기, fps, 오디오)이 작업 형식을 결정합니다. 주 푸티지와 일치시키거나, 소스가 혼합된 경우 최종 출력과 일치시키세요.
- 트랙: 상위 V 트랙이 하위 V 트랙을 덮습니다. A 트랙은 합산됩니다. 타게팅(
timeline.setTargeting)은 삽입/덮어쓰기 위치를 결정합니다. 소스 패칭은 어떤 소스 채널이 들어올지 결정합니다. 싱크 잠금 및 잠금:timeline.setTrack. - In/Out: 소스에서는 사용할 부분을 선택하고, 타임라인에서는 제거, 렌더링 또는 내보낼 범위를 표시합니다.
- 삽입 vs 덮어쓰기: 삽입은 이후의 모든 것을 뒤로 밀고(시퀀스 길어짐), 덮어쓰기는 아래에 있는 것을 교체합니다.
- 3/4점 편집: 세 점을 주면 네 번째 점이 계산됩니다. 네 점이 일치하지 않으면 트리밍과 속도 변경 사이에서 선택해야 합니다.
- 리프트 vs 추출: 리프트는 간격을 남기고, 추출은 간격을 닫습니다. 삭제 vs 리플 삭제도 마찬가지입니다.
- 트림: 일반은 한쪽 가장자리를 이동하고 간격을 남깁니다. 리플은 한쪽 가장자리를 이동하고 나머지를 함께 끕니다. 롤은 전체 길이를 변경하지 않고 두 클립 사이의 컷을 이동합니다. 슬립은 고정된 위치에서 소스의 표시 부분을 변경합니다. 슬라이드는 클립을 이동하고 이웃 클립을 단축/연장합니다.
- 핸들: In/Out 너머의 추가 미디어입니다. 핸들이 없으면 트랜지션이 프레임을 반복합니다.
- 마커: 이름, 설명, 색상 및 지속 시간이 있는 시퀀스 또는 클립 마커입니다. 챕터 및 플래시-큐 마커도 있습니다.
- 중첩:
clip.nest는 여러 클립을 하나의 클립처럼 동작하는 하위 시퀀스로 만듭니다(그룹 효과, 재프레이밍, 부분 내보내기). - 고정 효과: 모션, 불투명도, 시간 리매핑, 볼륨, 채널 볼륨 및 패너는 모든 클립에 이미 있습니다.
권장 워크플로
- 프로젝트 + 빈(푸티지, 오디오, 그래픽, 시퀀스) → 가져오기 → 형식 확인(
file.mediaProperties,media.colorInfo). - 올바른 설정의 시퀀스 생성(또는 첫 번째
timeline.place에서matchSequence:true사용). - In/Out 또는 서브클립으로 셀렉트 → 러프 컷.
- 파인 컷: 트림, 템포, J/L-컷, 필요한 곳에만 트랜지션.
- 오디오: 유형, 라우드니스, 정리, 배경 음악, 덕킹, 믹스.
- 효과, 모션, 안정화, 합성.
- 색보정: 먼저 보정(밸런스, 샷 매칭), 그 다음 그레이딩(룩).
- 타이틀, 그래픽, 캡션.
- QC → 내보내기 → 보관(프로젝트 관리자).
Premiere → FilmCraft 매핑
| Premiere 기능 | FilmCraft |
|---|---|
| 새 프로젝트 / 시퀀스 / 빈 | file.newProject, file.newSequence {width,height,fps}, file.newBin |
| 시퀀스 설정 | sequence.settings, sequence.colorSettings |
| 가져오기 / 미디어 브라우저 | media_import (도구), file.import, mediaBrowser.list/import |
| 레이어드 PSD/AI | 레이어 대화상자 없음: PhotoCraft/VectorCraft에서 레이어를 PNG로 내보내기 |
| 나레이션 녹음 | audio.voiceover.start/stop (오디오 입력이 있는 앱 필요) |
| 합성 나레이션 | tts.create (Premiere에는 없음) |
| 메타데이터 및 열 | metadata.set, project.columns.set, edit.find |
| 서브클립 | clip.makeSubclip |
| 오디오 채널 / 푸티지 해석 | clip.audioChannels, clip.interpretFootage |
| 클립 병합(듀얼 시스템 오디오) / 동기화 | clip.mergeClips, clip.synchronize {method:"audio"} |
| 소스 모니터, In/Out | source.open, markers.markIn/markOut {target:"source"}, project.setMarks |
| 삽입 / 덮어쓰기 | source.insert, source.overwrite, timeline.place {insert} |
| 스토리보드 → 시퀀스 | clip.automateToSequence |
| 면도칼 / 편집점 추가 | timeline.razor, sequence.addEdit(AllTracks) |
| 리프트 / 추출 / 리플 삭제 | sequence.lift, sequence.extract, edit.rippleDelete, timeline.delete {ripple} |
| 간격 닫기 | sequence.closeGap, timeline.selectGap |
| 트림, 리플, 롤, 슬립, 슬라이드 | timeline.trim {mode}, timeline.roll, timeline.slip, timeline.slide |
| 키보드 트림 Q/W, E | trim.ripplePrevious/rippleNext, trim.extendToPlayhead |
| 동적 트리밍 | trim.shuttle, trim.playAround |
| 속도 스트레치 / 속도 / 역재생 | timeline.rateStretch, clip.speedDuration {speed,reverse,ripple} |
| 프레임 홀드 / 광학 흐름 | clip.frameHold, clip.setTimeInterpolation |
| 클립 / 푸티지 교체 | clip.replaceFromBin, media.replaceFootage |
| 마커 | markers.add/addRange/addChapter/edit/exportCsv |
| 링크, 그룹, 활성화 | clip.link, clip.group, clip.enable |
| 중첩 | clip.nest, sequence.makeSubsequence |
| 비디오/오디오 트랜지션 | sequence.applyVideoTransition, sequence.applyAudioTransition, trim.applyDefaultTransition |
| 모프 컷 | 트랜지션 효과 morph_cut |
| 텍스트 기반 편집 | transcript.generate → transcript.extract/lift, removePauses, removeFillers |
| 효과 / 파라미터 / 키프레임 | effects.apply, effects.setParam, effects.addKeyframe, effects.setInterpolation |
| 효과 프리셋 / 조정 레이어 | presets.save/apply, file.newAdjustmentLayer |
| 속성 붙여넣기/제거 | edit.pasteAttributes, edit.removeAttributes |
| 마스크 및 트래킹 | masks.add, masks.set, masks.track |
| 워프 안정화 / 자동 리프레임 | 효과 warp_stabilizer, auto_reframe; clip.fillFrame/fitToFrame |
| 장면 편집 감지 | clip.sceneEditDetection |
| Lumetri(패널, 프리셋, LUT, 매치) | 효과 lumetri + effects.setParam, lumetri.applyPreset, lumetri.setInputLut/setLook, lumetri.applyMatch, lut.import |
| Lumetri 스코프 | scopes.read (웨이브폼, 패레이드, 히스토그램, 벡터스코프를 숫자로) |
| 비디오 리미터 | 효과 video_limiter 또는 내보내기 설정의 리미터 |
| 불투명도, 블렌드 모드 | effects.setParam {effect:"opacity", param:"blend", value:"Screen"} |
| 울트라 키 / 트랙 매트 / 루마 키 | 효과 ultra_key, track_matte, luma_key, color_key |
| Essential Graphics 텍스트/도형 | graphics.newText, graphics.newShape/newRectangle, graphics.set, graphics.setCharStyle, graphics.align |
| 타이틀 롤/크롤 | graphics.setRoll |
| 모션 그래픽 템플릿 | graphics.template.list/apply/export (.fcgt; .mogrt는 거부됨) |
| 캡션 | captions.newTrack/add/setStyle/import/export, transcript.createCaptions, graphics.upgradeCaption |
| 오디오 게인 / 노멀라이즈 | `clip.audioGain {mode:"set |
| 클립 볼륨 및 키프레임 | clipMixer.set, effects.setParam {effect:"volume", param:"level"} |
| 트랙 믹서, 서브믹스, 샌드, 오토메이션 | mixer.setStrip/addSubmix/addSend/addInsert/writeAutomation |
| Essential Sound(유형, 수리, 선명도, 덕킹, 자동 매치) | essentialSound.setType/set/applyPreset/autoMatch/generateDucking |
| 리믹스(음악 길이 재조정) | clip.remix {seconds} |
| 오디오 효과(EQ, 노치, DeNoise, DeHum, Enhance Speech…) | effects.apply (references/11-improving-audio.md 참조) |
| 멀티캠 | clip.createMulticam, multicam.cut, clip.multicamFlatten |
| 프록시 / 인제스트 | media.createProxies, media.toggleProxies, project.ingestSettings |
| 빠른 내보내기 / 미디어 내보내기 / Media Encoder | export.quick, file.exportMedia, export.queue.add/start |
| 프레임 내보내기 | file.exportFrame |
| EDL/XML/AAF/OMF/OTIO | file.exportInterchange, file.exportAaf, file.exportOmf |
| 프로젝트 관리자 / 미사용 항목 제거 / 미디어 연결 | file.projectManager {mode, handles, dryRun}, edit.removeUnused, media.findMissing/relink/autoRelink |
| 캐시 정리 | mediaCache.clean, sequence.deleteRenderFiles |
2026-11-03 기준 사용 불가 — 스냅샷, 재확인 필요(§0) (command_list/effects.list에서 검색했으나 일치 항목 없음): Generative Extend(AI), 개체 마스크 도구(AI), Media Intelligence 검색 / "유사 프레임 검색", Adobe Stock(비디오 및 오디오), Lumetri 기본 보정 자동 버튼(applyMatch만 존재), 렌더 후 교체, After Effects/Audition과의 Dynamic Link, Team Projects/Productions/Frame.io, 소셜 플랫폼 직접 업로드, 레이어드 PSD/AI 가져오기. 워크스페이스 및 비교 보기는 UI 전용입니다(브리지 모드에서 ui_* 도구 사용). 해결 방법: 프레임 홀드/슬립으로 수동 확장, 수동 마스크 + masks.track, 모션에는 EffectCraft, 오디오에는 SoundCraft.
레시피
러프 → 파인 컷
- 가져오기, 빈으로 정리, 클립 이름 지정; 푸티지가 많으면 서브클립 사용.
- 시퀀스를 만든 다음,
timeline.place {items:[...]}로 순서대로 배치(또는clip.automateToSequence);sourceIn/duration으로 범위 선택. - 불필요한 부분 제거:
timeline.razor+edit.rippleDelete, 또는 In/Out +sequence.extract. - 템포 조정: 컷에서
timeline.roll, 적절한 순간을 선택하려면timeline.slip. - 긴 토크헤드:
transcript.generate(Whisper 모델 필요, 설치 안 됨:transcript.downloadModel, ~290 MB, 먼저 물어볼 것) →removeFillers,removePauses.
16:9 푸티지로 9:16 릴 만들기
file.newSequence {width:1080, height:1920, fps:<푸티지 fps>}.- 클립을
timeline.place→clip.fillFrame(프레임 채움; 1080p에서 177.8%) 및 필요시auto_reframe효과 또는 수동motion.position키프레임. 대안: 16:9 시퀀스를 중첩하고 중첩 항목을 리프레임. - 텍스트를 안전 영역 내에 유지: 플랫폼 UI를 위해 상단 약 15%, 하단 약 25%는 여유를 둠.
- 큰 캡션과 굵은 그래픽이 일반적; 훅은 짧게(처음 1~2초).
- "Social Vertical 1080×1920" 프리셋 +
loudnessLufs:-14로 내보내기.
트랜지션: 직선 컷이 기본입니다. 디졸브(cross_dissolve, dip_to_black)는 시간이나 장소의 변화를 알립니다. effects.setDefaultTransition → 선택한 클립에 trim.applyDefaultTransition. 오디오: 튀는 컷에는 6~12프레임의 constant_power. 먼저 핸들을 확인하세요.
모션 및 키프레임: 두 시점에서 effects.setParam {effect:"motion", param:"scale|position|rotation", value, time, keyframe:true} → effects.setInterpolation {mediaTime, interpolation:"easeIn|easeOut|bezier"}. 오브젝트와 함께 회전하는 그림자의 경우, 모션 아래에 drop_shadow가 있는 transform 또는 basic_3d를 사용하세요(모션은 마지막에 적용됨).
오디오: essentialSound.setType(대화/음악/SFX/앰비언스) → autoMatch(기본값: 대화 -23, 음악 -25, SFX -21, 앰비언스 -30 LUFS) → 음성 set {key:"repair.noise.on"} 등 → 음악 type:"music" + generateDucking → 내보내기 loudnessLufs(소셜 -14, 방송 -23)를 통해 마스터. 피크는 -6/-3 dBFS 정도. SoundCraft로 핸드오프하여 파형/스펙트럼 편집, 심각한 복원, 고급 오디오 포스트 프로덕션을 수행하세요.
...