Communitygithub.com

howoneai/xiaolin-explainer-packaging

小Lin说(Xiao Lin Shuo)风格的财经、科普讲解视频包装。包含 Remotion 版式组件库、资料检索规范、分镜 API 及混音、质检脚本,用于将出镜口播片段包装成讲解画面。

xiaolin-explainer-packaging란 무엇인가요?

이 스킬은 소린셔(小Lin说) 스타일의 재정·과학 해설 영상 패키징을 자동화합니다. Remotion 기반의 템플릿 컴포넌트(거대 숫자, 카드 벽, 화이트보드 차트, 전체 페이지 문서 하이라이터, 실물 카드, 큰 수식 바, 흰 배경 계산기, 제목 및 장 카드, PIP, 전환 효과)와 자료 조회 규범(각 레이아웃에 필요한 데이터·원문·출처 등급·사실 파일 템플릿·Wikimedia Commons 자유 라이선스 사진 다운로드 스크립트)을 포함합니다. 출연자 구술 클립(A-roll)과 대사를 입력받아 자동으로 타임라인·씬 구성·자막·전환·오디오 믹싱을 처리하며, 최종적으로 브랜드 로고와 'AI 생성 · 비본인' 워터마크가 포함된 완성 영상을 출력합니다. macOS 환경에서 Node.js ≥ 18, ffmpeg, Python3 (numpy, Pillow)를 요구하며, Remotion 라이선스에 따라 개인·3인 이하 팀·비영리 단체는 무료 사용 가능합니다. 주요 리소스(스타일 가이드, 리서치 매뉴얼, 레이아웃 문서, 스토리보드 API)를 읽고 단계별로 입력 준비→프로젝트 생성→씬 계획→자료 조회→스토리보드 작성→키프레임 검수→전체 렌더링·믹싱·감사를 수행합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/howoneai/xiaolin-explainer-packaging/tree/main/xiaolin-explainer-packaging

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

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

문서

소린셔 설명 패키징

출연 구술 클립(A-roll)과 대사를 소린셔 스타일의 설명 영상으로 패키징합니다. 출연 장면은 다른 도구로 생성하거나 촬영합니다. 이 스킬은 패키징에 필요한 자료 조회와 설명 화면, 자막, 전환, 사운드를 담당합니다.

환경에 design-aesthetic-standard가 있으면 시각 및 사운드 창작 판단이 이를 함께 따릅니다. video-generation이 있으면 출연 클립 생성과 편집은 해당 스킬을 참조합니다.

참조 문서 (필요 시 읽기)

  • references/style-bible.md: 그녀의 그래픽 언어, 6가지 하드 룰, 색상 팔레트, 폰트, PIP, 전환 통계, 사운드 레벨. 씬을 계획하기 전에 반드시 읽어야 합니다.
  • references/research.md: 각 레이아웃에 필요한 자료, 출처 등급, 확인 위치, 이미지 권리. 씬을 계획할 때 읽습니다.
  • references/layouts.md: 각 레이아웃 컴포넌트의 파라미터, 호출 예제, 주의사항. 스토리보드를 작성할 때 읽습니다.
  • references/storyboard-api.md: timeline.json과 project.json 형식, 스토리보드 API, 키워드 타이밍, 리뷰 및 렌더링 명령. 처음 프로젝트를 설정할 때 읽습니다.

