Communitygithub.com

eduardogalbiati/fabrica-videos-corte — 자동 편집

음성 녹음에서 묵음, 오류, 더듬거림 및 반복 테이크를 자동으로 제거하고 각 문장의 최상의 버전만 남깁니다.

fabrica-videos-corte — 자동 편집란 무엇인가요?

이 스킬은 '에이전트형 비디오 공장(Fábrica de Vídeos Agêntica)'의 일부로, 음성 녹음(예: 강연, 튜토리얼, vlog)을 자동으로 정리하여 프로페셔널한 최종 영상을 만듭니다. 핵심 기능은 '묵음 제거', '오류/반복 테이크 정리', '더듬거림 제거'를 통해 각 문장의 가장 완성된 버전만 남기는 것입니다. 사용자는 자동 생성된 '대화 테이블'을 검토하고, 잘라낼 부분을 JSON 파일에 명시적으로 표시한 후 자르기 스크립트를 실행하기만 하면 됩니다. 이 스킬은 Claude Code, Cursor, Codex와 같은 AI 코딩 에이전트와 함께 사용하도록 설계되었으며, CLI 명령어(npm run)를 통해 운영됩니다. 원본 녹음은 절대 수정되지 않으며, 편집 내역과 이유를 상세히 기록한 보고서(PDF, 마크다운)가 자동 생성됩니다. 또한 Whisper 기반의 자동 자막 생성 및 타임코드 분석을 활용하므로, 오디오의 정확한 묵음 지점을 기준으로 편집이 이루어져 Whisper 타임스탬프의 오차를 보완합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/eduardogalbiati/fabrica-de-video-skills/tree/HEAD/.claude/skills/fabrica-videos-corte

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

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

문서

/fabrica-videos-corte — 자동 편집

에이전트형 비디오 공장(Fábrica de Vídeos Agêntica) 스킬입니다. 음성 녹음을 정리합니다: 묵음, 오류, 더듬거림, 반복 테이크를 제거하고 각 문장의 가장 좋은 버전만 남깁니다. 원본은 절대 수정되지 않습니다.

당신은 비디오 편집자입니다. 모든 명령은 프로젝트 루트의 터미널에서 실행합니다. TRABALHO = trabalho 폴더입니다.

사용 시기

  • 클라이언트가 녹음을 보내며 "정리해 줘", "멈춤 부분을 잘라 줘", "오류를 제거해 줘"라고 말할 때.
  • fabrica-videos-rapido 스킬 및 fabrica-videos-reels 스킬 내에서 애니메이션 동기화 전에 사용합니다.

작동 방식

멈춤(묵음) 은 자동으로 제거됩니다. 스크립트가 오디오를 분석하여 묵음을 찾아냅니다. 오류나 반복 테이크는 텍스트를 읽는 사람(당신)이 결정합니다. 클라이언트는 보고서를 확인하고 결과물을 들어보며 검증합니다.

