설명형 애니메이션 영상 만들기 (Creating Explainer Videos)
단순한 MP4가 아닌, 추적 가능한 교육 제품을 만듭니다. Agent는 실행 가능한 상태 머신을 구동하고, 필요한 도구를 호출하며, 그 증거를 검사하고, 해결되지 않은 게이트에서 멈추어야 합니다.
실행 가능한 프로젝트로 시작하기
설치된 CLI explainer-video-skill을 사용하세요. 복사된 Skill 디렉토리에서는 대신 node <skill-dir>/scripts/explainer-video.mjs를 사용하세요. 렌더링을 약속하기 전에 doctor --json을 실행하세요.
JavaScript 프로젝트 및 미디어 명령어는 Node.js 22+가 필요합니다. 설치, 업데이트, 확인, 롤백, 제거, 확장 목록을 위한 Python 수명 주기 명령어는 Node.js가 필요하지 않습니다.
정확한 질문, 대상, 언어, 플랫폼 및 화면 비율이 확인된 후에만 프로젝트를 생성하세요:
explainer-video-skill new <project-dir> --title "제목" --topic "설명할 정확한 문제" --template spatial-chamber --preset general-mechanism --json
explainer-video-skill status --json <project-dir>
explainer-video-skill next --json <project-dir>
모든 단계에서 다음 루프를 반복하세요:
status --json과next --json을 실행합니다.- 나열된 필수 입력과 게이트를 읽습니다.
- 실제 연구, 작성, 생성, 렌더링 또는 검토 작업을 수행합니다.
- 요청된 증거 파일을 작성합니다. 성공을 조작하지 마십시오.
validate <current-stage> <project-dir> --json을 실행합니다.- 검증이 프로젝트를 다음 단계로 진행시킬 때만 계속합니다.
단계는 다음과 같습니다: discovery -> brief -> evidence -> mechanism_map -> narration_and_cues -> real_audio_timing -> scene_spec -> runnable_renderer -> render -> automated_qc -> human_listen -> publishing_package -> human_release_decision.
내용 계약 (Content contract)
약속, 증거, 메커니즘, 내레이션 또는 큐 맵을 정의할 때 content-and-script-contract.md를 읽으세요.
input -> internal state changes -> output을 설명하고, 각 단계가 뒤따르는 이유를 포함하세요.- 한 가지 실제 예제와 하나의 관련 경계, 비용, 제어 또는 실패 체인을 포함하세요.
- 지속 시간, 장면 수, 단어 수를 깊이 경보로 취급하고, 절대 패딩 목표로 삼지 마세요.
- 공개 주제를 실제로 가르치는 메커니즘보다 넓게 설정하지 마세요.
- 시리즈의 경우, 첫 문장은 이전 출력을 이 정확한 주제와 연결하고, 마지막 문장은 다음 정확한 질문을 미리 봅니다. 독립형 영상의 경우, 정확한 질문으로 시작하고 재사용 가능한 결론으로 마칩니다.
- 하나의 표준 음성 문자열을 저장합니다. 캡션과 TTS는 정규화 후 문자 수준에서 동일해야 합니다.
\_, snake_case의 밑줄, Markdown 구문 및 TTS 엔진이 문자 그대로 발음할 수 있는 기타 문자를 제거합니다. 기술 철자는 별도의 화면 레이블에 유지합니다.- 모든 큐의 내레이션, 표시 제목, 메커니즘 레이블, 초점, 동작 및 핸드오프를 동일한 로컬 주장에 바인딩합니다.
메커니즘 사실에는 1차 증거를 사용합니다. 증거 테이블에 출처, 출처 유형, 확인 날짜, 단순화 및 계획된 시각적 표현을 유지합니다. 커뮤니티 출처는 혼란이나 경계 사례를 드러낼 수 있지만, 자체적으로 메커니즘을 확립하지는 않습니다.
시각 템플릿 컬렉션에서 선택하기
템플릿을 선택하거나 수정하기 전에 visual-template-collection.md를 읽으세요. 실행 가능한 매니페스트를 다음 명령어로 검사하세요:
explainer-video-skill templates list --json
explainer-video-skill templates inspect paper-theatre --json
explainer-video-skill templates inspect spatial-chamber --json
explainer-video-skill templates inspect ink-explainer --json
paper-theatre: 객체 식별, 물리적 처리, 증거, 정렬, 비교 및 편집 변형.spatial-chamber: 시스템, 경로, 레이어, 파이프라인, 큐, 전송 및 고영향 공간 상태 변화.ink-explainer: 유도, 공식, 인과 관계, 밀집 주석, 비교 및 수정.
지식 구조에 따라 선택하고, 장식으로 선택하지 마십시오. 프로젝트가 기본 요소를 결합할 수 있지만, 하나의 문법이 지배적이어야 합니다. 오래된 장면을 복사하고 텍스트를 바꾸지 마십시오. 풀프레임 스캔 라인, 내레이션 길이의 스윕, 의미 없는 입자 또는 반복 카드를 대체 동작으로 사용하지 마십시오.
생성된 렌더러는 일반적인 실행 가능한 스캐폴드일 뿐, 완성된 시각적 방향이 아닙니다. 릴리스 전에 테마별 시각 요소로 대체하거나 확장하십시오: 주제별 SVG/DOM 프리미티브, 공간 관계, 카메라 언어 및 실제 메커니즘에서 파생된 의미론적 동작. 단지 렌더링이 성공했다는 이유만으로 시작 장면을 고충실도 완성 영상으로 제시하지 마십시오.
디스플레이 역할에는 로컬 라이선스가 있고 설치된 경우 DingTalk JinBuTi/DingTalk Sans를 사용하고, 캡션에는 Noto Sans SC 또는 테스트된 CJK 폴백을 사용하십시오. 재배포 권한 없이 글꼴 바이너리나 상용 GSAP 플러그인을 패키징하지 마십시오. 모든 프리미엄 플러그인은 해당 템플릿에 의해 선언된 폴백이 필요합니다.
내레이션, 타이밍 및 렌더링
구현 전에 engineering-pipeline.md를 읽으세요.
explainer-video-skill narration prepare <project-dir> --json
# 필요한 비용/자격 증명 승인 후에만 선택한 제공자로 내레이션을 생성합니다.
explainer-video-skill narration import-timing <project-dir> --timing <measured-timing.json> --json
explainer-video-skill build <project-dir> --json
explainer-video-skill render <project-dir> --json
explainer-video-skill cover <project-dir> --json
explainer-video-skill mux <project-dir> --audio <narration.wav> --json
실제 측정된 내레이션 타이밍만이 유일한 최종 애니메이션 클록입니다. 결정론적 일시 중지 타임라인, 로컬 자산, 고정 viewBox 및 명시적 큐 앵커를 사용하십시오. 릴리스 렌더링에서 런타임 무작위성, 원격 자산, 벽시계 타이머 또는 추정 타이밍을 절대 사용하지 마십시오.
이 저장소에서 렌더러 또는 미디어 도구 체인을 변경할 때는 npm run smoke:render를 실행하여 실제 브라우저 렌더링, 표지 캡처, 오디오 먹싱, ffprobe 검사 및 미디어 감사가 통합 경로를 실행하는지 확인하십시오.
무작위 프레임이 아닌 전용 표지를 생성하십시오. 표지는 정확한 주제를 명시하고 휴대폰 크기 미리보기에서도 읽을 수 있어야 합니다. 시리즈/시즌/에피소드 레이블은 사전 설정 규칙이며 코어 패키지 브랜딩이 아닙니다.
QC 및 릴리스 경계
후보를 완료라고 부르기 전에 release-qc-and-publishing.md를 읽으세요.
explainer-video-skill audit <project-dir> --json
explainer-video-skill package <project-dir> --json
자동화된 검사에는 전체 디코드, 미디어 사양, 블랙/프리즈/무음 진단, 대표 프레임, 경고 프레임, 오버플로우/레이아웃 검사, 표지 미리보기 및 아티팩트 해시가 포함되어야 합니다. 자동화는 release_candidate_pending_human_listen만 작성할 수 있습니다.
정확히 해시된 후보에 대해 세 번의 인간 검토를 완료하십시오: 음소거 시각 검토, 오디오 전용 검토, 일반 시청. 제목/내레이션/캡션/초점 불일치, 클리핑, 읽을 수 없는 텍스트, 우발적인 기호 발음, 타이밍 드리프트, 죽은 동작, 반복 구성, 더러운 전환 및 믹싱 결함을 타임스탬프와 함께 기록하십시오.
지명된 검토자가 전체 해시된 후보를 청취한 후에만 Agent가 다음을 실행할 수 있습니다:
explainer-video-skill release record-human-decision <project-dir> --decision passed --actor "<reviewer>" --complete-listen --listened-sha256 "<sha256>" --json
렌더링, 제공자 성공, 녹색 테스트 또는 파일 존재에서 passed를 절대 추론하지 마십시오.
확장, 프리셋 및 이식성
시각, 음성, 연구, QC 또는 게시 프로필을 추가하기 전에 extension-api.md를 읽으세요. 확장은 선언적이며, 권한 목록에 있고, 해시로 잠겨 있으며, 임의의 훅을 실행할 수 없습니다. general-mechanism은 도메인 중립적입니다. 주제별 동작은 포함된 ai-principle-series 예제와 같은 명시적 프리셋에 속합니다.
npm, Codex, 기타 Agent 호스트, 마이그레이션, 업데이트, 롤백 및 자산 라이선스 규칙에 대해서는 install-and-portability.md를 읽으세요.
중지 조건
다음의 경우 정확한 차단자를 보고하고 중지하십시오: 사실이 확인되지 않은 경우, 주제 약속이 설명보다 더 넓은 경우, 표준 내레이션이 고정되지 않은 경우, 실제 오디오 타이밍이 없는 경우, 제목/카드/내레이션/초점이 다른 경우, 텍스트가 잘리거나 넘치는 경우, 선택한 템플릿이 메커니즘을 표현하지 못하는 경우, 미디어 디코드가 실패한 경우, 라이선스 자산이 해결되지 않은 경우, 또는 인간 검토가 완료되지 않은 경우.