Communitygithub.com

수업 슬라이드 디자이너

하나의 수업(수업 계획서, 교수 스크립트, 강의 개요, 노트)을 깔끔하고 생동감 있는 PowerPoint 프레젠테이션(.pptx, 16:9, 아이콘, 네이티브 차트, 발표자 노트 포함)과 비디오 스크립트 파일로 변환합니다. 비디오 편집자나 TTS 파이프라인이 내레이션이 있는 슬라이드쇼 비디오를 제작하는 데 사용할 수 있습니다.

수업 슬라이드 디자이너란 무엇인가요?

이 스킬은 교육용 콘텐츠(수업 계획, 강의 스크립트, 교육 세션 노트 등)를 전문적인 슬라이드 덱과 비디오 스크립트로 자동 변환하는 AI 에이전트(Claude Code, Cursor, Codex 등)를 위한 도구입니다. 하나의 수업을 입력하면 `slides/<course>/<lesson>/` 폴더에 `slides.json`(16가지 슬라이드 유형을 정의하는 데이터 소스), `.pptx` 파일(16:9 비율, Arial 폰트, 3색 테마, 발표자 노트 포함), `.video-script.md` 파일(화면 텍스트, 제작 노트, TTS용 내레이션, 시간 정보 포함), 그리고 `_preview/` 폴더의 슬라이드 이미지(1920x1080)와 콘택트 시트를 생성합니다. 또한 선택적으로 `ffmpeg`를 사용한 미리보기 비디오도 제작 가능합니다. 이 스킬의 핵심은 **교수 설계 원칙**을 엄격히 준수한다는 점입니다. 모든 슬라이드는 '한 슬라이드에 한 가지 아이디어', '모든 슬라이드에 시각 자료', '6x6 텍스트 규칙(6줄 이하, 줄당 6단어 이하)', '24pt 이상 폰트 크기', '어두운 배경, 세 가지 색상', '제목부터 마무리까지의 완전한 수업 구조'를 따라야 하며, 빌드 스크립트(`build_slides.py`)가 이러한 규칙을 하드 바이올레이션으로 검사하여 0 오류가 될 때까지 수정을 요구합니다. `render_slides.py` 스크립트는 생성된 `.pptx`를 이미지로 렌더링하여 시각적 품질(텍스트 클리핑, 겹침, 정렬, 가독성)을 확인합니다. 이 스킬은 특히 교육용 비디오 강의(Udemy, 온라인 강좌 등), 라이브 수업, 워크숍, 교육 세션을 위한 슬라이드 제작에 최적화되어 있습니다. 사용자가 '이 수업을 슬라이드로 만들어 줘', '모듈 2의 덱을 만들어 줘', '내 강의 비디오용 슬라이드'와 같은 요청을 할 때 자동으로 활성화됩니다. 비즈니스 피치 덱이나 수업 콘텐츠 자체를 작성하는 용도로는 사용되지 않습니다. 이 스킬은 Python 3.9+ 환경에서 `python-pptx`, `Pillow`, `lxml` 라이브러리를 사용하며, 아이콘은 Lucide 세트(ISC 라이선스)를 사용합니다. 미리보기 렌더링을 위해 LibreOffice와 Poppler(`pdftoppm`)가 필요할 수 있습니다. 여러 수업을 연속으로 제작할 때는 테마, 푸터, 호칭, 아이콘 세트를 재사용하여 일관성을 유지합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/chuonglife/lesson-slide-designer-skill/tree/HEAD

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

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

문서

수업 슬라이드 디자이너은(는) 무엇을 하나요?

하나의 수업 내용을 사람들이 배울 수 있는 슬라이드 덱과 내레이션 버전을 위한 비디오 스크립트로 변환합니다. 한 번에 하나의 수업, 수업당 하나의 폴더.

사용자가 다른 위치를 지정하지 않는 한 slides/<course>/<lesson>/에 출력합니다:

파일설명
slides.json단일 소스: 16가지 슬라이드 유형(references/slide-types.md 참조)을 사용한 모든 슬라이드 데이터입니다. 이 파일을 편집한 후 다시 빌드하세요
<file_name>.pptx16:9 덱, Arial 폰트, 3색 테마; 각 슬라이드의 내레이션은 발표자 노트에 포함됩니다
<file_name>.video-script.md비디오 단계를 위한 파일: 슬라이드당 하나의 블록으로 화면 텍스트, 제작 노트, TTS용 내레이션, 시간(초) 정보, 개요 표 포함
_preview/slide-NN.png, _preview/contact-sheet.png모든 슬라이드의 1920x1080 이미지와 콘택트 시트로, 시각적 확인 및 비디오 프레임으로 사용됩니다
<file_name>.preview.mp4 (선택 사항)스크립트된 타이밍에 맞춘 무음 슬라이드쇼, 또는 슬라이드별 오디오가 있을 경우 내레이션이 포함된 버전

스크립트가 사용하는 도구: Python 3.9+ (python-pptx, Pillow, lxml 필요, 아이콘용 cairosvg 또는 sharp-cli, rsvg-convert, Inkscape); 미리보기 렌더링용 LibreOffice 및 Poppler (pdftoppm); 선택적 미리보기 비디오용 ffmpeg. 아이콘은 assets/icons/ 디렉토리의 Lucide 세트(ISC 라이선스)입니다.

워크플로우

단계 0. 소스 읽기 및 브리핑 확정

  1. 수업 소스의 전체를 읽습니다: 목표, 대상, 전달 방식, 분 단위 수업 계획, 스크립트, 답변이 포함된 질문, 슬라이드 개요, 유인물. 사용자가 제목만 제공한 경우 내용을 요청하거나 직접 작성합니다(보조 스킬 lesson-content-writer가 정확히 이 작업을 수행합니다).
  2. references/slide-standards.md(규칙 및 덱 구조)와 references/slide-types.md(16가지 유형 및 텍스트 제한)를 읽습니다.
  3. 다음 사항을 확정합니다: 전달 방식(자기 주도 비디오: 모든 비디오는 자체 도입부, 본문, 마무리 및 일시 정지 슬라이드가 있는 클러스터; 라이브 수업: 질문 및 실습 안내 슬라이드 포함); 언어(language, 모든 언어 가능, en 및 vi는 추가 검사 적용); 테마(기본값 navy; 과정당 하나의 테마, 수업마다 재사용); 강사가 학습자를 부르는 방식(스크립트에서 추출); 푸터에 표시할 강사 이름 및 연락처.

단계 1. 덱 계획

소스의 슬라이드 개요 또는 수업 순서에서 다음 표를 작성합니다: # | 유형 | 슬라이드의 한 가지 아이디어 | 시각 자료 또는 아이콘 | 질문 또는 일시 정지 | 비디오 번호. 제약 조건:

  • 전체 구조: title -> (question, 수업에 시도해보기 오프너가 있는 경우) -> objectives -> agenda -> 각 파트에 대해 section (또는 current가 표시된 agenda) -> 2~5개의 콘텐츠 슬라이드 -> 최소 하나의 question -> summary -> closing.
  • 슬라이드당 하나의 아이디어. 덱당 최소 4가지 슬라이드 유형, 동일한 유형이 3개 연속으로 오지 않도록 하고, 내레이션 10~12분마다 일시 정지 또는 질문을 배치합니다.
  • 감정적 호(arc) 를 계획하고 1/3 및 2/3 지점에 리듬 브레이커를 배치합니다; 제목은 진술문으로 작성합니다(레이블이 아님, references/rhythm-and-titles.md 참조). 출처가 있는 숫자는 글머리 기호가 아닌 big-numbers 또는 chart에 배치합니다.
  • 사실, 용어, 숫자, 예시는 수업 소스에서만 가져옵니다. 절대 임의로 만들지 마십시오. 예시는 학습자 자신의 작업에서 가져옵니다.
  • 비디오 과정: 수업 계획을 따르고, 소스의 모든 섹션, 예시, 일시 정지 질문, 작업 샘플을 슬라이드 또는 내레이션에서 다루며, 스크립트가 부족한 비디오를 경고할 수 있도록 계획된 분(videos)을 선언합니다. 소스의 슬라이드 개요는 최소 요구 사항이지 최대치가 아닙니다. 100분 분량의 수업은 일반적으로 35~60개의 슬라이드가 필요합니다; 17슬라이드 템플릿은 기술 데모일 뿐, 전체 수업이 아닙니다.

