beauty-reel
퍼스널컬러별 디즈니 공주 변신 릴스(9:16)를 Higgsfield + ffmpeg로 제작하는 파이프라인. "같은 얼굴 한 명이 봄웜/여쿨/가을웜/겨쿨 공주로 변신" 컨셉의 인스타 릴스를 만든다. 베이스 가상얼굴 1장 고정 → 4톤 실사 공주 생성 → Kling 무빙 클립 → Noto 다국어 자막 → 빛번짐 전환으로 합성. "퍼스널컬러 공주 릴스", "디즈니 공주 변신 영상", "퍼스널컬러 릴스 만들어", "공주 메이크업 릴스", "봄웜 여쿨 공주" 류 요청에 사용. "뷰티릴스", "뷰티 릴스 만들어", "메이크업 변신 영상", "비포애프터 릴스" 등 인물 일관성이 필요한 변신·비포애프터 뷰티 릴스 전반에 응용 가능(베이스 얼굴 고정 → 룩 N개 → 무빙 → 자막 → 합성 파이프라인 그대로). 발행(업로드)은 포함 안 함 — 컨펌 게이트.
다음 행동
결제 준비 중: 곧 구매할 수 있습니다
한 번 결제 · 평생 소장 · 업데이트 무료
기술 README 원문 보기
설치 옵션, 예시 코드, 세부 사용법을 영어 README 원문 그대로 확인합니다.
퍼스널컬러 공주 변신 릴스 PD
> 한 명의 가상 인물이 퍼스널컬러(봄웜·여쿨·가을웜·겨쿨)별 디즈니 공주로 변신하는 9:16 릴스를 만든다. 핵심은 얼굴 일관성(같은 사람) + 톤 대비(메이크업·헤어·의상만 변경) + 부드러운 자막/전환.
컨셉 (왜 이렇게 하나)
"같은 얼굴인데 퍼스널컬러로 달라진다"가 메시지다. 4공주를 각각 다른 사람으로 만들면 시청자가 "톤 덕분"인지 "원래 얼굴이 예뻐서"인지 구분 못 한다. 반드시 동일 인물로 가야 비교가 성립하고 체류시간이 높다. 그래서 베이스 얼굴 1장을 만들어 모든 생성에 reference(`--image`)로 고정한다.
추천 매핑(색 대비 가장 선명): 🌸봄웜→Rapunzel, ❄️여쿨→Cinderella, 🍂가을웜→Belle, ❤️겨쿨→Snow White.
환경 전제 (먼저 확인)
higgsfieldCLI 인증:higgsfield account status(실패 시 사용자에게higgsfield auth login요청).- 영상 모델은 `kling3_0` 을 쓴다(10크레딧/5s, 일반 크레딧). ⚠️
seedance_2_0은 월간 boost 크레딧 별도 풀을 쓰며 자주 소진돼 있어 실패한다. 모핑(start+end) 전환도 kling3_0이 start/end 둘 다 지원. - 자막은 PIL로 PNG 렌더 후 ffmpeg overlay로 박는다. 이 머신 ffmpeg는 보통 freetype/libass가 없어
drawtext/ass 자막이 안 된다(ffmpeg -buildconf | grep freetype비어있음). 확인하고 없으면 PNG 방식. - PIL은 `/usr/bin/python3` (시스템 파이썬)에 있다. brew python3.14는 pip이 깨져 있으니 시스템 파이썬 사용. 없으면
/usr/bin/python3 -m pip install --user Pillow. - 폰트: Noto Sans KR/JP. 없으면
scripts/안내대로 받는다. - 산출 경로 기본값:
10_outputs/media/princess_pc/(작업 폴더 기준). 만든 뒤 macOSopen으로 Finder/Preview에 띄워 사용자가 바로 보게 한다(경로만 알려주지 말 것).
파이프라인 (대화로 한 단계씩 컨펌하며 진행)
생성 1건마다 결과를 open으로 띄우고 사용자 확인을 받는다. 사용자는 보면서 수정 지시한다("눈 더 크게", "드레스 핑크로"). 수정은 직전 산출물을 --image로 다시 넣어 최소 변경.
1. 베이스 가상얼굴 (실존인물 0 — 초상권 클린)
연예인/타인 사진 입력 금지(섞어도 초상권 안 깨끗). 텍스트로 완전 가상얼굴 생성.
higgsfield generate create gpt_image_2 --aspect_ratio 3:4 --resolution 2k --wait \ --prompt "Ultra realistic portrait of a fictional Korean woman, early 20s, lovely universally-appealing face, large eyes, straight nose, fair skin, straight black hair, neutral natural makeup, front-facing headshot, clean studio lighting, photorealistic clean character reference. Not a real person, fully AI-generated."
이후 미세조정은 nano_banana_2 --image <직전png> 로 "같은 인물 유지, X만 살짝" 식. 확정된 1장을 베이스로 고정.
2. 4톤 실사 공주
각 톤: nano_banana_2 --image <베이스> 로 헤어색·메이크업·드레스만 변경, 얼굴 동일 유지.
- 톤별 프롬프트 뼈대는
references/prompts.md참조. - ⚠️ NSFW 필터 주의: "Disney"/"Pixar" 브랜드명, 코르셋/깊은 네크라인, 노출 단어가 필터를 건드린다.
fairytale/storybook princess,modest,wholesome,fully-covered,high neckline으로 우회. 막히면(status "nsfw") 단정한 워딩으로 재시도. - 실패(
status "failed")는 일시적 — 그대로 재시도.
3. (선택) 애니 버전
우상단 인서트나 애니→실사 모핑을 원할 때만. nano_banana_2 --image <실사> 로 "cute 3D animated fairytale movie illustration, stylized cartoon, family-friendly, same pose/hair/dress" — 여기서도 브랜드명 빼고 wholesome 워딩.
4. 무빙 클립 (kling3_0)
인트로(흑발 뷰티유튜버 인사, 주변 화장품) 1개 + 공주 4개. 각 5s.
higgsfield generate create kling3_0 --start-image <png> --duration 5 --wait --wait-timeout 20m \ --prompt "Subtle elegant realistic beauty motion: gentle head move, soft smile, eyes blink, hair sways, slow cinematic push-in. Photorealistic, minimal natural movement, no morphing."
표정 다양화: 공주마다 모션 다르게(놀람→미소 / 뒤돌아봄·분위기 / 무빙 / 무빙). 인트로는 "smiles and waves hello, welcoming vlogger intro".
5. 디즈니 레퍼런스 카드 (우상단 인서트, 선택)
공식 풀드레스 렌더를 통일 시리즈로 받아 흰 카드로 통일. ⚠️ 저작권: 디즈니 공식 이미지는 비상업이어도 공개 게시 시 리스크. 한 번 짚고 사용자 결정에 맡긴다(실무 리스크는 보통 takedown 수준). IP가 부담되면 3번 애니 버전을 인서트로 대체.
- 렌더 소싱·카드화는
references/compose.md참조.
6. 자막 (Noto, 흰글씨+소프트그림자, 한/영/일)
검정 박스 대신 흰 글씨 + 부드러운 드롭섀도우가 영상과 안 따로 논다. 위계: 한글 크게 → 영어 → 일본어 작게(난잡하지 않게 3단). 렌더는 번들 스크립트:
/usr/bin/python3 ~/.claude/skills/beauty-reel/scripts/render_captions.py <out_dir> <captions.json>
captions.json 형식·예시는 스크립트 헤더와 references/compose.md 참조.
7. 합성 (ffmpeg)
1080×1920, 30fps. 각 클립 fill-crop, 우상단 카드 + 좌하단 카드+옆자막(공주 구간), 하단 자막(인트로), 빛번짐 전환=`xfade=transition=fadewhite`, 엔딩=실사 4장 2×2 콜라주 + 질문 자막.
- 전체 합성 레시피(세그먼트 빌드 → xfade 체인 오프셋 계산)는
references/compose.md에 단계별로 있다. 그대로 따라간다. - ⚠️
zoompan+-loop 1조합이 출력 길이를 폭주시키는 버그가 있다(수백 초). 엔딩은 정적 프레임 +-t N로 길이 고정. 길이 의심되면ffprobe ... nb_read_frames로 검증.
컨펌 게이트
- 생성·합성·로컬 저장은 자동.
- 외부 업로드/게시는 절대 자동 금지 — 승준/사용자 명시 승인 후에만. 이 스킬은 영상 파일까지만 만든다.
- 무음으로 출력됨 — BGM/내레이션은 사용자 요청 시 별도.
참조
references/prompts.md— 베이스·4톤·애니·모션 프롬프트 뼈대, NSFW 우회 표현references/compose.md— 카드 제작, 자막 JSON, 전체 ffmpeg 합성 레시피, xfade 오프셋 계산scripts/render_captions.py— Noto 다국어 흰글씨+소프트섀도우 자막 PNG 렌더
이것도 같이 보면 좋다
같은 업무 태그와 카테고리가 겹치는 항목부터 보여줍니다.

