← 카탈로그
스킬curated

reels-pd

 

유슬레스서울 인스타 릴스(9:16) 자동 파이프라인. 소스/TTS → STT 컷편집 → 한국어 자막 번인 → 1080x1920 출력까지 한 번에. video-use(컷/자막)·ElevenLabs(STT/TTS)·ffmpeg-full(libass)을 묶은 "릴스PD" 오케스트레이터. 업로드(게시)는 포함 안 함 — 컨펌 게이트.

#video

다음 행동

/reels-pd
기술 README 원문 보기

설치 옵션, 예시 코드, 세부 사용법을 영어 README 원문 그대로 확인합니다.

reels-pd — 릴스PD 파이프라인 v1

> RAG 차용 "유튜브 PD 오케스트레이터" 패턴을 우리 자산으로 구현. 6단계 중 1~5(파일 완성)까지 자동. 6(업로드)은 별도·수동/컨펌.

무엇을 하나

1줄 명령으로 릴스 영상 파일(9:16, 자막 번인)을 뽑는다. P0에서 손으로 검증한 시퀀스를 스크립트화한 것.

[1 소스] → [2 STT 컷/자막] → [3 모션·b-roll(옵션)] → [4 TTS] → [5 9:16] → (6 업로드=별도)

실행

# 테스트(TTS 나레이션 자동 생성):
~/.claude/skills/reels-pd/reels_pd.sh --tts "서울의 어느 밤. 익숙한 골목에서 낯선 향이 스친다. 유슬레스 서울."

# 실제(푸티지 투입):
~/.claude/skills/reels-pd/reels_pd.sh --source /abs/clip.mp4 --out ~/Developer/video-use/test/footage

옵션: --voice <ElevenLabs voice_id> (기본 Sarah), --out <dir> (기본 video-use/test/footage).

출력: <out>/edit/<stem>_916.mp4 (1080x1920, 한국어 자막 번인, -14 LUFS).

구성 자산 (의존)

단계도구비고
1 소스(입력) / TTS=ElevenLabs--source 실푸티지 권장. --tts는 단색배경 테스트용
2 STT·컷·자막video-use helpers + ElevenLabs ScribeScribe는 op run -- curl 직접 호출(transcribe.py 키버그 우회, L046)
3 모션·b-rollHyperFrames / fal MCPv1 미포함. edl.json의 overlays[]에 렌더 mp4 경로 추가하면 render.py가 합성
4 TTSElevenLabs--tts 모드에서만
5 9:16ffmpeg-fullscale cover→center crop 1080x1920
6 업로드(별도)인스타 Graph API = P2, 컨펌 게이트. 이 스킬은 게시 안 함