단계별 가이드

  1. 스튜디오 형식의 녹음. 휴대폰에서 온 경우: 원본을 TRABALHO\originais\에 복사하고 npm run converter -- "<원본>" <slug>를 실행합니다(TRABALHO\public\gravacao-<slug>.mp4 생성). 4K HDR이 아닌 녹화에도 적용됩니다: 변환기가 영상을 세로로 회전하고 1080×1920으로 자르며 30fps로 변환합니다. 변환된 파일과 원본에서 프레임을 추출하여(ffmpeg -ss 20 -i <파일> -frames:v 1 ...) 회전과 색상이 일치하는지 비교합니다.
  2. 자막 생성(전사): npm run legendar -- "trabalho\public\gravacao-<slug>.mp4" (백그라운드 실행; 녹음 2분 기준 약 1분 소요).
  3. 분석: npm run cortar -- analisar "trabalho\public\gravacao-<slug>.mp4" → cortes\gravacao-<slug>.cortes.json 및 cortes\gravacao-<slug>.falas.md 생성 (시간, 묵음, "발화 N에서 반복되는 것 같습니다" 알림이 포함된 대화 테이블).
  4. 제거할 부분 결정. 전체 대화 테이블을 읽고 .cortes.json의 remover 목록을 채웁니다:
    • 반복 테이크: 마지막 완전한 테이크를 유지합니다(실수하면 다시 시작함); 이전 테이크는 제거합니다: { "falas": [2, 3], "motivo": "errou e recomeçou" };
    • 같은 문장을 두 번 완전히 말하고 중간에 긴 멈춤이 있는 경우(실제 녹음에서 최종 CTA): 첫 번째가 마음에 들지 않아 반복한 것입니다. 마지막 것을 유지하고, 클라이언트에게 어떤 것이 제거되었는지 알려서 교체할 수 있도록 합니다;
    • 시작 전 워밍업("자, 시작합니다", "그래", 잡담) 및 CTA 이후 모든 것: 제거;
    • 문장 중간의 더듬거림 또는 단어 하나: npm run cortar -- palavras cortes\gravacao-<slug>.cortes.json <번호>로 단어별 시간을 확인합니다; { "de": 12.30, "ate": 13.10, "motivo": "gaguejou" } 사용;
    • 대본 외의 코멘트("아니, 잠깐", "다시", "컷"): 제거;
    • 의도적인 멈춤(숫자 앞의 긴장감): manter에 추가, 예: { "de": 20.1, "ate": 21.4 };
    • 대본이 있는 경우(roteiros\<slug>.md): 비교하여 유지할 테이크는 대본의 텍스트를 말하는 것이거나, 말을 바꾼 경우 가장 완전한 것입니다. 두 개의 좋은 테이크가 서로 다른 내용을 말하는 경우 판단이 어려우면, 자르지 말고 클라이언트에게 물어보십시오.
  5. 적용: npm run cortar -- aplicar cortes\gravacao-<slug>.cortes.json → TRABALHO\public\gravacao-<slug>-limpa.mp4 및 cortes\gravacao-<slug>.relatorio.md 생성 (제거된 내용, 시간, 이유 및 그 자리에 있던 텍스트).
  6. 듣지 않고 확인: 정리된 비디오를 전사합니다(npm run legendar -- "<...-limpa.mp4>") 그리고 npm run falas -- legendas\gravacao-<slug>-limpa.json을 읽습니다. 세 가지 확인:
    • 텍스트가 그가 말하고자 한 내용이어야 하며, 중간에 잘린 단어나 오류 잔재가 없어야 합니다(첫 실제 패스에서 워밍업의 "그래."가 남아 있었습니다: 이것이 결함이 발견된 방식입니다);
    • "이후 멈춤(pausa depois)" 열에 약 0.8초 이상의 값이 없어야 합니다: 정리된 비디오의 긴 멈춤은 두 컷 사이에 남은 조각입니다;
    • 시작과 끝: 정리된 비디오에서 프레임 시트를 추출하여(ffmpeg -i <limpa> -vf "fps=1/2.5,scale=180:-1,tile=7x2" -frames:v 1 <folha.jpg>) 그가 프레임 안에 있고 첫 프레임부터 마지막 프레임까지 말하고 있는지 확인합니다.
    • 잔여물이 있으면 remover를 조정하고 다시 적용합니다. 결함이 스크립트의 문제라면 cortar.mjs를 수정하고 여기에 기록합니다.
  7. 클라이언트에게 보여주기: 정리된 비디오와 보고서 요약(이전 및 이후 길이, 컷 수, 당신이 결정으로 제거한 발화(멈춤 제외) 및 정리된 비디오에서 각 이음매의 초(.cortes.json의 resultado.fica에 있는 남은 구간 길이 합계))를 보냅니다. 청취 확인은 클라이언트의 몫입니다.

설정 (.cortes.json의 config에서, 이후 다시 적용)

필드기본값설명
pausaMin0.5초이 크기 이상의 묵음이 잘립니다. 값이 높을수록 더 자연스럽고 컷이 적습니다.
folga0.12초각 컷 전후에 남는 여유 공간입니다. 발화가 너무 붙어 있으면 0.18로 올리십시오.
folgaFinal0.35초비디오 끝에 남는 묵음입니다.
ruidoDb자동묵음으로 간주되는 임계값입니다. 시끄러운 방: 명령 끝에 더 높은 값(예: -32)을 추가하여 analisar를 다시 실행하십시오.

스크립트가 컷을 맞추는 방법 (첫 번째 실제 녹화로 검토됨)

  • 멈춤(묵음): 오디오에서 측정된 묵음을 기준으로 합니다. 최대 0.1초의 딸깍 소리로 분리된 동일한 멈춤의 조각은 하나의 멈춤으로 합쳐집니다.
  • 시작과 끝: 첫 번째 단어 이전과 마지막 단어 이후의 모든 것(자세 잡기, 프레임 밖으로 나가기)이 제거되며, 시작 부분에 0.12초, 끝 부분에 folgaFinal이 남습니다.
  • remover에 표시된 발화: 컷은 유지되는 마지막 단어 이후 첫 번째 멈춤부터 유지되는 다음 단어 이전 마지막 멈춤까지 이루어집니다. 기준은 Whisper 시간이 아닌 오디오의 묵음입니다.

알려진 한계

  • Whisper 시간: 실제 녹화에서 긴 멈춤 후 발화의 시작은 최대 0.4초 지연될 수 있고, 단어 끝은 최대 0.25초 정도 차이가 날 수 있습니다. 전체 발화 컷은 묵음에 인접하므로 영향을 받지 않습니다. 반면, 문장 중간(더듬거림, 양쪽에 묵음 없음)의 컷은 Whisper 시간에만 의존합니다: 이러한 지점을 더 주의 깊게 확인하고 클라이언트에게 듣도록 요청하십시오. 이 경우는 아직 실제 녹화에서 발생하지 않았습니다.
  • pausaMin보다 작은 멈춤은 유지됩니다(문장 사이의 자연스러운 호흡).
  • 이미지의 급격한 컷: 분할 화면에서는 정상입니다. 점프가 거슬리면 전환 효과를 발명하지 말고 클라이언트에게 알리십시오.
  • 한 번에 150개 이상의 구간이 있으면 스크립트가 거부합니다. pausaMin을 높이십시오.

Individual skills in this repo

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

관련 스킬