AX 과제 - 1 → AX 강의 - 1 폴더명 변경 및 강의형 산출물 추가

Made-with: Cursor
This commit is contained in:
dsyoon
2026-02-26 09:55:10 +09:00
parent b0a2b0eec4
commit c0c486bc86
87 changed files with 10359 additions and 520 deletions

View File

@@ -0,0 +1,29 @@
너는 기업 AX 전환 교육용 PPT를 설계하는 교육 콘텐츠 디자이너다.
주제(폴더명/PPT 제목): 글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까
구분: 트렌드
요청(시드 프롬프트):
"글로벌 AX 선도 기업의 성공 사례 벤치마킹" 자료를 만들어줘. 구글, 마이크로소프트, 테슬라 등 주요 기업들이 AI를 비즈니스 프로세스에 어떻게 녹였는지 분석하고 우리 회사에 주는 시사점을 정리해줘.
목표:
- 리더십부터 실무자까지 "왜 이 주제를 이해해야 하는지"를 먼저 설득한다.
- 30분 교육으로 진행 가능하도록 구성한다.
- 최소 20장 이상(권장 22장) 슬라이드가 나오도록 한다.
- 예시(상황/결과/체크리스트/사례)가 풍부해야 한다.
- 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다.
- 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지)
- 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다.
출력 형식(반드시 준수):
- 최종 출력은 JSON 한 덩어리만 출력한다. (설명/문장/코드블록 금지)
- JSON은 아래 스키마를 만족해야 한다: slides.schema.json
- slides[0]은 반드시 type="cover"로 둔다. (표지는 meta.title/meta.subtitle/meta.badge로 자동 생성됨)
- 슬라이드 타입은 다음만 사용한다:
- cover, agenda, section, bullets, two_column, process, table
작성 규칙:
- bullets는 4~7개 내로, 한 줄은 60자 내로.
- 별도의 prompt(코드블록) 슬라이드를 만들지 않는다. (참여형 활동 유도로 오해될 수 있음)
- table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게.
- 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다.
- 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다.

View File

