정보그래픽 구술 영상
위치 및 전달 구조 (아키텍처 v1.11)
- 전달 저장소 루트에는 반드시
AGENTS.md가 있어야 함(이 템플릿 사용법); 이 스킬은.agents/skills/remotion-infographic-video/에 고정됨. tests/는 저장소 루트(.agents/와 같은 수준)에 있으며, 개발 게이트/CI 용도로 런타임에 속하지 않으며, '스킬만 설치' 시 복사되지 않음..env는 이 스킬 디렉토리에만 있으며, 저장소 루트에 있지 않음.
사용 전 준비 (복사 후 바로 사용)
- 복사:
- 전체 저장소 사용: 전달 저장소 루트를 클론/복사하여 열기(루트
AGENTS.md및tests/포함). - 스킬만 설치:
.agents/skills/remotion-infographic-video/를 대상 프로젝트의 동일 경로로 복사(하위scripts/및lib/포함). - 스킬 패키지 자체는
pip/npm설치가 필요하지 않음;scripts/는 Python 표준 라이브러리만 사용하며,.env설정 후 단계 0–5를 실행할 수 있음.
- 전체 저장소 사용: 전달 저장소 루트를 클론/복사하여 열기(루트
.env설정: 이 스킬 디렉토리에서cp .env.example .env실행 후.env를 편집하여 입력:- 필수:
DOUBAO_TTS_API_KEY=(등호 뒤에 Key를 쓰고 따옴표 없음) - 선택:
DOUBAO_SPEAKER=(기본 음색은 VOICE 참조) .env는.gitignore에 포함되어 Key를 채팅에 붙여넣지 말고, 다른 TTS 엔진으로 교체하지도 마십시오.
- 필수:
- 환경 전제 조건(직접 설치, 스크립트가 대신 설치하지 않음): Node 18+, Python 3, ffmpeg, ffprobe, 네트워크.
- 제작 시작: 사용자가 '제작 시작' 또는 동등한 의도를 말하면:
- 먼저
python3 scripts/check_env.py실행(--skill-dir <이 스킬 패키지 절대 경로>사용 가능; 기본값은 현재 디렉토리). - 종료 코드 3:
.agents/skills/remotion-infographic-video/.env(또는 이 스킬의 절대 경로 아래.env)에DOUBAO_TTS_API_KEY를 입력하라는 메시지를 표시하고, 사용자가 '작성 완료'라고 응답하면 다시 실행; 그 전까지는 음성 및 프로젝트 생성을 수행하지 않음. - 통과 후: 메시지에 이미 주제가 있으면 바로 고정 단계로 진행; 그렇지 않으면 한 번만 주제를 물어봄('세로' 명시 가능; 기본값은 가로 1920×1080, 세로 1080×1440, 규칙은 LAYOUT 참조). 플랫폼 이름은 화면 비율에 영향을 주지 않음.
- 먼저
엄격한 규칙
- Key는 이 스킬 디렉토리의
.env(전달 저장소의 경우.agents/skills/remotion-infographic-video/.env)에 있는DOUBAO_TTS_API_KEY에서만 읽음; 사용자가 채팅에 Key를 붙여넣지 못하게 하며, TTS 엔진을 교체하지 말고, 어떤 출력에도 Key를 표시하지 않음. - 게시/업로드 금지: 완성된 영상, 커버 및 카피 파일만 생성.
- 숫자에는 반드시 출처가 있어야 함; 화면에 표시되는 숫자에는 출처 각주가 포함됨; 아이콘은 '예시'로 표시.
- 각 스크립트 stdout의 마지막 줄은 JSON 요약; 종료 코드에 따라 처리: 3 Key 누락(
.env입력 안내 후 중지), 4 인증 실패(중지), 5 이전 산출물 수정, 6 실패한 항목만 재실행, 7 수정 모드 진입.
고정 단계
- 전제 검사:
python3 scripts/check_env.py. 종료 코드 3이면 위 안내에 따라.env를 작성한 후 다시 실행. - 주제 수집: topic, slug, 화면 비율 결정 후
<slug>/job.json작성(화면 비율 미지정 시 기본값 가로); 사용자가 플랫폼을 명시하면platforms를 작성하고, 그렇지 않으면 PUBLISH의 기본 플랫폼을 따름. - 원고 작성:
script.md(## Sxx 단계명+- [01] 텍스트 {context: … | rate: 0 | pause: 300}) 및sources.md(마지막 json 블록) 작성 후python3 scripts/validate.py sources <slug>/script.md <slug>/sources.md실행; 출처 없는 숫자는 삭제하거나 출처를 추가해야 함. - 음성 더빙: 환경에 입출력이 동일한 MCP 음성 도구(tts_synthesize)가 있으면 사용, 그렇지 않으면
python3 scripts/tts_doubao.py <slug>/script.md --out-dir <slug>/voice실행; 두 방식 모두 생성된 timeline.json은 동일한 Schema(assets/schemas/)로 검증:python3 scripts/validate.py timeline <slug>/voice/timeline.json. 실패한 문장은--only로 재실행. - 스토리보드:
storyboard.json작성(각 문장은 최소 하나의 장면에 포함되며, 단계 전환 및 장면 진입은 열거형 값 사용),python3 scripts/validate.py storyboard <slug>/storyboard.json --timeline <slug>/voice/timeline.json실행. - 에셋:
python3 scripts/fetch_asset.py의add명령으로 각 에셋 등록,prune명령으로 사용되지 않은 에셋 제거; 라이선스가 불명확한 에셋은 사용 금지. - 프로젝트 생성:
python3 scripts/scaffold_project.py --job <slug>/job.json --out <slug>/project로 프로젝트 생성 후 예시(assets/example/)에 따라 각 장면 작성, 그 후python3 scripts/build_timeline.py --timeline <slug>/voice/timeline.json --storyboard <slug>/storyboard.json --subtitles <slug>/voice/subtitles.json --manifest <slug>/assets-manifest.json --project <slug>/project실행, 그 후 프로젝트 내에서npm ci실행. - 자체 점검:
bash scripts/check_project.sh <slug>실행; 실패 시check/report.json을 읽어 수정 후 재실행, 최대 3회까지 시도, 그래도 실패하면 중단 후 보고. - 렌더링:
bash scripts/render.sh <slug>로 완성 영상(<slug>/out/video.mp4) 및 커버(<slug>/publish/cover_<W>x<H>.png) 생성 후 자동 검수. - 게시 카피 및 전달: PUBLISH에 따라 각 대상 플랫폼별로
publish/<platform>/title.txt,description.txt작성, 태그는 플랫폼별로publish/<platform>/tags.txt(한 줄에 하나)에 작성 후python3 scripts/validate.py publish <slug>,python3 scripts/validate.py deliverable <slug>,python3 scripts/validate.py leak <slug>실행, 그 후python3 scripts/fetch_asset.py credits-diff --manifest <slug>/assets-manifest.json --slug-dir <slug>로 저작자 표시 재확인.
스타일 엄격 규칙 요약
- 색상, 폰트 크기, 애니메이션 값은
assets/tokens.json에서만 가져오며, 배경색 기준은 #070A0F; 장면 코드에는 색상 값을 직접 쓰지 않음(STYLE 참조). - 등장은 통일된 스프링 애니메이션, 단계 전환 5가지, 장면 진입 3가지로 스토리보드 열거형 사용(MOTION 참조).
- 컴포넌트는 등록된 15개만 사용하며, 목록 외의 것은 프로젝트 내에서 새로 작성하고 tokens +
useLayout()사용(COMPONENTS 참조). - 레이어는 background / scene / hud / subtitle 네 개뿐이며, 엔딩 크레딧 화면 없음; 영상 길이 = 음성 길이.
- 난수는
random(seed)만 사용, Math.random 금지. - 레이아웃은 캔버스 너비와 높이에서 유도하며,
src/에서src/layout/presets.ts만 캔버스 크기를 작성 가능(LAYOUT 참조). - 원고 작성법은 SCRIPT, 음성 파라미터는 VOICE, 에셋 라이선스 및 저작자 표시는 ASSETS 참조.
금지 사항
- 어떤 플랫폼에도 게시/업로드하지 않음.
- Key 유출 금지: 표시하지 말고, 산출물에 쓰지 말고, 사용자가 채팅에 Key를 붙여넣지 못하게 하며, 다른 TTS 엔진으로 교체하지 마십시오.
- 라이선스가 불명확한 에셋을 사용하지 않음; 저작자 표시, 설명, 제목에 링크를 넣지 않음.
- 데이터를 조작하지 않음: 출처 없는 숫자는 원고에 포함되지 않고 화면에 표시되지 않음.
- 주제 결정 후 전달까지 사용자에게 질문하지 않으며, 어떤 에셋도 요청하지 않음.
전달
deliverable.json의 내용을 한 번에 반환: 완성 영상 경로 및 길이, 화면 비율, 커버, 각 플랫폼별 제목 및 설명, 태그, 에셋 저작자 표시, 출력 디렉토리 및 비고.