단계 2. slides.json 작성

templates/slides.example.json을 복사하고 계획에 따라 작성합니다. 모든 슬라이드에 대해:

  • 화면 텍스트는 키워드와 짧은 줄로, 24pt에 맞아야 합니다(유형별 제한은 slide-types.md 참조). 너무 긴 경우 슬라이드를 분할합니다. 텍스트를 절대 줄이지 마십시오.
  • narration: 수업 스크립트에서 귀에 맞게 다시 작성(references/narration-and-video-script.md 참조): 한 호흡에 한 줄, 각 줄은 . , ? 또는 !로 끝나며, 숫자는 말할 때처럼 작성되고, 슬라이드를 그대로 읽지 않으며, 질문 슬라이드는 "비디오를 일시 정지하세요"라고 말합니다.
  • notes: 제작 방향(하나씩 표시, 가리키기, 원 그리기, 클립 삽입, "60초 무음").
  • 의미에 따라 아이콘을 선택하고(slide-types.md, 섹션 4) 전체 과정에서 반복되는 개념에 대해 하나의 아이콘을 유지합니다. 실제 이미지(스크린샷, 제품 사진)는 slides.json 옆에 IMAGE-SOURCES.md에 출처를 명시하여 배치합니다. 웹에서 이미지를 다운로드하기 전에 허가를 받고 라이선스를 확인하십시오.
  • 사람처럼 작성하고 팸플릿처럼 작성하지 마십시오(references/plain-human-voice.md 참조).

단계 3. 빌드 및 확인

python scripts/build_slides.py slides/<course>/<lesson>/slides.json

스크립트는 하드 바이올레이션에서 중단됩니다: 6줄 초과, 24pt에 맞지 않는 텍스트, 두 단어를 붙여도 해결되지 않는 고아 단어, 누락된 아이콘 또는 이미지, 알 수 없는 유형, 금지된 대시 또는 AI 관용구, 내레이션과 일치하지 않는 타이머 레이블, 내레이션에서 읽지 않은 항목 등. slides.json을 수정하고 0 오류가 될 때까지 다시 빌드하십시오. 모든 경고(긴 줄, 내레이션의 숫자, 동일한 유형 3개 연속, 리듬 브레이커 없음, 부족한 비디오)도 읽고 수정하거나 그 이유를 기록하십시오.

python scripts/render_slides.py slides/<course>/<lesson>/<file_name>.pptx

확인하십시오: _preview/contact-sheet.png를 본 다음, 각 slide-NN.png를 전체 크기로 보고 slide-standards.md 섹션 5의 체크리스트(텍스트 잘림/겹침, 큰 빈 영역, 정렬 불량, 1/3 크기에서 가독성, 슬라이드당 하나의 초점)와 비교하십시오. 수정하고, 다시 빌드하고, 다시 확인하여 완전히 통과할 때까지 반복하십시오. 최신 렌더링을 보지 않고 완료되었다고 보고하지 마십시오.

선택 사항, 페이싱 확인 또는 초안 비디오 전달용:

python scripts/preview_video.py slides/<course>/<lesson>/slides.json [--audio <S01.mp3 ...이 있는 폴더>]

비디오 플랫폼의 긴 수업(주제당 하나의 비디오, 10~12분): 수업 수준의 slides.json을 유지하고 모든 슬라이드에 video 번호를 지정한 후 분할합니다:

python scripts/split_videos.py slides/<course>/<lesson>/slides.json --build --render

각 비디오는 자체 폴더와 덱(제목 슬라이드 "Video k/N" 포함), 자체 목표, 본문 및 다음 비디오로 연결되는 마무리를 갖습니다. 수업 수준 파일을 편집하고 생성된 파일은 편집하지 마십시오.

단계 4. 보고

사용자에게 제공: 덱, 비디오 스크립트, 콘택트 시트의 경로; 간단한 개요 표(# - 유형 - 아이디어 - 시간(초)); 슬라이드 수 및 예상 길이; 테마; 가정 사항(호칭, 숫자 및 그 출처); 남겨둔 경고와 그 이유. 콘택트 시트를 보여주십시오.

여러 수업 연속

동일한 과정 폴더의 이전 수업에서 사용한 테마, 푸터, 호칭, 개념별 아이콘 세트를 재사용하십시오. 과정 전반에 걸쳐 title 및 closing 슬라이드를 레이아웃에서 동일하게 유지하고, 각 마무리가 다음 수업으로 연결되도록 하십시오.

원칙

  • 표준은 움직이지 않습니다 (slide-standards.md). 그 안의 내용이 창의성이 발휘되는 부분입니다. 스크립트는 게이트키퍼이며, 통과하기 위해 검사를 절대 끄지 마십시오.
  • 슬라이드는 눈을 위한 것이고, 내레이션은 귀를 위한 것입니다. 두 채널은 서로를 보완하며 절대 중복되지 않습니다.
  • 학습자는 무언가를 합니다. 모든 파트에는 질문 또는 일시 정지가 있으며, 덱은 하나의 구체적인 행동으로 끝납니다.
  • 제목은 기본적으로 대문자입니다 ("title_case": "upper"). JSON은 작성된 그대로 유지되어 내레이션과 자막에 영향을 주지 않습니다. 대문자는 너비를 더 차지하므로 제목을 짧게 유지하십시오.
  • 24pt는 모든 것의 최소값입니다. 레이블, 캡션, 출처, 푸터를 포함합니다. 너무 길면 다시 작성하는 것이지 줄이는 것이 아닙니다.
  • 고아 단어 없음. 제목, 카드, 단계, 글머리 기호의 마지막 줄에 단어 하나만 있으면 깨져 보입니다. 스크립트는 가능할 때 마지막 두 단어를 붙이고, 맞지 않으면 중단합니다.
  • 실행한 후에 전달하십시오. 빌드, 렌더링, 확인, 측정. 절대 추측하지 마십시오.
  • 슬라이드 유형을 추가하려면 scripts/build_slides.py에 s_<type> 메서드를 추가하고, KINDS에 등록하며, slide-types.md에 문서화하고, 사용하기 전에 테스트 덱을 빌드하십시오.

참고 파일

  • references/slide-standards.md - 디지털 학습 슬라이드의 정의, 10가지 디자인 규칙 및 스크립트가 각 규칙을 확인하는 방법, 덱 구조, 멀티미디어 학습 원칙, 전달 전 체크리스트.
  • references/slide-types.md - slides.json 형식, 텍스트 제한이 있는 16가지 슬라이드 유형, 테마, 비디오 계획, 아이콘 목록.
  • references/narration-and-video-script.md - TTS 또는 사람 목소리를 위한 내레이션 규칙, 제작 노트, 화면의 모든 항목 읽기, 비디오 제작 전달.
  • references/rhythm-and-titles.md - 수업의 감정적 호, 1/3 및 2/3 지점의 리듬 브레이커, 진술문 제목, 오프너, 비교, 숫자, 마무리를 위한 문장 패턴.
  • references/plain-human-voice.md - AI 목소리 제거 방법: 금지된 대시 및 구문, 문장 리듬, 구체적인 세부 사항, 의견.
  • templates/slides.example.json - 모든 주요 유형을 사용하는 17슬라이드 데모 수업, 이미 빌드 및 확인됨.

관련 스킬