환경

  • Node.js ≥ 18, ffmpeg, python3 (numpy 및 Pillow 포함). npm install 및 첫 번째 렌더링 시 인터넷 연결 필요 (Remotion이 Chrome을 다운로드).
  • macOS (Apple Silicon)에서만 테스트되었습니다. 다른 시스템에서는 기본적으로 소프트웨어 렌더링 swangle을 사용하며, 환경 변수 REMOTION_GL로 변경 가능합니다.
  • 폰트: 템플릿에 6개의 SIL OFL 폰트가 포함되어 있으며, 라이선스는 templates/engine/public/fonts/LICENSES.txt에 있습니다. YouShe 타이틀 흑체 (YouShe.ttf)는 패키지에 없을 수 있습니다. new_project.sh는 $YOUSHE_TTF 및 일반 폰트 디렉토리에서 찾습니다. 찾지 못하면 사용자에게 https://www.uisdc.com/uisdc-first-free-font 에서 다운로드하여 public/fonts/YouShe.ttf로 저장하라는 메시지를 표시합니다. 이 폰트가 없으면 제목과 자막이 Noto Sans CJK 가장 굵은 웨이트(900)로 폴백되며, 사선 처리가 없어 스타일이 크게 약해집니다.
  • Remotion 라이선스: 개인, 3인 이하 회사 및 비영리 단체는 상업적 사용을 포함하여 무료로 사용 가능합니다. 4인 이상 회사는 회사 라이선스를 구매해야 합니다 (https://www.remotion.pro/license).

워크플로우

1. 입력 준비

  • 출연 클립: 각 문장에 대해 1920×1080 mp4 파일을 public/clips/<id>.mp4에 저장.
  • 대사: 각 문장에는 낭독 텍스트 say (한자 표기)와 자막 텍스트 sub가 필요합니다.
  • 사실 파일: templates/facts_template.md에서 복사. 이미 있는 사실과 출처를 먼저 작성하고, 누락된 것은 4단계에서 조회.
  • 선택 사항: 실사 또는 AI 이미지 (public/broll/), 사진 (public/photos/), 음악 (public/music/), 새 아이콘 (public/icons/).

2. 프로젝트 생성

<skill>/scripts/new_project.sh <프로젝트 디렉토리>          # --demo 옵션을 추가하면 4개의 가짜 출연 클립과 예제 스토리보드가 생성되어 스모크 테스트에 사용됩니다.

그런 다음 timeline.json을 작성합니다. 각 출연 비디오 클립을 트랜스크립트하고 tin/tout을 결정하며, 시작과 끝의 무음을 자릅니다. 중간에 말실수는 cuts에 기록합니다. project.json의 brand와 music을 수정합니다.

3. 씬 계획 (먼저 테이블을 작성한 후 코드 작성)

style-bible.md와 research.md를 읽은 후 다음 테이블을 작성합니다: 씬 이름 | 포함 문장 | 레이아웃 | 어두운 배경 또는 흰 배경 | PIP 방식 | 필요한 자료. 다음 5가지를 확인합니다:

  • 하나의 씬은 2~8개 문장을 포함하며, 한 문장에 한 페이지가 되어서는 안 됩니다.
  • 각 씬에서 '주체가 잘림' 또는 '주체가 화면의 60% 이상을 차지'(R1)를 충족해야 합니다.
  • 어두운 배경 씬 2~3개마다 흰 배경 씬 1개가 있어야 합니다(R2).
  • 원문을 인용할 때는 docpage를 사용하며, 원문은 실제로 한 글자씩 인용되어야 합니다.
  • 오프닝 훅, 의견 문장, 전환 문장 및 결말은 전체 화면 출연에 남겨두고, 설명 화면으로 완전히 덮지 않아야 합니다.

4. 자료 조회

씬 테이블의 '필요한 자료' 열을 따라 항목별로 조회하며, 방법은 research.md를 참조합니다. 각 결과를 사실 파일에 번호, 원문, 출처 링크, 날짜와 함께 기록합니다. 사진은 scripts/commons_photo.py로 검색 및 다운로드합니다.

조회 후 씬 테이블을 수정합니다: 한 글자씩 인용할 원문을 찾을 수 없으면 docpage를 사용하지 않음; 동일한 기준의 데이터를 모을 수 없으면 paper를 사용하지 않음. 대사의 숫자가 사실 파일과 일치하지 않으면 대사를 먼저 수정한 후 출연 클립을 생성하거나 다시 편집합니다.

5. 스토리보드 작성

templates/scenes_example.py에서 작성 방법을 복사합니다. 각 씬은 다음을 충족해야 합니다:

  • 요소의 입장 애니메이션 키워드 정렬: S.k('키워드', -0.15).
  • 현재 항목은 밝게, 나머지는 어둡게 (focus / hl / lit). 카메라는 현재 항목을 따라감 (sc.cam / look).
  • KF.append((태그, 시간))을 사용하여 최소 1개의 리뷰 프레임을 등록.

python3 story_core.py timeline.json scenes.py를 실행하여 gaps/overlaps []를 확인합니다.

6. 키프레임 리뷰 (최소 2회)

python3 -c "import json;print(' '.join(str(f) for _,f in json.load(open('keyframes.json'))))" | xargs node render.mjs stills stills/k1
python3 <skill>/scripts/sheet.py stills/k1 keyframes.json 6

하나씩 그리드 이미지를 검토하고, 아래 리뷰 체크리스트에 따라 수정한 후 수정된 프레임을 다시 렌더링합니다. 원본 영상이 있는 경우 동일한 유형의 레이아웃 원본 프레임을 캡처하여 나란히 비교합니다.

7. 전체 렌더링, 믹싱, 합성, 품질 검사

<skill>/scripts/render_chunks.sh video.mp4
python3 <skill>/scripts/mix_audio.py timeline.json mix_raw.wav
<skill>/scripts/finalize.sh video.mp4 mix_raw.wav final.mp4
python3 <skill>/scripts/audit.py video.mp4 72        # 비디오 프레임과 정적 프레임을 프레임별로 비교하며, flagged는 반드시 0이어야 함.

모바일 버전: ffmpeg -i final.mp4 -c:v libx264 -crf 23 -preset medium -pix_fmt yuv420p -c:a aac -b:a 128k -movflags +faststart final_phone.mp4.

리뷰 체크리스트

각 키프레임에서 확인:

  1. 주체가 충분히 크거나 가장자리에서 잘림. 주변에 넓은 빈 공간이 없어야 함.
  2. 현재 말하고 있는 항목이 가장 밝고, 카메라가 그 근처에 있어야 함.
  3. 프레임당 최대 2개의 레이블.
  4. 자막 (화면 y 905–960), PIP, 채널 로고, AI 라벨에 의해 가려지는 요소가 없어야 함.
  5. 박스형 문자 (누락된 글리프), 세로로 줄바꿈된 단어, 카드를 벗어난 글자가 없어야 함.
  6. 숫자, 단위, 원문이 사실 파일과 일치하고, 출처 행이 존재하며, CC BY 사진에는 저작자 표시가 있어야 함.
  7. 흰 배경 씬과 어두운 배경 씬이 번갈아 나타나야 함.

알려진 함정

  • 키워드가 문장의 시작에 있을 때 S.k(단어, -0.3)이 클립 시작점보다 앞설 수 있음. max(S.t0, ...)으로 잘라냅니다.
  • formula6의 토큰 열 너비는 iw와 같습니다. iw는 문자 수 × fs보다 크거나 같아야 합니다.
  • 화면 x = (세계 x − 카메라 x) × s + 960. piprect는 화면 x 110–560을 차지하며, 주체는 ≥ 600 위치에 배치. 카메라 위치를 변경하면 화면에서 주체의 위치도 함께 변경됩니다.
  • ui 결과의 기본 단위는 '위안/월'이며, u=로 변경 가능.
  • paper 카드 하단의 화면 y는 ≤ 900이어야 합니다.
  • ent6의 국기 코드는 cl, cn, de, fr, jp, us만 지원.
  • 이미지 경로가 존재하지 않으면 해당 프레임 렌더링이 실패합니다 (FAIL ... Error loading image). 먼저 ls public/<경로>로 확인.
  • 정적 프레임이 정상이라고 해서 전체 비디오가 정상임을 보장하지 않습니다. 전체 렌더링 후 반드시 audit.py를 실행.
  • 그라데이션 3D 텍스트가 600px를 초과하면 Chrome이 멈출 수 있습니다. GText의 레이어 수와 블러 제한을 제거하지 마세요.

사용 경계

  • 이것은 스타일 복제 도구입니다. 완성 영상에 brand.label의 'AI 생성 · 비본인' 라벨을 유지하고, 제거하지 마세요.
  • brand.logo는 기본적으로 비어 있습니다. 사용자 자신의 채널 로고를 입력하세요. '소린셔' 또는 다른 실제 크리에이터의 로고를 채운 후 공개 배포하지 마세요.
  • 실제 크리에이터의 초상이나 목소리를 사용하여 출연 장면을 생성한 후 공개 배포하지 마세요.
  • 완성 영상을 본인의 작품으로 게시하거나 시청자를 오도하는 데 사용하지 마세요.
  • 영상에 포함된 데이터, 원문, 정책 조항은 모두 출처까지 추적 가능해야 합니다.

관련 스킬