Podcast Video
두 명의 진행자가 주제에 대해 대화하는 1920x1080 비디오를 만듭니다. 각 주제마다 고유한 배경 사진, 제목 카드, 아이콘 및 애니메이션 음성 막대가 있는 스피커 레이블이 제공됩니다. 주제가 변경되면 전체 화면 와이프와 휙 소리가 나고, 아이콘은 팝과 함께 나타나며, 마지막 장면에는 구독 버튼과 크레딧이 표시됩니다. 사용자의 복제된 목소리로 시작할 수도 있습니다.
구성을 변경하기 전에 /hyperframes를 읽으십시오. 아래 스크립트는 이 스킬의 scripts/ 폴더에 있습니다. 비디오 프로젝트 폴더에서 실행하십시오.
0. 먼저 인터뷰
이 단계가 완료될 때까지 리서치, 작성 또는 생성을 하지 마십시오. 렌더링된 비디오는 다시 만들기 느리므로, 결정을 먼저 확정하십시오. 이 방법은 Matt Pocock의 grilling skill에서 비롯되었습니다.
결정은 트리 구조를 이룹니다. 어떤 질문은 다른 질문이 확정된 후에만 물을 수 있습니다. 라운드 방식으로 진행하십시오:
- 현재 전제 조건을 충족할 수 있는 모든 질문을 하고, 아직 듣지 못한 답변에 의존하는 질문은 하지 마십시오. 그 질문은 이후 라운드를 기다립니다.
- 각 질문에 번호를 매기고 권장 답변을 제공하십시오. "예"라고 답하면 수락하는 방식으로 작성하십시오.
- 답변을 기다린 후, 무엇이 해결되었는지 파악하고 다음 라운드 질문을 하십시오. 답변으로 인해 계획된 질문이 무의미해질 수도 있습니다. 그런 질문은 제거하십시오.
각 질문은 다음과 같은 형식으로 작성하십시오:
❓ **Q1** - **<제목>**: <질문>
➡️ <권장 답변>
사실은 당신의 일이고, 결정은 그들의 일입니다. 스스로 찾을 수 있는 것은 절대 묻지 마십시오: VoiceStudio가 실행 중인지, 어떤 음성 프로필이 있는지(GET /profiles), 폴더에 무엇이 있는지, 리서치 내용 등을 묻지 마십시오. 결정을 대신 내리지 마십시오. 평문으로 질문하여 사용자가 자신의 언어로 답변할 수 있도록 하십시오.
대략 다음 순서로 결정을 다루어야 합니다:
| 라운드 | 결정 |
|---|---|
| 1 | 주제와 구체적인 관점. 누가 시청하는지, 그들이 이미 알고 있는 것. 시청자가 이후에 해야 할 행동. 목표 길이. |
| 2 | 두 명의 진행자: 그들의 정체성과 관계(예: 전문가와 고객). 톤. 쇼 이름. 사용자의 목소리로 시작할지 여부. |
| 3 | 사용자의 목소리로 시작하는 경우: 어떤 프로필, 정확한 문구. 디자인된 진행자의 억양과 음성 특성. |
| 4 | 리서치 후: 사용할 결과물과 제외할 주장. 주제 목록(순서대로). |
| 5 | 비주얼과 사운드: 사진 종류, 각 주제의 아이콘, 와이프, 휙, 팝의 변경 사항. 비디오를 게시할 위치. |
요청에 이미 답변된 내용은 건너뛰십시오. 사용자가 "그냥 진행" 또는 "당신이 결정"이라고 말하면 질문을 중단하고 권장 답변을 적용한 후 목록으로 제시하십시오. 질문 수에는 제한이 없지만, 의미 없는 질문은 하지 마십시오. 모든 질문은 비디오에 변화를 주어야 합니다.
마지막으로 계획을 몇 줄로 요약하십시오: 주제, 시청자, 길이, 진행자, 오프닝, 주제 목록 및 행동 촉구. 1단계를 시작하기 전에 사용자의 확인을 기다리십시오. 나중에 결정이 다시 열릴 수 있는 경우(예: 리서치가 관점을 약화시키는 경우), 중단하고 질문하십시오.
1. 설정 확인
curl -s "$VOICESTUDIO_URL/profiles"가 응답해야 합니다. 기본 URL:http://localhost:3000. 서버에 API 키가 있는 경우VOICESTUDIO_API_KEY가 설정되어야 합니다. 절대 키를 프로젝트 파일에 기록하지 마십시오.ffmpeg와node가 PATH에 있어야 하며, HyperFrames 스킬이 설치되어 있어야 합니다.
무언가 누락된 경우 중단하고 사용자에게 이 스킬의 README를 안내하십시오.
2. 프로젝트 생성
npx hyperframes init <dir>를 실행한 다음 templates/script.example.json을 <dir>/script.json으로 복사하십시오.
3. 리서치 및 script.json 작성
먼저 주제를 리서치하십시오. 모든 통계는 실제 출처가 필요합니다. 해당 장면의 source 필드에 출처를 기록하고 숫자를 지어내지 마십시오. 자연스러운 대사를 작성하십시오(분당 약 150단어).
| 필드 | 의미 |
|---|---|
show | 모든 장면에 표시되는 쇼 이름 |
chips | 마지막 장면의 크레딧 레이블 |
voices | 스피커당 하나의 항목. name, role, color, 그리고 profile_id 또는 instruct와 seed 중 하나 |
scenes | 나타나는 순서대로. kicker, title, icon, 선택적 sub와 source. 마지막 장면은 아웃트로 |
lines | 말하는 순서대로: who, scene, text. 한 장면의 라인은 연속적이어야 함 |
icon은 주제에 맞는 Lucide 아이콘 이름입니다(예: phone-call).
사용자의 복제된 목소리로 시작하려면 VoiceStudio profile_id( GET /profiles에서 확인)로 음성을 추가하고, 고유한 첫 번째 장면을 할당한 후 "시작해 볼까요!"와 같은 인계 멘트로 라인을 끝내십시오. 소유자의 허락 없이 목소리를 복제하지 마십시오.
음성을 생성하기 전에 사용자에게 스크립트를 보여주십시오.
4. 음성 생성
python3 <skill>/scripts/make_voice.py
이 명령은 assets/audio/와 assets/lines.json을 작성합니다. 오디오는 캐시되므로 스크립트를 편집한 후 변경된 부분만 생성됩니다. 사용자가 음성을 다시 복제하는 경우 assets/audio/에서 해당 오디오를 삭제하여 다시 생성되도록 하십시오. 먼저 프로필의 ref_audio_path가 변경되었는지 확인하십시오: 저장되지 않은 복제는 이전 음성을 그대로 둡니다. 렌더링하기 전에 사용자가 오디오를 듣도록 하십시오.
5. 이미지, 아이콘 및 사운드 추가
이미지: 각 장면에는 assets/img/<장면-id>.jpg, 가로 방향, 최소 1920px 너비가 필요하며, 이전 장면과 다른 사진을 사용하여 모든 주제 변경이 시각적으로 구분되도록 하십시오. 사용자가 게시할 수 있는 이미지만 사용하십시오(예: Wikimedia Commons의 CC 라이선스 사진). 각 이미지를 assets/img/credits.json에 다음과 같이 기록하십시오:
{"<장면-id>": {"artist": "...", "license": "...", "page": "..."}}. 마지막 장면에 작가 이름이 표시됩니다.
아이콘:
npm pack [email protected] --silent && tar xzf lucide-static-0.460.0.tgz
mkdir -p assets/icons && cp package/LICENSE assets/icons/LICENSE
cp package/icons/<아이콘-이름>.svg assets/icons/ # 장면 아이콘당 한 번
rm -rf package lucide-static-0.460.0.tgz
사운드: 다음 명령을 실행하고 각각 출력된 파일을 복사하십시오:
npx hyperframes media-use resolve --type sfx --intent "짧은 휙 전환" --project .
npx hyperframes media-use resolve --type sfx --intent "빠른 팝 배지" --project .
mkdir -p assets/sfx
cp <휙 경로> assets/sfx/whoosh.mp3
cp <팝 경로> assets/sfx/pop.mp3
CC BY 사운드가 있는 경우 마지막 장면에서 chips를 통해 크레딧을 표시하십시오.
6. 빌드 및 확인
python3 <skill>/scripts/build.py를 실행한 다음 npx hyperframes check를 실행하십시오. 모든 오류를 수정하십시오. 그런 다음 npx hyperframes snapshot --at <초>를 실행하고 렌더링 전에 장면 전환 시 프레임을 확인하십시오. 와이프는 build.py가 출력하는 장면 시작 시간에 전체 화면으로 표시됩니다.
7. 렌더링
npx hyperframes render를 실행하십시오. MP4 파일은 renders/ 폴더에 생성됩니다. 비디오 1분당 몇 분이 소요될 수 있습니다.
파일을 확인한 후 측정 결과를 사용자에게 알리십시오: npx hyperframes audio <비디오> --json 명령으로 사운드 존재 여부와 음량 범위를 확인할 수 있습니다. 소리를 들을 수는 없으므로 사용자에게 직접 듣도록 요청하십시오.