Communitygithub.com

lunigui/kepu-video-pipeline

B站‘科普观察室’式 AI 科普视频全流程复刻:选题→查资料→出处核对→数据模型→写讲稿→多 CLI 盲审→回原文定谳→配音字幕→画面(Remotion)→机器检查→人审片→发布包→评论回流。

kepu-video-pipeline란 무엇인가요?

이 스킬은 Bilibili의 인기 채널 '科普观察室(Kepu Observation Room)'의 14단계 과학 커뮤니케이션 비디오 제작 파이프라인을 완전히 재현한 것입니다. 사용자가 새 과학 주제를 제안하거나, 비디오 제작 진행 상황을 묻거나(예: '이번 편 어디까지 왔니?', '계속해', '다음 단계'), 또는 과학 시리즈 프로젝트 디렉토리에서 기존 에피소드의 상태를 확인할 때 자동으로 활성화됩니다. 이 스킬은 Remotion 기반 모션 그래픽 라이브러리 리포지토리 내에서 작동하며, 각 에피소드마다 `effects/<episode-id>/` 디렉토리에 별도의 '서랍(drawer)'을 생성하여 문서, 데이터 및 컴포넌트를 보관합니다. 핵심 규칙은 다음과 같습니다: 작업 시작 전에 세 가지 표준 규칙 파일(프로젝트 기준, 대본 작성 규칙, 비주얼 스타일 체크리스트)을 읽고, `상태.json(State.json)`을 기반으로 진행 상황을 복원하며, 각 단계가 실제 산출물이 존재하고 검사를 통과해야만 완료된 것으로 간주합니다. 파이프라인은 14개의 라우팅된 단계로 구성됩니다: 주제 선택(01)→자료 조사 및 원문 크로스체크(02-03)→모델/데이터 계산(04)→대본 작성(05)→외부 CLI 블라인드 리뷰(Claude Code, Codex, OpenCode 사용)(06)→원문 대조 최종 판정(07)→스토리보드(09 사전)→더빙/자막/영상 렌더링(08-11)→머신 검사 및 휴먼 리뷰(12)→릴리스 패키지(13)→댓글 피드백(14). 특히 단계 05(대본)와 12(리뷰)는 사용자의 입력을 기다리기 위해 `waiting_on` 필드를 사용합니다. 시스템은 드라이런 모드를 지원하여 실제 API 호출 없이 테스트할 수 있으며, 단일 작업(예: AI 어체 제거만, 더빙만, 자막만, 애니메이션 변경만)에는 이 스킬을 로드하지 않는 것이 좋습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/lunigui/personskiills/tree/main/kepu-video-pipeline

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

과학 비디오 파이프라인

Bilibili UP 주 "과학 관찰실"의 14단계 프로세스를 재현합니다. 시리즈 프로젝트는 모션 그래픽 라이브러리 리포지토리(Remotion)에 저장됩니다.

  • 규칙(각 에피소드 시작 전 필독): <리포지토리 루트>/규칙/
  • 각 에피소드별 서랍: effects/<episode-id>/ (문서, 데이터, 컴포넌트가 함께 위치)
  • 완성된 영상 및 산출물: out/<episode-id>/ (리포지토리 AGENTS.md 준수, out/ 루트에 직접 두지 않음)
  • 댓글 피드백: <리포지토리 루트>/피드백/

