/fabrica-videos-corte — 자동 편집
에이전트형 비디오 공장(Fábrica de Vídeos Agêntica) 스킬입니다. 음성 녹음을 정리합니다: 묵음, 오류, 더듬거림, 반복 테이크를 제거하고 각 문장의 가장 좋은 버전만 남깁니다. 원본은 절대 수정되지 않습니다.
당신은 비디오 편집자입니다. 모든 명령은 프로젝트 루트의 터미널에서 실행합니다. TRABALHO = trabalho 폴더입니다.
사용 시기
- 클라이언트가 녹음을 보내며 "정리해 줘", "멈춤 부분을 잘라 줘", "오류를 제거해 줘"라고 말할 때.
fabrica-videos-rapido스킬 및fabrica-videos-reels스킬 내에서 애니메이션 동기화 전에 사용합니다.
작동 방식
멈춤(묵음) 은 자동으로 제거됩니다. 스크립트가 오디오를 분석하여 묵음을 찾아냅니다. 오류나 반복 테이크는 텍스트를 읽는 사람(당신)이 결정합니다. 클라이언트는 보고서를 확인하고 결과물을 들어보며 검증합니다.
단계별 가이드
- 스튜디오 형식의 녹음. 휴대폰에서 온 경우: 원본을
TRABALHO\originais\에 복사하고npm run converter -- "<원본>" <slug>를 실행합니다(TRABALHO\public\gravacao-<slug>.mp4생성). 4K HDR이 아닌 녹화에도 적용됩니다: 변환기가 영상을 세로로 회전하고 1080×1920으로 자르며 30fps로 변환합니다. 변환된 파일과 원본에서 프레임을 추출하여(ffmpeg -ss 20 -i <파일> -frames:v 1 ...) 회전과 색상이 일치하는지 비교합니다. - 자막 생성(전사):
npm run legendar -- "trabalho\public\gravacao-<slug>.mp4"(백그라운드 실행; 녹음 2분 기준 약 1분 소요). - 분석:
npm run cortar -- analisar "trabalho\public\gravacao-<slug>.mp4"→cortes\gravacao-<slug>.cortes.json및cortes\gravacao-<slug>.falas.md생성 (시간, 묵음, "발화 N에서 반복되는 것 같습니다" 알림이 포함된 대화 테이블). - 제거할 부분 결정. 전체 대화 테이블을 읽고
.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): 비교하여 유지할 테이크는 대본의 텍스트를 말하는 것이거나, 말을 바꾼 경우 가장 완전한 것입니다. 두 개의 좋은 테이크가 서로 다른 내용을 말하는 경우 판단이 어려우면, 자르지 말고 클라이언트에게 물어보십시오.
- 반복 테이크: 마지막 완전한 테이크를 유지합니다(실수하면 다시 시작함); 이전 테이크는 제거합니다:
- 적용:
npm run cortar -- aplicar cortes\gravacao-<slug>.cortes.json→TRABALHO\public\gravacao-<slug>-limpa.mp4및cortes\gravacao-<slug>.relatorio.md생성 (제거된 내용, 시간, 이유 및 그 자리에 있던 텍스트). - 듣지 않고 확인: 정리된 비디오를 전사합니다(
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를 수정하고 여기에 기록합니다.
- 클라이언트에게 보여주기: 정리된 비디오와 보고서 요약(이전 및 이후 길이, 컷 수, 당신이 결정으로 제거한 발화(멈춤 제외) 및 정리된 비디오에서 각 이음매의 초(
.cortes.json의resultado.fica에 있는 남은 구간 길이 합계))를 보냅니다. 청취 확인은 클라이언트의 몫입니다.
설정 (.cortes.json의 config에서, 이후 다시 적용)
| 필드 | 기본값 | 설명 |
|---|---|---|
pausaMin | 0.5초 | 이 크기 이상의 묵음이 잘립니다. 값이 높을수록 더 자연스럽고 컷이 적습니다. |
folga | 0.12초 | 각 컷 전후에 남는 여유 공간입니다. 발화가 너무 붙어 있으면 0.18로 올리십시오. |
folgaFinal | 0.35초 | 비디오 끝에 남는 묵음입니다. |
ruidoDb | 자동 | 묵음으로 간주되는 임계값입니다. 시끄러운 방: 명령 끝에 더 높은 값(예: -32)을 추가하여 analisar를 다시 실행하십시오. |
스크립트가 컷을 맞추는 방법 (첫 번째 실제 녹화로 검토됨)
- 멈춤(묵음): 오디오에서 측정된 묵음을 기준으로 합니다. 최대 0.1초의 딸깍 소리로 분리된 동일한 멈춤의 조각은 하나의 멈춤으로 합쳐집니다.
- 시작과 끝: 첫 번째 단어 이전과 마지막 단어 이후의 모든 것(자세 잡기, 프레임 밖으로 나가기)이 제거되며, 시작 부분에 0.12초, 끝 부분에
folgaFinal이 남습니다. remover에 표시된 발화: 컷은 유지되는 마지막 단어 이후 첫 번째 멈춤부터 유지되는 다음 단어 이전 마지막 멈춤까지 이루어집니다. 기준은 Whisper 시간이 아닌 오디오의 묵음입니다.
알려진 한계
- Whisper 시간: 실제 녹화에서 긴 멈춤 후 발화의 시작은 최대 0.4초 지연될 수 있고, 단어 끝은 최대 0.25초 정도 차이가 날 수 있습니다. 전체 발화 컷은 묵음에 인접하므로 영향을 받지 않습니다. 반면, 문장 중간(더듬거림, 양쪽에 묵음 없음)의 컷은 Whisper 시간에만 의존합니다: 이러한 지점을 더 주의 깊게 확인하고 클라이언트에게 듣도록 요청하십시오. 이 경우는 아직 실제 녹화에서 발생하지 않았습니다.
pausaMin보다 작은 멈춤은 유지됩니다(문장 사이의 자연스러운 호흡).- 이미지의 급격한 컷: 분할 화면에서는 정상입니다. 점프가 거슬리면 전환 효과를 발명하지 말고 클라이언트에게 알리십시오.
- 한 번에 150개 이상의 구간이 있으면 스크립트가 거부합니다.
pausaMin을 높이십시오.