AGENT SKILL

intro-video

회사·제품·서비스·기능 소개 영상을 HyperFrames(HTML→MP4)로 만든다. HyperFrames 공식 워크플로 위에 브리프 계약(하는 일과 가치), 브랜드 토큰, 사실만 쓰는 한국어 카피, OpenRouter 한국어 내레이션·자막·생성 소스, ElevenLabs 효과음·배경음악(선택), 스틸 검수와 렌더 승인 게이트를 씌운다. '회사 소개 영상', '제품 소개 영상', '앱 소개 영상', '서비스·기능 소개 영상', '홍보 영상', '런칭 영상', '브랜드 필름', '모션 그래픽 인트로', '로고 스팅', '쇼릴', 'intro video', 'promo video', 'launch video', 'explainer', 'motion graphics'처럼 소개·홍보 영상을 새로 만들거나 고칠 때 반드시 사용한다. 내레이션 없는 15–40초 모션 그래픽과 한국어 내레이션이 있는 30–90초 소개 영상을 모두 다룬다. HyperFrames의 /hyperframes 인터뷰보다 먼저 쓴다. 이 스킬이 브리프를 BRIEF.md로 넘기면 해당 워크플로가 질문 없이 이어 간다. 실사 촬영 편집, 토킹헤드 자막, 기존 영상 컷 편집, 웹페이지용 CSS 애니메이션에는 쓰지 않는다.

License 许可
MIT
最近更新
2026-11-12
Stars
★ 1
Forks
0

01 前言 Front Matter

name
intro-video
metadata
{ "email": "initred@dou.so", "author": "initred", "version": "1.1.0" }
description
회사·제품·서비스·기능 소개 영상을 HyperFrames(HTML→MP4)로 만든다. HyperFrames 공식 워크플로 위에 브리프 계약(하는 일과 가치), 브랜드 토큰, 사실만 쓰는 한국어 카피, OpenRouter 한국어 내레이션·자막·생성 소스, ElevenLabs 효과음·배경음악(선택), 스틸 검수와 렌더 승인 게이트를 씌운다. '회사 소개 영상', '제품 소개 영상', '앱 소개 영상', '서비스·기능 소개 영상', '홍보 영상', '런칭 영상', '브랜드 필름', '모션 그래픽 인트로', '로고 스팅', '쇼릴', 'intro video', 'promo video', 'launch video', 'explainer', 'motion graphics'처럼 소개·홍보 영상을 새로 만들거나 고칠 때 반드시 사용한다. 내레이션 없는 15–40초 모션 그래픽과 한국어 내레이션이 있는 30–90초 소개 영상을 모두 다룬다. HyperFrames의 /hyperframes 인터뷰보다 먼저 쓴다. 이 스킬이 브리프를 BRIEF.md로 넘기면 해당 워크플로가 질문 없이 이어 간다. 실사 촬영 편집, 토킹헤드 자막, 기존 영상 컷 편집, 웹페이지용 CSS 애니메이션에는 쓰지 않는다.

02 资源文件 8

03 SKILL.md 正文

intro-video — 소개 영상 하네스

모델은 영상 파일을 직접 만들지 않는다. 시간 t에 따라 결정되는 HTML 애니메이션 코드를 쓰고, HyperFrames(헤드리스 Chrome + FFmpeg)가 그 코드를 MP4로 굽는다. 같은 모델이라도 결과는 한 줄 프롬프트보다 그 둘레의 하네스에서 갈린다. 하네스는 브리프, 브랜드 토큰, 금지 목록, 스틸 검수, 렌더 승인이다.