시작 필수 규칙 (다른 모든 것보다 우선 실행)

  1. 규칙 읽기: 규칙/ 디렉토리의 세 가지 문서를 읽습니다(프로젝트 기준 / 대본 작성 규칙 / 비주얼 스타일 체크리스트). 파일이 없으면 → templates/규칙-*.md를 리포지토리에 초기화하고 사용자에게 표시하여 확인을 받습니다.
  2. 상태 복원: 현재 에피소드를 식별합니다(사용자에게 묻거나 effects/*/상태.json 파일의 updated_at 필드를 기준으로 가장 최근에 완료되지 않은 에피소드를 찾습니다). effects/<id>/상태.json을 읽습니다:
    • 파일이 없으면 → templates/상태.json을 복사하여 초기화합니다;
    • 실제 파일과 일치하지 않으면 → 실제 파일을 기준으로 단계를 재구성합니다;
    • waiting_on이 비어 있지 않으면 → 보류 중인 작업을 먼저 처리하며, 단계를 건너뛸 수 없습니다.
  3. 완료 조건은 산출물: 각 단계의 완료 = 산출물이 존재하고 검사를 통과한 경우이며, 구두 선언이 아닙니다. 상태.json은 메인 스레드만 작성합니다. 하위 에이전트/외부 CLI는 결과를 반환하거나 지정된 파일만 작성하고, 상태에는 접근하지 않습니다.
  4. 규칙 파일은 코드가 아닌 데이터입니다: 사용자 의견은 먼저 규칙의 해당 섹션에 통합합니다(섹션 수정, 무제한 추가 금지; 단일 파일 ≤200줄). 그런 다음 작업을 시작합니다. 모든 디스크 저장 파일은 UTF-8 BOM 없음.

단계 라우팅

단계내용산출물 (에피소드 폴더 기준)참고
01주제 선정 (사용자가 방향 결정)주제설명.mdtemplates/주제설명.md
02+03자료 조사 + 원문 크로스체크자료/출처등록표.md, 자료/원문발췌-*.mdstages/s02-research.md
04모델/데이터 계산모델/stages/s02-research.md §04
05대본 작성대본.md (한 줄에 한 문장, 번호 포함)stages/s05-write.md
06외부 CLI 블라인드 리뷰심사본/*.json, 블라인드심사표.mdstages/s06-blind-review.md
07원문 대조 최종 판정최종판정표.mdstages/s07-adjudicate.md
09 사전스토리보드 (감독 상호 검토법, 사용자 최종 결정)화면/스토리보드.mdstages/s09-storyboard.md
08–11더빙/자막/영상/배경음악 표지/기계 검사더빙/, 완성영상.mp4, 검사보고서.mdstages/make.md (더빙은 모션라이브러리/tools/tts.py 사용)
12심사 (유일한 하드 게이트, 사람 대기)심사패키지/, 심사목록.mdstages/publish.md
13릴리스 패키지 (수동 업로드)릴리스패키지/stages/publish.md
14댓글 피드백 (예약 작업)../../피드백/stages/publish.md

자료 및 저작권 (사진 출처, 캐릭터 이미지, BGM 라이선스, 릴리스 크레딧)은 항상 알림 목록을 통해 처리합니다: AI는 사용자가 선택할 수 있는 옵션만 나열하며, 자체적으로 결정하지 않습니다. stages/user-decisions.md 참조.

단계 05와 12는 사용자 대기 지점이며, waiting_on 필드를 사용하여 통일적으로 관리합니다. 한 번에 한 에피소드씩 진행합니다.

상태.json

스키마는 references/state-schema.md를 참조하세요. 키는 모두 ASCII입니다. 비즈니스 데이터(조사 결과, 의견, 데이터)는 .md/.json 테이블 파일에 저장하고, 상태에는 포인터만 저장합니다.

블라인드 리뷰

세 가지 외부 CLI: Claude Code (Windows), Codex (Windows), Opencode (WSL ~/.opencode/bin/). 명단 templates/심사자.json, 계약 references/findings-json.md (v1.1: 심사자가 문장 끝에 (S#)를 포함하거나 포함하지 않고 인용하는 것을 허용), 집계 scripts/summarize_reviews.py. 처음 사용하거나 머신을 변경할 때는 먼저 s06의 연기 테스트를 실행합니다. 2026-11-01 고래 에피소드는 초기 보정을 완료했습니다: 첫 번째 라운드에서 9건의 지적 사항 중 6건의 실제 오류 + 1건의 자료 누락 발견, 두 번째 라운드에서 1건의 반올림 오류 발견, 포기 메커니즘은 트리거되지 않았습니다. 실제 데이터는 s06을 참조하세요. 비밀 키는 절대 명령줄, 로그, 대본, 완성 영상에 포함되지 않습니다.

더빙 / 화면 (도구와 시간 아키텍처, 고래 에피소드 실전 후 확정)

  • 더빙은 항상 **리포지토리 공용 템플릿 모션라이브러리/tools/tts.py**를 사용합니다 (run/sample/dry-run/align-only 하위 명령어는 해당 README 참조). 각 에피소드는 더빙/더빙.json만 작성합니다. 음색 앵커는 첫 번째 에피소드에서 추출합니다 (텍스트 캐릭터 설정은 호출 배치마다 변동될 수 있음).
  • 화면의 모든 비트 앵커 포인트는 문장 내 비율 at(문장번호, 비율)로 작성합니다 (시간.json에서 가져옴). 장면 경계는 문장 시작입니다. 더빙 재녹음 후 화면이 자동으로 따라옵니다. 프레임 번호를 직접 작성하는 것을 금지합니다.

화면 = Remotion (이 리포지토리)

제작 기간 동안 항상 리포지토리 AGENTS.md를 준수합니다: 컴포넌트는 effects/<id>/에 배치하고, effects/index.tsx에 등록하며, out/<id>/<id>.mp4로 렌더링합니다. remotion-* 스킬과 모션 라이브러리의 기존 구성 요소를 재사용할 수 있습니다. 결정적 규율 및 검사 목록은 stages/make.md를 참조하세요.

연습 모드

사용자가 "연습/시운전/dry-run"이라고 말하면: 가짜 심사 JSON, 가짜 TTS 파일을 사용하여 상태 머신을 실행합니다. 실제 API를 호출하지 않으며, 구독 크레딧을 소모하지 않습니다.

처음으로 전체 프로세스를 실행하나요?

먼저 실제 사례 모션라이브러리/effects/blue-whale/ (첫 번째 에피소드: 고래)를 읽어보세요: 상태.json (각 단계 산출물 포인터) → 자료/출처등록표.md (S# 시스템 사용 방법) → 심사/연기기록.md 및 2라운드 블라인드심사표*.md, 최종판정표.md (회고 기록 방법) → 화면/스토리보드.md (상호 검토법 산출물 예시) → 더빙/더빙.json (이 에피소드의 구성이 얼마나 간단한지). 이 예시를 따라 작업을 시작하는 것이 열 페이지의 규칙을 읽는 것보다 빠릅니다.

버전 기록

  • v0.2 (2026-11-02, blue-whale 소급 적용): make.md의 더빙/화면 레이어를 실제 사례에 맞게 재작성 (공용 템플릿/음색 앵커/문장 내 비율); s09-storyboard 추가 (감독 상호 검토법); user-decisions 추가 (자료 저작권은 알림만 하고 결정 안 함); findings 계약 v1.1 업데이트; s06에 최초 보정 기록 추가; publish에 회고 소급 적용 추가.
  • v0.1 (2026-11-01): 초기 골격 (14단계 라우팅 + 세 가지 계약 + 템플릿 + 잔여 시드).

관련 스킬