Communitygithub.com

omniharmonic/agentic-video-editor

추가된 편집 영상에 대해 자막(SRT + ASS 스타일)을 생성, 검증 및 하드코딩하고, 렌더링된 동영상에서 재전사하여 정확한 SRT를 복원합니다. 대략적인 편집 이후부터 최종 렌더링 전까지 사용할 수 있으며, 가라오케 스타일의 짧은 자막이나 자막 검사가 필요할 때 유용합니다.

agentic-video-editor란 무엇인가요?

이 스킬은 비디오 편집 파이프라인에서 자막 생성 및 검증을 완전 자동화합니다. 편집 타임라인의 대사 세그먼트를 기준으로 자막을 생성하고, 선택한 스타일(팟캐스트, 쇼트, 미니멀 등)에 따라 ASS 형식으로 서식을 적용하며, FFmpeg을 통해 영상에 하드코딩합니다. 주요 기능으로는 대본 JSON 기반 자막 생성("ave captions"), 생성된 SRT/ASS 파일의 규칙 검증("ave captions check"), 렌더링된 영상에서 음성을 재전사하여 정확한 자막 파일 복원("ave captions retranscribe") 등이 있습니다. Claude Code, Cursor 등의 터미널 기반 AI 에이전트에서 사용할 수 있으며, 명령어와 정책 파일만으로 자막 과정을 세밀하게 제어할 수 있어 편집 소프트웨어(Resolve)를 직접 조작할 필요가 없습니다.

지원 대상~Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/omniharmonic/agentic-video-editor/tree/HEAD/skills/ave-captions

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

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

문서

자막(Captions)

자막은 work/transcript.json에서 계산되며, 편집 컷의 대화 세그먼트를 기준으로 매핑됩니다(제거된 단어는 사라지고, 룸 톤 채움은 자막으로 표시되지 않습니다). config/captions.styles.yaml의 규칙에 따라 분할되고, 일반 파일로 작성된 후 ffmpeg으로 인코딩됩니다. Resolve는 관여하지 않습니다.

명령어

ave captions <ep> --stage rough --style podcast        # -> captions/rough.srt + .ass, 새 edits/rough.vN.json (자막 설정 포함)
ave captions <ep> --stage rough --name s2              # 세션 편집 (--stage rough:s2와 동일) -> captions/rough.s2.srt, 새 rough.s2.vN.json
ave captions <ep> --stage select:<name> --style short  # 세로 클립: 가라오케 ASS (단어당 \kf), 65% 높이 블록
ave captions <ep> --stage final --burn [--video exports/final.mp4]   # 렌더링에 하드코딩 -> <video>.captions.mp4
ave captions check <ep> captions/rough.srt             # 규칙 위반 시 exit 1 + JSON 문제 목록 (SRT 또는 ASS)
ave captions retranscribe <ep> exports/final.mp4 [--srt-out f.srt] [--asr whisper] [--diarize]

스타일: podcast(하단 중앙, 흰색, 얇은 윤곽선), short(굵게, 단어 강조, 1080폭 기준 하단 25% 및 오른쪽 120px 안전 영역 확보), minimal(작고 조용함). 크기는 캔버스의 분수로 지정되므로, 1920x1080과 1080x1920 모두에서 동일한 스타일이 정확하게 적용됩니다. YAML에서 숫자를 조정하거나, <ep>/policy/captions.styles.yaml에서 에피소드별로 덮어쓸 수 있습니다(깊은 병합).

결과 평가

  1. JSON의 problems를 읽습니다. 종류: line_too_long, too_many_lines, orphan_line, too_short, too_long, reading_speed, overlap, empty. 다음 큐에 의해 박스가 제한된 reading_speed는 실제 문제입니다(빠른 화자): 사람에게 알리고, 숨기지 마십시오.
  2. SRT를 읽습니다. 구두점/절(clause)에서 끊어지는지 확인하고, 구절 중간("대부 / 분")에서 끊기지 않아야 합니다. 문제가 많으면 파일을 직접 수정하지 말고 YAML에서 avoid_ending_with/clause_starters를 조정하십시오.
  3. 자막이 하드코딩된 프레임을 확인합니다(ave frame을 사용하여 하드코딩된 동영상에서): 텍스트가 번잡한 영상 위에서도 읽을 수 있고, 안전 영역 안에 있으며, 하단 1/3을 가리지 않아야 합니다.
  4. 고유 명사: episode.json의 glossary에 추가하고 다시 실행합니다. {"glossary": {"open ai": "OpenAI"}}(틀린 것 -> 올바른 것, 여러 단어 가능) 또는 올바르게 대문자화된 이름 목록 ["Maren", "Cloudflare"](대소문자 구분 없이 일치). 일반 단어와 겹치는 이름은 피하십시오.
  5. drop_fillers(음, 어...)는 기본적으로 들리지만 자막에 포함되지 않습니다. 축어적으로 표시하려면 drop_fillers: []로 설정합니다.

최종 렌더링 흐름

자막 타이밍은 최종 컷에 따라 달라집니다. 컷 승인 후: 렌더링한 다음, 렌더링 파일에 대해 ave captions retranscribe를 실행하고 해당 SRT를 사이드카로 사용합니다(들리는 대로 정확한 단어와 타이밍). ASR 엔진은 FluidAudio Parakeet입니다. 빌드되지 않은 경우 명령은 whisper.cpp로 대체되며 warnings에 그 사실을 알립니다. 게시 전에 재전사된 SRT에서 잘못 들은 이름을 검토하십시오.

실패 모드

  • 재전사된 SRT가 소문자, 구두점 없음, 5초 큐, 시간이 몇 초 차이 나는 경우: 이는 whisper.cpp 대체(FluidAudio를 찾을 수 없음; 작업 트리에서 AVE_FLUIDAUDIO 설정)입니다. ave captions retranscribe ... --asr fluidaudio --srt-out <new file>를 다시 실행하십시오. 실제 에피소드 측정 결과: whisper 중간값 0.55초 빠름(p10 1.4초), Parakeet 0.13초 이내.

  • JSON의 글꼴 경고: 스타일의 선호 글꼴이 설치되지 않았습니다. 시스템 글꼴로 대체됩니다(실패하지 않음). motion-kit/brand/fonts에 OFL 글꼴을 번들로 제공하면 모든 시스템에서 동일한 출력을 얻을 수 있습니다.

  • No speech falls inside this edit's dialogue: 편집에 채움만 있거나 대본이 누락되었습니다. 먼저 ave transcribe를 실행하십시오.

  • 하드코딩된 동영상 크기가 문서 캔버스와 다른 경우(예: 프록시): ASS가 동영상 실제 크기로 자동 재생성됩니다.

  • 기존 편집을 덮어쓰지 마십시오. 모든 실행은 다음 vN을 생성합니다. captions/의 자막 파일은 파생되며 대체됩니다.

체크포인트

전체 최종본을 하드코딩하거나 쇼트를 게시하기 전에, 중단하고 사용자에게 스타일 선택과 하드코딩된 프레임을 보여주십시오.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

관련 스킬