HyperFrames 공식 워크플로가 엔진, 디자인 프리셋, 프레임 빌드를 맡는다. 이 스킬은 그 앞뒤를 고정한다.

  1. 브리프 계약: 칸이 비어 있으면 코드를 쓰지 않는다.
  2. 한국어 카피: 입력에 있는 사실만 쓰고, 메타 문장은 쓰지 않는다.
  3. OpenRouter 내레이션·자막: HyperFrames 기본 음성은 한국어가 없거나 별도 로그인이 필요하다. 효과음·배경음악은 OpenRouter ZDR 설정에 자주 막히므로, ElevenLabs 키를 쓸지 사용자에게 묻는다.
  4. 스틸 게이트와 렌더 게이트: 콘택트 시트를 읽기 전에는 렌더하지 않고, 렌더는 승인을 받은 뒤에만 한다.

진행 체크리스트

아래를 할 일 목록으로 만들고, 사용자 승인을 기다리는 경우가 아니면 열린 항목이 남은 채로 턴을 끝내지 않는다. 긴 작업에서는 모델이 중간 보고만 하고 멈추는 일이 있다.

  • [ ] 0 준비: doctor, HyperFrames 스킬, OpenRouter 키
  • [ ] 1 브리프 확정(효과음·음악을 쓰면 ElevenLabs 키 사용 여부 질문 포함)
  • [ ] 2 라우팅 → init → BRIEF.md
  • [ ] 3 워크플로 진행(아래 덧씌우는 규칙 적용)
  • [ ] 4 내레이션(내레이션형만), 효과음·음악
  • [ ] 5 스틸 게이트
  • [ ] 6 렌더 승인 → 렌더 → verify_mp4.py
  • [ ] 7 납품 보고

경로 표기: <SKILL_DIR>는 이 SKILL.md가 있는 폴더이고, 스크립트는 절대 경로로 실행한다. <HF>는 HyperFrames 스킬 폴더들이 있는 곳이다(.claude/skills/나 ~/.claude/skills/ 등, hyperframes, product-launch-video 폴더가 있는 곳). <workflow>는 2단계에서 고른 워크플로 이름이다.

0. 준비

  • npx hyperframes doctor로 Node 22 이상, FFmpeg, Chrome을 확인한다. 이 셋만 필수다. whisper·Kokoro·MusicGen이 ✗로 나오는 것은 그래픽형이거나 OpenRouter 내레이션을 쓸 때 무시해도 된다. HyperFrames는 Apache-2.0이다. Remotion은 직원 4명 이상인 회사에는 유료라서 이 스킬은 HyperFrames를 쓴다.
  • <HF>에 product-launch-video가 없으면 사용자에게 확인을 받고 npx skills add heygen-com/hyperframes를 실행한다(프로젝트 단위, 전역은 -g). 설치된 버전이 오래됐으면 npx hyperframes skills update를 제안한다.
  • HyperFrames가 사용자 범위에 쓰는 것을 알고 시작한다.
    • init은 전역 HyperFrames 스킬을 최신으로 갱신한다. 원치 않으면 HYPERFRAMES_SKIP_SKILLS=1을 붙인다.
    • 워크플로 Setup은 선호값을 ~/.media/에 기록한다.
    • preview --background는 끌 때까지 서버를 띄워 둔다.
  • 한 프로젝트 안에서는 CLI 버전을 하나로 쓴다(init이 package.json에 적은 버전, 예: npx hyperframes@0.8.160).
  • 내레이션이나 생성 이미지·영상을 쓰면 python3 <SKILL_DIR>/scripts/openrouter_media.py key-check로 OpenRouter 키를 확인한다. 키 값은 나오지 않고 출처·한도·만료만 나온다. 키는 스크립트가 키체인·키 파일 등에서 직접 찾으니, .env를 불러오거나 키를 출력하지 않는다. 키가 없으면 스크립트의 준비 안내를 사용자에게 전하고(키를 채팅으로 받지 않는다), 그동안 키가 필요 없는 단계를 진행한다. 규칙 전체는 references/openrouter.md "키"에 있다.
  • ElevenLabs 키는 1단계에서 사용자가 쓰기로 했을 때만 python3 <SKILL_DIR>/scripts/elevenlabs_audio.py key-check로 확인한다. 규칙은 OpenRouter 키와 같다. 없으면 스크립트의 준비 안내(키 생성 → 권한·크레딧 한도 → 키체인 저장 → key-check)를 전한다. 자세한 내용은 references/elevenlabs.md "키"에 있다.

