비디오 설명자
모든 주제에 대해 나레이션이 포함된 3Blue1Brown 스타일의 설명 영상을 제작합니다. 시각 자료는 Manim (Community Edition)을 사용합니다. 나레이션은 로컬 텍스트 음성 변환 모델인 Kokoro-82M을 사용하며, API 키 없이 로컬 머신에서 실행됩니다. 각 나레이션 라인이 해당 애니메이션의 타이밍을 설정합니다.
작업은 두 부분으로 나뉩니다:
script.md작성: 각 나레이션 라인과 그에 맞는 화면 구성을 작성합니다. 컨텍스트를 가지고 있으므로 스크립트를 직접 작성합니다.- 서브 에이전트가
script.md로부터 영상을 제작합니다. 장면을 작성하고, 렌더링하며, 레이아웃을 확인하고 최종 렌더링을 수행합니다.
빌드 과정은 약 20번의 툴 호출을 거치며, 각 호출은 전체 컨텍스트를 다시 전송합니다. 새로운 서브 에이전트는 작은 컨텍스트를 가지므로 빌드가 더 저렴하고 빠릅니다. 또한 서브 에이전트는 백그라운드에서 실행되므로 사용자는 계속해서 다른 작업을 진행할 수 있습니다.
explainer 명령어가 나머지 작업을 수행합니다. PATH에 등록되어 있어야 합니다. 설정 방법은 https://github.com/pranav7/video-explainers 를 참조하세요. 명령어 목록은 explainer -h를 실행하세요.
0. 설정 (머신당 한 번)
explainer doctor를 실행하세요. Homebrew 패키지, 폰트, TinyTeX, Python 환경 및 아이콘을 설치한 후 Kokoro와 LaTeX를 테스트합니다. 다시 실행해도 안전합니다. 누락된 종속성으로 인해 명령어가 실패하면 실행하세요.
1. 계획
- 위치. 대화 주제에 해당하는 프로젝트에 문서 폴더가 있는 경우, 해당 폴더 내
videos/<slug>/디렉토리에 비디오를 배치합니다. 그렇지 않은 경우~/Movies/explainers/<slug>/를 사용합니다. - 시청자 및 길이. 요청에 명확히 명시되지 않은 경우에만 질문합니다. 기본값: 해당 주제에 대해 배경 지식이 없는 호기심 많은 성인, 2~4분 길이.
- 스크립트 길이. Kokoro는 분당 약 170단어를 말하므로, 3분 영상은 약 500단어의 나레이션이 필요합니다. 각 챕터는 30~45초 분량으로 작성합니다.
주제에 적합한 구성을 선택합니다.
개념(알고리즘, 수학 또는 과학 아이디어)의 경우:
- 정의 대신 구체적인 질문이나 퍼즐로 시작합니다.
- 시청자가 볼 수 있는 하나의 구체적인 예시로 직관을 형성합니다.
- 일반화하고, 그 후에야 공식을 제시합니다. 공식은 시청자가 이미 본 것에 이름을 붙여줍니다.
- 하나의 그림으로 핵심 아이디어를 마무리합니다.
상황(실패한 실행, 사건, 설계, 업무 현황)의 경우:
- 실제 숫자와 함께 발생한 일로 시작합니다.
- 원인이 된 메커니즘을 한 단계씩 보여줍니다.
- 변경된 사항(수정, 결정 또는 다음 단계)을 보여줍니다.
- 변경 사항이 적용된 전체 시스템의 한 장면으로 마무리합니다.
2. script.md 작성
비디오 디렉토리에 script.md를 다음 형식으로 작성합니다:
# 주문 페이지가 느린 이유
팀 엔지니어 대상. 약 3분.
## 팔레트
| 개념 | 색상 |
| --- | --- |
| API 서버 | SKY |
| 데이터베이스 | VIOLET |
| 느리고 낭비되는 작업 | CORAL |
| 수정 사항 | MINT |
## 1. 시작: 주문 50개, 쿼리 50개
- "주문 페이지가 50개의 주문을 로드하는 데 4초가 걸립니다."
- "4.1 s"가 코랄로 표시된 브라우저 카드와 50개의 주문 태그 목록.
- "서버가 각 주문에 대해 데이터베이스에 한 번씩 질의합니다."
- API 서버 카드와 데이터베이스 카드. 패킷이 카드 사이를 주문당 하나씩 이동합니다.
각 챕터 제목은 ## <번호>. <SceneName>: <챕터 제목> 형식입니다. 빌더는 각 챕터에 대해 하나의 장면 클래스를 만듭니다. 챕터 제목은 비디오에서 챕터 마커가 됩니다.
빌더는 이 대화 내용을 볼 수 없습니다. 화면에 표시되는 모든 이름, 숫자, 레이블 및 값은 스크립트에 포함해야 합니다.
나레이션은 작성된 그대로 읽힙니다:
- 음성 형태로 작성: "x 제곱", "2 파이 r", "P O 번호", "v 투". 나레이션에 LaTeX, 기호 또는 코드를 넣지 마십시오.
- 각 줄에 한 문장, 최대 두 문장을 작성합니다. 각 줄은 하나의 시각적 변화입니다.
- Kokoro가 단어를 잘못 발음하는 경우, 인라인으로 음소를 제공합니다:
[Kokoro](/kˈOkəɹO/). - 기본 음성은
af_heart입니다. 사용자가 음성에 관심이 있다면explainer voices를 실행하고 듣게 합니다 (afplay voice-samples/<name>.wav).
각 나레이션 라인 아래에는 슬라이드가 아닌 그림을 설명합니다. 객체, 표시되는 내용, 움직이는 항목을 명명합니다. 각 개념에 팔레트에서 하나의 색상을 지정합니다.
팔레트 색상은 키트의 악센트에서 가져옵니다: SKY, MINT, AMBER, CORAL, VIOLET, AQUA, ROSE, PEACH, LIME. 키트에는 개념이 아닌 항목을 위한 중성 색상도 있습니다: SUBTLE, FAINT, INK. 키트에는 카드, 태그, 테이블, 코드 창, 파이프라인, 시퀀스 다이어그램, 타임라인, 트리, 콜아웃, 차트, 큰 숫자 및 Lucide 아이콘이 포함되어 있습니다. 이를 사용하는 그림을 설명하세요.
각 숫자를 그대로 표시하십시오. 0부터 카운트업하는 숫자를 요청하지 마십시오.
3. 빌드 위임
서브 에이전트로 빌더를 시작합니다. 빌드 작업을 위한 에이전트 유형 또는 모델을 지정하는 명령어가 있다면 사용합니다. 다음 프롬프트를 제공합니다:
<directory>/script.md에 대한 설명 영상을 빌드하세요. `explainer guide`를 실행하고 안내를 따르세요. 비디오 경로, 길이, 그리고 그대로 남겨둔 각 레이아웃 경고와 그 이유를 보고하세요.
사용자가 자막을 요청한 경우 프롬프트에 "Render with --captions."을 추가합니다.
사용자에게 비디오가 진행 중임을 알린 후, 다른 작업을 계속합니다. 서브 에이전트를 시작할 수 없는 경우 explainer guide를 실행하고 직접 단계를 수행합니다.
4. 전달
빌더가 보고하면 <directory>/video.mp4를 엽니다 (macOS에서는 open). 사용자에게 알립니다:
- 파일 경로 및 길이.
- 비디오에 챕터 마커가 있음.
- 빌더가 열어둔 모든 문제.
변경할 사항을 묻습니다. 변경하려면, 사용 중인 툴이 메시지를 보낼 수 있다면 동일한 빌더에 전송합니다 (빌더가 컨텍스트를 유지하기 때문). 그렇지 않으면 변경 사항과 함께 새 빌더를 시작합니다. 변경 사항이 나레이션에 영향을 미치는 경우 먼저 script.md를 편집합니다.