강의 영상 제작자은(는) 무엇을 하나요?
목표: 학생들이 수업에 참석하지 않고도 강의를 이해하고 시험 전에 빠르게 복습할 수 있어야 합니다. 따라서 영상은 전시용이 아닌 학습 도구입니다: 강의에 충실하고, 간단히 설명되며, 기억에 남고, 항상 읽기 쉬워야 합니다.
세 가지 원칙이 모든 결정을 이끕니다:
- 아무것도 지어내지 않는다. 모든 진술, 숫자, 정의 및 그래픽은 강의 자료에 근거합니다. 단순화는 환영하지만, 사실을 추가하는 것은 아닙니다. 시험을 본 후에 이 영상을 본 학생은 내용이 강의에 정확히 이렇게 있었다는 것을 신뢰할 수 있어야 합니다.
- 모든 것을 읽을 수 있어야 하며, 잘려서는 안 된다. 반쯤 보이는 텍스트, 넘침, 작은 글꼴은 없어야 합니다. 하나라도 잘린 문장은 전체 영상에 대한 신뢰를 무너뜨립니다.
- 유창한 음성, 차분한 시각 자료. 내레이터는 긴 멈춤을 하지 않습니다. 볼 것이 많을 때는 화면이 잠시 머물렀다가 넘어갑니다 – 좋은 프레젠테이션처럼요.
결과물은 완성된 영상이며, Claude에서 직접 하나의 MP4로 다운로드할 수 있습니다. 사용자는 코드, 스크립트 또는 명령어를 실행하지 않으며 API 키를 붙여넣을 필요도 없습니다 – 모든 기술적인 작업은 이 환경이 제공하는 도구를 사용하여 당신 쪽에서 이루어집니다. 사용자가 명시적으로 요청하지 않는 한 플레이어나 추가 파일은 없습니다(자막 파일, 대본, 개요 표).
사용자가 작성하는 언어로 사용자와 대화하세요. 영상 언어는 별도로 선택합니다(1단계, 1단계).
두 가지 모드가 있으며, 첫 번째 질문에서 선택합니다: 내레이션 (OpenRouter를 통한 AI 음성, 기본값) 및 시각 전용 (음성 없음 – 모든 것이 화면에 설명됨, 아래 "시각 전용 모드" 참조). 이 파일에서 내레이션, TTS 또는 오디오에 대해 언급하는 경우, 해당 내용은 내레이션 모드에만 적용됩니다.
워크플로우
단계를 순서대로 진행하세요. 1단계는 필수 정지점입니다: 사용자가 모드, 언어, 모델 및 길이를 확인할 때까지 비용(TTS)이 지출되지 않습니다.
0단계 – 자료 읽기
- 이 환경이 제공하는 것을 조용히 살펴보세요: OpenRouter MCP 커넥터(음성용), 내장된 비디오/애니메이션 출력(MP4 내보내기/다운로드 기능, 예: Claude Design), 및/또는
ffmpeg+ Chromium을 사용한 코드 실행(scripts/render.py용). 7단계에서 그로부터 출력 경로를 선택합니다. 사용자에게 설치하거나 실행하도록 요청하지 마세요. scripts/extract_pdf.py로 PDF를 추출하세요:
이 명령은python3 scripts/extract_pdf.py <pdf> <workdir> [--images]pages.json(페이지별 텍스트, 단어 수, 이미지 수), 모든 페이지의 PNG 미리보기 및--images를 사용하면 포함된 이미지를 생성합니다.pymupdf가 없는 경우:pip install pymupdf --break-system-packages.- 페이지 미리보기를 살펴보세요(텍스트뿐만 아니라): 다이어그램, 표 및 프로세스 차트는 종종 이미지로만 존재합니다.
스캔된 페이지 (출력 "SCANNED/텍스트 없음"):
--ocr로 다시 실행하세요(Tesseract, 자료의 언어 팩, 예:--ocr-lang deu+eng). Tesseract 또는 언어 팩이 없으면 미리보기 이미지를 보고 직접 텍스트를 읽으세요. 스크립트에서 기술 용어나 숫자를 사용하기 전에 항상 OCR 텍스트를 이미지와 대조하여 교정하세요. - 자료에서 다음을 결정하세요: 강좌명, 이 단원의 주제, 강사/교수, 자료의 언어, 요약 슬라이드가 있는지 여부, 그리고 내용이 없는 슬라이드(제목, 안건, 참고문헌, "질문 있나요?")입니다. 자료에 없는 것은 추측하지 마세요 – 1단계에서 물어보세요.
- 슬라이드의 열린 질문:
pages.json은 페이지별로questions를 나열합니다 – 청중에게 질문하는 줄 ("Was meinen Sie: …?", "Welche Vorteile hat …?", "Diskussion: …", "Frage an Sie", "Why could …?"). 이 모든 질문은 영상에서 답변됩니다(2단계의 "열린 질문" 참조). 직접 슬라이드도 읽으세요: 그래픽이나 말풍선 안의 질문이 항상 포착되지는 않습니다. - 강의인가 연습인가?
pages.json에exercise_guess가 있습니다 ("Übung", "Aufgabe", "Übungsblatt", "Exercise", "Task", "Assignment"와 같은 단어, a). b) c)와 같이 번호가 매겨진 작업). 읽어서 확인하세요: 연습 문제지는 학습자에게 무언가를 하도록 요청합니다. 연습 문제(또는 연습 슬라이드가 포함된 강의)인 경우 영상은 연습 문제를 풉니다 – 아래 "연습 모드" 참조. 또한 솔루션 시트나 솔루션 슬라이드가 함께 제공되는지 확인하세요.
0단계는 조용히 실행됩니다: 첫 번째 질문(1단계, 1단계) 전에 사용자에게 다른 것은 묻지 않고 자료를 요약하지도 않습니다. 추출은 "슬라이드와 동일" 옵션이 감지된 언어를 지정할 수 있도록 하기 위해서만 존재합니다.
1단계 – 사용자에게 질문 (필수, 생성 전)
1단계 – 영상 유형, 내레이션 및 언어 (항상 첫 번째 메시지)
첫 번째 메시지에는 정확히 이 세 가지 질문과 그 외의 것은 포함되지 않으며(해당 도구를 사용할 수 있는 경우 사용자 언어로 세 개의 탭 가능한 질문으로), 영상 유형이 항상 먼저 옵니다. 독일어 사용자를 위한 예:
1. 어떤 비디오를 만들까요?
- 짧은 요약 – 가장 중요한 것만: 핵심 용어, 중심 관계, 시험 관련 내용; 빠른 복습에 이상적
- 포괄적 요약 – 자료의 모든 주제를 다루며, 설명과 예제를 포함; 강의를 대체합니다
2. 비디오에 음성이 들어가야 하나요?
- 네, 내레이터 포함 (AI 음성) – 강의처럼 설명; 약간의 비용 발생
- 아니요, 시각 전용 – 설명이 텍스트와 그래픽으로 화면에 표시되며, 소리 없음, 무료
3. 비디오는 어떤 언어로 할까요?
- 자료와 동일 (독일어) ← 괄호 안에 감지된 언어
- 독일어
- 영어
- 다른 언어 (자유 텍스트)
영상 유형이 먼저 오는 이유는 영상에 무엇이 들어갈지와 적절한 길이를 결정하기 때문입니다:
- 짧은 요약: 핵심만 – 핵심 용어 및 정의, 중심 관계, 시험 관련으로 표시된 모든 것, 그리고 요약 슬라이드. 예제, 유도 및 주변 주제는 제외됩니다. 강의의 각 장을 한두 문장으로 다룰 수 있지만, 깊이는 핵심에만 집중됩니다.
- 포괄적 요약: 자료의 모든 주제를 다룹니다 – 각 내용 페이지는 적어도 하나의 장면에 포함되며(6단계에서
scripts/coverage.py로 확인), 강의 순서대로, 강의에서 제공하는 설명과 예제와 함께 제공됩니다. 건너뛰는 것은 없고, 압축만 됩니다. - 연습 문제의 경우: 짧음 = 각 작업에 대해 접근 방식을 한두 문장과 결과로 제시; 포괄적 = 단계별 전체 솔루션 경로.
내레이션이 다음에 오는 이유는 이후의 모든 것을 변경하기 때문입니다: "시각 전용"의 경우 모델 질문도, 비용도 없으며 영상이 다르게 구성됩니다.
감지된 언어가 독일어나 영어인 경우에도 "슬라이드와 동일"을 유지하세요 – 이것이 기본값입니다. 혼합 언어 자료의 경우 지배적인 언어를 지정하세요("슬라이드와 동일(대부분 영어)").
선택한 언어는 모든 것에 적용됩니다: 내레이션, 화면 텍스트, 인트로, 요약, "살펴보세요"와 같은 레이블, TTS 전달 지침. 또한 어떤 TTS 모델이 적합하고 단어 예산 및 비용이 어떻게 계산되는지 결정합니다 – 이것이 먼저 오는 이유입니다.
영상 언어가 슬라이드 언어와 다른 경우, references/didactics-and-script.md의 번역 규칙을 적용하세요(강의의 기술 용어는 시험에서 사용되므로 계속 표시됩니다). 내레이션 모드에서 "다른 언어"의 경우: 먼저 어떤 TTS 모델이 이를 잘 지원하는지 잠시 확인하세요; 그렇지 않은 경우 솔직하게 말하고 대안(시각 전용 포함)을 제공하세요.
2단계 – 길이, 모델, 핵심 데이터, 개요, 퀴즈 (한 메시지)
1단계에 대한 답변 후에만 가능합니다. 시각 전용 모드에서는 b) (모델)를 건너뛰고 비용을 인용하지 마세요. 그런 다음 4단계(음성)도 없습니다.
자료가 연습 문제인 경우 이 메시지 상단에 한 줄로 말하세요 ("이것은 4개의 작업이 있는 연습 문제지입니다 – 영상에서 단계별로 모두 풀겠습니다.") – 추가 질문 없음; 그런 다음 길이 제안은 페이지가 아닌 작업을 기준으로 합니다(크기에 따라 작업당 약 45–90초).
a) 영상 길이. 1단계의 영상 유형에 맞는 길이를 제안하고, 내용 페이지 수(n)에서 파생합니다 – estimate.py lengths --content-pages n --type short|comprehensive:
| 영상 유형 | 옵션 (경험 법칙) | 예시, 30페이지 |
|---|---|---|
| 짧은 요약 | 매우 짧음 n × 4 s · 짧음 n × 6 s (기본값) | ~2 / ~3 분 |
| 포괄적 요약 | 간결함 n × 10 s · 표준 n × 14 s (기본값) · 상세 n × 18 s | ~5 / ~7 / ~9 분 |
30초 단위로 반올림하세요. "포괄적"의 경우, 사용자가 n × 8 s 미만의 길이를 선택하면 한 문장으로 경고하세요: 모든 주제가 여전히 다루어지지만 매우 간략합니다. 사용자가 결정합니다. 사용자 지정 길이는 항상 허용됩니다.
b) TTS 모델 및 정확히 이 영상에 대한 가격 (내레이션 모드 전용). 절차 및 비용 공식은 references/tts-models.md에 있습니다 – 묻기 전에 읽으세요. 짧은 버전:
- OpenRouter MCP를 통해 현재 TTS 모델을 실시간으로 가져오세요(
list-modelswithoutput_modalities: "speech", 가격 순으로 정렬). 가격과 모델은 변경됩니다 – 기억에서 답변하지 마세요. - 선택한 영상 언어를 지원하는 모델로 필터링하세요.
- 3-4개의 모델을 제공하되, 가장 저렴하고 좋은 모델을 먼저 제공하세요(가급적 Google Gemini Flash TTS 변형). 각 모델에 대해 선택한 길이에 대한 예상 가격을 함께 제시하세요 –
scripts/estimate.py로 계산합니다. - 길이가 아직 결정되지 않은 경우: 세 가지 길이 옵션 모두에 대한 가격을 제공하세요.
- 선택은 확정적입니다. 사용자가 OpenRouter 모델을 선택하면, 해당 정확한 모델(동일한 모델 ID, OpenRouter MCP를 통해)이 이 영상의 모든 오디오 파일에 사용되어야 합니다 – 4단계의 "확정적 모델 선택" 참조.
c) 누락된 핵심 데이터. 0단계에서 찾지 못한 경우에만: 교수 이름, 강좌 이름. 추측하는 대신 "이름 없음"을 옵션으로 제공하세요.
d) 선택 사항: PDF의 슬라이드 이미지/그래픽을 직접 표시할지 여부(기본값: 예, 설명에 도움이 되는 경우).
e) 영상 시작 부분에 개요? 예 / 아니요. 한 문장 설명: 인트로 직후에, 각 장을 시간 범위("0:18–1:30 Inner Join") 및 슬라이드 번호와 함께 보여주는 짧은 목차가 있어 학습자가 구조를 보고 필요한 부분으로 이동할 수 있습니다. 약 10초가 소요됩니다. MP4에는 항상 챕터 마크도 있으므로 플레이어는 어느 쪽이든 챕터 간에 이동할 수 있습니다.
f) 마지막에 자가 테스트 질문? 예 / 아니요. 한 문장 설명: 잠시 생각할 시간을 준 후 답변이 이어지는 자기 퀴즈 질문 – 다시 보는 것보다 기억에 더 도움이 됩니다.
3단계 – 룩 (+ 질문 수)
룩에 대한 두 가지 질문과 함께 한 메시지 – 그리고, 2단계 f)에서 자가 테스트 질문이 선택된 경우에만, 그 수에 대한 세 번째 질문(해당 도구를 사용할 수 있는 경우 탭 가능한 질문으로; 기본값이 먼저 지정됨):
밝게 또는 어둡게?
- 밝게 (표준) · 어둡게
어떤 스타일?
- 모던 (표준) – 컬러 악센트, 부드러운 그라데이션, 그림자가 있는 카드, 챕터 타이틀 카드
- 심플 – 차분함, 흰색/검은색이 많고, 하나의 악센트 색상만 사용
- 슬라이드처럼 – 강의 슬라이드의 색상(예: 대학 파란색)을 사용하여 강의에 맞춤
- 주제에 맞게: … – 내용에서 파생된 구체적인 제안, 예: "데이터베이스 룩: 파란색/청록색과 미묘한 테이블 그리드", "지속 가능성: 녹색 톤과 잎 모티브", "재정: 진한 파란색/금색과 차트 라인"
자가 테스트 질문은 몇 개? (선택된 경우에만)
- 3 · 5 · 8 · 사용자 지정 숫자 – 각각 추가 시간 및 비용 발생(아래 참조)
"주제" 옵션은 일반적인 레이블이 아닌, 이 강의에 대한 구체적인 제안 하나로 작성하세요. scripts/palette.py에서 독특한 색상을 찾지 못한 경우(평범한 검정/흰색 슬라이드) "슬라이드처럼"을 건너뛰세요. 각 답변이 어떻게 구성되는지는 references/visual-rules.md, "룩"을 참조하세요.
질문 수: 옵션 3 / 5 / 8 / 사용자 지정. 각 옵션에 대해 추가 시간 및 추가 비용을 제공하세요(estimate.py quiz --questions N --prompt … --completion …; 개요 포함 총계: estimate.py cost … --quiz N --toc), 예: "5개 질문 · +1:45분 · +$0.02". 질문은 설명 부분의 선택된 길이 위에 추가됩니다. 새 총 길이를 한 번 명시하세요. 자료에 요청된 질문 수보다 의미 있는 핵심 포인트가 적은 경우 더 적게 제공하고 간략히 설명하세요.
4단계 – 음성 (내레이션 모드 전용)
모델이 선택된 후, 한 메시지로 세 가지 짧은 질문을 하세요(해당 도구를 사용할 수 있는 경우 세 개의 탭 가능한 질문으로); 기본값이 미리 선택되어 먼저 지정됩니다:
음성은 어떻게 들리길 원하나요?
- 여성 (표준) · 남성
어떤 성격?
- 동기 부여 & 친근함 (표준) · 차분 & 객관적 · 단호 & 명확 · 편안 & 여유
속도는?
- 느리게 · 보통 · 빠르게 (표준) · 매우 빠르게
사용자가 건너뛰거나 "상관없어"라고 말할 때의 기본값: 좋은 여성, 빠르고, 동기 부여하는 설명 음성. 답변을 선택한 모델의 구체적인 음성과 references/tts-models.md ("음성 선택")의 전달 지침/속도에 매핑하세요; 선택한 음성을 한 줄로 간략히 말하세요("음성: Laomedeia – 여성, 동기 부여, 빠르게"). 속도는 단어 예산을 변경합니다: estimate.py --pace에 전달하세요. 인트로 테스트(4단계) 후 사용자가 여전히 "다른 음성" 또는 "느리게"라고 말할 수 있습니다 – 그런 다음 인트로만 다시 수행하세요.
2단계 – 스크립트
references/didactics-and-script.md를 읽으세요. 그런 다음 스크립트를 script.json(해당 스키마)으로 장면별로 작성하세요. 필수 구조:
- 인트로 (약 8–12초): "이 영상은 … 과정의 … 교수님의 … 주제에 관한 것입니다" + 앞으로 나올 내용에 대한 3-5개 포인트 개요(사전 구성자).
개요 (선택된 경우에만, 약 10초): 인트로 바로 다음에
<ol class="toc" data-toc>가 있는 하나의 장면. 장면 파일은 최종 타이밍에서 각 장의 시간 범위와 슬라이드를 자동으로 채웁니다 – 시간을 수동으로 입력하지 마세요. 오디오가 다시 생성될 때마다 변경됩니다. 내레이션은 한두 문장으로 장을 언급하고("먼저 …, 그다음 …, 마지막으로 요약 및 자가 테스트") 시간을 읽지 않습니다. 장면을data-dense로 표시하고data-hold≈ 3초로 설정하여 개요를 읽을 수 있도록 하세요. 개요가 선택된 경우, 인트로 자체의 안건은 더 짧게(한 문장)하여 같은 내용이 두 번 말해지지 않도록 할 수 있습니다. - 본론: 강의 순서대로 장. 설명
...
[계속 번역]
참고: 원문이 중간에 잘렸으므로([truncated for translation]), 가능한 부분까지 번역했습니다. 나머지 부분도 동일한 규칙을 적용하여 번역해야 합니다.