1. 브리프

references/brief.md를 읽고 칸을 채운다. 요청에 없는 칸은 한 번에 묻고, 칸마다 추천값과 이유를 붙인다. 카피·숫자·고객명·로고에는 기본값이 없다. 확정 요약을 보여 주고 승인을 받는다. 요약에는 사용자가 말한 값과 추론·기본값을 나눠 적는다.

웹사이트가 카피 원천이면 메시지를 고르기 전에 먼저 캡처한다. init은 빈 폴더에서만 돌기 때문에 프로젝트 밖에 캡처해 둔다.

npx hyperframes capture "<URL>" -o "videos/.precapture-<project>/capture" --json

capture/extracted/visible-text.txt에서 메시지와 사실을 고른다. init 직후 이 capture/ 폴더를 videos/<project>/capture/로 옮긴다. 워크플로 Step 1은 게이트 파일이 이미 있으면 다시 캡처하지 않고 그 결과를 쓴다.

효과음·배경음악 경로 질문

소리 칸이 "효과음 켬"이거나 음악을 새로 만들어야 하면, 브리프 질문과 함께 ElevenLabs API 키를 쓸지 묻는다. OpenRouter 계정이 ZDR(데이터 무보존)을 강제하면 효과음·음악 모델이 대부분 거절되기 때문이다. 사용자가 음원 파일을 주고 효과음을 끄면 묻지 않는다.

  • 질문 문구와 선택지, 데이터 전송 고지는 references/elevenlabs.md "사용자에게 먼저 묻는다"를 그대로 쓴다. AskUserQuestion이 있으면 그것으로 묻는다.
  • "사용"이면 0단계처럼 elevenlabs_audio.py key-check를 돌린다. 키가 없으면 키 설정 안내를 전하고, 저장될 때까지 키가 필요 없는 단계를 먼저 진행한다.
  • "쓰지 않음"이면 번들 효과음(fetch-sfx), 사용자 음원, 무음 중에서 고른다.
  • 답은 BRIEF.md Customizations에 적는다. 다음 수정에서 다시 묻지 않는다.

게이트: 메시지 한 문장, 형식, 길이, 화면 비가 확정됐다. 대상이 하는 일 3–5가지가 원천과 함께 정리됐다. 화면에 올라갈 모든 사실에 원천이 있다.

2. 라우팅, init, BRIEF.md

영상 워크플로
10초 안팎(최대 약 30초)의 한 가지 모션: 로고 스팅, 키네틱 타이포, 수치 카운트업, 로어서드 motion-graphics
웹사이트나 제품 화면이 있는 회사·제품 소개, 런칭, 데모. 내레이션 유무와 상관없이 15–90초 product-launch-video
사이트나 제품 화면 없이 개념으로 설명하는 내레이션형 소개 faceless-explainer
위에 맞지 않는 다장면 브랜드 릴, 몽타주, 자유 구성 general-video

15–30초 구간은 두 워크플로가 겹친다. 모션 하나로 끝나면 motion-graphics를 쓴다. 장면이 셋 이상이거나, 내레이션이 있거나, 카피 원천이 사이트면 product-launch-video를 쓴다(이 워크플로의 최적 구간은 30–90초지만 더 짧아도 돈다).

npx hyperframes init "videos/<project>" --non-interactive --example=blank --skill=<workflow> --resolution=<landscape|portrait|square>

<project>는 브랜드 이름을 kebab-case로 쓴다. init 직후 videos/<project>/BRIEF.md를 references/brief.md 형식으로 쓴다. 이후 명령은 모두 videos/<project>에서 실행한다.

