비디오 편집기
클립 폴더를 완성된 단편 비디오로 변환합니다. 에이전트가 편집자 역할을 합니다: 스토리를 결정하고 편집 계획을 작성하며, 스크립트는 기계적인 부분을 정확히 수행하므로 컷이 비트에 맞춰 떨어지고, 어떤 것도 실수로 반복되지 않으며, 레터박스가 생기지 않습니다.
먼저 LOCAL.md 파일이 있으면 읽으십시오: 이 파일에는 이 머신의 Python, 브랜드 파일 및 미디어 폴더 경로가 들어 있습니다. 소유자, 브랜드 폰트, 로고 및 기본 스타일은 브랜드 파일(~/.video-editor/brand.json, references/brand.md 참조)에 저장되며, 스크립트에는 절대 저장되지 않습니다.
트리밍이나 간단한 크롭만 필요한 단일 클립, 한 클립에 자막 추가, 그리고 게시는 설치 환경의 소셜 스킬(XNP의 경우 xnp-social)에 속합니다. 이 스킬은 편집을 수행하고, 해당 스킬은 검토, 자막, 계획 및 게시를 담당합니다.
비디오 유형 목록은 없습니다
모든 요청은 혼합형입니다. 일치하는 템플릿을 찾지 마십시오. 대신 요청서(brief)로부터 네 가지를 결정하십시오. 비디오가 중간에 성격이 바뀌면 섹션별로 결정합니다:
- 스파인: 타이밍을 결정하는 요소.
- 음악: 마디와 비트에 컷, 에너지에 따라 샷 선택, 드롭이 클라이맥스(
len은"2bar","1beat"). - 음성: 단어가 길이를 결정, 구절 끝에서 그림 컷, 음악은 목소리 아래로 덕킹(
audio_db토킹 샷, 길이는 초 단위). - 스토리 또는 연대기: 도착, 전개, 순간, 여운; 액션 및 장소 변화에 컷, 음악은 배경.
- 하이브리드는 섹션마다 스파인을 전환: 6초 shout-out은 음성, 그 다음 공연 영상은 비트에; 또는 연대기 기반 여행 스토리 중간에 비트 컷 몽타주.
- 음악: 마디와 비트에 컷, 에너지에 따라 샷 선택, 드롭이 클라이맥스(
- 목적지 및 디자인. 어디로 가는지(Reel, Story, carousel, feed, TikTok, Shorts, YouTube)와 그 공간을 어떻게 사용할지: 전체 화면, 프레임된 정사각형 또는 디자인된 배경 위의 4:5 그림, 또는 샷마다 전환. 습관이 아닌 영상과 목적에 따라 선택하십시오; 9:16 크롭이 망칠 넓은 순간은 프레임된 Reel, carousel 또는 16:9 요약이 적합할 수 있습니다. 각 플랫폼이 그림을 어떻게 처리하고 각 디자인이 언제 적합한지는 references/formats.md를 읽으십시오. 길이는 목적지와 소재를 따릅니다.
- 필수 요소. 반드시 등장하고 식별 가능해야 하는 지명된 인물, 로고, 날짜, 감사 인사, 특정 순간, 자막 라인. 요청서가 정말 하나를 열어두는 경우에만 질문하십시오.
- 사운드 레이어. 음악만; 음악과 군중 또는 앰비언스가 살짝; 음성과 그 아래 음악; 음성만. 음성에는 자막이 필요합니다(아래 자막 참조).
그런 다음 계획을 작성하고, "destination"을 설정하면 캔버스, 안전 영역 및 길이 제한이 따릅니다. references/examples.md는 네 가지 작업 예시(애프터파티 릴, shout-out, shout-out에서 공연 영상으로 전환, 여행 스토리)를 복사할 유형이 아닌 추론 과정으로 보여줍니다. references/craft.md에는 모든 예시에 적용되는 편집 규칙이 있습니다.
워크플로우
스크립트는 scripts/에 있습니다; LOCAL.md의 Python, PYTHONUTF8=1 PYTHONIOENCODING=utf-8, FFmpeg 및 ffprobe가 PATH에 있어야 실행합니다. 스킬 외부의 프로젝트 폴더에서 작업하십시오(src/, audio/, log/, proxy/, out/, review/, edit.json).
- 브리프(Brief). 영상 속 인물과 내용, 각 인물을 인식하는 방법, 이벤트, 목적, 위의 네 가지 결정 사항.
brief.txt에 작성하십시오; Gemini가 읽습니다. - 영상 로깅.
gemini.py log WORKDIR src/*.mp4 --context brief.txt --ratio 9:16는 클립별로log/NAME.json에 다음을 기록합니다: 누가 어디에 있는지(크롭을 위한 x 분수), 액션, 감정, 에너지, 사운드, 음성, 품질, 9:16 창이 피사체를 담는지, 최적의 크롭 중심 및 용도(오프너, 피크, 반응...). 클립당 약 1센트입니다. 로그는 단서입니다: 얼굴, 크롭 중심 및 "최고의 순간"을 프레임에서 확인한 후에 구축하십시오. - 확인(시트).
sheet.py는 하나의 FFmpeg 실행으로 레이블이 지정된 접촉 시트를 만듭니다:--every 2로 클립 전체,--times, 후보 비교a.mp4@3 [email protected],--crop 9:16 --cx 0.4로 소스를 프레임된 상태로 미리보기,--grid 10으로 크롭 계획. 이미지는 직접 읽으십시오; 소유자에게 보지 말라고 요청하지 마십시오. - 계획.
edit.json을 작성하십시오(references/edit-format.md 참조). 각 샷은 다른 순간을 지명합니다; 각각에 이유를 적으십시오. - 검증.
validate.py edit.json(render.py도 실행하며 오류 시 거부). 오류: 동일한 영상이 두 번 사용됨, 소스가 너무 짧음, 알 수 없는 이동, 허가 없는 박스형fit, 플랫폼 UI 영역의 텍스트, 누락된 파일, 음악이 너무 짧음. 경고: 같은 클립에서 2초 미만 간격의 샷, 유사한 샷, 비트를 벗어난 컷, 프레임된 소스 내 검은 가장자리, UI 영역 근처 로고. 모든 경고를 읽고 결정하십시오; 단순히 무음 처리하지 마십시오. - 드래프트 렌더.
render.py edit.json --out out/v1-draft.mp4 --draft(반 크기, 빠름). 그런 다음sheet.py out/v1-draft.mp4 --plan edit.json --out review/v1.png는 각 샷의 시작, 중간, 끝을 보여줍니다: 프레임, 머리, 텍스트 배치 및 각 샷이 설명과 일치하는지 확인하십시오. - 풀 렌더.
render.py edit.json --out out/v1.mp4. 느린 프리셋, 4K 소스 30초에 약 5분; render.py는 크기, 길이, 사운드, 샷별 검은 막대, 검은 프레임 및 계획의max_mb를 확인합니다. - 비평.
gemini.py review out/v1.mp4 --context brief.txt --plan edit.json --out review/v1.json(1센트 미만). 각 노트를 주장으로 처리하십시오: 무언가 변경하기 전에 프레임이나 계획과 대조하십시오. 올바른 텍스트를 "안전하지 않음"으로, 올바른 날짜를 "오타"로 부른 적이 있습니다. 실제 발견 사항은 반복적으로 보이는 샷, 손이 주요 제스처를 가림, 프레임 내 전화기, 결함으로 읽힌 플래시였습니다. - 반복 새 버전 번호로; 전달된 파일을 절대 덮어쓰지 마십시오. 버전별로
edit.json을 보관하십시오(edit-v2.json으로 복사)하여 모든 버전을 다시 렌더링할 수 있도록 하십시오. - 전달 LOCAL.md에 명시된 방식으로, 편집 내용을 단어로 설명(샷별로, 텍스트 내용, 음악이 피크인 지점)하고, 소셜 스킬로 파일을 넘겨 검토, 자막 및 게시를 진행하십시오. 게시는 항상 소유자의 명시적 승인이 필요합니다.
자막
음성 자막은 소셜 스킬의 작업입니다: 먼저 편집을 렌더링한 다음, 자막 도우미(XNP의 경우 xnp-social/scripts/captions.py transcribe)를 완성된 렌더링에 대해 실행하여 단어 시간이 편집과 일치하도록 하고, 필수 승인 단계를 거친 후 버닝합니다. 최종 타임라인에 대해 승인된 .srt 또는 .ass 파일이 이미 존재하면, 계획의 captions.file이 렌더링 중에 이를 버닝합니다.
정직한 한계
유사 샷 검사는 그림 해시와 평균 색상을 사용합니다: 동일한 순간이 두 번 사용되는 것을 잡지만, 다른 순간에서 "같은 각도의 같은 사람"은 잡지 않습니다. 그 의미론적 검사는 Gemini 로그 및 리뷰와 접촉 시트 읽기에서 나옵니다. 자동 비트 감지는 없습니다: BPM과 다운비트 시작점(music.start)을 제공하면 그리드가 정확합니다. 얼굴 추적은 없습니다: 팬 및 크롭 중심은 로그와 시트에서 나옵니다. Gemini의 타임코드는 긴 클립에서 드리프트할 수 있습니다. 프록시는 타임코드를 버닝하여 정확성을 유지하고, log는 순간이 클립을 지나갈 때 경고합니다.
파일
scripts/common.py 계획 로더, 타이밍 계산, 프로브, 브랜드, 그레이드. scripts/render.py 단일 패스 렌더러. scripts/validate.py 검사기. scripts/sheet.py 접촉 시트. scripts/gemini.py 로깅 및 리뷰. 참조: formats.md, edit-format.md, craft.md, examples.md, brand.md.