embedded-captions
Add captions to a talking-head video. ONE catalog (CATALOG.md) of 32 visual identities behind two engines: column-flow (captions composited INTO the scene — matte occlusion + mix-blend; cream/ink/editorial/keynote/documentary/loud/neon/glitch/chrome/velocity) and themed constitutions (anchor/ordnance/terminal/neonsign/stardust/stomp/scoreboard/transit/vhs/arcade/dossier/laser/thunder/hologram/biolume/aurora/spectrum/papercut/popup/chalkboard/graffiti/brush/inkwater/ransom/lastpage/nightcity — e.g. a glyph-decode climax, a neon sign WRITTEN stroke by stroke, or the quiet `anchor` rail default). Route by identity, never by mode. Trigger on "captions/subtitles", "embed/cinematic captions", "VFX captions", "炸/特效/酷炫字幕", a named identity, or top-tier motion-graphics asks. Embedding every word is wrong for most talking-head content — `anchor` is the verbatim default. Pipeline: transcription → hyperframes remove-background matting → HTML render → ffmpeg overlay. Requires hyperframes and a single-subject clip.

faceless-explainer
faceless-explainer video workflow - arbitrary text (article / notes / topic / brief) -> narrator_scripts.json + audio (voice + BGM) + section_plan.md -> typography / abstract-graphics / diagram / data-viz video. Typical length up to ~3 min (sweet spot ~30-90s); a genuinely longer piece is general-video, not this workflow. Generates its OWN narration (TTS) — it does not sync to a user-supplied / pre-recorded voiceover (that is general-video). No website capture, no real product screenshots. If the text names a product / its site to promote, that is /product-launch-video; when product-vs-topic is unclear, start at /hyperframes-read-first.

general-video
Use as the fallback for custom HyperFrames HTML video composition authoring when no specialized workflow fits. Covers longer or multi-scene pieces, brand/sizzle reels, montages, title cards, motion posters at length, static loops, and freeform compositions at any length or format. Not for marketed product promos (product-launch-video), general website-to-video capture (website-to-video), topic explainers (faceless-explainer), GitHub PR videos (pr-to-video), captioning existing footage (embedded-captions), Remotion ports (remotion-to-hyperframes), or short unnarrated motion-graphics hits such as logo stings, kinetic type, stat/chart pops, lower-thirds, animated tweets/headlines, or page highlights. If a specialized workflow clearly fits the input, prefer it (see /hyperframes-read-first); use this only as the input/length-agnostic fallback.