그다음 <HF>/<workflow>/SKILL.md를 읽고 Setup부터 따른다. 워크플로는 BRIEF.md를 보면 인터뷰를 건너뛴다. /hyperframes 인텐트 인터뷰는 이 스킬의 1단계가 이미 대신했다.

3. 워크플로에 덧씌우는 규칙

워크플로 지시와 아래 규칙이 부딪히면 아래를 따른다. 나머지는 워크플로를 그대로 따른다.

워크플로 단계 덧씌우는 규칙
Setup의 로그인 안내(hyperframes auth status) 내레이션을 OpenRouter로 만들면 HeyGen 로그인이 필요 없다. 상태만 보여 주고 오프라인으로 진행한다
Capture 1단계에서 미리 캡처했으면 그 결과를 쓴다. 캡처 텍스트는 카피의 사실 원천이 된다
디자인 시스템(build-frame) 실행 전에 브리프의 브랜드 색(6자리 hex)과 브랜드 서체 이름을 capture/extracted/tokens.json의 colors·fonts에 넣는다. 한글 짝 서체는 넣지 않는다(굵기 계산이 틀어지고 파일이 중복 복사된다). 실행 후 아래 "색 역할 확인"과 "한글 서체 연결"을 한다
스토리보드·원고 아래 "한국어 카피" 규칙과 "장면이 하는 일" 점검. 스토리보드 승인 게이트는 그대로 둔다. 글자만 있는 프레임은 asset_candidates:를 비워 둔다(설명 문구를 쓰면 파일명으로 읽혀 404 경고가 난다)
Audio(Step 3.1) 4단계 OpenRouter 내레이션으로 대체한다. 워크플로의 audio.mjs 생성 명령은 실행하지 않는다(음성을 덮어쓴다). 그래픽형이면 무음 표시(music: none, SCRIPT.md 없음) 또는 효과음만 둔다. 효과음·음악을 ElevenLabs로 만들기로 했으면 references/elevenlabs.md로 만들어 source: host로 등록한다
프레임 빌드 워크플로의 frame-packets를 돌린 직후, 작업자 역할 파일에 모션 규칙을 덧붙인다: cat <SKILL_DIR>/references/motion-rules.md >> .hyperframes/frame-packets/_role.md(패킷을 다시 만들면 다시 붙인다). 워크플로가 주입하는 장면 전환(transitions.mjs)의 이징은 그대로 둔다
자막(captions.mjs build) 뒤 한국어 자막을 구절 단위로 다시 묶는다: python3 <SKILL_DIR>/scripts/ko_captions.py --project .. HyperFrames는 쉼과 단어 수로 끊어 "주식회사 / 도우입니다."처럼 구절을 가른다. 자막을 다시 만들 때마다 다시 돌린다
조립(assemble-index) 뒤 스틸에서 영상 바탕이 브리프 bg인지 본다. 장면 전환 사이로 비치는 바탕이 다른 색이면 frame.md의 색 역할 확인부터 다시 한다
Finalize 5·6단계로 진행한다

색 역할 확인

build-frame은 색 키 이름이 아니라 명도와 채도로 역할을 정한다. 어두운 브랜드에서는 ink-black: #E4E4E7처럼 이름과 값이 뒤집혀 보이기도 한다. 이름을 보고 고치지 말고, 조립기(assemble-index)가 실제로 읽는 역할을 확인한다.

node --input-type=module -e "import {parseColors,semanticColors} from '<HF>/<workflow>/scripts/lib/tokens.mjs'; import {readFileSync} from 'node:fs'; console.log(semanticColors(parseColors(readFileSync('frame.md','utf8'))))"
  • canvas·ink·accent가 브리프의 bg·fg·accent와 같아야 한다. 다르면 frame.md에서 키 이름은 두고 값만 고친다.
  • 사이트의 상태색(오류 빨강, 성공 초록)이 accent나 muted 키로 새어 들어갔는지 본다.
  • 브랜드 값이 HyperFrames 하우스 스타일(예: "순수 #000/#fff는 피한다")과 다르면 브랜드 값을 따른다.