@@ -0,0 +1,17 @@
from __future__ import annotations
import subprocess
import sys
from pathlib import Path
def main() -> None:
base = Path(__file__).resolve().parent
common = base.parent / "_common" / "make_ppt.py"
spec = base / "slides.json"
out = base / f"{base.name}.pptx"
subprocess.check_call([sys.executable, str(common), "--spec", str(spec), "--out", str(out)])
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,112 @@
{
"meta": {
"title": "예시 - 강의형(참여형 활동 없음)",
"subtitle": "AX 전환 교육 (30분 / 20+ Slides)",
"badge": "예시 트랙",
"duration_minutes": 30,
"audience": "리더십 + 실무자",
"tone": "명확하고 실용적, 예시 중심",
"footer_left": "AX 전환 교육 | 2026.02"
},
"slides": [
{
"type": "cover",
"notes": "오프닝: 오늘은 참여형 활동 없이, 사례/체크리스트 중심으로 진행합니다."
},
{
"type": "agenda",
"title": "오늘의 흐름 (30분)",
"items": [
"1) 왜 필요한가",
"2) 핵심 개념/원칙",
"3) 사례로 이해하는 적용 가이드",
"4) 리스크/체크리스트",
"5) 요약 & 다음 행동"
],
"notes": "전체 흐름을 10초로 안내하고 바로 본론으로 들어갑니다."
},
{
"type": "section",
"title": "1. 왜 필요한가",
"subtitle": "리더십부터 실무자까지",
"notes": "리더 관점(성과/리스크)과 실무 관점(시간/품질)을 연결해 설명합니다."
},
{
"type": "bullets",
"chapter": "Part 1",
"title": "기대 효과(정량/정성)",
"bullets": [
"시간 절감(반복 업무)",
"품질 표준화(템플릿)",
"리스크 감소(검증/승인)",
"온보딩 가속",
"의사결정 리드타임 단축"
],
"notes": "조직 사례가 있다면 1개만 붙여 설득력을 높입니다."
},
{
"type": "section",
"title": "2. 핵심 개념과 원칙",
"subtitle": "이것만 지키면 실패 확률이 줄어든다",
"notes": "핵심 개념은 3~6개로 제한하고, 각각 1문장으로 정의합니다."
},
{
"type": "two_column",
"chapter": "Part 2",
"title": "오해 vs 현실",
"left_title": "오해",
"left_bullets": ["AI는 만능", "한 번 도입하면 끝"],
"right_title": "현실",
"right_bullets": ["사람 검증이 필수", "운영/거버넌스가 성패를 좌우"],
"notes": "오해를 정리한 뒤, 현실 기준을 '팀 표준'으로 제시합니다."
},
{
"type": "process",
"chapter": "Part 3",
"title": "적용 루틴(강의형 가이드)",
"steps": [
"목표/대상/제약 정의",
"입력 데이터 정리",
"출력 형식 지정",
"검증/리스크 체크",
"공유/표준화",
"지표로 개선"
],
"notes": "참여자에게 '지금 해보라'가 아니라, 기준과 사례를 설명합니다."
},
{
"type": "table",
"chapter": "Part 3",
"title": "Before / After (예시)",
"columns": ["업무", "기존", "개선", "절감"],
"rows": [
["회의록", "40분", "12분", "28분"],
["메일", "20분", "5분", "15분"],
["보고 1p", "60분+", "20분", "40분"]
],
"notes": "표는 정의/기간을 같이 확인하며 읽습니다."
},
{
"type": "two_column",
"chapter": "Part 4",
"title": "리스크와 완화",
"left_title": "리스크",
"left_bullets": ["환각/오류", "보안/기밀", "품질 편차", "운영 장애"],
"right_title": "완화",
"right_bullets": ["원문 대조", "입력 금지/가명화", "승인/리뷰", "로그/모니터링"],
"notes": "리스크는 '기술'이 아니라 '프로세스'로 줄입니다."
},
{
"type": "bullets",
"chapter": "Part 5",
"title": "요약 & 다음 행동",
"bullets": [
"목적·맥락·형식 + 검증",
"작게 시작해 표준화",
"지표로 개선",
"오늘 행동: 템플릿 1개를 팀 표준으로 정하기"
],
"notes": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다."
}
]
}

View File

