세로 릴 비디오 스튜디오 (기본)은(는) 무엇을 하나요?
30~90초 세로 동영상 하나를 위한 간단한 단계별 파이프라인입니다.
0. 첫 실행: 사용자에게 자신의 설정을 질문하세요 (기본값 사용 금지)
첫 번째 동영상 전에 brand.config.json 파일이 없거나, "configured": false이거나, 여전히 @yourhandle이 포함되어 있으면,
사용자에게 질문하고(한 번에 하나씩) 답변을 brand.config.json에 저장하세요:
- 소셜 핸들: Instagram, Threads, TikTok, X (사용자가 사용하는 것).
- 워터마크 텍스트 (정확히 표시되어야 하는 대로, 예:
@yourhandle또는@ig / @x) 및 위치 (bottom-center,bottom-left,top-left,top-right). - CTA 텍스트와 언급하는 핸들.
- 음성: 사용자의 ElevenLabs 음성 ID + 모델 + 언어, 또는 "직접 음성을 녹음하겠습니다". API 키는
ELEVENLABS_API_KEY시크릿으로만 요청됩니다. - 언어와 어조; 음성이 사용자의 이름/핸들을 어떻게 발음해야 하는지.
그런 다음 "configured": true로 설정하세요. 핸들을 임의로 만들지 말고, 다른 사람의 핸들(이 키트 작성자의 핸들 포함)을 재사용하지 말며, 여전히 @yourhandle이 표시된 워터마크를 렌더링하지 마세요.
아래의 플레이스홀더는 brand.config.json에 매핑됩니다:
| 플레이스홀더 | 설정 키 | 의미 |
|---|---|---|
{{HANDLE}} | handles.* | 사용자 자신의 핸들 |
{{WATERMARK}} | watermark.text, watermark.position | 사용자가 제공한 대로의 워터마크 텍스트와 위치 |
{{LANGUAGE}} | language, tone | 음성 해설 및 자막의 언어와 어조 |
{{VOICE_ID}} | voice.voiceId | 사용자가 선택한 음성 |
{{TTS_MODEL}} | voice.model | ElevenLabs 모델 (예: eleven_multilingual_v2) |
{{CTA}} | cta.text, cta.handle | 사용자의 콜투액션 |
API 키는 항상 환경 변수 ELEVENLABS_API_KEY에서 가져옵니다. 절대 출력하지 말고, 커밋되는 파일에 작성하지 마세요.
진행 흐름
- 사용자 설정 질문 (첫 실행) → 1. 주제 → 2. 리서치 및 사실 확인 → 3. 대본 초안 → 4. 사용자 승인 →
- 음성 해설 → 6. 타이밍 → 7. 장면 제작 → 8. 렌더링 → 9. Reels 안전 내보내기 →
- QA → 11. 커버 및 자막 → 12. 전달. 사용자가 변경을 요청하면, 변경 사항이 영향을 미치는 가장 이른 단계로 돌아가십시오 (새로운 텍스트 줄은 해당 줄에 대해서만 새로운 음성 해설을 의미합니다).
1–2. 주제 및 리서치
- 동영상당 하나의 스토리. 초보자를 위해 작성하세요.
- 모든 숫자, 날짜, 이름 및 인용문을 1차 출처(공식 페이지, 작성자의 게시물, 날짜가 찍힌 스크린샷)와 대조 확인하세요. 확인할 수 없는 것은 모두 버리세요. 사실을 지어내지 마세요.
- 사용한 링크를 포함한 짧은
sources.md파일을 유지하세요.
3–4. 초안 작성 후 대기
- 처음 2초 동안 2~4개의 후크 옵션(질문 또는 놀라운 대비)을 제공하세요.
- 시간 표시 표를 작성하세요:
시간 | 화면 텍스트 | 음성 해설. 45~65초를 목표로 하고 90초를 넘지 마세요. - 중단하고 초안을 사용자에게 보내세요. 사용자가 승인할 때까지 오디오를 생성하거나 렌더링하지 마세요.
5. 음성 해설
{{VOICE_ID}}를 사용하여 승인된 대본을 생성하세요 (scripts/tts.py참조). 두 가지 텍스트를 유지하세요: 표시 텍스트(자막에 표시되는 내용)와 TTS 텍스트(음성을 위해 철자된 내용, 예: "AI"에 대해A.I.로, 숫자는 단어로 작성).- 들어보세요. 잘못된 줄만 다시 생성하세요. 오디오에 같은 줄을 두 번 남기지 마세요.
- ElevenLabs 계정이 없으면 직접 음성을 녹음하세요. 똑같이 잘 작동합니다.
6. 타이밍
- 단어 타임스탬프(ElevenLabs 정렬 또는 오디오에서 Whisper 사용)를 가져와
timing.json에 저장하세요:{duration, words:[{w,s,e}], scenes:[{id,start}]}. - 애니메이션은 단어가 발화되는 프레임에서 시작됩니다:
frame = Math.round(seconds * 30).
7. 장면 제작 (Remotion, 1080 × 1920, 30fps)
- 어두운 배경, 하나의 밝은 텍스트 색상, 하나의 악센트 색상. 비트당 하나의 큰 헤드라인.
- 키네틱 텍스트: 각 헤드라인 단어는 발화되는 단어에 맞춰 나타납니다 (크기 0.6 → 1로 작은 오버슈트 있음).
- 1.5~3초마다 화면에 새로운 것이 하나씩 나타납니다. 숫자는 사람들이 읽을 수 있도록 최소 1.5초 동안 유지하세요.
- 후크 텍스트는 프레임 0부터 표시되므로 첫 번째 프레임이 스틸 이미지로 작동합니다.
- 안전 영역: 텍스트를 y = 200과 y = 1500 사이에 유지하세요.
{{WATERMARK}}텍스트는 사용자가 선택한 위치에 작게 배치하세요 (기본 하단: y ≈ 1430). - 출처를 밝혀 실제 스크린샷과 로고를 사용하세요. 모형은 "일러스트레이션"으로 표시하세요.
8–9. 렌더링 및 내보내기
npx remotion render src/index.ts <CompositionId> out/raw.mp4
bash scripts/reels-export.sh out/raw.mp4 out/final-reels.mp4
내보내기 결과: 1080 × 1920, H.264 High ≤ 4.1, yuv420p (TV 범위), BT.709, 고정 30fps, 8~12Mbps, AAC 48kHz, +faststart, −14 LUFS / ≤ −1 dBTP. 동영상을 90초 미만으로 유지하세요.
10. QA (항상, 전달 전에)
bash scripts/qa-check.sh out/final-reels.mp4를 실행하고 scripts/contact-sheet.sh 출력을 확인하세요. 확인 사항:
- 오디오: 단어가 명확하고, 잘린 부분이 없으며, 반복된 줄이 없고, 음량이 ≈ −14 LUFS입니다.
- 비디오: 텍스트가 잘리지 않았고, 안전 영역 밖에 있는 것이 없으며, 멈춘 클립이 없고, 처음이나 마지막 1초가 비어 있지 않습니다.
무언가를 보내기 전에 수정하고 다시 렌더링하세요.
11–12. 커버, 자막, 전달
- 2
4개의 커버 옵션, 1080 × 1920 및 1080 × 1350 그리드 버전. 하나의 큰 후크, 하나의 주요 이미지, 최대 23개의 작은 숫자 카드. 핵심 텍스트는 중앙 1080 × 1080 내부에 유지하세요. - 자막: Instagram (후크, 본문,
{{CTA}}, 몇 개의 해시태그), Threads (더 짧게, 해시태그 없음), TikTok. - 최종 MP4, 작은 미리보기 (< 40MB), 커버, 자막,
.srt파일 및 출처 목록을 전달하세요.
규칙
- 어떤 것도 게시, 업로드 또는 구매하지 마세요. 파일을 사용자에게 전달하세요.
- 지어낸 사실은 없습니다. 모든 출처와 표시하는 모든 오픈소스 작성자를 표시하세요.
- 사용할 권리가 있는 음악, 클립 및 음성만 사용하세요.