한글 서체 연결

브랜드 서체에 한글이 없으면 한글 짝 서체 파일을 받아 frame.md의 서체 로딩 부분에 직접 연결한다. 파일 하나는 2MB 미만으로 둔다. check는 그보다 큰 파일에 대해 번들이 자기완결적이지 않을 수 있다고 경고한다. 굵기별 정적 woff2가 안전하다.

mkdir -p assets/fonts && for w in Regular SemiBold Bold; do curl -fsSL -o "assets/fonts/Pretendard-$w.woff2" "https://cdn.jsdelivr.net/npm/pretendard@1.3.9/dist/web/static/woff2/Pretendard-$w.woff2"; done

굵기마다 @font-face { font-family: "Pretendard"; font-weight: 400|600|700; src: url("assets/fonts/Pretendard-….woff2") format("woff2"); }를 하나씩 쓴다. 서체 스택은 "<브랜드 서체>", "Pretendard", sans-serif로 둔다. 라틴 글자는 브랜드 서체로, 한글은 Pretendard로 그려진다. 다른 서체를 쓰면 라이선스(OFL 등)를 확인하고 같은 방식으로 둔다.

장면이 하는 일

스토리보드를 보여 주기 전에 장면마다 두 줄을 적어 본다. "이 장면에서 대상이 무엇을 해 주는가", 그리고 "그래서 사용자는 무엇이 편해지는가". 브리프 "깊이"가 티저가 아니면 이 기준을 지킨다.

  • 답이 "여기에도 나온다"뿐인 장면은 소개가 아니다. 기기·채널을 차례로 보여 주는 나열은 마지막 한 장면이면 충분하다.
  • 둘째 줄이 비는 장면은 기능 설명이다. 장면을 불편(전)으로 열고 가치(후)로 닫는다. 가치 문구는 원천에 있는 말로 쓴다.
  • 하는 일은 전후로 보여 준다. 예: 잘못 받아 적은 말 → 단어장에 추가 → 다음부터 그대로 알아들음. 붙여넣은 기록 → 환자 정보 줄 제거 → 서식 카드.
  • 그 장면의 주인공 글자는 제품의 실제 문구로, 1080p에서 읽히는 크기로 둔다. 기기 화면 속 작은 UI 글자에 기대지 않는다. 필요하면 화면을 확대하거나 잘라서 그 부분만 보여 준다.

한국어 카피

  • 사실은 입력에서만 가져온다. 사용자 원고, 캡처 텍스트, 받은 문서가 입력이다. 원천이 없는 숫자·고객명·인증·수상은 쓰지 않는다. BRIEF.md Notes에 [확인 필요]로 남기고 사용자에게 묻는다.
  • 메타 문장을 쓰지 않는다. "이 영상은 ~를 소개합니다", "지금부터 ~를 알아보겠습니다" 대신 내용을 바로 말한다.
  • 장면 하나에 아이디어 하나를 둔다. 화면 제목은 대개 한 줄로 쓴다. 화면 문구와 내레이션이 같은 문장을 그대로 되풀이하지 않게 한다.
  • 문체 세부는 ko-natural에 맡긴다(설치돼 있으면 원고 초안 → 린트 → 수정). 이 스킬은 위 두 규칙만 반복한다.

4. 내레이션(OpenRouter)

