Short 편집
short-start 플럭스의 일부입니다. 미디어 세부사항은 short-media, 애니메이션은 short-animation, 검토 및 렌더링은 short-review를 참조하세요. 지원: hyperframes, hyperframes-cli, media-use.
먼저 프로젝트의 RULES.md와 ROTEIRO.md를 읽으세요. 프로젝트의 kit.json에는 반드시 handle(크리에이터가 선택한 @)이 있어야 합니다. 비어 있거나 "@SEU_CANAL"이면 계속하기 전에 크리에이터에게 물어보세요.
1. 나레이션
- mp3를
assets\audio\narracao_raw.mp3로 복사합니다. silencedetect=n=-40dB:d=0.6으로 긴 멈춤을 찾습니다. 후크에 해당하는 부분의 멈춤은 짧게 자르고, 에너지 넘치는 톤이면 0.8초보다 긴 멈춤을 줄입니다.tools\ffmpeg_recipes.md의 이음새 레시피를 사용합니다.build\transcribe.py로 전사하여 각 단어의 시간이 포함된assets\audio\narracao_words.json을 생성합니다.- 레벨 조정:
python -I -X utf8 build\level_voice.py <mp3> <words.json> video\assets\audio\narracao.mp3 template\video\에서hyperframes.json,package.json,meta.json,AGENTS.md,CLAUDE.md를video\로 복사합니다.meta.json의id를 조정합니다.
2. 미디어
- 내장 브라우저에서 pexels.com 페이지로 이동해
tools\pexels_search.js를 실행하여 여러 검색을 한 번에 수행합니다. - 썸네일을 다운로드하고 한 장(ffmpeg
tile)으로 만든 다음 선택하기 전에 살펴보세요. - 로고, 브랜드, 팀 셔츠, 대사와 맞지 않는 것은 버립니다.
curl -L -A "Mozilla/5.0" -e https://www.pexels.com/로assets\video\stock\에 다운로드합니다.- 배경 음악: Pixabay에서 "Content ID Registered"가 없는 트랙만
video\assets\audio\musica.mp3로 저장합니다. - 효과음:
tools\sfx\README.md를 참조하며video\assets\sfx\에 저장합니다. - 레시피(세로 1080×1920 또는 TV 창 1000×750)에 따라 클립을 잘라
video\assets\video\에 저장합니다. 후크용으로 역방향 클립을 만들어 루프에 사용합니다. cut이라는 셸 함수를 호출하지 마세요. 시스템cut명령어가 가려집니다.
3. 장면 (build\generate.py)
- 주석이 달린
template\build\generate.py를 시작점으로 삼습니다.SCENES = [(이름, 시작, 끝)]을 단어 시간으로 사용하며, 각 장면 내 시간은 로컬(0 = 장면 시작)입니다. lib_short의 구성 요소를 사용합니다:- 텍스트:
kline/words_js/slam/punch/shake/label; - 숫자:
onUpdate를 사용한 카운터; - 좋아요 및 공유:
like_block/plane_svg; - 상호작용:
comment_card/follow_card/step_badge.
- 텍스트:
- 모든 장면에 애니메이션을 넣습니다. 목록이 진행 상황을 요구하면 중첩 장면(예: 라이브러리의
pavio_scene, 각 항목마다 심지가 타오르다 클라이맥스에서 폭발)으로 주제별 표시기를 만듭니다. - 자막:
write_captions(WORDS, TOTAL, SKIP, alt_from, alt_top).SKIP은 장면 타이포그래피가 이미 대사를 표시하는 부분을 다룹니다. - 인덱스:
write_index(TOTAL, SCENES, SFX, dur_voz, 0.1, handle=HANDLE).HANDLE은build.ps1을 통해kit.json에서 가져옵니다. - @ 표시는 자막 아래에 (
WM_TOP) 있어야 합니다. 수동으로 위치를 지정하지 마세요. - 루프: 마지막 장면은 후크의 프레임 0에 해당하는 역방향 클립과 동일한 제목으로 끝납니다.
- 엔딩은 영상의 분위기를 따릅니다: 무겁고, 어둡고, 느린 영상에는 과격한 효과를 사용하지 않습니다.
- HyperFrames 규칙:
class="clip"+data-start/data-duration;- 클립 자체의 visibility나 opacity는 애니메이션하지 말고 내부 요소만 애니메이션;
- 이후의 fromTo에는
immediateRender:false사용; - 각
<audio>는 고유 id와 트랙을 가짐; - 비디오는 항상
muted; - SVG 선은 그리기 효과를 위해
pathLength="1"사용.
4. 생성, 확인 및 렌더링
build\build.ps1의$alvos를 조정합니다: 촬영 장면,.fv(전체 화면),.tv(TV 창)을 포함합니다.powershell -ExecutionPolicy Bypass -File build\build.ps1 -Duracao <TOTAL>을 실행합니다. 절대 출력을Select-Object -First로 전달하지 마세요.npx --yes hyperframes@<버전> check --json: 오류를 수정합니다. 예상되며 남아도 되는 오류:- 반투명 브랜드의 대비;
- 루프 제목이 너무 짧음.
- 스냅샷을 찍고(
snapshot -o <폴더> --no-end --at "..."), 연락처 시트를 살펴봅니다. 다음을 확인:- 화면 밖으로 나가는 텍스트;
- 읽을 수 없는 자막;
- 가려진 요소;
- 정지된 장면.
render --quality standard -o renders\<이름>_master.mp4로 렌더링하고ebur128=peak=true로 측정합니다(목표: 약 −13.5 LUFS, 피크 −2 dBTP 미만).- x264 CRF 19, AAC 192k,
+faststart로 바탕화면에 복사합니다. - 루프 확인: 프레임 0과 마지막 프레임을 나란히(
hstack) 비교하여 동일해야 합니다. video\REVIEW.md에 결정 사항, 측정한 내용, 시각적으로만 확인한 내용("아무도 소리를 듣지 않음")을 기록합니다.
5. 전달
비디오, 제목(TikTok 및 YouTube, 각각 5개의 # 포함), 설명, 고정 댓글을 보냅니다. 게시 시간을 알리고 48시간 후 스크린샷을 요청합니다.