Voiceover → glass reel은(는) 무엇을 하나요?
한 번의 요청으로 완성된 MP4가 출력됩니다. 사용자가 음성 파일(모든 오디오/비디오 형식, 최대 ~3분)과 선택적으로 스크립트 텍스트, 주제 노트 또는 참조 링크를 제공합니다. 나머지는 모두 당신이 처리하며, 오직 다음과 같은 경우에만 중단합니다:
- 로고 등 다운로드를 위해 한 번. 크레딧 예산은 없습니다. 모든 자료는 무료로 소싱됩니다.
(
references/higgsfield.md참조 - 테스트된 Pixabay / Wikimedia / thesvg 레시피). 어디서 무엇을 소싱했는지 보고하세요. 하지만 사용자가 명시적으로 유료 부록을 요청하지 않는 한, 대화에 금전 문제는 절대 등장하지 않습니다.
채팅에서는 사용자의 언어로 작업합니다. 화면에 표시되는 모든 내용은 음성의 언어로 표시됩니다.
생성 결과
음성 파일(및 선택적 스크립트)을 완성된 16:9 다큐멘터리 스타일 릴로 변환합니다. 한 번의 요청으로 애프터 이펙트에서 작업합니다. 공백과 숨소리를 자르고, 시각적 스토리를 작성하며, 무료로 모든 사진을 소싱하고 (Wikimedia Commons 아카이브 사진, Pixabay MCP 클립 및 초상화, thesvg MCP를 통한 로고 SVG, 스틸 이미지의 ffmpeg Ken-Burns 효과), 애프터 이펙트에서 기본적으로 편집을 구축합니다. 스타일: 다크 아카이브 다큐멘터리, 각 클립은 떠 있는 둥근 유리 프레임과 얇은 발광 테두리, 부드러운 푸시인 효과, 움직이는 원근 그리드와 단어 위에서 색상이 변하는 키워드, 큰 자막, 타자기 / 거대 단어 / 사진 카드 페이지, 컷 전환 시 플래시와 네거티브 플릭, 합성된 사운드 효과. 1080p H.264 MP4로 렌더링합니다. 누군가 음성, 음성 메모, 나레이션 또는 팟캐스트 클립을 제공하고 "릴, 비디오, 쇼츠, 설명 또는 편집물"을 요청할 때 사용하세요: "내 음성으로 비디오 만들어줘", "이 나레이션을 릴로 만들어줘", "유리 프레임 편집", "음성에서 클립 추출", "내 음성 녹음으로 릴 만들어줘", "내 음성에 맞춰 비디오 편집해줘", "유리 프레임과 그리드". 사용자가 아무 영상도 가지고 있지 않아도 작동합니다.
시작 전 확인 사항 (Mac 당 한 번씩만 확인하고, 실패 시 사용자에게 정확히 무엇을 수정해야 하는지 알림)
- macOS 26 이상 (온디바이스 전사)과 After Effects 2024 이상이 열려 있어야 합니다. AE에서 설정 → 스크립팅 및 표현식 → 스크립트가 파일 쓰기 및 네트워크 액세스 허용을 켜세요.
- Xcode 명령줄 도구 (
swiftc)가 필요합니다.scripts/build_tools.sh를 실행하세요.scripts/bin/{to_wav,transcribe,facebox,frames}를 컴파일합니다. 스크립트가 "permission denied" 오류로 실패하면 (업로드된 스킬은 실행 비트가 손실될 수 있음), 이 스킬 폴더에서 한 번chmod +x scripts/*.sh를 실행하세요. - 무료 소싱 준비:
pixabay및thesvgMCP 도구 (search_pixabay_images,search_pixabay_videos,search_icons,list_variants,get_icon_url,get_icon)와curl,ffmpeg(이미 엔진에서 사용 중)가 필요합니다. Wikimedia Commons는 인터넷과 적절한 사용자 에이전트만 있으면 됩니다. 크레딧, 계정, 잔액 확인이 필요하지 않습니다. - 첫 번째
transcribe실행 시 음성 인식 권한을 요청할 수 있습니다. 또한 온디바이스 모델을 한 번 다운로드할 수도 있습니다. - 저장되지 않은 변경 사항이 있는 다른 AE 프로젝트가 열려 있으면
build.sh가 거부합니다. 사용자에게 저장하도록 요청하세요. 사용자의 작업을 절대 폐기하지 마세요. 빌드 로그는 저장된 프로젝트를 닫았을 때PREVIOUS_PROJECT <path>를 출력합니다. 최종 렌더링 후, 해당 프로젝트를 다시 엽니다: 한 줄의 jsxapp.open(new File("<path>"));를 작성하고scripts/ae_run.sh로 실행하세요.
S = 이 스킬의 폴더. PY = /usr/bin/python3 (또는 Python 3.9+ 이상, 표준 라이브러리만 사용).
파이프라인
1. 프로젝트 폴더 및 음성
<proj>를 음성 파일 옆에<voiceover_name>_reel이라는 새 폴더로 만듭니다.PY S/scripts/reel.py prep <voiceover> <proj>를 실행합니다. 오디오를 변환하고, Mac에서 전사하며 모든 공백과 숨소리를 제거합니다. 결과는work/voice_cut.wav와work/words.json(단어 인덱스 → 프로그램 시간)입니다.- 그런 다음
PY S/scripts/reel.py words <proj>를 실행하고 전체 인덱스된 전사를 읽습니다. - 사용자가 스크립트를 제공한 경우, 전사와 비교합니다.
spell을 위해 잘못 들린 이름을 기록합니다 (예:"28": "Grok").
2. 스토리 (references/story.md를 읽은 후 <proj>/story.json 작성)
- 스크립트에 맞는 세계를 결정합니다: 시대, 장소, 2-5명의 반복 출연 캐릭터, 3-6개의 장소, 흑백 또는 컬러.
- 기본값: 1950-60년대 흑백 아카이브 다큐멘터리. 추상적인 주제는 사람과 장소가 됩니다.
- 호스트 룩을 선택합니다. 사용자가 직접 등장하기를 원하면, 호스트 참조로 사용자의 사진을 사용합니다.
- 전사를 샷으로 나눕니다. 각 샷은 단어 인덱스에서 시작합니다.
- host (TV 화면에서 카메라를 보며 말함): 3-6개 샷, 각 2-6초. 훅, 전환점 및 콜 투 액션에 사용합니다. 전체 런타임의 약 15-20%를 차지합니다.
- clip (유리 프레임 안의 생성된 영상): 대부분의 샷, 각 1.5-3초.
- type (타자기 페이지): 시작 질문 또는 섹션 제목, 최대 6단어.
- giant (빨간 레이블과 세리프체 부제가 있는 하나의 큰 단어): 명명된 개념.
- cards (로고 배지가 있는 2-4개의 사진 카드, 각 단어에 이름): 음성이 사람, 제품 또는 브랜드를 나열할 때. 로고는 말할 때만 나타납니다.
- list: 음성이 2-4개의 포인트를 나열할 때, 해당 단어 범위를 표시합니다. 키워드가 단어 위의 악센트 색상으로 전환됩니다.
- keys: 문장당 최대 하나.
- hits: 3-6개의 극적인 컷에
invert, 최대 2개의 "더 미친" 순간에strobe, 최대 2개의 피크에burn. - 동일한 클립 순간을 두 번 표시하지 마십시오.
- 샷에서 소싱 목록을 작성합니다:
- 각 스토리 클립은 8-12초의 스톡 영상 (또는 소싱된 스틸 이미지 위의 Ken-Burns 팬)이며, 연속된 샷을 다룹니다.
따라서 하나의 클립이 다른
in시간을 통해 여러 샷에 공급됩니다; - 카드 초상화, 장소 및 호스트 자료 - 모두 무료로 소싱됩니다;
- 선택적 배경 음악 (또는 없음:
music이 없으면 빌드에서 건너뜁니다).
- 각 스토리 클립은 8-12초의 스톡 영상 (또는 소싱된 스틸 이미지 위의 Ken-Burns 팬)이며, 연속된 샷을 다룹니다.
따라서 하나의 클립이 다른
3. 에셋 소싱 (references/higgsfield.md 읽기)
- 다음 순서로 소싱합니다: 스토리 클립 → 카드 초상화 → 장소 → (유지 시) TV 플레이트 → (유지 시) 호스트 클립. 테스트된 레시피에 따라 모든 다운로드를 확인합니다 (HEAD
content-type+content-length, curl-AUA + 재시도, Commons에서 제공하는 경우 SHA-1). 파일 → 소스 URL → 라이선스 → 작성자를work/SOURCES.md에 기록합니다. - 스토리 클립: Pixabay
search_pixabay_videos(video_type: "film", 일치하는 방향, 지속 시간 8-15초) 또는 Commonsfiletype:video(imageinfo→ curl 레시피로 다운로드 → Talks.ogv/.webm을 MP4로 트랜스코딩). 스틸 이미지는 ffmpeg 레시피로 Ken-Burns.mp4가 됩니다. - 호스트 클립 (사용자가 직접 카메라에 등장하는 경우에만):
PY S/scripts/reel.py chunks <proj>는 호스트 샷당 하나의 오디오 청크를work/host/host_NN.wav에 씁니다;- 청크 오디오를 사용자의 웹캠 클립에 합성하고
assets/host/host_NN.mp4로 저장합니다 (ffmpeg -map 0:v:0 -map 1:a:0 -shortest) -reel.py align이 단어를 정확히 일치시킵니다; PY S/scripts/reel.py align <proj>는 각 클립의 단어로부터 오프셋을 측정합니다. 자체 영상이 없는 경우 → 이 호스트 비트를 대신type/giant/cards페이지로 재구성합니다.
- TV 플레이트가 사용되는 경우,
PY S/scripts/reel.py screen <proj>/assets/tv_plate.png <proj>를 실행합니다. 그린 스크린을 찾습니다. 발견되지 않으면 다시 칠합니다 (ffmpeg drawbox, 참조의 §2) 또는 호스트 샷을full모드로 전환합니다 - 플레이트가 필요 없습니다. PY S/scripts/reel.py sfx <proj>를 실행하여 사운드 효과를 합성합니다 (라이선스 불필요).- 음악:
music을 생략 (기본값)하거나, 사용자의 트랙을 사용하거나, Commons 오디오 파일을 MP3로 변환합니다.
4. 빌드 및 확인
PY S/scripts/reel.py plan <proj>를 실행합니다.work/plan.json을 쓰고 검사를 출력합니다.story.json의 모든 ERROR를 수정하세요. WARN을 진지하게 받아들이세요: 반복된 클립, 호스트 립싱크.S/scripts/build.sh <proj>를 실행합니다. 약 70초 릴의 경우 약 1분 안에<proj>/reel.aep(컴 REEL)를 빌드합니다. 로그를 읽으세요: 사용된 글꼴, 경고.- 빠른 확인을 위해
S/scripts/render.sh <proj> --half를 실행합니다 (~2분). 그런 다음 프레임을 확인합니다:S/scripts/bin/frames <proj>/out/reel_half.mp4 <proj>/work/check.jpg 4 <약 16개 샷의 중간 초>;check.jpg를 확인하세요: 자막이 읽기 쉬우며 얼굴 위에 있지 않은지, 호스트 입술이 TV 안에서 움직이는지, 유리 프레임이 있는지, 검은색 간격이 없는지, 페이지가 비어 있지 않은지 확인합니다.story.json에서 수정한 후,plan,build및 확인을 다시 실행하세요.
- 최종:
S/scripts/render.sh <proj>를 실행합니다.<proj>/out/reel_1080.mp4(1920×1080, 25fps, 약 40Mbps, 사운드 포함)를 씁니다. - MP4를 보냅니다. 다음을 보고하세요:
- 길이;
- 확인할 수 없었던 사항;
- 수동으로 조정할 위치 (
reel.aep: 각 샷은02_SHOTS/03_PAGES에서 자체 컴포지션이며, 자막은CAPTIONS에 있습니다).
규칙
- 권리:
- 모든 것을 무료로 소싱: Pixabay MCP, Wikimedia Commons (각 파일의 라이선스 확인), 로고용 thesvg MCP, 로컬 합성 (ffmpeg Ken-Burns,
reel.py sfx). 기본적으로 유료 서비스 없음; Higgsfield 부록은 사용자가 명시적으로 요청할 때만 사용합니다. - 영화, 시리즈, 광고 또는 다른 사람의 소셜 게시물을 절대 스크래핑하지 마십시오.
- 로고는 thesvg MCP 또는 Wikimedia Commons에서만, 그리고 사용자의 확인 후에만 사용합니다.
- 음악은 선택 사항입니다 (생략, 사용자 자체 트랙, 또는 Commons 파일을 MP3로 변환).
- 사운드 효과는
reel.py sfx에 의해 합성됩니다.
- 모든 것을 무료로 소싱: Pixabay MCP, Wikimedia Commons (각 파일의 라이선스 확인), 로고용 thesvg MCP, 로컬 합성 (ffmpeg Ken-Burns,
- 목소리는 시계입니다.
- 모든 컷은 단어 위에, 그 단어의 한 프레임 앞에 위치합니다.
reel.py가 이를 수행합니다. - 속도나 단어를 절대 변경하지 마십시오.
- 자막은
spell로 잘못 들린 이름을 수정한 경우를 제외하고, 정확히 말한 내용을 표시합니다.
- 모든 컷은 단어 위에, 그 단어의 한 프레임 앞에 위치합니다.
- 사람:
- 겸손하고 시대에 맞는 옷;
- 현실적인 성인;
- 실제 공인을 캐릭터로 사용하지 않음;
- AI 모델과 회사는 가상의 캐릭터로 표시되며 자막과 로고로만 이름이 지정됩니다.
- 재실행은 저렴합니다.
plan과build는 결정론적이며reel.aep를 처음부터 다시 빌드합니다. 사용자가 수동 편집을 요청하지 않는 한,reel.aep를 직접 편집하는 대신story.json을 변경하세요. 일단 사용자가 직접reel.aep를 편집하면, 물어보지 않고 다시 빌드하지 마십시오. - AE는 한 번에 하나의 스크립트를 실행합니다.
scripts/ae_run.sh,build.sh및render.sh만 사용하십시오.- 종료 코드 4는 AE가 아직 바쁘다는 의미입니다: 기다리세요, 절대 다시 보내지 마십시오.
- 종료 코드 6은 AE가 스크립트를 시작하지 않았다는 의미입니다: 다이얼로그가 열려 있습니까?
파일
| 경로 | 설명 |
|---|---|
scripts/reel.py | prep / words / chunks / align / screen / sfx / plan (표준 라이브러리만) |
scripts/build.sh, scripts/ae/build_reel.jsx, scripts/ae/reel_lib.jsx | 애프터 이펙트 빌드 |
scripts/render.sh | aerender to H.264 (--half는 확인용) |
scripts/ae_run.sh | 실행 중인 AE에 하나의 스크립트를 보내고 기다림 |
scripts/tools/*.swift → scripts/bin/ | 오디오 변환, 온디바이스 전사, 얼굴 박스, 프레임 시트 |
references/story.md | story.json 형식, 샷 규칙, 전체 예제 |
references/higgsfield.md | 무료 소싱 매뉴얼: 테스트된 Pixabay / Wikimedia / thesvg 검색 및 확인 레시피, 에셋별 매핑, 유료 생성 부록 |
references/look.md | 빌드가 그리는 것 (크기, 타이밍, 색상) 및 조정 방법 |
references/troubleshooting.md | 오류 및 수정 사항 |
references/example_story.json | 완성된 70초 릴의 story.json (EXPERIMENT 테스트) |
PROMPT.md | 스킬 설치 방법 및 보낼 프롬프트 |