references/openrouter.md의 절차를 따른다. 순서는 이렇다.

  1. SCRIPT.md를 쓴다. 화면 표기와 읽는 소리가 다르면 {AI|에이아이}를처럼 쓴다. 자막에는 AI를이 나가고 TTS는 에이아이를을 읽는다. 자막 구절 경계는 /로 표시한다.
  2. 음성 후보를 들려주고 고른다. 사용자가 들을 수 없는 상황이면 요청한 성별의 한국어 전용 음성을 고르고 이유를 적는다.
  3. openrouter_media.py tts로 줄별 WAV를 만든다. 각 줄은 −14 LUFS로 맞춰지고 단어 타이밍이 audio_meta.json에 채워진다. 쓴 모델과 음성은 BRIEF.md Customizations에도 적는다(다른 오디오 패스가 audio_meta.json의 출처 필드를 지울 수 있다).
  4. 유사도 경고가 뜬 줄을 고친다. 전체가 빠르면 --speed 0.9로 다시 만든다(MAI가 지원한다).
  5. audio.mjs sync-durations로 프레임 길이를 실제 음성 길이에 맞춘다.
  6. 음악·효과음을 넣는다. ElevenLabs를 쓰기로 했으면 elevenlabs_audio.py sfx·music으로 만든다(references/elevenlabs.md). 아니면 사용자 음원이나 fetch-sfx를 쓴다.
  7. 자막을 만든 뒤 ko_captions.py로 다시 묶는다.
python3 <SKILL_DIR>/scripts/openrouter_media.py tts --project . --model <모델> --voice <음성>

원고 문체는 ko-natural로 린트한다. 예: lint.py <원고.txt> --type doc --tone 합니다체, 어투는 브리프를 따른다. 한 원고 안에서 합니다체와 해요체를 섞으면 오류로 잡힌다.

그래픽형은 내레이션 없이 위 6번(효과음·음악)만 한다. 그래픽형도 화면 문구의 최소 노출 시간을 openrouter_media.py measure로 잴 수 있다(references/motion-rules.md "페이싱").

5. 스틸 게이트

컴파일이나 린트가 통과했다고 성공은 아니다. 스틸을 읽기 전에는 성공이라고 말하지 않는다.

npx hyperframes lint
npx hyperframes check                      # 9:16이면 --caption-zone도 건다
npx hyperframes snapshot --at <시각 목록>
  • 시각은 오프닝, 시그니처 모션, 각 장면 중간, 마지막 홀드로 잡는다. 각 컷은 −0.1초와 +(전환 길이 + 0.1)초 두 번 찍는다. 전환 도중에 찍으면 들어오는 장면이 아직 화면 밖이라 비교할 게 없다.
  • 시트는 9장마다 나뉘어 contact-sheet-1.jpg, -2.jpg처럼 여러 개가 나올 수 있다. 출력된 contact-sheet*.jpg를 모두 열어 본다. 개별 스틸은 렌더 뒤에 지워지므로 남길 것은 바로 복사해 둔다. 작은 글자는 --zoom <selector>로 확대한다.
  • 볼 것은 이렇다.
    • 겹침, 잘림, 넘침, 끝내 나타나지 않는 단어
    • 글자에서 떨어져 떠 있는 커서·밑줄·장식
    • 한글 두부(□)나 대체 폰트, 조사만 남은 줄
    • accent 남용, 금지 목록 위반, 브랜드 색 이탈
    • 컷 앞뒤로 위치나 크기가 튀는 요소
    • 내용이 한쪽에 몰려 화면 대부분이 의도 없이 비어 있는 구도
    • 자막: 구절이 중간에서 끊기지 않았는지, 자막 스킨의 소문자 변환(text-transform)이 약어를 망치지 않았는지(AI를 → ai를), 플랫폼 UI와 겹치지 않는지
  • 예상되는 소음: lint는 자막 트랙에 caption_track_kind_missing 경고를 매번 낸다. snapshot은 가끔 한 번 시간 초과로 실패하고 다시 돌리면 된다.
  • 실패하면 해당 프레임 파일만 고친다. 코드를 고쳤으니 lint와 check를 다시 돌리고, 실패했던 시각만 다시 snapshot한다. 수리는 한 번만 한다. 같은 실패가 다시 나오면 멈추고 사용자에게 보고한다. 결함을 숨기려고 장면 길이를 늘리지 않는다.

