플러그인 설치: 설정 또는 업데이트 명령을 실행하기 전에 이 스킬이 HyperFrames 플러그인 내부에 있을 경우 플러그인 설치 규칙을 따르세요. 독립형 설치는 아래 업데이트 안내를 유지합니다.
먼저, 이 스킬을 최신 상태로 유지하세요 — 다음 명령을 실행하기 전에 사용자 확인을 받으세요:
npx hyperframes skills update faceless-explainer. 모든 것이 최신 상태이면 아무 일도 일어나지 않습니다. 그렇지 않으면 이 스킬과 이 스킬이 의존하는 핵심 도메인 스킬을 업데이트합니다.
media-use: 오디오/이미지/로고를 가져오기 전에
/media-use를 호출하여 HeyGen 카탈로그의 BGM/SFX/이미지와 공식 출처의 브랜드 로고를 확인하세요. 기존 자산을 등록하려면 먼저--adopt를 실행하세요./media-use스킬을 참조하세요. 호스트 앱이 자체 음악 또는 사운드 효과 도구를 제공하는 경우 음악 및 사운드 효과에 해당 도구를 사용하세요.
Faceless Explainer (얼굴 없는 설명 동영상) → HyperFrames
이 스킬을 사용하여 본문 텍스트를 설명 동영상으로 변환하세요: 디자인 시스템을 선택하고, 교육적인 스토리를 계획하고, HyperFrames에서 프레임별로 구축하세요. 얼굴 없음은 모든 시각 자료가 후속 단계에서 창작된다는 것을 의미합니다 — 캡처 단계가 없고 실제 자산 인벤토리도 없습니다.
진입점은
/hyperframes입니다. 당신은 오케스트레이터입니다. 각 단계를 실행하고, 게이트를 확인한 후에만 다음으로 진행하세요. 이 스킬은 제품이나 캡처할 웹사이트 없이, 텍스트로부터 주제를 설명하는 동영상을 위한 것입니다. 다른 의도, 단순히 '동영상 만들어 줘'와 같은 요청, 또는 불확실한 경우 → 먼저/hyperframes를 읽으세요 — 의도 레이어가 모든 라우팅 결정을 담당하며,BRIEF.md없이 여기에 도착한 새로운 창작 요청은 어차피 해당 레이어(Setup의 시작 규칙)를 거치게 됩니다.
당신은 오케스트레이터입니다. videos/<project>/ 디렉토리에서 작업하세요. 단계를 순서대로 실행하고 각 게이트를 통과한 후에만 계속 진행하세요. 사용자 개입이 필요한 게이트는 Step 0, Step 3, Step 6입니다. Step 0 이전에 ../hyperframes/references/brief-contract.md를 읽으세요 — 게이트 유형과 BRIEF.md의 flow/storyboard가 Step 3/4/6 게이트를 관장하는 모드를 어떻게 파생하는지 정의합니다. Step 5(프레임별로 하위 에이전트를 파견)를 제외한 모든 단계를 직접 수행하세요. 디자인 또는 모션 규칙을 여기에 두지 마세요. 해당 규칙은 프레임 작업 하위 에이전트, 이 스킬의 로컬 ../hyperframes-animation/rules/ + ../hyperframes-animation/blueprints/, 그리고 hyperframes-creative에 있습니다.
워크플로우: Step 0 설정 → hyperframes.json; Step 1 브리핑 → capture/extracted/; Step 2 디자인 시스템 → frame.md; Step 3 스토리보드/스크립트 → STORYBOARD.md 및 SCRIPT.md; Step 3.1 오디오 → audio_meta.json; Step 4 시각 디자인 → 보강된 STORYBOARD.md; Step 5 프레임 → compositions/frames/NN-*.html 및 index.html; Step 6 최종 렌더링 → renders/video.mp4.
Step 0: 설정
목표: 확인된 브리핑과 함께 시작하고, HyperFrames 프로젝트를 생성하며, 브리핑을 지속 가능하게 만듭니다.
브리핑은 의도 레이어에 의해 확인되며, 여기서 질문을 던져 확인하지 않습니다. 시작 규칙, 순서대로: (1) BRIEF.md가 존재함 → 읽고 아무것도 묻지 않음 — 브리핑은 확정되었으며, 그 flow/storyboard가 모드를 파생합니다(브리핑 계약 § 1). (2) BRIEF.md가 없지만 프로젝트가 존재함(hyperframes.json / STORYBOARD.md가 디스크에 있음) → 스토리보드의 서문과 기록된 선호도에서 재개합니다. 절반만 완성된 프로젝트를 다시 조사하지 마십시오. (3) 둘 다 없음 — 여기에 직접 도착한 새로운 창작 요청 → /hyperframes를 읽고 의도 레이어(references/intent-interview.md)를 실행합니다: 레시피와 기억된 기본값을 확인하고, 이 경로의 질문(../hyperframes/references/routes/faceless-explainer.md)을 수행하고, 잠긴 브리핑을 반환합니다. 수정 요청은 이 모든 것을 건너뜁니다 — 수정 작업을 진행하세요.
hyperframes.json이 없을 때만 초기화합니다. <project> 이름은 주제에서 케밥-케이스로 지정하세요. 예: compound-interest-explained. 워크스페이스 이름이나 타임스탬프는 절대 사용하지 마십시오.
npx hyperframes init "videos/<project>" --non-interactive --example=blank --skill=faceless-explainer — init은 설치된 스킬을 GitHub의 최신 버전과 비교하여 업데이트가 필요한 경우 전역 세트를 업데이트합니다.
초기화 후, <PROJECT_ROOT>를 videos/<project>로 설정하고 이후 모든 상대 경로 명령을 해당 디렉토리를 작업 디렉토리로 사용하여 실행합니다. 아래 명령에서 .은 <PROJECT_ROOT>를 의미합니다. .media, capture 또는 출력 파일을 호출자 디렉토리에 절대 쓰지 마십시오.
초기화 직후 BRIEF.md를 작성하세요 (절대 이전에 작성하지 마십시오 — init은 비어 있지 않은 디렉토리를 거부합니다): 의도 레이어의 잠긴 브리핑, 형태는 ../hyperframes/references/brief-format.md를 따릅니다. <MEDIA_DIR>을 설치된 /media-use 스킬 디렉토리로 확인합니다. 그런 다음 각 선호도 기반 답변을 node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes .로 기록합니다(brief-format.md가 하위 집합을 지정합니다). 의도 레이어가 레시피를 채택한 경우 node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes . --name <name>을 실행합니다. 이 명령은 레시피의 frame.md를 프로젝트에 복사하고(Step 2는 건너뜀) Step 3 초안을 만들 스켈레톤을 반환합니다. 레시피는 답변을 채우고 승인이 아닙니다. 검토 게이트는 여전히 실행됩니다.
Setup을 통과하기 전에 로그인 상태를 표시하세요 — npx hyperframes auth status를 실행하고 그 출력을 그대로 전달합니다. 음성/BGM이 HeyGen 또는 로컬 엔진을 사용할 것인지, 그리고 로그아웃 상태일 때 로그인 방법을 보고합니다. 하나의 분기를 적용합니다:
- 협업: 사용자가 로그인하거나 명시적으로
offline/go를 선택할 때까지 기다립니다. - 자율: 상태를 알리고 사용 가능한 로컬 엔진을 통해 계속 진행합니다.
오프라인 제공자가 없을 때 필요한 기능을 묵묵히 생략하지 마십시오. 장애물을 표면에 드러내십시오. 이 결정을 다른 질문에 포함시키거나 저장소별 .env에 키를 작성하지 마십시오. 인증 소유권 및 오프라인 대체: /media-use references/setup-providers.md § 제공자.
게이트: hyperframes.json과 BRIEF.md가 존재합니다. 선호도 기반 답변이 기록되었습니다(브리핑 계약 § 2). 로그인 상태가 표시되었습니다(로그인했거나 오프라인으로 계속 진행 중).
Step 1: 브리핑 (캡처 없음)
목표: 사용자 텍스트를 정보 소스로 프로젝트에 통합합니다. 웹사이트 캡처와 실제 자산이 없습니다 — 이것은 얼굴 없는 설명 동영상입니다.
사용자의 전체 입력을 그대로 저장한 다음, 수동으로 합성 캡처 패키지를 만듭니다:
capture/extracted/visible-text.txt— 전체 기사 / 노트 / 주제 / 브리핑, 그대로. 이것은 정보의 소스이며, 스토리 템플릿이 아닙니다(Step 3에서 재구성됩니다).capture/extracted/tokens.json—{ "title": "", "description": "", "colors": [], "fonts": [] }.title/description을 브리핑에서 채웁니다. 사용자가 명시적으로 브랜드 색상이나 글꼴을 제공하지 않는 한colors/fonts는 비워둡니다 — 제공한 경우 추가합니다(디자인 프리셋은 어쨌든 완전한 팔레트를 제공합니다).
사용자가 스크립트를 붙여넣거나 문구를 유지하기를 원하는 경우, 그대로 user_script.txt로 저장합니다. VO_MODE(원문 그대로 또는 재구성)는 BRIEF.md에서 가져옵니다 — 의도 레이어는 스크립트가 도착할 때 이를 묻습니다. 브리핑에 어떻게든 없는 경우에만 여기서 한 번 묻고 답변을 Step 3을 위해 저장합니다.
npx hyperframes capture를 실행하지 마십시오(URL이 없습니다). asset-descriptions.md를 만들거나 capture/assets/를 채우지 마십시오 — 얼굴 없는 시각 자료는 Step 4-5에서 창작되며, 캡처되지 않습니다. 한 가지 예외: 사용자가 실제 이미지를 제공한 경우 public/<basename> 아래에 배치하고 Step 3을 위해 기록해 둡니다.
게이트: capture/extracted/visible-text.txt와 capture/extracted/tokens.json이 존재합니다. 설명 동영상의 주제와 대상을 한 문장으로 명확히 설명할 수 있습니다.
Step 2: 디자인 시스템
목표: 제공된 프레임 프리셋 중 하나를 선택합니다. 스크립트가 이를 이 동영상의 frame.md + 캡션 스킨으로 변환합니다.
BRIEF.md에 style_preset이 명시된 경우 — 사용자가 의도 레이어에서 쇼케이스를 보고 선택한 것입니다 — 이를 사용합니다. 브리핑에 없을 때만 당신이 판단합니다. 그런 다음 하나의 결정을 내립니다 — 어떤 프리셋: ../hyperframes-creative/references/design-spec.md를 읽고 ../hyperframes-creative/frame-presets/를 탐색합니다. 주제, 톤 및 대상에 가장 잘 맞는 프리셋을 선택합니다. 그런 다음 실행합니다:
node <SKILL_DIR>/scripts/build-frame.mjs --preset <name> --hyperframes .
스크립트는 나머지를 결정론적으로 수행합니다: 프리셋의 FRAME.md를 frame.md로 복사하고 capture/extracted/tokens.json의 브랜드 토큰(역할별로 프리셋의 색상 키에 매핑된 브랜드 색상, 프리셋의 디스플레이 + 본문 글꼴이 브랜드의 것으로 교체됨)에 리믹스하고, 프리셋의 캡션 스킨을 .hyperframes/caption-skin.html에 복사하며, 자체 검증(잘못된 매핑 시 exit 1)합니다. 종료 코드 0이 나오면 즉시 진행하십시오 — 사양을 수동 편집하지 마십시오.
얼굴 없는 설명 동영상은 일반적으로 브랜드 색상/글꼴이 없습니다 (tokens.json의 colors/fonts가 비어 있음) → 스크립트는 프리셋 자체의 팔레트(전체 배송 가능한 디자인)를 유지합니다. 사용자가 브랜드 색상/글꼴을 지정한 경우에만 실행 전에 tokens.json에 추가하고, 실제로 매핑이 필요한 경우에만 수동으로 frame.md를 조정하십시오.
게이트: build-frame.mjs가 종료 코드 0으로 종료되었습니다 — frame.md가 명명된 프리셋에서 존재하고 (프리셋이 제공하는 경우) .hyperframes/caption-skin.html이 캡션 스킨 소스로 존재합니다. 선택한 프리셋이 선호도로 기록되었습니다(--key style_preset --workflow <this workflow>, 브리핑 계약 § 2).
Step 3: 스토리보드 및 스크립트
목표: 텍스트를 승인된 프레임별 교육 계획으로 변환합니다.
../hyperframes-creative/references/story-spine.md(훅 언어, 증거보다 가치, 제안으로서의 스토리보드, 출처 추적 가능한 시각 자료), references/story-design.md, ../hyperframes-animation/blueprints-index.md, ../hyperframes/references/storyboard-format.md, ../hyperframes/references/script-format.md를 읽으십시오. 이를 사용하여 STORYBOARD.md와, 내레이션이 필요할 때 SCRIPT.md를 작성하십시오. 서문 duration:을 브리핑의 length에서 설정하십시오 — 대략적인 예상입니다. 조립 시 최종 컷이 이를 어떻게 충족하는지 보고합니다.
story-design.md를 설명 동영상 구조(개념 / 사용 방법 / 목록형 / 스토리), 훅 전략, 명확성 기술, 감정적 비트, 유형-열거 매핑 및 VO_MODE에 사용하십시오. 동영상의 순서는 내러티브 디자인에서 오며, 입력 텍스트의 단락 순서가 아닙니다 — 재정렬, 병합, 생략, 압축합니다. 소프트 가이드로 ../hyperframes-animation/blueprints-index.md의 역할→청사진 메뉴를 참조하십시오: 각 비트에 대해 해당 후보 청사진이 암시하는 형태로 음성 해설을 작성하고, 적합한 경우 해당 후보 blueprint: ID를 태그하십시오. 교육적 진실은 여전히 어떤 비트가 존재할지를 결정합니다 — 청사진에 맞추기 위해 비트를 강요하지 말고, 입증된 형태를 사용할 수 있다고 해서 비트를 만들어 내지 마십시오. 얼굴 없는 시각 자료는 후속 단계에서 창작되므로 프레임은 자산 인벤토리를 전달하지 않습니다: 사용자가 실제 public/<basename> 이미지를 제공하지 않는 한 asset_candidates를 비워 두십시오. 스토리보드 및 스크립트 참조에서 정확히 필요한 필드를 사용하십시오.
초안을 작성한 후 검토 루프의 계획 패스를 실행하십시오 — ../hyperframes/references/review-loop.md § 1: 계획을 제안으로 제시하고 두 가지 질문을 하십시오 — 승인 또는 변경, 그리고 스케치 먼저(권장) 또는 건너뛰기. 피드백은 채팅 응답으로 도착합니다. 승인될 때까지 반복하십시오. 이것은 체크포인트 게이트입니다(브리핑 계약 § 1): 자율 모드에서는 물어볼 것이 없습니다 — 동일한 요약을 사전 알림으로 게시하고 진행하십시오. 스케치는 빌드에 통합되며, 하나의 질문이 있는 최종 미리보기는 Step 6에 제공됩니다.
게이트: STORYBOARD.md가 존재하고, 모든 프레임에 필요한 내러티브 필드가 있습니다. 내레이션이 필요할 때 SCRIPT.md가 존재합니다. 사용자가 프레임별 계획을 승인했습니다(자율: 요약이 사전 알림으로 게시되었습니다).
Step 3.1: 오디오
목표: 승인된 스크립트에서 내레이션, 단어 타이밍, 음악 및 오디오 메타데이터를 생성합니다.
Step 3 승인 후 오디오를 시작하십시오. 백그라운드에서 실행한 다음 Step 4로 계속 진행하십시오. (로그인 상태는 Step 0에서 이미 표시되었습니다. 엔진은 자동으로 폴백됩니다.)
호출 전에 사용자의 요청에서 내레이션 음성을 선택하십시오. 요청이 음성, 성별 또는 톤을 지정한 경우 일치하는 음성 ID를 선택하고 --voice <id>로 전달하십시오. 기본 파이프라인은 HeyGen에서 Marcia (여성) / Kokoro에서 am_michael입니다. 따라서 "남성 음성"과 같은 요청은 플래그를 전달하지 않으면 묵시적으로 무시됩니다. 음성 ID는 제공자별로 다릅니다. Step 0의 로그인 상태에서 선택된 제공자에 대해 확인하십시오: HeyGen(로그인됨)은 node <MEDIA_DIR>/audio/scripts/heygen-tts.mjs --list(또는 GET /v3/voices?engine=starfish)를 통해; Kokoro(오프라인)는 <MEDIA_DIR>/audio/references/tts.md의 음성 테이블(접두사 am_/bm_ 남성, af_/bf_ 여성)을 통해. 사용자가 선호도를 표현하지 않은 경우, 파이프라인 기본값보다 먼저 기억된 음성(브리핑 계약 § 2)으로 폴백하고 어떤 것을 사용했는지 말하십시오. 둘 다 지정하지 않은 경우에만 --voice를 생략하십시오. 사용자가 이번 실행에서 명시적으로 음성을 선택한 경우 기록하십시오(prefs.mjs record --key voice).
node <SKILL_DIR>/scripts/audio.mjs --script ./SCRIPT.md --storyboard ./STORYBOARD.md --hyperframes . --out ./audio_meta.json --voice <voice-id> &
o오디오 스크립트는 내레이션, 단어 타이밍, HeyGen의 음악 라이브러리에서 BGM 조회 및 타이밍 메타데이터를 처리합니다. BGM 분위기는 스토리보드의 music: 필드에서 가져옵니다. 이것은 생성을 위한 것이 아니라 검색을 위해 HeyGen Audio API를 사용하며 TTS와 동일한 ~/.heygen 자격 증명을 사용합니다. 제공자 세부 정보는 ../media-use/audio/references/tts.md를 읽으십시오. 호스트 앱의 자체 도구가 음악이나 사운드 효과를 만드는 경우 파일을 assets/ 아래에 배치하고 audio_meta.json 파일에 "source": "host"로 표시하여 나열하십시오: 음악은 bgm { "path": "assets/…", "source": "host" }로 스토리보드에 music: none을 설정하고; 사운드는 sfx 항목 { "frame": <n>, "file": "assets/…", "offset_s": 0, "duration_s": <길이>, "source": "host" }로 추가합니다. 모든 오디오 패스는 이것들을 유지하며, 호스트 사운드가 있는 프레임은 조회된 큐를 얻지 못합니다.
내레이션이 없고 SCRIPT.md도 없으면 음성 생성을 건너뜁니다. 스토리보드에 음악 분위기가 있으면 BGM이 계속 실행될 수 있습니다.
표준 완전 무음 마커(이 오디오 모델을 재사용하는 워크플로우에서 공유됨): STORYBOARD.md 최상위 YAML 블록에 music: none, SCRIPT.md 없음, 그리고 sfx: 큐나 호스트 오디오가 없음. 이 조합은 프로젝트를 무음으로 표시합니다.
[나머지 단계는 유사한 패턴을 따릅니다. 번역 완료를 위해 전체 SKILL.md가 필요한 경우 알려주십시오.]