프리미엄 비디오 스킬 — v3.3 (앵커 그리드 + 사운드)
음성 스크립트를 프리미엄 HyperFrames 숏폼 비디오로 변환하는 시니어 에이전트 오케스트레이션 스킬로, 다음을 포함합니다:
- 앵커 그리드 (킥커 → 히어로 → 바디 → 칩 → 프레젠터, 하단 고정)
- 운동학적 타이포그래피 (단어별 스태거 애니메이션)
- SVG 애니메이션 (움직이는 요소가 포함된 기술 다이어그램)
- 글래스모피즘 증거 카드 + 하단 서드 + 종료 화면
- 모션 블러 와이프 전환
- 완전한 사운드 시스템 (SFX 합성, 큐 시트, 오디오 믹싱)
- 디자인 계약 검증 (prepare.py 게이트)
- 재현 가능한 파이프라인 (scenes.sh → prepare.py → build_index.py)
파이프라인 (순서는 변경 불가)
voice script
│
▼
generate.py → new_scene.py → prepare.py → build_index.py
(parse) (scene files) (validate) (root HTML + wipes)
│ │
▼ ▼
npx hyperframes lint → npx hyperframes render
(0 errors gate) (MP4 output)
│
▼
python3 scripts/gen_sfx.py # SFX 합성 (일회성)
python3 scripts/mix_audio.py # VO + 큐 + 배경음 → master.wav
ffmpeg mux → final.mp4
단계별 실행
# 1. 음성 스크립트로부터 씬 구성 + 루트 HTML 생성
python3 generate.py --script my_script.txt --topic Tor --output index.html
# 2. 검증 게이트 (대비, 타입, 안전 영역, 필드 리듬)
python3 scripts/prepare.py
# 3. 린트 (0 에러여야 함)
npx hyperframes lint
# 4. 미리보기 및 렌더링
npx hyperframes preview
npx hyperframes render
# 5. 오디오 파이프라인
python3 scripts/gen_sfx.py # 14종 SFX를 처음부터 합성
python3 scripts/mix_audio.py # VO + 큐 + 배경음 → master.wav
ffmpeg -i rendered.mp4 -i renders/master.wav \
-c:v copy -c:a aac -shortest final.mp4
앵커 그리드 (하단 고정, 불변)
모든 씬은 동일한 하단 절반을 사용하며, 상단 절반만 재구성됩니다:
| 앵커 | 요소 | 위치 | 애니메이션 |
|---|---|---|---|
| 1 | 킥커 | 왼쪽 상단 | y:-26에서 위로 슬라이드, 0.32초 동안 페이드 인 |
| 2 | 히어로 | 상단 밴드 (1–3단어) | 1.3→1 스케일, 44px→0 드리프트, 느린 상승 드리프트 |
| 3 | 바디 | 카드 / 주행계 / 라인 | 56px→0 슬라이드 업, .95→1 스케일 |
| 4 | 칩 | 하단 영역 (3–6단어) | 30px→0 슬라이드 업, 0.26초 페이드 인 |
| 5 | 프레젠터 | 오른쪽 하단, 프레임에 맞게 자름 | .92→1 스케일, y:46→0, 0.34초 페이드 인 |
프레임 0은 포스터입니다 — 씬 1 (data-cover="1")은 완전히 구성된 상태로 열립니다.
6색 필드 순환
인접한 두 씬이 동일한 배경 필드를 공유하지 않습니다:
accent → ground → ink → secondary → tertiary → quaternary
prepare.py는 연속된 두 씬이 필드를 공유하면 빌드를 실패시킵니다.
모든 텍스트/배경 쌍은 WCAG ≥ 4.5:1 대비를 충족합니다.
사운드 시스템
SFX 합성 (다운로드 불필요, 라이선스 불필요)
python3 scripts/gen_sfx.py는 14가지 사운드 효과를 생성합니다:
| SFX | 용도 |
|---|---|
pop.wav | 모든 씬 전환 |
click.wav / key.wav | UI 요소, 목록 체크 |
chime.wav | 공개 / 점수 |
ping.wav | 알림 |
notify.wav | CTA |
riser.wav | 큰 전환 전 |
impact.wav | 강한 시각적 효과 |
whoosh.wav | 빠른 움직임 |
error.wav | 오류 / 거부 |
큐 시트 — assets/sfx/cues.json
섹션 기준 오프셋(VO 재녹음에도 유지):
{ "at": "scenes", "file": "pop.wav", "gain": 0.5 }
{ "at": "vo2-0.30", "file": "riser.wav", "gain": 0.3 }
{ "at": "vo9+0.55", "file": "notify.wav", "gain": 0.4 }
오디오 믹싱 — scripts/mix_audio.py
- VO + SFX 큐 + 배경음 →
renders/master.wav ebur128로 음량 측정, −14 LUFS로 보정- 실제 피크 ≤ −1 dBTP
alimiterwithlevel=false(자동 레벨 함정 방지)- 배경음 볼륨 0.15 → −29 LUFS (~13 LU under −16 LUFS VO)
- 사이드체인 덕킹 없음 — 레벨 차이가 덕킹 역할
기술 주제 (자동 애니메이션 + 증거)
스크립트에 인식된 키워드가 포함되면 오케스트레이터가 다음을 삽입합니다:
| 구성 요소 | 처리 |
|---|---|
| SVG 다이어그램 | 움직이는 요소 + animateMotion이 있는 노드 링크 흐름 |
| 증거 오버레이 | 출처 배지가 있는 글래스모피즘 카드 |
| 전환 | 애니메이션 전 모션 블러 와이프 |
| 오디오 큐 | 애니메이션 시작 시 "whoosh" SFX |
인식 키워드: tor, onion, vpn, proxy, isp, relay, network, packet, encryption, cybersecurity, dns, cdn, blockchain, ai, machine learning 및 기타.
입력 스크립트 형식
일반 텍스트 (자동 타이밍 ~145 wpm)
Same resume everywhere? That's why you're rejected.
Tailor it per company.
Read the **job description**.
One resume does not fit every company. Customize and get shortlisted.
타임스탬프가 있는 구간
[0-4s] Same resume everywhere? That's why you're rejected.
[4-10s] Tailor it per company.
[10-14s] Read the **job description**.
강조: **단어** → 오른쪽 정렬, 브랜드 색상, 굵기 950, 팝 애니메이션.
파일
| 파일 | 용도 |
|---|---|
generate.py | CLI 진입점 |
orchestrator.py | 파이프라인: 파싱 → 감지 → 분해 → 씬 생성 → 루트 빌드 |
design_system.py | 디자인 토큰, 정렬 규칙, 검증 |
PARAMS.json | 편집하는 유일한 디자인 파일 |
scripts/prepare.py | 검증 게이트 + 토큰 주입 |
scripts/new_scene.py | 앵커 그리드 씬 구성 생성기 |
scripts/build_index.py | 연속 타이밍 + 적응형 와이프가 있는 루트 HTML |
scripts/gen_sfx.py | 처음부터 SFX 합성 |
scripts/mix_audio.py | VO + 큐 + 배경음 → master.wav |
assets/sfx/cues.json | 섹션 기준 큐 시트 |
scenes.sh | 재현 가능한 씬 목록 템플릿 |
compositions/_scene-base.html.tmpl | 앵커 그리드 스켈레톤 |
compositions/wipe.html | 모션 블러 전환 |
skill.md · skill.json | 문서 + 스키마 |
요구사항
- Python 3 (표준 라이브러리)
- HyperFrames CLI:
npx hyperframes init / preview / render / lint - Node.js ≥ 22, FFmpeg
- ffprobe (오디오 측정용)
라이선스
MIT — 자유롭게 수정, 공유, 비디오 판매 가능.