6. 렌더

  1. npx hyperframes preview --background로 Studio를 연다. 승인자에게 하나만 묻는다. "지금 렌더할까요, 아니면 무엇을 바꿀까요?" 답을 받기 전에는 렌더하지 않는다. 답을 받으면 npx hyperframes preview --stop으로 서버를 끈다.
  2. 렌더한다.
    npx hyperframes render --skill=<workflow> --quality high --output renders/video.mp4
    python3 <SKILL_DIR>/scripts/verify_mp4.py renders/video.mp4 --width <W> --height <H> --fps <F> --duration <초> [--silent]
    
    --duration에는 조립된 실제 길이(index.html 루트의 data-duration)를 넣는다. 내레이션형은 길이가 음성을 따르므로 브리프 길이와 조금 다르다. 차이는 납품 보고에 적고, 10%를 넘으면 사용자에게 알린다.
  3. verify_mp4.py의 error가 0이어야 납품한다. 웹 페이지에 올릴 영상이면 faststart 경고도 고친다(ffmpeg -i in.mp4 -c copy -movflags +faststart out.mp4).
    • 라우드니스가 낮으면 음성 클립을 다시 맞춘다(tts --lufs -14, 고칠 줄만 --frames).
    • normalize-audio는 게인만 바꾸고 피크에 막혀 TTS 클립을 올리지 못한다.
    • 음악이 내레이션을 덮으면 hyperframes-audio의 보이스오버 카브를 쓴다.
    • 고쳤으면 사용자에게 알리고 다시 렌더한다.
  4. 렌더가 미리보기와 다르면 --debug, --workers 1로 다시 돌리고 폰트와 원격 자원을 확인한다.

7. 납품 보고

  • MP4 경로, 실제 길이·해상도·fps·라우드니스(verify_mp4.py 출력)
  • 콘택트 시트 경로와 프레임 id 목록. 다음 수정 요청을 프레임 단위로 받는다
  • 프로젝트 폴더(videos/<project>/). 다음 수정은 프레임 파일을 고치고 같은 게이트를 다시 거친다
  • 지어내지 않은 것: [확인 필요]로 남긴 사실, 생성 이미지·영상과 그 모델
  • 비용과 시간은 나눠 적는다. OpenRouter 사용액, ElevenLabs 크레딧 사용량과 플랜(썼다면), 렌더 시간이다

하지 않는 것

  • 바이럴 한 줄 쇼릴 프롬프트("make a dynamic 15-second motion graphics video… go all out")를 워크플로로 쓰지 않는다. 렌더가 도는지 보는 연기 테스트로만 쓴다.
  • 로고를 그리거나 생성하지 않는다. 실제 제품 UI 대신 생성 이미지를 쓰지 않는다. 생성 이미지에 한글 글자를 넣지 않는다.
  • 권리가 불분명한 음원이나 제3자 화면을 쓰지 않는다.
  • API 키를 출력하거나 셸에 불러오지 않는다. 파일·로그·BRIEF.md·서브에이전트 지시에도 남기지 않는다. OpenRouter 키는 openrouter_media.py만, ElevenLabs 키는 elevenlabs_audio.py만 다룬다.
  • 사용자가 ElevenLabs 사용을 승인하지 않았으면 키가 저장돼 있어도 elevenlabs_audio.py를 부르지 않는다.