@@ -0,0 +1,306 @@
{
"meta": {
"title": "글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까",
"subtitle": "AX 전환 교육 (30분 / 20+ Slides)",
"badge": "트렌드 트랙",
"duration_minutes": 30,
"audience": "리더십 + 실무자",
"tone": "명확하고 실용적, 예시 중심",
"footer_left": "AX 전환 교육 | 2026.02"
},
"slides": [
{
"type": "cover",
"notes": "오프닝(10초): 오늘 주제는 '글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까'입니다.\n운영 안내(10초): 오늘은 참여형 활동 없이, 사례와 체크리스트 중심으로 정리합니다.\n목표(10초): 왜 중요한지 → 핵심 원칙 → 사례 해설 → 리스크/대응 → 다음 행동까지 30분에 끝냅니다."
},
{
"type": "agenda",
"title": "오늘의 흐름 (30분)",
"items": [
"1) 왜 필요한가",
"2) 핵심 개념/원칙",
"3) 사례로 이해하는 적용 가이드",
"4) 리스크/체크리스트",
"5) 요약 & 다음 행동"
],
"notes": "전체 구성(20초): 5파트로 진행합니다.\n- 1) 왜 필요한가\n- 2) 핵심 개념/원칙\n- 3) 사례로 이해하는 적용 가이드\n- 4) 리스크/체크리스트\n- 5) 요약 & 다음 행동\n안내(10초): 참여형 활동 없이, 바로 가져가 쓸 수 있는 요약/체크리스트 중심입니다."
},
{
"type": "section",
"title": "1. 왜 이 주제를 이해해야 하나",
"subtitle": "리더십부터 실무자까지",
"notes": "전환(10초): 이제 '1. 왜 이 주제를 이해해야 하나' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다."
},
{
"type": "bullets",
"chapter": "Part 1",
"title": "리더십 관점: 왜 중요한가",
"bullets": [
"성공 사례는 ‘무엇을 할지’보다 ‘어떻게 할지’를 알려줌",
"투자/우선순위 결정을 근거 기반으로 할 수 있음",
"사내 적용 시 ‘패턴’이 중요(데이터, 플랫폼, 인재)",
"벤치마킹은 실행 속도를 높임",
"리스크 관리(거버넌스)까지 같이 봐야 함"
],
"notes": "핵심(10초): '리더십 관점: 왜 중요한가' 슬라이드입니다.\n포인트(20초): 성공 사례는 ‘무엇을 할지’보다 ‘어떻게 할지’를 알려줌 / 투자/우선순위 결정을 근거 기반으로 할 수 있음\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "bullets",
"chapter": "Part 1",
"title": "실무자 관점: 무엇이 달라지나",
"bullets": [
"다른 회사 사례는 내 업무 적용 아이디어로 직결",
"성공 패턴을 알면 시행착오를 줄임",
"AI 활용이 ‘특별한’ 일이 아니라는 확신",
"업무 프로세스 관점으로 보는 눈이 생김",
"우리 조직에서도 가능한 1단계를 찾을 수 있음"
],
"notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): 다른 회사 사례는 내 업무 적용 아이디어로 직결 / 성공 패턴을 알면 시행착오를 줄임\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "two_column",
"chapter": "Part 1",
"title": "흔한 오해 vs 현실",
"left_title": "오해",
"left_bullets": [
"AI는 빅테크만 할 수 있다",
"좋은 모델만 쓰면 된다",
"사례는 우리와 무관하다",
"도입하면 자연히 성과가 난다"
],
"right_title": "현실",
"right_bullets": [
"작게 시작해 확장하는 패턴이 핵심",
"데이터/프로세스/사람이 같이 가야 함",
"업종/규정에 맞게 변형해야 함",
"성과는 KPI/거버넌스로 만든다"
],
"notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다."
},
{
"type": "bullets",
"chapter": "Part 1",
"title": "기대 효과(정량/정성)",
"bullets": [
"우선순위 도출(어디부터?)",
"성공 패턴을 복제해 속도↑",
"리스크를 사전에 인지",
"현업 적용 아이디어 다수 확보",
"조직 공감대 형성"
],
"notes": "핵심(10초): '기대 효과(정량/정성)' 슬라이드입니다.\n포인트(20초): 우선순위 도출(어디부터?) / 성공 패턴을 복제해 속도↑\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "section",
"title": "2. 핵심 개념과 원칙",
"subtitle": "이것만 지키면 실패 확률이 줄어든다",
"notes": "전환(10초): 이제 '2. 핵심 개념과 원칙' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다."
},
{
"type": "bullets",
"chapter": "Part 2",
"title": "핵심 개념 6가지",
"bullets": [
"Use Case 중심(업무 문제)에서 시작",
"데이터 파이프라인/플랫폼",
"업무 내재화(워크플로우)",
"Human-in-the-loop 검증",
"거버넌스(보안/규정/품질)",
"측정(KPI)과 확장"
],
"notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): Use Case 중심(업무 문제)에서 시작 / 데이터 파이프라인/플랫폼\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "process",
"chapter": "Part 2",
"title": "실행 프레임워크(권장 루틴)",
"steps": [
"업무 문제 3개 선정",
"데이터/규정 체크",
"파일럿(2~4주) 설계",
"측정 지표 정의",
"검증/승인 프로세스",
"확장(템플릿/플랫폼화)"
],
"notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 업무 문제 3개 선정 → 데이터/규정 체크 → 파일럿(2~4주) 설계 …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다."
},
{
"type": "two_column",
"chapter": "Part 2",
"title": "좋은 예 vs 나쁜 예 (짧은 비교)",
"left_title": "좋은 예",
"left_bullets": [
"업무 프로세스에 AI를 ‘내장’",
"검증/승인 단계를 설계",
"KPI로 효과를 측정",
"플랫폼/재사용을 염두"
],
"right_title": "나쁜 예",
"right_bullets": [
"데모만 하고 운영이 없음",
"데이터/규정 없이 시작",
"측정 없이 ‘좋아 보임’",
"개인별 도구 난립"
],
"notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다."
},
{
"type": "bullets",
"chapter": "Part 2",
"title": "자주 하는 실수",
"bullets": [
"사례를 그대로 복사(현실 제약 무시)",
"기술 중심으로 접근(문제 정의 부족)",
"성과 지표 없이 확장",
"거버넌스 없이 확산",
"현업 참여 없이 추진"
],
"notes": "핵심(10초): '자주 하는 실수' 슬라이드입니다.\n포인트(20초): 사례를 그대로 복사(현실 제약 무시) / 기술 중심으로 접근(문제 정의 부족)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "section",
"title": "3. 사례로 이해하는 적용 가이드",
"subtitle": "참여형 활동 없이도 이해되는 예시 중심",
"notes": "전환(10초): 이제 '3. 사례로 이해하는 적용 가이드' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다."
},
{
"type": "bullets",
"chapter": "Part 3",
"title": "사례 1) 사례를 내 회사에 맞게 변환",
"bullets": [
"요청의 역할/관점: AX 컨설턴트",
"핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)",
"출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨",
"짧은 예시 문장(참고): \"아래 글로벌 사례를 우리 회사(업종: [업종], 제약: [규정/보안])에 맞게 변환해줘. / 1) \"",
"포인트: 업종/규정을 명시",
"포인트: KPI는 2~3개로",
"포인트: 리스크/완화를 반드시"
],
"notes": "핵심(10초): '사례 1) 사례를 내 회사에 맞게 변환' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: AX 컨설턴트 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "bullets",
"chapter": "Part 3",
"title": "사례 2) 우리 조직의 ‘성공 패턴’ 체크",
"bullets": [
"요청의 역할/관점: 실행 PM이",
"핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)",
"출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨",
"짧은 예시 문장(참고): \"우리 팀이 추진할 AI 과제 후보 3개를 아래 체크리스트로 평가해줘. / - 문제 명확성\"",
"포인트: 후보 3개를 구체적으로",
"포인트: 데이터/규정 항목을 중요하게",
"포인트: 우선순위는 1~3위"
],
"notes": "핵심(10초): '사례 2) 우리 조직의 ‘성공 패턴’ 체크' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 실행 PM이 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "table",
"chapter": "Part 3",
"title": "벤치마킹 예시(요약)",
"columns": [
"기업",
"적용 프로세스",
"효과(예시)"
],
"rows": [
[
"Microsoft",
"업무도구 내 Copilot",
"문서/메일/회의 생산성↑"
],
[
"Google",
"검색/광고/개발 자동화",
"의사결정 속도↑"
],
[
"Tesla",
"제조/운영 최적화",
"품질/효율 개선"
]
],
"notes": "읽는 법(15초): 표는 기업, 적용 프로세스, 효과(예시) 기준으로 비교합니다.\n포인트(15초): 수치/정의/기간을 같이 확인해 오해를 줄입니다."
},
{
"type": "bullets",
"chapter": "Part 3",
"title": "결과 품질 검증 체크",
"bullets": [
"사실/수치/고유명사는 원문 대조",
"누락된 가정이 없는지 질문",
"대안 2개 이상 비교 요청",
"리스크/반론을 함께 요청"
],
"notes": "핵심(10초): '결과 품질 검증 체크' 슬라이드입니다.\n포인트(20초): 사실/수치/고유명사는 원문 대조 / 누락된 가정이 없는지 질문\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "section",
"title": "4. 리스크 & 체크리스트",
"subtitle": "안전하게, 팀 단위로 굴리기",
"notes": "전환(10초): 이제 '4. 리스크 & 체크리스트' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다."
},
{
"type": "two_column",
"chapter": "Part 4",
"title": "리스크와 완화 전략",
"left_title": "리스크",
"left_bullets": [
"사례 과신으로 무리한 도입",
"데이터/규정 미스매치",
"성과 측정 실패",
"조직 저항"
],
"right_title": "완화",
"right_bullets": [
"‘패턴’만 추출해 변형 적용",
"규정/보안 사전 검토",
"KPI/실험 설계",
"현업 참여 + 변화관리"
],
"notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다."
},
{
"type": "bullets",
"chapter": "Part 4",
"title": "체크리스트(현업 적용용)",
"bullets": [
"우리 업무 문제로 번역했나",
"데이터/시스템이 준비됐나",
"KPI가 정의됐나",
"검증/승인 프로세스가 있나",
"확장(재사용) 계획이 있나"
],
"notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 우리 업무 문제로 번역했나 / 데이터/시스템이 준비됐나\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "bullets",
"chapter": "Part 4",
"title": "팀 적용(롤아웃) 방법",
"bullets": [
"파일럿 1개로 시작",
"성과 지표 공유",
"템플릿/플랫폼화로 확장",
"사례 공유 세션 운영"
],
"notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 파일럿 1개로 시작 / 성과 지표 공유\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
},
{
"type": "section",
"title": "5. 요약 & 다음 행동",
"subtitle": "오늘부터 1개만 실행",
"notes": "전환(10초): 이제 '5. 요약 & 다음 행동' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다."
},
{
"type": "bullets",
"chapter": "Part 5",
"title": "핵심 요약",
"bullets": [
"성공은 기술이 아니라 ‘패턴’의 재현",
"업무 문제→데이터→검증→측정→확장",
"벤치마킹은 ‘복사’가 아니라 ‘번역’",
"오늘 행동: 사례 1개를 우리 프로세스로 변환"
],
"notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): 성공은 기술이 아니라 ‘패턴’의 재현 / 업무 문제→데이터→검증→측정→확장\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다."
}
]
}