경계 (지킴)

  • 시크릿: ElevenLabs 키는 1Password(op://1B-PROJECT/hermes/ELEVENLABS_API_KEY)만. 평문 .env 안 만든다. op run --env-file=video-use/.env가 해석.
  • 선민맥(uselesssunmin) 예외 (2026-06-16): op desktop integration이 SSH/헤드리스 환경에 안 닿아 op 인증 불가(authorization timeout). → 회사(ops) ElevenLabs 키 1개를 평문 ~/Developer/video-use/.env(권한 600)로 주입 허용. 본진이 SA 토큰(nova-sa-token)으로 키 읽어 ssh stdin 주입, 선민맥은 키값만 보유(1B vault 접근 0). 노출 시 ElevenLabs만 회전. 본진은 op:// 원칙 유지 — 평문 예외는 선민맥 한정.
  • ffmpeg: 자막/텍스트 번인엔 ~/.local/ffmpeg-full(libass) 필수. 시스템 homebrew ffmpeg는 libass 없음(lessons L046). 스크립트가 사전 점검해서 없으면 멈춤.
  • 업로드 금지: 6단계(외부 게시)는 비가역 → 승준 컨펌. 이 스킬은 파일 생성까지만.
  • 트랙: Apple ID 2 (유슬레스/1B). NOA 아님.

self-eval (수동 권장)

final_916.mp4의 컷 경계·자막 가독성 프레임을 ffmpeg -ss <t> -frames:v 1 로 뽑아 눈으로 확인. video-use SKILL의 자동 self-eval(timeline_view)은 v2에서 통합.

P2 — 인스타 게시 (reels_publish.sh, resumable 직접 업로드)

> 호스팅 불필요. IG Graph API upload_type=resumable → 로컬 mp4 바이너리를 rupload.facebook.com에 직접 올림(공개 URL 안 만듦). 게시=비가역 → --confirm 없으면 업로드+처리까지만.

reels_publish.sh --video /abs/reel_916.mp4 --caption "본문 #유슬레스서울"            # 업로드+처리(게시 X)
reels_publish.sh --video /abs/reel_916.mp4 --caption "..." --confirm                 # 실게시

선행조건 (네 계정작업 — 이게 블로커). 2026 권장 = Instagram Login API(FB페이지 불필요):

  1. 인스타 → Professional(크리에이터/비즈니스) 전환. (FB 페이지 연결 불필요)
  2. developers.facebook.com → Create App → use case Business.
  3. 앱에 제품 Instagram 추가 → "API setup with Instagram Login" 탭.
  4. Add account → 그 IG 계정으로 로그인/인가 → 화면에 Instagram user ID 표시 + Generate token 버튼 → 토큰 생성·복사. (OAuth/단기→장기 교환 수동 불필요. 토큰 60일, 같은 버튼으로 재발급)
  • ※ 토큰 생성 전 비즈니스 인증(Business Verification) 요구될 수 있음 — 뜨면 따라서 완료.
  1. op 저장: 토큰 → op://1B-PROJECT/instagram-graph/access_token, user id → op://1B-PROJECT/instagram-graph/ig_user_id.

호스트: 신방식이면 기본 graph.instagram.com(스크립트 기본값). 구방식(FB Login)이면 IG_GRAPH_HOST=graph.facebook.com. 규격: 5~90초 + 9:16(reels-pd 출력 충족). 버전 에러 시 IG_API_VER=v25.0.

검증 이력

  • 2026-06-14 P0: 손 시퀀스 end-to-end 통과(Scribe 33단어→컷→자막번인→9:16). 본 스크립트 = 그 시퀀스 codify.
  • 대장: 08_ai_system/23_claude_code_로컬자산.md §7.

이것도 같이 보면 좋다

같은 업무 태그와 카테고리가 겹치는 항목부터 보여줍니다.

스킬운영자 실사용

beauty-reel

퍼스널컬러별 디즈니 공주 변신 릴스(9:16)를 Higgsfield + ffmpeg로 제작하는 파이프라인. "같은 얼굴 한 명이 봄웜/여쿨/가을웜/겨쿨 공주로 변신" 컨셉의 인스타 릴스를 만든다. 베이스 가상얼굴 1장 고정 → 4톤 실사 공주 생성 → Kling 무빙 클립 → Noto 다국어 자막 → 빛번짐 전환으로 합성. "퍼스널컬러 공주 릴스", "디즈니 공주 변신 영상", "퍼스널컬러 릴스 만들어", "공주 메이크업 릴스", "봄웜 여쿨 공주" 류 요청에 사용. "뷰티릴스", "뷰티 릴스 만들어", "메이크업 변신 영상", "비포애프터 릴스" 등 인물 일관성이 필요한 변신·비포애프터 뷰티 릴스 전반에 응용 가능(베이스 얼굴 고정 → 룩 N개 → 무빙 → 자막 → 합성 파이프라인 그대로). 발행(업로드)은 포함 안 함 — 컨펌 게이트.

 51%79,00039,000원
#video
스킬운영자 실사용

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.

 무료
#video#web#automation
스킬운영자 실사용

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.

 51%99,00049,000원
#video#audio#web