editar-reel
누군가가 카메라를 보고 말하는 세로형 영상(이미 무음 및 불량 컷 제거됨)을 받아서 바로 업로드할 수 있도록 준비합니다. 화자가 말하는 내용은 건드리지 않습니다: 그 위에 편집 레이어만 추가합니다.
템플릿은 plantilla/ (Remotion)에 있습니다. 화면에 표시되는 모든 내용은 plantilla/public/plan.json에 설명되어 있습니다. 당신의 작업은 프로그래밍이 아닌, 기준에 따라 그 계획을 작성하는 것입니다.
요구 사항 (시작하기 전에 확인)
ffmpeg와whisper-cli(whisper.cpp). Mac:brew install ffmpeg whisper-cpp. Windows:winget install Gyan.FFmpeg및 https://github.com/ggml-org/whisper.cpp/releases 에서 whisper.cpp 압축 파일 다운로드 (whisper-cli.exe를 PATH에 추가).- Node 18 이상 (Windows:
winget install OpenJS.NodeJS), Google Chrome 설치. - 누락된 것이 있으면 사용자의 허락을 받고 직접 설치하세요. 설치 프로그램이 비밀번호를 요구하면 사용자가 직접 입력하게 하세요. 중간에 멈추지 마세요.
- Windows에서는
.sh스크립트가 Git Bash에서 실행됩니다 (Claude Code on Windows에서 사용).bash가 없으면 동등한 명령어를 사용하세요.
단계
1. 릴스 폴더 준비
cp -R <이-스킬>/plantilla ~/reels/<릴스-이름>
cd ~/reels/<릴스-이름> && npm install
cp <영상-파일> public/video.mp4
영상은 세로 1080×1920이어야 합니다 (4K 세로로 온 경우 ffmpeg -i in.mov -vf scale=1080:1920 -c:a copy public/video.mp4로 다운스케일; 얼굴을 확대하기 위해 자르지 마세요: 사람들은 여유 공간을 선호합니다).
2. 자막 추출 및 컷 찾기
bash <이-스킬>/scripts/transcribir.sh public/video.mp4 public
bash <이-스킬>/scripts/cortes.sh public/video.mp4
transcribir.sh는public/palabras.json(각 단어와 해당 초)을 생성하고 텍스트를 출력합니다. 전체를 읽으세요. whisper는 고유명사에서 오류를 범합니다 ("Cloud"를 "Claude"로):correcciones.json으로 수정하고python3 <이-스킬>/scripts/palabras.py public/tokens.json public/palabras.json correcciones.json를 실행하세요. 단어가 이해되지 않으면 사용자에게 물어보세요. 추측하지 마세요.cortes.sh는 컷 전환 지점(초)을 출력합니다. 이 값들은cortes_s로 계획에 들어갑니다.
3. 얼굴 위치 파악
고르게 분포된 6-8개의 프레임을 추출하여 얼굴 높이(1920 기준 픽셀)를 확인합니다:
for t in 1 5 10 15 20 25; do ffmpeg -y -v error -ss $t -i public/video.mp4 -frames:v 1 /tmp/cara_$t.jpg; done
cara_y = 눈 또는 코의 높이 (일반적으로 700-900). 줌은 그곳을 중심으로 하고, 제목은 머리 위에 배치됩니다: 가장 위에 있는 프레임에서 정수리가 어디인지도 기록하세요. y=450 위에 있으면 제목이 들어갈 공간이 부족하므로 제목을 줄이세요.
4. 계획 작성
plantilla/public/plan.json의 형식을 따르세요 (완전한 예시입니다). 다른 영상이나 캡처가 없으면 split과 pantallazos는 삭제하세요: 이들은 저장소에 포함되지 않은 예제 파일을 가리킵니다. cortes_s는 중복 없이 순서대로 나열되어야 합니다. 규칙:
리듬
- 컷당 하나의 줌 (
zooms, 컷 간 구간당 하나), 평면을 번갈아 가며: 1.0 → 1.16 → 1.0 → 1.26… 컷 시점의 스케일 변경이 점프를 가려줍니다. 1.3을 초과하지 마세요: 픽셀화됩니다. - 3-5초마다 화면에 새로운 요소가 등장하지만, 한 번에 하나의 아이디어만: 제목과 채팅이 동시에 나타나지 않도록 하세요.
후킹 (처음 2초가 모든 것을 결정)
gancho.linea는 첫 프레임부터 보여야 하며, 등장 애니메이션 없이 바로 표시됩니다: 이것이 썸네일 역할도 합니다.- 목소리 내용을 반복하지 마세요. 목소리가 "3백만 명이 이걸 봤다"고 말하면, 텍스트는 충돌하는 다른 내용을 말해야 합니다 ("내 AI가 만들었어요"). 반복하면 자막에 불과하며 기회를 낭비한 것입니다.
- 첫 프레임에 가장 좋은 것은 움직임입니다: 결과물(바이럴 영상, 전후 비교)이 위에, 화자가 아래에 있는
split으로, 첫 문장이 끝날 때 닫힙니다.
각 요소는 해당 단어와 함께 등장
palabras.json에서 해당 사물을 언급하는 단어의 정확한 초를 찾아, 요소가 0.15-0.3초 먼저 시작하도록 합니다. 단어 뒤에 나타나는 제목은 느리게 느껴집니다.lista[].filas[].marcar_s= 화자가 해당 행을 언급하는 초.
무엇을 언제 사용할지
| 화자가 말하는 내용 | 요소 |
|---|---|
| 몇 마디로 요약되는 아이디어 ("비결: 스킬") | titulos (짧은 대문자 키커 + 텍스트; *단어*는 강조됨) |
| AI에게 무언가를 요청한 경우 | chat, 그가 쓴 그대로의 메시지 (모르면 물어보세요) |
| 구체적인 이름: 폴더, 파일, 도구, 단계 | lista (최대 7행) |
| "결과를 봐" | pantallazos (실제 결과물 최대 3개 캡처) 또는 영상이 있는 split |
| "나를 팔로우해" 마무리 | cierre, 사용자 계정 포함 |
정직성 (협상 불가): 화면에는 진실된 것만 표시됩니다. 채팅은 실제로 작성된 메시지를 보여주고, 숫자는 실제 숫자를 보여줍니다. 모르면 물어보거나 표시하지 마세요.
안전 구역: 템플릿은 모든 요소를 x 110-900, y 250-1290 사이에 배치하여 Instagram 버튼과 캡션에서 멀리 떨어지게 합니다. 그 외부로 요소를 이동하지 마세요.
5. 전체 렌더링 전에 개별 프레임 확인
npx remotion still Reel out/f0.png --frame=0
각 요소에 대해 (초 × 30) 프레임을 하나씩 추출하여 확인하세요. 확인 사항: 얼굴이 절대 가려지지 않음 (목록과 갤러리는 의도적으로 배경을 어둡게 하지만), 텍스트가 잘리지 않음, 0번 프레임에서 후킹 문구를 읽을 수 있음.
렌더링이 "Waiting for root component to load"에서 멈춘 경우 시스템 Chrome을 사용하세요: --browser-executable="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" (Mac) 또는 --browser-executable="C:\Program Files\Google\Chrome\Application\chrome.exe" (Windows).
6. 렌더링 및 최종 검토
npx remotion render Reel out/reel.mp4
ffmpeg -v error -i out/reel.mp4 -f null - && echo "파일이 정상입니다"
ffmpeg -y -v error -i out/reel.mp4 -vf "fps=1,scale=216:384,tile=10x3" -frames:v 1 out/hoja.jpg
out/hoja.jpg (초당 한 프레임)를 확인하세요. 프레임이 "모자이크"처럼 보이거나 검은색으로 나오면 (Remotion 내 영상에서 가끔 발생), 해당 프레임만 remotion still로 렌더링하고 덧붙이세요: ffmpeg -i out/reel.mp4 -i fix.png -filter_complex "[0:v][1:v]overlay=enable='eq(n,N)'" -c:a copy out/reel_ok.mp4.
그런 다음 sonido-reel 스킬로 음악, 효과음 및 최종 볼륨을 추가하세요.
알려진 오류
- 단어가 붙은 자막 ("Yesto"):
<span>사이의 공백 하나가 렌더링에서 사라집니다. 템플릿은 이미 여백으로 분리합니다. 단어별로 텍스트를 추가할 때도 동일하게 처리하세요. - 영상 위에
filter: blur()나backdropFilter사용 금지: 검은색 또는 모자이크 프레임이 발생합니다. 어둡게 하려면 반투명 색상 레이어를 위에 씌우세요. - 분할 화면 위쪽 영상에 자체 텍스트가 있는 경우:
recorte_y를 조정하여 깨끗한 부분을 표시하거나,broll_desde_s로 다른 초를 선택하세요.