View File

@@ -0,0 +1,218 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "AX Curriculum Slides Spec",
"type": "object",
"required": ["meta", "slides"],
"properties": {
"meta": {
"type": "object",
"required": ["title", "duration_minutes"],
"properties": {
"title": { "type": "string", "minLength": 1 },
"subtitle": { "type": "string" },
"badge": { "type": "string" },
"duration_minutes": { "type": "integer", "minimum": 1 },
"audience": { "type": "string" },
"tone": { "type": "string" },
"footer_left": { "type": "string" }
},
"additionalProperties": true
},
"slides": {
"type": "array",
"minItems": 20,
"items": {
"type": "object",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"enum": ["cover", "agenda", "section", "bullets", "two_column", "process", "prompt", "table"]
},
"chapter": { "type": "string" },
"title": { "type": "string" },
"subtitle": { "type": "string" },
"items": { "type": "array", "items": { "type": "string" } },
"bullets": { "type": "array", "items": { "type": "string" } },
"left_title": { "type": "string" },
"left_bullets": { "type": "array", "items": { "type": "string" } },
"right_title": { "type": "string" },
"right_bullets": { "type": "array", "items": { "type": "string" } },
"steps": { "type": "array", "items": { "type": "string" } },
"prompt": { "type": "string" },
"tips": { "type": "array", "items": { "type": "string" } },
"columns": { "type": "array", "items": { "type": "string" } },
"rows": { "type": "array", "items": { "type": "array", "items": { "type": "string" } } }
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "AX Deck Slides JSON Schema",
"type": "object",
"additionalProperties": false,
"required": ["meta", "slides"],
"properties": {
"meta": {
"type": "object",
"additionalProperties": false,
"required": ["title", "language"],
"properties": {
"title": { "type": "string", "minLength": 1 },
"subtitle": { "type": "string" },
"author": { "type": "string" },
"date": { "type": "string" },
"language": { "type": "string", "default": "ko-KR" },
"duration_minutes": { "type": "integer", "minimum": 1 },
"audience": { "type": "string" },
"version": { "type": "string" }
}
},
"slides": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/definitions/slide" }
}
},
"definitions": {
"bulletItem": {
"oneOf": [
{ "type": "string" },
{
"type": "object",
"additionalProperties": false,
"required": ["text"],
"properties": {
"text": { "type": "string" },
"children": {
"type": "array",
"items": { "$ref": "#/definitions/bulletItem" }
}
}
}
]
},
"column": {
"type": "object",
"additionalProperties": false,
"required": ["heading", "bullets"],
"properties": {
"heading": { "type": "string" },
"bullets": {
"type": "array",
"items": { "$ref": "#/definitions/bulletItem" }
}
}
},
"slide": {
"type": "object",
"additionalProperties": false,
"required": ["type", "title"],
"properties": {
"type": {
"type": "string",
"enum": [
"title",
"section",
"agenda",
"bullets",
"two_column_bullets",
"quote",
"table",
"exercise",
"closing",
"blank"
]
},
"title": { "type": "string" },
"subtitle": { "type": "string" },
"bullets": {
"type": "array",
"items": { "$ref": "#/definitions/bulletItem" }
},
"items": { "type": "array", "items": { "type": "string" } },
"left": { "$ref": "#/definitions/column" },
"right": { "$ref": "#/definitions/column" },
"quote": { "type": "string" },
"attribution": { "type": "string" },
"headers": { "type": "array", "minItems": 1, "items": { "type": "string" } },
"rows": { "type": "array", "items": { "type": "array", "items": { "type": "string" } } },
"steps": { "type": "array", "items": { "type": "string" } },
"timebox_minutes": { "type": "integer", "minimum": 1 },
"notes": { "type": "string" }
},
"allOf": [
{ "if": { "properties": { "type": { "const": "agenda" } } }, "then": { "required": ["items"] } },
{ "if": { "properties": { "type": { "const": "bullets" } } }, "then": { "required": ["bullets"] } },
{
"if": { "properties": { "type": { "const": "two_column_bullets" } } },
"then": { "required": ["left", "right"] }
},
{ "if": { "properties": { "type": { "const": "quote" } } }, "then": { "required": ["quote"] } },
{ "if": { "properties": { "type": { "const": "table" } } }, "then": { "required": ["headers", "rows"] } },
{ "if": { "properties": { "type": { "const": "exercise" } } }, "then": { "required": ["steps"] } }
]
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "AX 교육용 slides.json 스키마",
"type": "object",
"required": ["meta", "slides"],
"properties": {
"meta": {
"type": "object",
"required": ["title", "duration_minutes", "language"],
"properties": {
"title": { "type": "string", "minLength": 1 },
"subtitle": { "type": "string" },
"duration_minutes": { "type": "integer", "minimum": 5, "maximum": 180 },
"audience": { "type": "string" },
"language": { "type": "string", "enum": ["ko"] },
"version": { "type": "integer", "minimum": 1 }
},
"additionalProperties": true
},
"slides": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["type"],
"properties": {
"type": { "type": "string", "enum": ["title", "section", "content", "two_content"] },
"title": { "type": "string" },
"subtitle": { "type": "string" },
"bullets": {
"type": "array",
"items": {
"oneOf": [
{ "type": "string" },
{
"type": "object",
"required": ["text"],
"properties": {
"text": { "type": "string" },
"level": { "type": "integer", "minimum": 0, "maximum": 5 }
},
"additionalProperties": false
}
]
}
},
"left_bullets": { "$ref": "#/properties/slides/items/properties/bullets" },
"right_bullets": { "$ref": "#/properties/slides/items/properties/bullets" },
"notes": { "type": "string" }
},
"additionalProperties": true
}
}
},
"additionalProperties": false
}