리소스

  • references/brief.md: 브리프 칸, 기본값, BRIEF.md 형식. 1단계에서 읽는다
  • references/motion-rules.md: 결정성, 이징, 페이싱, 금지 목록, 색·서체, 한글 타이포, 로고, 소리. 빌드와 스틸 게이트에서 읽는다
  • references/openrouter.md: 모델 표, 내레이션 절차, 생성 이미지·영상 규칙. 4단계와 생성 소스가 필요할 때 읽는다
  • references/elevenlabs.md: ElevenLabs 사용 질문, 키 설정, 효과음·음악 생성과 audio_meta.json 등록, 라이선스. 1단계 질문과 효과음·음악을 만들 때 읽는다
  • scripts/elevenlabs_audio.py: key-check·sfx·music(표준 라이브러리 + ffmpeg)
  • scripts/openrouter_media.py: models·tts·measure·stt·image·video(표준 라이브러리 + ffmpeg)
  • scripts/ko_captions.py: HyperFrames 자막을 SCRIPT.md의 / 경계(없으면 문장부호와 어절 수)로 다시 묶는다
  • scripts/verify_mp4.py: 렌더 결과를 브리프 값과 대조한다(코덱, 크기, fps, 길이, faststart, 라우드니스). 종료 코드 0이면 납품 가능이다

04 同仓库更多 Skills

douinc
douinc/agent-skills

template-skill

Replace with description of the skill and when the agent should use it.

Skill与智能体开发
★ 1
douinc
douinc/agent-skills

writing-project-readme

Use when explicitly invoked to write or fully rewrite a project README that must cover tech stack, architecture, features, and service description in a single document — readable by non-engineers (PM, design, ops, domain experts) as well as developers. Triggers on requests like "write the README", "redo README.md based on the whole project", "make a comprehensive README everyone can understand". Skip for one-section edits, badge tweaks, or generating a CHANGELOG.

设计师内容创作者写作与文案Skill与智能体开发
★ 1
douinc
douinc/agent-skills

ux-writing-korean

한국어로 UI/UX 문구를 작성하거나 검수할 때 사용합니다. 해요체, 능동형, 긍정형, 캐주얼 경어, 명사 조합 회피 등 5가지 핵심 원칙과 예외 규칙을 적용합니다.

设计师内容创作者写作与文案
★ 1
douinc
douinc/agent-skills

token-audit

Audit a Claude Code or Codex CLI project for token waste and fix it with the user's approval. Use whenever the user wants to check, reduce, or optimize token usage, context bloat, or API/subscription costs of an agent project — phrases like "토큰 점검", "토큰 낭비 찾아줘", "토큰 최적화", "컨텍스트 최적화", "Claude Code 비용 줄여줘", "API 비용이 너무 나와", "audit token efficiency", "check my CLAUDE.md/AGENTS.md/MCP setup". Also trigger when the user complains that sessions hit context limits too fast, that costs jumped unexpectedly, or asks whether their project setup is token-efficient — even if they don't say the word "token".

开发工程师Skill与智能体开发
★ 1
douinc
douinc/agent-skills

release-showcase

정식 릴리스의 변경을 이전·이후 스크린샷, 클릭 흐름 녹화 영상, 비교·단계·탭·흐름도 같은 HTML 컴포넌트로 보여 주는 파일 하나짜리 릴리스 문서를 만든다. 텍스트뿐인 릴리스 노트로는 어떤 UX가 바뀌었고 새 기능을 어떻게 쓰는지 감이 안 올 때 쓴다. '릴리스 노트 문서 만들어 줘', '릴리스 쇼케이스', '이번 배포 변경사항 정리해서 공유', '릴리즈 노트 HTML', '변경사항을 화면으로 보여 주는 문서', '업데이트 소개 페이지', 'what's new 페이지', 'release notes with screenshots', 'changelog page', '배포 공지 자료'처럼 버전 태그 사이의 변경을 팀·고객에게 시각적으로 알릴 때 반드시 사용한다. git 태그로 릴리스하는 저장소라면 웹·데스크톱·모바일 어느 앱이든 쓴다. 커밋 목록만 필요한 CHANGELOG.md 갱신, 릴리스 태그·배포 자체, 마케팅 영상 제작에는 쓰지 않는다.

★ 1
douinc
douinc/agent-skills

public-sector-rfp-authoring

Use when drafting or revising Korean government or local-government bid notices, requests for proposals, statements of work, or public-sector service/project specifications from the ordering agency's perspective.

设计师Skill与智能体开发
★ 1