diff --git a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라.pptx b/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라.pptx index 1b99e16..45ac871 100644 Binary files a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라.pptx and b/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라.pptx differ diff --git a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/PROMPT_AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라.txt b/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/PROMPT_AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라.txt index 23bba0e..8eecd62 100644 --- a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/PROMPT_AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라.txt +++ b/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/PROMPT_AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/make_ppt.py b/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.example.json b/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.json b/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.json deleted file mode 100644 index a887a82..0000000 --- a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.json +++ /dev/null @@ -1,311 +0,0 @@ -{ - "meta": { - "title": "AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "리더십 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 'AI 시대의 리더십 - 데이터로 결정하고 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": [ - "AI는 도구가 아니라 ‘의사결정 시스템’의 일부", - "성과 관리는 데이터 정의/KPI가 핵심", - "팀 AI 활용도를 올리려면 코칭/표준이 필요", - "리스크(보안/품질)를 통제해야 확장", - "리더의 질문/프레임이 조직을 바꾼다" - ], - "notes": "핵심(10초): '리더십 관점: 왜 중요한가' 슬라이드입니다.\n포인트(20초): AI는 도구가 아니라 ‘의사결정 시스템’의 일부 / 성과 관리는 데이터 정의/KPI가 핵심\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "실무자 관점: 무엇이 달라지나", - "bullets": [ - "리더의 기준이 명확하면 실행이 쉬움", - "데이터 기반 의사결정은 불필요한 재작업↓", - "AI는 실행(초안/분석/정리)을 가속", - "코칭을 받으면 활용 격차가 줄어듦", - "성과가 투명해지면 성장 경로가 보임" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): 리더의 기준이 명확하면 실행이 쉬움 / 데이터 기반 의사결정은 불필요한 재작업↓\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "AI 도입은 IT의 일이다", - "리더는 결과만 보면 된다", - "KPI는 나중에 잡아도 된다", - "팀원에게 알아서 쓰라 하면 된다" - ], - "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": [ - "KPI/지표 정의", - "의사결정 질문 프레임", - "Human-in-the-loop", - "성과 리뷰(주간/월간)", - "코칭(템플릿/리뷰)", - "거버넌스(보안/규정)" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): KPI/지표 정의 / 의사결정 질문 프레임\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "목표/지표 정의", - "데이터 수집/정의 통일", - "AI로 요약/분석(대안 생성)", - "검증/리스크 리뷰", - "결정/실행 계획 작성", - "성과 리뷰/개선" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 목표/지표 정의 → 데이터 수집/정의 통일 → AI로 요약/분석(대안 생성) …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "지표 정의가 명확", - "대안/리스크를 함께 본다", - "코칭(템플릿)으로 표준화", - "리뷰로 지속 개선" - ], - "right_title": "나쁜 예", - "right_bullets": [ - "감으로 결정", - "결론만 보고 근거 없음", - "AI 결과를 무비판 수용", - "팀마다 제각각 도구 사용" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "자주 하는 실수", - "bullets": [ - "KPI를 너무 많이 설정", - "정의/단위가 다른 데이터 혼용", - "검증 없이 실행", - "코칭 없이 방치", - "리스크 발생 후 대응" - ], - "notes": "핵심(10초): '자주 하는 실수' 슬라이드입니다.\n포인트(20초): KPI를 너무 많이 설정 / 정의/단위가 다른 데이터 혼용\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "3. 사례로 이해하는 적용 가이드", - "subtitle": "참여형 활동 없이도 이해되는 예시 중심", - "notes": "전환(10초): 이제 '3. 사례로 이해하는 적용 가이드' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 1) 리더의 의사결정 질문 템플릿", - "bullets": [ - "요청의 역할/관점: 경영진 보좌관이", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"의사결정 주제: [주제] / 목표: [목표]\"", - "포인트: 옵션 3개 강제", - "포인트: 추가 데이터/검증 포함", - "포인트: 담당/기한까지" - ], - "notes": "핵심(10초): '사례 1) 리더의 의사결정 질문 템플릿' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 경영진 보좌관이 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) 팀 AI 활용 코칭 플랜", - "bullets": [ - "요청의 역할/관점: 리더 코치", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"팀 구성: [구성] / 업무: [업무]\"", - "포인트: 템플릿 5개로 시작", - "포인트: 리뷰/공유가 핵심", - "포인트: 지표는 간단히" - ], - "notes": "핵심(10초): '사례 2) 팀 AI 활용 코칭 플랜' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 리더 코치 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "성과 관리 지표(예시)", - "columns": [ - "영역", - "지표", - "측정 방법" - ], - "rows": [ - [ - "생산성", - "절감시간(분)", - "전/후 기록" - ], - [ - "품질", - "재작업 횟수", - "리뷰 로그" - ], - [ - "활용", - "템플릿 사용률", - "라이브러리 조회" - ], - [ - "리스크", - "보안 위반 0건", - "점검" - ] - ], - "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": [ - "지표 정의 오류", - "AI 과신으로 오판", - "팀 내 격차 확대", - "보안/규정 위반" - ], - "right_title": "완화", - "right_bullets": [ - "지표 정의서/단위 통일", - "검증/승인 프로세스", - "코칭/템플릿 표준화", - "가이드라인/점검" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "목표/KPI가 명확한가", - "데이터 정의가 통일됐나", - "옵션/리스크를 같이 봤나", - "코칭/공유 운영이 있나", - "보안 체크가 내재화됐나" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 목표/KPI가 명확한가 / 데이터 정의가 통일됐나\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "리더가 질문 템플릿을 먼저 사용", - "주간 성과 리뷰에 AI 활용 포함", - "템플릿 라이브러리 구축", - "확장 시 거버넌스 강화" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 리더가 질문 템플릿을 먼저 사용 / 주간 성과 리뷰에 AI 활용 포함\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "5. 요약 & 다음 행동", - "subtitle": "오늘부터 1개만 실행", - "notes": "전환(10초): 이제 '5. 요약 & 다음 행동' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 5", - "title": "핵심 요약", - "bullets": [ - "리더십은 목표/지표/리스크를 설계하는 것", - "AI는 의사결정과 실행을 가속한다", - "코칭/템플릿/리뷰로 활용도를 만든다", - "오늘 행동: 의사결정 메모 템플릿 1개 도입" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): 리더십은 목표/지표/리스크를 설계하는 것 / AI는 의사결정과 실행을 가속한다\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.schema.json b/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기.pptx b/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기.pptx index 327ac5c..d08f524 100644 Binary files a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기.pptx and b/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기.pptx differ diff --git a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/PROMPT_AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기.txt b/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/PROMPT_AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기.txt index 31b2a2d..a922009 100644 --- a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/PROMPT_AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기.txt +++ b/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/PROMPT_AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/make_ppt.py b/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.example.json b/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.json b/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.json deleted file mode 100644 index ae6bc75..0000000 --- a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "meta": { - "title": "AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "자기계발 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 'AI 시대의 커리어 생존 전략 - 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": [ - "역량 변화는 인력 전략(채용/교육/평가)으로 연결", - "AI 활용 격차는 조직 리스크(성과 편차)", - "직무 재설계가 필요(업무 구조 변화)", - "교육 로드맵이 있어야 불안이 줄어듦", - "성과/성장 지표를 함께 설계해야 함" - ], - "notes": "핵심(10초): '리더십 관점: 왜 중요한가' 슬라이드입니다.\n포인트(20초): 역량 변화는 인력 전략(채용/교육/평가)으로 연결 / AI 활용 격차는 조직 리스크(성과 편차)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "실무자 관점: 무엇이 달라지나", - "bullets": [ - "AI가 바꾸는 건 ‘직무’보다 ‘업무’ 단위", - "새 역량은 지금부터 쌓을수록 유리", - "AI는 나의 생산성을 올리는 레버리지", - "소프트 스킬(문제정의/소통)이 더 중요", - "학습 루틴을 만들면 커리어 불안이 줄어듦" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): AI가 바꾸는 건 ‘직무’보다 ‘업무’ 단위 / 새 역량은 지금부터 쌓을수록 유리\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "AI 때문에 내 커리어는 끝이다", - "기술만 배우면 된다", - "도구를 하나만 익히면 된다", - "학습은 시간이 있을 때 한다" - ], - "right_title": "현실", - "right_bullets": [ - "업무 재구성으로 역할이 진화", - "문제정의/검증/의사결정이 핵심", - "도구는 바뀌고 원칙은 남는다", - "매주 작은 학습이 장기 경쟁력" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "기대 효과(정량/정성)", - "bullets": [ - "업무 속도↑로 ‘고부가가치’에 시간 투자", - "학습 속도↑(자료/요약/초안)", - "커리어 이동성↑(스킬 포트폴리오)", - "성과 가시화(KPI) 쉬움", - "불안↓ 자신감↑" - ], - "notes": "핵심(10초): '기대 효과(정량/정성)' 슬라이드입니다.\n포인트(20초): 업무 속도↑로 ‘고부가가치’에 시간 투자 / 학습 속도↑(자료/요약/초안)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "2. 핵심 개념과 원칙", - "subtitle": "이것만 지키면 실패 확률이 줄어든다", - "notes": "전환(10초): 이제 '2. 핵심 개념과 원칙' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "핵심 개념 6가지", - "bullets": [ - "T자형 역량: 도메인 깊이 + AI 활용", - "문제정의/목표설정", - "프롬프트/워크플로우 설계", - "검증/리스크 관리", - "협업/커뮤니케이션", - "학습 루틴(포트폴리오)" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): T자형 역량: 도메인 깊이 + AI 활용 / 문제정의/목표설정\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "내 업무를 ‘대체/증폭/신규’로 분류", - "증폭 영역 1개 선택", - "템플릿/체크리스트 구축", - "결과를 포트폴리오로 기록", - "피드백 받아 개선", - "3개월 단위 목표 재설정" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 내 업무를 ‘대체/증폭/신규’로 분류 → 증폭 영역 1개 선택 → 템플릿/체크리스트 구축 …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "도메인 문제를 AI로 증폭", - "검증/책임을 내가 갖는다", - "학습을 루틴화", - "성과를 기록한다" - ], - "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": [ - "요청의 역할/관점: 커리어 코치", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"내 직무는 [직무]이고, 주요 업무는 아래 6개야. / - (업무 리스트)\"", - "포인트: 업무를 6개로 쪼개기", - "포인트: 증폭 2개만 선택", - "포인트: 4주 계획은 작게" - ], - "notes": "핵심(10초): '사례 1) 내 직무 ‘업무 재구성’ 지도' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 커리어 코치 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) 역량 로드맵(회사 교육 연계) 만들기", - "bullets": [ - "요청의 역할/관점: 사내 교육 설계자", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"대상: [직군/연차] / AI 시대 핵심 역량을 6개로 정리하고,\"", - "포인트: 적용은 ‘산출물’로", - "포인트: 지표는 측정 가능하게", - "포인트: 직군/연차를 구체화" - ], - "notes": "핵심(10초): '사례 2) 역량 로드맵(회사 교육 연계) 만들기' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 사내 교육 설계자 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "역량 변화(예시)", - "columns": [ - "약해지는 역량", - "강해지는 역량", - "예시" - ], - "rows": [ - [ - "반복 문서 작성", - "문제 정의", - "요구사항 구조화" - ], - [ - "단순 번역/요약", - "검증/리스크", - "팩트체크" - ], - [ - "정해진 절차 수행", - "워크플로우 설계", - "자동화" - ] - ], - "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": [ - "작은 목표/성공 경험 설계", - "원칙 중심 학습", - "포트폴리오로 성과 기록", - "보안 체크리스트 내재화" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "업무를 대체/증폭으로 분류했나", - "증폭 2개 목표가 있는가", - "4주 적용 계획이 있는가", - "성과 지표가 있는가", - "산출물(포트폴리오)을 남겼나" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 업무를 대체/증폭으로 분류했나 / 증폭 2개 목표가 있는가\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "팀별 학습 스프린트 운영", - "산출물 데모/공유", - "멘토/리뷰 체계", - "교육 로드맵 공개" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 팀별 학습 스프린트 운영 / 산출물 데모/공유\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "5. 요약 & 다음 행동", - "subtitle": "오늘부터 1개만 실행", - "notes": "전환(10초): 이제 '5. 요약 & 다음 행동' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 5", - "title": "핵심 요약", - "bullets": [ - "AI 시대 핵심은 도구가 아니라 역량", - "증폭 영역을 선택하고 루틴으로 학습", - "성과는 포트폴리오로 남긴다", - "오늘 행동: 내 업무 6개를 대체/증폭으로 분류" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): AI 시대 핵심은 도구가 아니라 역량 / 증폭 영역을 선택하고 루틴으로 학습\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.schema.json b/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다.pptx b/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다.pptx index 48a1d94..a3fd13d 100644 Binary files a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다.pptx and b/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다.pptx differ diff --git a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/PROMPT_AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다.txt b/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/PROMPT_AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다.txt index c9127e1..9a6f871 100644 --- a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/PROMPT_AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다.txt +++ b/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/PROMPT_AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/make_ppt.py b/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.example.json b/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.json b/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.json deleted file mode 100644 index 0bd155c..0000000 --- a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.json +++ /dev/null @@ -1,310 +0,0 @@ -{ - "meta": { - "title": "AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "마인드셋 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '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": [ - "AI 도입은 비용이 아니라 생산성 투자: KPI로 설계해야 함", - "‘AI 활용 격차’가 성과 격차로 전이됨(조직 리스크)", - "업무 프로세스 재설계 없이 툴만 깔면 실패 확률↑", - "현장 저항/두려움은 변화관리의 핵심 변수", - "작은 성공(Small Win)을 조직적으로 확산해야 함" - ], - "notes": "핵심(10초): '리더십 관점: 왜 중요한가' 슬라이드입니다.\n포인트(20초): AI 도입은 비용이 아니라 생산성 투자: KPI로 설계해야 함 / ‘AI 활용 격차’가 성과 격차로 전이됨(조직 리스크)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "실무자 관점: 무엇이 달라지나", - "bullets": [ - "AI는 반복 작업을 줄이고 ‘판단/소통’에 시간을 돌려줌", - "내 업무를 잘 설명할수록 AI가 더 잘 도와줌", - "초안→검토 루틴이 생기면 품질이 안정적으로 개선", - "‘나만의 템플릿’이 곧 개인 경쟁력이 됨", - "일/학습 속도가 빨라져 성장 체감이 생김" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): AI는 반복 작업을 줄이고 ‘판단/소통’에 시간을 돌려줌 / 내 업무를 잘 설명할수록 AI가 더 잘 도와줌\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "AI가 들어오면 내 일은 사라진다", - "AI는 정답을 준다", - "AI는 내가 알아서 잘 쓸 수 있다", - "AI는 전문가만 쓰는 도구다" - ], - "right_title": "현실", - "right_bullets": [ - "업무는 ‘대체’보다 ‘재배치’: 반복↓ 판단/협업↑", - "AI는 ‘초안’에 강하고 검증은 사람 몫", - "좋은 입력(목적/맥락/형식)이 성과를 결정", - "초보도 ‘템플릿’으로 빠르게 숙련 가능" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "기대 효과(정량/정성)", - "bullets": [ - "반복 문서(메일/요약/보고) 시간 30~70% 단축", - "회의 후속 액션 누락 감소(체크리스트화)", - "아이디어 발산 속도↑ → 의사결정 리드타임↓", - "교육/온보딩 콘텐츠 제작 속도↑", - "개인 단위로 ‘일하는 방식’이 표준화됨" - ], - "notes": "핵심(10초): '기대 효과(정량/정성)' 슬라이드입니다.\n포인트(20초): 반복 문서(메일/요약/보고) 시간 30~70% 단축 / 회의 후속 액션 누락 감소(체크리스트화)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "2. 핵심 개념과 원칙", - "subtitle": "이것만 지키면 실패 확률이 줄어든다", - "notes": "전환(10초): 이제 '2. 핵심 개념과 원칙' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "핵심 개념 6가지", - "bullets": [ - "AI는 ‘확률 기반’ 언어 생성기: 그럴듯한 오류 가능", - "입력 품질 = 출력 품질(맥락/제약/형식)", - "AI는 초안 작성자, 사람은 검토자/의사결정자", - "작게 시작해 반복 개선(Iterative)", - "템플릿화(재사용)로 ROI를 만든다", - "검증/보안은 습관으로 내재화" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): AI는 ‘확률 기반’ 언어 생성기: 그럴듯한 오류 가능 / 입력 품질 = 출력 품질(맥락/제약/형식)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "업무 1개를 고른다(반복/시간소모)", - "목적·대상·제약을 3줄로 정리", - "형식(표/목차/분량/톤)을 지정", - "초안 생성→내가 검토·수정", - "좋은 결과는 템플릿으로 저장/공유", - "주 1회 개선(예시 추가/실수 제거)" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 업무 1개를 고른다(반복/시간소모) → 목적·대상·제약을 3줄로 정리 → 형식(표/목차/분량/톤)을 지정 …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "목적/대상/형식이 명시된 요청", - "‘결론 먼저 + 근거’ 구조", - "예시 1개 제공(스타일 고정)", - "검증 질문(반론/리스크) 포함" - ], - "right_title": "나쁜 예", - "right_bullets": [ - "‘보고서 써줘’ 같은 모호한 지시", - "데이터/기간/대상을 누락", - "형식 지정 없이 장문 생성", - "검증 없이 그대로 복붙" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "자주 하는 실수", - "bullets": [ - "AI 답을 정답으로 취급(검증 생략)", - "업무 목적 대신 ‘기능’만 요구", - "회사/고객 민감정보를 그대로 입력", - "결과물 책임 소재를 AI에 전가", - "템플릿을 안 남겨 매번 처음부터 다시 함" - ], - "notes": "핵심(10초): '자주 하는 실수' 슬라이드입니다.\n포인트(20초): AI 답을 정답으로 취급(검증 생략) / 업무 목적 대신 ‘기능’만 요구\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "3. 사례로 이해하는 적용 가이드", - "subtitle": "참여형 활동 없이도 이해되는 예시 중심", - "notes": "전환(10초): 이제 '3. 사례로 이해하는 적용 가이드' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 1) 내 업무 1개를 ‘AI 협업’으로 재설계", - "bullets": [ - "요청의 역할/관점: 나의 업무 코치", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"내 업무는 [업무명]이고, 목표는 [목표]야. / 현재 문제는 [시간이 오래 걸리는 이유/병목]이야\"", - "포인트: 업무를 ‘단계’로 쪼개기", - "포인트: 절감시간은 분 단위로 가정해보기", - "포인트: 입력 체크리스트를 바로 템플릿화" - ], - "notes": "핵심(10초): '사례 1) 내 업무 1개를 ‘AI 협업’으로 재설계' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 나의 업무 코치 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) ‘검증 질문’ 붙여서 품질 올리기", - "bullets": [ - "요청의 역할/관점: 꼼꼼한 리뷰어", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"아래 AI 초안을 검토해줘. / - 사실/수치/고유명사 오류 가능성이 있는 부분 표시\"", - "포인트: ‘누락 질문’이 품질을 올린다", - "포인트: 반론/리스크를 먼저 받으면 안전", - "포인트: 리라이팅은 1회만, 과도한 편집 방지" - ], - "notes": "핵심(10초): '사례 2) ‘검증 질문’ 붙여서 품질 올리기' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 꼼꼼한 리뷰어 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "시간을 버는 대표 업무(예시)", - "columns": [ - "업무", - "기존 소요", - "AI 협업", - "핵심 조건" - ], - "rows": [ - [ - "메일 초안", - "15~25분", - "3~7분", - "대상/목적/톤" - ], - [ - "회의록 요약", - "30~45분", - "8~15분", - "결정/액션 추출" - ], - [ - "보고서 1p 요약", - "60분+", - "15~25분", - "결론 먼저/표" - ] - ], - "notes": "읽는 법(15초): 표는 업무, 기존 소요, AI 협업, 핵심 조건 기준으로 비교합니다.\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": [ - "성과 압박으로 ‘무작정 도입’", - "검증 없이 복붙(품질 리스크)", - "개인별 방식 난립(표준 부재)", - "AI 과신/의존" - ], - "right_title": "완화", - "right_bullets": [ - "작은 성공을 KPI로 설계", - "검증 체크리스트를 기본 탑재", - "템플릿/예시로 표준화", - "사람 책임/승인 프로세스 명확화" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "목적/대상/제약이 3줄로 정리됐나", - "입력 데이터는 충분한가", - "출력 형식(표/목차/분량/톤)을 줬나", - "검증 질문(반론/리스크)을 붙였나", - "좋은 결과를 템플릿으로 저장했나" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 목적/대상/제약이 3줄로 정리됐나 / 입력 데이터는 충분한가\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "팀 공통 템플릿 5개부터 시작", - "주 1회 ‘좋은 프롬프트 공유’ 10분", - "성과는 시간절감/품질지표로 기록", - "실패 사례도 같이 공유(학습)" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 팀 공통 템플릿 5개부터 시작 / 주 1회 ‘좋은 프롬프트 공유’ 10분\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "5. 요약 & 다음 행동", - "subtitle": "오늘부터 1개만 실행", - "notes": "전환(10초): 이제 '5. 요약 & 다음 행동' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 5", - "title": "핵심 요약", - "bullets": [ - "AI는 대체자가 아니라 증폭기(Amplifier)", - "핵심은 목적·맥락·형식 + 검증", - "작게 시작해 템플릿으로 확장", - "오늘 행동: 내 업무 1개를 단계로 쪼개고 템플릿 1개 만들기" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): AI는 대체자가 아니라 증폭기(Amplifier) / 핵심은 목적·맥락·형식 + 검증\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.schema.json b/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술.pptx b/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술.pptx index ca2eeb5..a63b9b7 100644 Binary files a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술.pptx and b/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술.pptx differ diff --git a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/PROMPT_AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술.txt b/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/PROMPT_AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술.txt index 68fce95..4eb8fdd 100644 --- a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/PROMPT_AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술.txt +++ b/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/PROMPT_AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. diff --git a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/make_ppt.py b/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.example.json b/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.json b/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.json deleted file mode 100644 index 8dfc44c..0000000 --- a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "meta": { - "title": "AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "기술 이해 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '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가 그럴듯하게 틀릴 수 있음을 알아야 안전", - "팩트체크 습관이 있으면 활용 범위가 넓어짐", - "검증 질문 템플릿만 있어도 품질이 크게 향상", - "업무 문서 품질이 올라가 신뢰가 생김", - "실수를 줄이면 스트레스가 줄어듦" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): AI가 그럴듯하게 틀릴 수 있음을 알아야 안전 / 팩트체크 습관이 있으면 활용 범위가 넓어짐\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "AI는 최신 정보를 항상 안다", - "출처를 말하면 무조건 맞다", - "자신감 있는 답은 맞다", - "수치/법률도 믿어도 된다" - ], - "right_title": "현실", - "right_bullets": [ - "모델/도구에 따라 최신성은 제한", - "가짜 출처(환각)도 생성 가능", - "자신감은 정확도와 무관", - "중요 정보는 반드시 원문 대조" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "기대 효과(정량/정성)", - "bullets": [ - "오류로 인한 재작업/사고 감소", - "의사결정 근거의 품질 개선", - "검증 루틴으로 조직 신뢰↑", - "AI 활용 범위 확장(안전장치)", - "개인 역량(비판적 사고) 강화" - ], - "notes": "핵심(10초): '기대 효과(정량/정성)' 슬라이드입니다.\n포인트(20초): 오류로 인한 재작업/사고 감소 / 의사결정 근거의 품질 개선\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "2. 핵심 개념과 원칙", - "subtitle": "이것만 지키면 실패 확률이 줄어든다", - "notes": "전환(10초): 이제 '2. 핵심 개념과 원칙' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "핵심 개념 6가지", - "bullets": [ - "환각 유형: 허위 사실/가짜 출처/수치 오류", - "위험 영역: 법률/규정/수치/고유명사", - "교차검증: 원문 대조 + 2개 출처", - "가정/전제 확인", - "반론/리스크 요청", - "최종 책임은 사람" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): 환각 유형: 허위 사실/가짜 출처/수치 오류 / 위험 영역: 법률/규정/수치/고유명사\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "중요도 분류(결정 영향도)", - "출처 요청(링크/문서)", - "원문 대조(수치/이름)", - "대안/반론 요청", - "검증 결과 기록", - "승인/공유" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 중요도 분류(결정 영향도) → 출처 요청(링크/문서) → 원문 대조(수치/이름) …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "출처/근거를 요구", - "가정/전제를 명시", - "반론/리스크 포함", - "검증 체크리스트 적용" - ], - "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": [ - "요청의 역할/관점: 팩트체커", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"아래 AI 답변을 검증해줘. / - 사실 주장/수치/고유명사를 항목별로 분리\"", - "포인트: 항목 분리부터", - "포인트: 확신도 표시", - "포인트: 공식 출처를 우선" - ], - "notes": "핵심(10초): '사례 1) 답변 검증(팩트체크) 프롬프트' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 팩트체커 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) 반론/리스크 먼저 받기", - "bullets": [ - "요청의 역할/관점: 회의에서 반대편 역할(Devil's Advocate)이", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"내 주장: [주장] / 근거: [근거]\"", - "포인트: 반론을 먼저 받으면 안전", - "포인트: 검증 데이터까지 요청", - "포인트: 완화 방안까지" - ], - "notes": "핵심(10초): '사례 2) 반론/리스크 먼저 받기' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 회의에서 반대편 역할(Devil's Advocate)이 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "환각 유형과 대응(요약)", - "columns": [ - "오류 유형", - "징후", - "대응" - ], - "rows": [ - [ - "가짜 출처", - "URL/논문이 존재하지 않음", - "원문 검색/대조" - ], - [ - "수치 오류", - "단위/기간 불명확", - "정의/단위 확인" - ], - [ - "규정/법률 오류", - "개정 전 정보", - "공식 문서 확인" - ] - ], - "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": [ - "중요도 기반 검증", - "출처/원문 대조", - "2개 이상 교차검증", - "승인/리뷰 프로세스" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "이 답이 의사결정에 영향 주나", - "출처/원문이 확인됐나", - "수치의 정의/단위/기간이 명확한가", - "반론/리스크를 검토했나", - "공유/배포 전에 리뷰했나" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 이 답이 의사결정에 영향 주나 / 출처/원문이 확인됐나\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "팀 공통 팩트체크 템플릿", - "중요 문서는 리뷰 필수", - "사례 공유(실수 포함)", - "승인 단계에 체크리스트 포함" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 팀 공통 팩트체크 템플릿 / 중요 문서는 리뷰 필수\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "5. 요약 & 다음 행동", - "subtitle": "오늘부터 1개만 실행", - "notes": "전환(10초): 이제 '5. 요약 & 다음 행동' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 5", - "title": "핵심 요약", - "bullets": [ - "AI는 그럴듯하게 틀릴 수 있다", - "핵심은 출처/원문 대조 + 교차검증", - "반론/리스크 질문이 안전장치", - "오늘 행동: 내 문서 1개에 팩트체크 프롬프트 적용" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): AI는 그럴듯하게 틀릴 수 있다 / 핵심은 출처/원문 대조 + 교차검증\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.schema.json b/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/PROMPT.txt b/AX 강의 - 1/PROMPT.txt deleted file mode 100644 index 58bbb50..0000000 --- a/AX 강의 - 1/PROMPT.txt +++ /dev/null @@ -1,42 +0,0 @@ -각 교육 커리큘럼에 대해서 목차 설계 및 슬라이드 작성을 위해서 필요한 프롬프트를 작성해줘. - -# AX 전환 교육 커리큘럼 리스트 -|구분 | 주제 (PPT 제목 예시) | 주요 내용 및 기대 효과| -| --- | --- | --- | -|마인드셋 | 1. "AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다" | AI 협업 마인드셋 정립 및 AX 변화에 대한 막연한 두려움 해소| -|윤리/보안 | 2. "회사의 비밀을 지키며 AI와 대화하는 법" | 기업 보안 가이드라인, 저작권 이슈 및 안전한 데이터 입력 방법| -|업무 효율 | 3. "칼퇴를 부르는 AI 비서: 루틴 업무 1시간 단축하기" | 이메일 작성, 회의록 요약, 일정 관리 등 공통 반복 업무 자동화| -|문제 해결 | 4. "질문이 경쟁력이다: AI를 브레인스토밍 파트너로 쓰는 법" | 논리적 사고를 돕는 질문 기법 및 아이디어 확장 프로세스| -|협업/공유 | 5. "우리 팀만의 AI 지식 창고 만들기" | 사내 구축된 AI 챗봇이나 프롬프트 공유 게시판 활용법 교육| -|데이터 활용 | 6. "엑셀 함수 몰라도 괜찮아: 말로 하는 데이터 분석" | 자연어 기반 데이터 시각화 및 인사이트 도출 (Code Interpreter 등)| -|트렌드 | 7. "글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까?" | 타사들의 AX 성공 사례 벤치마킹 및 시사점 공유| -|자기계발 | 8. "AI 시대의 커리어 생존 전략: AI와 공존하는 전문가 되기" | 변화하는 직무 역량(Upskilling)에 대한 동기부여 세션| -|조직문화 | 9. "실패해도 괜찮은 AI 실험실: 작은 성공(Small Win) 만들기" | 현업에서 작은 AI 프로젝트를 시도하고 공유하는 문화 조성| -|기술 이해 | 10. "AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술" | AI 답변의 검증 방법 및 비판적 사고(Critical Thinking) 배양| -|실행력 | 11. "오늘 바로 적용하는 AI 업무 자동화: 노코드 워크플로우 설계(강의형)" | No-code 툴(Zapier 등)을 활용한 업무 흐름 자동화 설계 원리 이해 및 운영 관점 습득| -|리더십 | 12. "AI 시대의 리더십: 데이터로 결정하고 AI로 실행하라" | 의사결정권자를 위한 AI 전략 및 성과 관리 지표 이해| - -## 사용 프롬프트 -1 AI는 내 자리를 뺏지 않는다 "AI와 인간의 협업 마인드셋"을 주제로 PPT 개요를 짜줘. AI가 일자리를 대체한다는 공포를 해소하고, '인간의 창의성 + AI의 속도'가 결합된 미래 업무 모습을 시각화해줘. 신뢰감 있고 희망찬 톤으로 작성해줘. -2 회사의 비밀을 지키는 법 "기업용 AI 보안 및 가이드라인" 발표 자료를 만들어줘. 내부 데이터 유출 사례, 안전한 프롬프트 작성 규칙, 우리 회사만의 보안 수칙(Do's & Don'ts)을 포함해줘. 경각심을 주되 명확한 행동 지침을 강조해줘. -3 칼퇴를 부르는 AI 비서 "직장인 공통 업무 자동화(이메일, 요약, 일정)"를 주제로 슬라이드를 구성해줘. 비포&애프터 비교표를 넣어서 AI 활용 시 절약되는 시간을 수치로 보여줘. 실용적이고 에너제틱한 느낌의 레이아웃으로 제안해줘. -4 질문이 경쟁력이다 "AI 성능을 200% 끌어올리는 질문의 기술(Prompting)"에 대해 설명해줘. 단순 명령과 구체적 명령의 차이, 논리적 사고를 돕는 프롬프트 프레임워크를 단계별로 구성해줘. 교육적인 전문성이 느껴지는 톤으로 작성해줘. -5 우리 팀 AI 지식 창고 "사내 AI 자산 공유 및 협업 문화"에 대한 발표 자료야. 팀원들이 발견한 좋은 프롬프트를 공유하는 방법과 사내 챗봇 활용법을 포함해줘. '함께 성장하는 조직'을 강조하는 따뜻하고 협력적인 톤으로 만들어줘. -6 말로 하는 데이터 분석 "비전공자를 위한 AI 데이터 분석"을 주제로 해줘. 복잡한 코딩 없이 자연어로 그래프를 그리고 인사이트를 뽑아내는 과정을 시연하듯 구성해줘. '누구나 할 수 있다'는 자신감을 주는 쉬운 용어로 작성해줘. -7 글로벌 1등 기업 사례 "글로벌 AX 선도 기업의 성공 사례 벤치마킹" 자료를 만들어줘. 구글, 마이크로소프트, 테슬라 등 주요 기업들이 AI를 비즈니스 프로세스에 어떻게 녹였는지 분석하고 우리 회사에 주는 시사점을 정리해줘. -8 AI 시대 커리어 생존 전략 "임직원 자기계발: AI 시대의 필수 역량"을 주제로 해줘. 사라지는 기술과 새로 요구되는 기술(Soft Skills)을 비교하고, 회사가 지원하는 교육 로드맵을 보여줘. 동기부여를 자극하는 도전적인 톤으로 구성해줘. -9 실패해도 괜찮은 AI 실험실 "사내 AI 실험(Small Win) 장려 캠페인" 발표용이야. 완벽한 결과보다는 시도 자체에 가치를 두는 문화, 작은 성공 사례를 전파하는 프로세스를 담아줘. 혁신적이고 자유로운 분위기의 디자인 컨셉을 제안해줘. -10 AI의 거짓말 잡아내기 "AI 환각(Hallucination) 대응 및 팩트체크" 자료를 만들어줘. AI 답변의 오류 유형, 교차 검증 방법, 최종 의사결정자로서 인간의 역할을 강조해줘. 분석적이고 객관적인 느낌의 톤앤매너를 유지해줘. -11 업무 흐름 자동화(No-code) "노코드 툴을 활용한 워크플로우 자동화 설계(강의형)" 슬라이드를 구성해줘. 서로 다른 앱(메일-슬랙-엑셀)을 AI로 연결하는 구조도를 포함하고, 운영 관점(예외 처리, 승인 단계, 로그/모니터링)을 자세히 설명해줘. 직관적이고 기술적인 신뢰감이 가는 디자인으로 제안해줘. -12 AI 리더십 가이드 "리더를 위한 AI 의사결정 전략" 주제야. 리더가 AI를 성과 관리에 어떻게 활용할지, 팀원들의 AI 활용도를 높이기 위한 코칭법은 무엇인지 다뤄줘. 권위 있으면서도 혁신적인 리더의 모습을 투영해줘. - -# 진행 방법 -* 각 주제 별로 폴더를 만들어줘. (폴더이름은 한글 과제명으로 할 것) -* 먼저 성공적인 AX(AI Transformation) 전환을 위해 리더십부터 실무자까지 왜 이 주제를 이해하세요. -* 주제에 맞는 목차를 상세하고 세분화해서 설계하세요. -* 내용은 설명하고 이해하기 쉽도록 목차가 설계하세요. -* 각 커리큘럼 별 최소 20페이지 아상 슬라이드가 만들어 지도록 슬라이드 제목을 목차에 맞추어 생성하세요. -* 교육시간은 30분정도로 진행될 수 있도록 내용 구성해야 합니다. -* 목차에 대해서 설명과 이해가 쉽도록 예시가 많은 내용으로 작성하세요. -* 각 폴더 내 과제명.pptx 파워포인트를 작성할 수 있도록 하세요. - diff --git a/AX 강의 - 1/_common/make_ppt.py b/AX 강의 - 1/_common/make_ppt.py deleted file mode 100644 index 6ec6412..0000000 --- a/AX 강의 - 1/_common/make_ppt.py +++ /dev/null @@ -1,1082 +0,0 @@ -from __future__ import annotations - -import argparse -import json -import re -import subprocess -import sys -from dataclasses import dataclass -from pathlib import Path -from typing import Any, Sequence - -from pptx import Presentation -from pptx.dml.color import RGBColor -from pptx.enum.shapes import MSO_AUTO_SHAPE_TYPE -from pptx.enum.text import PP_ALIGN -from pptx.util import Inches, Pt - - -@dataclass(frozen=True) -class Theme: - navy: RGBColor - navy_2: RGBColor - bg: RGBColor - white: RGBColor - text: RGBColor - muted: RGBColor - line: RGBColor - accent_yellow: RGBColor - accent_blue: RGBColor - accent_red: RGBColor - accent_green: RGBColor - accent_purple: RGBColor - accent_orange: RGBColor - accent_cyan: RGBColor - - font: str - font_bold: str - font_mono: str - - -T = Theme( - navy=RGBColor(0x10, 0x1D, 0x2E), - navy_2=RGBColor(0x14, 0x2A, 0x45), - bg=RGBColor(0xF6, 0xF7, 0xFB), - white=RGBColor(0xFF, 0xFF, 0xFF), - text=RGBColor(0x1F, 0x29, 0x37), - muted=RGBColor(0x6B, 0x72, 0x80), - line=RGBColor(0xE5, 0xE7, 0xEB), - accent_yellow=RGBColor(0xF0, 0xB4, 0x3B), - accent_blue=RGBColor(0x3B, 0x82, 0xF6), - accent_red=RGBColor(0xEF, 0x44, 0x44), - accent_green=RGBColor(0x22, 0xC5, 0x5E), - accent_purple=RGBColor(0xA8, 0x55, 0xF7), - accent_orange=RGBColor(0xF9, 0x73, 0x16), - accent_cyan=RGBColor(0x06, 0xB6, 0xD4), - font="Apple SD Gothic Neo", - font_bold="Apple SD Gothic Neo", - font_mono="Menlo", -) - - -SLIDE_W = Inches(13.333) -SLIDE_H = Inches(7.5) - - -def _rgb(hex6: str) -> RGBColor: - h = hex6.lstrip("#") - return RGBColor(int(h[0:2], 16), int(h[2:4], 16), int(h[4:6], 16)) - - -def set_slide_bg(slide, color: RGBColor) -> None: - fill = slide.background.fill - fill.solid() - fill.fore_color.rgb = color - - -def add_rect(slide, x, y, w, h, *, fill: RGBColor | None, line: RGBColor | None, radius: bool = False): - shape_type = MSO_AUTO_SHAPE_TYPE.ROUNDED_RECTANGLE if radius else MSO_AUTO_SHAPE_TYPE.RECTANGLE - shp = slide.shapes.add_shape(shape_type, x, y, w, h) - if fill is None: - shp.fill.background() - else: - shp.fill.solid() - shp.fill.fore_color.rgb = fill - if line is None: - shp.line.fill.background() - else: - shp.line.color.rgb = line - shp.line.width = Pt(1) - return shp - - -def add_shadow_card(slide, x, y, w, h, *, fill: RGBColor, line: RGBColor | None, radius: bool = True): - # Faux shadow (editable) by layering two shapes. - shadow = add_rect(slide, x + Inches(0.06), y + Inches(0.06), w, h, fill=_rgb("#E5E7EB"), line=None, radius=radius) - shadow.fill.transparency = 0.35 - card = add_rect(slide, x, y, w, h, fill=fill, line=line, radius=radius) - return card - - -def add_icon_circle(slide, x, y, d, icon: str, *, fill: RGBColor, fg: RGBColor): - circ = slide.shapes.add_shape(MSO_AUTO_SHAPE_TYPE.OVAL, x, y, d, d) - circ.fill.solid() - circ.fill.fore_color.rgb = fill - circ.line.fill.background() - tf = circ.text_frame - tf.clear() - p = tf.paragraphs[0] - p.alignment = PP_ALIGN.CENTER - run = p.add_run() - run.text = icon - run.font.name = T.font_bold - run.font.size = Pt(20) - run.font.bold = True - run.font.color.rgb = fg - return circ - - -@dataclass(frozen=True) -class DeckStyle: - accent: RGBColor - accent_2: RGBColor - badge_bg: RGBColor - code_bg: RGBColor - code_fg: RGBColor - - -def style_from_meta(meta: dict[str, Any]) -> DeckStyle: - badge = str(meta.get("badge") or "") - # Track colors - if "윤리" in badge or "보안" in badge: - accent = T.accent_red - accent2 = _rgb("#FDECEC") - elif "업무 효율" in badge: - accent = T.accent_yellow - accent2 = _rgb("#FFF7ED") - elif "문제 해결" in badge: - accent = T.accent_blue - accent2 = _rgb("#EFF6FF") - elif "협업" in badge or "공유" in badge: - accent = T.accent_green - accent2 = _rgb("#ECFDF5") - elif "데이터" in badge: - accent = T.accent_purple - accent2 = _rgb("#F5F3FF") - elif "트렌드" in badge: - accent = T.accent_orange - accent2 = _rgb("#FFF7ED") - elif "리더십" in badge: - accent = T.accent_cyan - accent2 = _rgb("#ECFEFF") - else: - accent = T.accent_yellow - accent2 = _rgb("#FFF7ED") - - return DeckStyle( - accent=accent, - accent_2=accent2, - badge_bg=_rgb("#24364D"), - code_bg=_rgb("#0B1220"), - code_fg=_rgb("#E5E7EB"), - ) - - -def _strip_prefix(s: str) -> str: - t = s.strip() - t = re.sub(r"^\s*\d+\)\s*", "", t) - t = re.sub(r"^\s*\d+\.\s*", "", t) - return t.strip() - - -def _parse_minutes(text: str) -> float | None: - """ - Parse rough time strings into minutes. - Supports: "20분", "60분+", "15~25분", "1시간", "1.5시간", "1시간 30분". - Returns None if not parseable. - """ - s = str(text).strip().replace(" ", "") - if not s: - return None - - # Hours + minutes - hm = re.fullmatch(r"(?:(\d+(?:\.\d+)?)시간)?(?:(\d+(?:\.\d+)?)분)?\+?", s) - if hm and (hm.group(1) or hm.group(2)): - h = float(hm.group(1)) if hm.group(1) else 0.0 - m = float(hm.group(2)) if hm.group(2) else 0.0 - return h * 60.0 + m - - # Range in minutes: 15~25분 / 15-25분 - mrange = re.fullmatch(r"(\d+(?:\.\d+)?)[~-](\d+(?:\.\d+)?)분\+?", s) - if mrange: - a = float(mrange.group(1)) - b = float(mrange.group(2)) - return (a + b) / 2.0 - - # Simple minutes with plus - m1 = re.fullmatch(r"(\d+(?:\.\d+)?)분\+?", s) - if m1: - return float(m1.group(1)) - - return None - - -def _parse_percent(text: str) -> float | None: - """ - Parse rough percent strings into 0~100 float. - Supports: "30%", "30~70%", "30-70%", "0.3" (treated as 30% if <= 1.0). - """ - s = str(text).strip().replace(" ", "") - if not s: - return None - s = s.rstrip("+") - if s.endswith("%"): - s0 = s[:-1] - mrange = re.fullmatch(r"(\d+(?:\.\d+)?)[~-](\d+(?:\.\d+)?)", s0) - if mrange: - a = float(mrange.group(1)) - b = float(mrange.group(2)) - return max(0.0, min(100.0, (a + b) / 2.0)) - m1 = re.fullmatch(r"(\d+(?:\.\d+)?)", s0) - if m1: - return max(0.0, min(100.0, float(m1.group(1)))) - return None - - # bare number - m = re.fullmatch(r"\d+(?:\.\d+)?", s) - if not m: - return None - v = float(s) - if 0.0 <= v <= 1.0: - v *= 100.0 - if 0.0 <= v <= 100.0: - return v - return None - - -@dataclass(frozen=True) -class SlideMood: - label: str - icon: str - color: RGBColor - bg: RGBColor - - -def mood_from_title(title: str, *, style: DeckStyle) -> SlideMood: - t = str(title or "").strip() - tl = t.lower() - # Korean + English heuristics - if any(k in t for k in ["리스크", "위험", "주의", "환각", "보안"]) or any(k in tl for k in ["risk", "warning", "security"]): - return SlideMood(label="RISK", icon="!", color=T.accent_red, bg=_rgb("#FDECEC")) - if any(k in t for k in ["체크리스트", "점검", "do", "don't", "dont"]) or any(k in tl for k in ["checklist", "do &", "don't", "dont"]): - return SlideMood(label="CHECK", icon="✓", color=T.accent_green, bg=_rgb("#ECFDF5")) - if any(k in t for k in ["요약", "정리", "핵심"]) or any(k in tl for k in ["summary", "key"]): - return SlideMood(label="SUMMARY", icon="≡", color=style.accent, bg=style.accent_2) - if any(k in t for k in ["기대 효과", "효과", "성과", "절감", "개선"]) or any(k in tl for k in ["impact", "benefit", "kpi", "saving"]): - return SlideMood(label="IMPACT", icon="+", color=style.accent, bg=style.accent_2) - if any(k in t for k in ["사례", "적용", "예시", "데모"]) or any(k in tl for k in ["case", "example", "demo"]): - return SlideMood(label="CASE", icon="◆", color=style.accent, bg=style.accent_2) - if any(k in t for k in ["프레임워크", "루틴", "프로세스", "단계"]) or any(k in tl for k in ["framework", "process", "steps"]): - return SlideMood(label="FRAME", icon="→", color=style.accent, bg=style.accent_2) - return SlideMood(label="INFO", icon="i", color=style.accent, bg=style.accent_2) - - -def extract_kpis(lines: Sequence[str]) -> list[tuple[str, str]]: - """ - Extract up to 3 KPI-like tokens from bullet lines. - Returns list of (value, label). - """ - out: list[tuple[str, str]] = [] - seen: set[str] = set() - - def add(value: str, label: str) -> None: - v = value.strip() - if not v or v in seen: - return - seen.add(v) - out.append((v, label.strip()[:18] or "KPI")) - - for s in lines: - text = str(s) - # percent - m = re.search(r"(\d+(?:\.\d+)?\s*(?:~|-)\s*\d+(?:\.\d+)?\s*%|\d+(?:\.\d+)?\s*%)", text) - if m: - label = "비율" - if "단축" in text or "절감" in text or "감소" in text: - label = "단축/절감" - add(m.group(1).replace(" ", ""), label) - # minutes / hours - m2 = re.search(r"(\d+(?:\.\d+)?\s*(?:~|-)\s*\d+(?:\.\d+)?\s*분\+?|\d+(?:\.\d+)?\s*분\+?|\d+(?:\.\d+)?\s*시간(?:\s*\d+(?:\.\d+)?\s*분)?)", text) - if m2: - label = "시간" - if "절감" in text or "단축" in text: - label = "절감" - add(m2.group(1).replace(" ", ""), label) - # weeks - m3 = re.search(r"(\d+)\s*주", text) - if m3: - add(f"{m3.group(1)}주", "기간") - # counts - m4 = re.search(r"(\d+)\s*개", text) - if m4: - add(f"{m4.group(1)}개", "항목") - if len(out) >= 3: - break - return out[:3] - - -def add_kpi_cards(slide, *, kpis: Sequence[tuple[str, str]], style: DeckStyle) -> None: - if not kpis: - return - n = min(3, len(kpis)) - w = Inches(3.85) - gap = Inches(0.25) - x0 = Inches(0.7) - y0 = Inches(6.0) - for i in range(n): - value, label = kpis[i] - xx = x0 + (w + gap) * i - add_shadow_card(slide, xx, y0, w, Inches(0.95), fill=T.white, line=_rgb("#E5E7EB")) - add_rect(slide, xx, y0, Inches(0.08), Inches(0.95), fill=style.accent, line=None, radius=False) - add_textbox(slide, xx + Inches(0.22), y0 + Inches(0.18), w - Inches(0.35), Inches(0.45), value, size=22, bold=True, color=T.text) - add_textbox(slide, xx + Inches(0.22), y0 + Inches(0.62), w - Inches(0.35), Inches(0.25), label, size=11, bold=True, color=T.muted) - - -def add_textbox( - slide, - x, - y, - w, - h, - text: str, - *, - size: int, - bold: bool = False, - color: RGBColor | None = None, - align: int = PP_ALIGN.LEFT, - line_spacing: float | None = None, -): - tb = slide.shapes.add_textbox(x, y, w, h) - tf = tb.text_frame - tf.clear() - tf.word_wrap = True - p = tf.paragraphs[0] - p.alignment = align - run = p.add_run() - run.text = text - f = run.font - f.name = T.font_bold if bold else T.font - f.size = Pt(size) - f.bold = bold - f.color.rgb = color or T.text - if line_spacing is not None: - p.line_spacing = line_spacing - return tb - - -def add_textbox_mono(slide, x, y, w, h, text: str, *, size: int, color: RGBColor): - tb = slide.shapes.add_textbox(x, y, w, h) - tf = tb.text_frame - tf.clear() - tf.word_wrap = True - # Keep line breaks as paragraphs for better rendering. - lines = text.splitlines() if text else [""] - for i, line in enumerate(lines): - p = tf.paragraphs[0] if i == 0 else tf.add_paragraph() - p.text = line - p.font.name = T.font_mono - p.font.size = Pt(size) - p.font.color.rgb = color - p.line_spacing = 1.12 - p.space_after = Pt(0) - return tb - - -def add_bullets( - slide, - x, - y, - w, - h, - bullets: Sequence[str], - *, - size: int = 18, - color: RGBColor | None = None, - line_spacing: float = 1.15, -): - tb = slide.shapes.add_textbox(x, y, w, h) - tf = tb.text_frame - tf.clear() - tf.word_wrap = True - for i, b in enumerate(bullets): - p = tf.paragraphs[0] if i == 0 else tf.add_paragraph() - p.text = b - p.level = 0 - p.font.name = T.font - p.font.size = Pt(size) - p.font.color.rgb = color or T.text - p.line_spacing = line_spacing - p.space_after = Pt(6) - p.bullet = True - return tb - - -def add_pill(slide, x, y, w, h, text: str, *, fill: RGBColor, fg: RGBColor): - pill = add_rect(slide, x, y, w, h, fill=fill, line=None, radius=True) - tf = pill.text_frame - tf.clear() - p = tf.paragraphs[0] - p.alignment = PP_ALIGN.CENTER - run = p.add_run() - run.text = text - run.font.name = T.font - run.font.size = Pt(12) - run.font.color.rgb = fg - return pill - - -def add_footer(slide, slide_no: int, *, dark: bool, footer_left: str | None = None) -> None: - y = SLIDE_H - Inches(0.35) - add_rect(slide, Inches(0), y, SLIDE_W, Inches(0.35), fill=(T.navy if dark else T.bg), line=None, radius=False) - fg = _rgb("#D1D5DB") if dark else T.muted - if footer_left: - add_textbox( - slide, - Inches(0.5), - y + Inches(0.06), - Inches(9.5), - Inches(0.25), - footer_left, - size=11, - bold=False, - color=fg, - align=PP_ALIGN.LEFT, - ) - add_textbox( - slide, - SLIDE_W - Inches(2.0), - y + Inches(0.06), - Inches(1.5), - Inches(0.25), - f"{slide_no:02d}", - size=11, - bold=False, - color=fg, - align=PP_ALIGN.RIGHT, - ) - - -def set_notes(slide, notes: str | None) -> None: - if notes is None: - return - text = str(notes).strip() - if not text: - return - ns = slide.notes_slide - tf = ns.notes_text_frame - tf.clear() - tf.text = text - - -def _header(slide, title: str, *, chapter: str | None = None, style: DeckStyle) -> None: - # Top bar + accent strip (more "PPT-like") - add_rect(slide, Inches(0), Inches(0), SLIDE_W, Inches(0.95), fill=T.white, line=None, radius=False) - add_rect(slide, Inches(0), Inches(0), SLIDE_W, Inches(0.06), fill=style.accent, line=None, radius=False) - add_textbox(slide, Inches(0.7), Inches(0.22), Inches(10.0), Inches(0.55), title, size=28, bold=True, color=T.text) - if chapter: - add_pill(slide, Inches(11.2), Inches(0.26), Inches(1.8), Inches(0.38), chapter, fill=_rgb("#EEF2F7"), fg=T.muted) - add_rect(slide, Inches(0.7), Inches(0.93), Inches(11.93), Inches(0.04), fill=T.line, line=None, radius=False) - - -def slide_cover(prs: Presentation, *, title: str, subtitle: str | None, badge: str | None, footer_left: str | None, style: DeckStyle): - s = prs.slides.add_slide(prs.slide_layouts[6]) - set_slide_bg(s, T.navy) - # Subtle pattern bubbles - for (x, y, d, a) in [(11.0, 0.6, 1.4, 0.12), (10.1, 1.7, 2.2, 0.08), (11.7, 2.8, 1.7, 0.07)]: - c = s.shapes.add_shape(MSO_AUTO_SHAPE_TYPE.OVAL, Inches(x), Inches(y), Inches(d), Inches(d)) - c.fill.solid() - c.fill.fore_color.rgb = style.accent - c.fill.transparency = 1 - a - c.line.fill.background() - # Corner star (spark) - star = s.shapes.add_shape(MSO_AUTO_SHAPE_TYPE.STAR_5_POINT, Inches(0.55), Inches(0.65), Inches(0.65), Inches(0.65)) - star.fill.solid() - star.fill.fore_color.rgb = style.accent - star.line.fill.background() - star.fill.transparency = 0.08 - if badge: - add_pill(s, Inches(4.2), Inches(0.45), Inches(4.9), Inches(0.45), badge, fill=style.badge_bg, fg=_rgb("#E5E7EB")) - # Icon badge - add_icon_circle(s, Inches(6.2), Inches(1.35), Inches(0.9), "★", fill=style.accent, fg=T.navy) - add_textbox( - s, - Inches(1.0), - Inches(2.15), - Inches(11.33), - Inches(1.5), - title, - size=48 if len(title) <= 18 else 38, - bold=True, - color=T.white, - align=PP_ALIGN.CENTER, - line_spacing=1.05, - ) - if subtitle: - add_textbox(s, Inches(1.3), Inches(4.0), Inches(10.8), Inches(0.5), subtitle, size=18, bold=True, color=_rgb("#E5E7EB"), align=PP_ALIGN.CENTER) - add_rect(s, Inches(4.9), Inches(4.55), Inches(3.5), Inches(0.08), fill=style.accent, line=None) - add_footer(s, 1, dark=True, footer_left=footer_left) - return s - - -def slide_section(prs: Presentation, slide_no: int, *, title: str, subtitle: str | None, footer_left: str | None, style: DeckStyle): - s = prs.slides.add_slide(prs.slide_layouts[6]) - set_slide_bg(s, T.navy_2) - # Big part number if exists - m = re.match(r"^\s*(\d+)\.\s*(.*)$", title) - num = m.group(1) if m else None - rest = m.group(2) if m else title - if num: - add_textbox(s, Inches(0.9), Inches(1.6), Inches(1.6), Inches(1.2), num, size=84, bold=True, color=style.accent) - add_textbox(s, Inches(2.25), Inches(2.15), Inches(10.2), Inches(1.0), rest, size=44 if len(rest) <= 18 else 34, bold=True, color=T.white, line_spacing=1.05) - else: - add_textbox(s, Inches(0.9), Inches(2.15), Inches(11.6), Inches(1.0), rest, size=44 if len(rest) <= 18 else 34, bold=True, color=T.white, line_spacing=1.05) - if subtitle: - add_textbox(s, Inches(2.25) if num else Inches(0.9), Inches(3.25), Inches(11.0), Inches(0.6), subtitle, size=18, bold=True, color=_rgb("#D1D5DB")) - add_rect(s, Inches(0.9), Inches(4.25), Inches(4.2), Inches(0.08), fill=style.accent, line=None) - # Accent corner - add_rect(s, Inches(11.4), Inches(6.0), Inches(2.0), Inches(1.5), fill=style.accent, line=None, radius=True).fill.transparency = 0.15 - add_footer(s, slide_no, dark=True, footer_left=footer_left) - return s - - -def slide_agenda(prs: Presentation, slide_no: int, *, title: str, items: Sequence[str], footer_left: str | None, style: DeckStyle): - s = prs.slides.add_slide(prs.slide_layouts[6]) - set_slide_bg(s, T.bg) - _header(s, title, style=style) - - # Stepper layout (horizontal) - card = add_shadow_card(s, Inches(0.7), Inches(1.55), Inches(11.93), Inches(4.9), fill=T.white, line=T.line) - _ = card - steps = [_strip_prefix(str(x)) for x in items][:6] - n = max(1, len(steps)) - left = Inches(1.1) - top = Inches(2.25) - usable_w = Inches(11.2) - gap = usable_w / n - for i, txt in enumerate(steps): - cx = left + gap * i + gap / 2 - Inches(0.35) - add_icon_circle(s, cx, top, Inches(0.7), f"{i+1}", fill=style.accent, fg=T.navy) - add_textbox(s, cx - Inches(0.6), top + Inches(0.85), Inches(2.0), Inches(0.55), txt, size=14, bold=True, color=T.text, align=PP_ALIGN.CENTER, line_spacing=1.05) - if i < n - 1: - # connector - add_rect(s, cx + Inches(0.7), top + Inches(0.33), gap - Inches(0.7), Inches(0.05), fill=_rgb("#CBD5E1"), line=None, radius=True) - - add_rect(s, Inches(1.1), Inches(5.8), Inches(11.2), Inches(0.7), fill=style.accent_2, line=None, radius=True) - add_textbox(s, Inches(1.35), Inches(5.93), Inches(10.7), Inches(0.45), "TIP: 각 파트는 5~7분 내로, 사례는 2개만 깊게 보면 충분합니다.", size=15, bold=True, color=T.text) - add_footer(s, slide_no, dark=False, footer_left=footer_left) - return s - - -def slide_bullets(prs: Presentation, slide_no: int, *, title: str, bullets: Sequence[str], chapter: str | None, footer_left: str | None, style: DeckStyle): - s = prs.slides.add_slide(prs.slide_layouts[6]) - set_slide_bg(s, T.bg) - _header(s, title, chapter=chapter, style=style) - - # Left icon rail + bullet cards (more visual) - add_rect(s, Inches(0), Inches(0.95), Inches(0.22), SLIDE_H - Inches(0.95), fill=style.accent, line=None, radius=False) - add_icon_circle(s, Inches(0.35), Inches(1.55), Inches(0.8), "✓", fill=style.accent, fg=T.navy) - # Decorative blob - blob = s.shapes.add_shape(MSO_AUTO_SHAPE_TYPE.OVAL, Inches(11.6), Inches(6.0), Inches(1.6), Inches(1.6)) - blob.fill.solid() - blob.fill.fore_color.rgb = style.accent - blob.fill.transparency = 0.88 - blob.line.fill.background() - - # Mood badge (top-right) - mood = mood_from_title(title, style=style) - add_pill(s, Inches(10.65), Inches(1.12), Inches(2.55), Inches(0.38), f"{mood.icon} {mood.label}", fill=mood.bg, fg=T.text) - - items = list(bullets) - n = len(items) - if n <= 5: - card = add_shadow_card(s, Inches(1.2), Inches(1.55), Inches(12.1), Inches(4.25), fill=T.white, line=T.line) - _ = card - y0 = Inches(1.95) - for i, txt in enumerate(items): - yy = y0 + Inches(0.78) * i - add_icon_circle(s, Inches(1.45), yy, Inches(0.38), f"{i+1}", fill=style.accent_2, fg=T.text) - add_textbox(s, Inches(1.9), yy - Inches(0.02), Inches(11.1), Inches(0.5), txt, size=18, bold=True, color=T.text, line_spacing=1.1) - add_rect(s, Inches(1.45), yy + Inches(0.55), Inches(11.6), Inches(0.02), fill=_rgb("#E5E7EB"), line=None, radius=False) - else: - # 2-column grid of mini cards - add_shadow_card(s, Inches(1.2), Inches(1.55), Inches(12.1), Inches(4.25), fill=T.white, line=T.line) - col_w = Inches(5.8) - row_h = Inches(1.1) - left_x = Inches(1.45) - right_x = Inches(7.35) - top_y = Inches(1.9) - for i, txt in enumerate(items[:8]): - xx = left_x if i % 2 == 0 else right_x - yy = top_y + row_h * (i // 2) - add_shadow_card(s, xx, yy, col_w, Inches(0.92), fill=_rgb("#F9FAFB"), line=_rgb("#E5E7EB")) - add_rect(s, xx, yy, Inches(0.08), Inches(0.92), fill=style.accent, line=None, radius=False) - add_textbox(s, xx + Inches(0.25), yy + Inches(0.18), col_w - Inches(0.35), Inches(0.6), txt, size=15, bold=True, color=T.text, line_spacing=1.08) - - # KPI cards (auto extracted from bullets) - add_kpi_cards(s, kpis=extract_kpis(items), style=style) - add_footer(s, slide_no, dark=False, footer_left=footer_left) - return s - - -def slide_two_column( - prs: Presentation, - slide_no: int, - *, - title: str, - left_title: str, - left_bullets: Sequence[str], - right_title: str, - right_bullets: Sequence[str], - chapter: str | None, - footer_left: str | None, - style: DeckStyle, -): - s = prs.slides.add_slide(prs.slide_layouts[6]) - set_slide_bg(s, T.bg) - _header(s, title, chapter=chapter, style=style) - - lx = Inches(0.7) - rx = Inches(6.75) - y = Inches(1.55) - w = Inches(5.88) - h = Inches(5.0) - add_shadow_card(s, lx, y, w, h, fill=_rgb("#F8FAFC"), line=_rgb("#E5E7EB")) - add_shadow_card(s, rx, y, w, h, fill=_rgb("#F8FAFC"), line=_rgb("#E5E7EB")) - - # Colored headers + icons (auto semantics) - add_rect(s, lx, y, w, Inches(0.9), fill=_rgb("#EFF6FF"), line=None, radius=True) - add_rect(s, rx, y, w, Inches(0.9), fill=_rgb("#ECFDF5"), line=None, radius=True) - add_rect(s, lx, y, w, Inches(0.08), fill=T.accent_blue, line=None, radius=False) - add_rect(s, rx, y, w, Inches(0.08), fill=T.accent_green, line=None, radius=False) - left_icon = "!" - right_icon = "✓" - lt = left_title.lower() - rt = right_title.lower() - if "오해" in left_title or "bad" in lt or "don" in lt or "리스크" in left_title: - left_icon = "!" - if "현실" in right_title or "good" in rt or "do" in rt or "완화" in right_title: - right_icon = "✓" - if "before" in lt or "기존" in left_title: - left_icon = "◼" - if "after" in rt or "ai" in rt or "협업" in right_title: - right_icon = "▲" - add_icon_circle(s, lx + Inches(0.35), y + Inches(0.22), Inches(0.45), left_icon, fill=_rgb("#DBEAFE"), fg=_rgb("#1D4ED8")) - add_icon_circle(s, rx + Inches(0.35), y + Inches(0.22), Inches(0.45), right_icon, fill=_rgb("#D1FAE5"), fg=_rgb("#065F46")) - add_textbox(s, lx + Inches(0.9), y + Inches(0.18), w - Inches(1.2), Inches(0.55), left_title, size=18, bold=True, color=T.text) - add_textbox(s, rx + Inches(0.9), y + Inches(0.18), w - Inches(1.2), Inches(0.55), right_title, size=18, bold=True, color=T.text) - - add_bullets(s, lx + Inches(0.35), y + Inches(1.05), w - Inches(0.7), h - Inches(1.25), list(left_bullets), size=15, color=T.text, line_spacing=1.18) - add_bullets(s, rx + Inches(0.35), y + Inches(1.05), w - Inches(0.7), h - Inches(1.25), list(right_bullets), size=15, color=T.text, line_spacing=1.18) - - # VS badge - add_icon_circle(s, Inches(6.05), Inches(3.65), Inches(0.75), "VS", fill=_rgb("#111827"), fg=_rgb("#E5E7EB")) - add_footer(s, slide_no, dark=False, footer_left=footer_left) - return s - - -def slide_process(prs: Presentation, slide_no: int, *, title: str, steps: Sequence[str], chapter: str | None, footer_left: str | None, style: DeckStyle): - s = prs.slides.add_slide(prs.slide_layouts[6]) - set_slide_bg(s, T.bg) - _header(s, title, chapter=chapter, style=style) - - add_shadow_card(s, Inches(0.7), Inches(1.55), Inches(11.93), Inches(4.9), fill=T.white, line=T.line) - - st = list(steps) - n = len(st) - # Timeline (horizontal) when possible - if n <= 6: - left = Inches(1.1) - y = Inches(3.05) - usable_w = Inches(11.2) - gap = usable_w / n - add_rect(s, left, y + Inches(0.35), usable_w, Inches(0.06), fill=_rgb("#CBD5E1"), line=None, radius=True) - for i, txt in enumerate(st): - cx = left + gap * i + gap / 2 - Inches(0.32) - add_icon_circle(s, cx, y, Inches(0.64), f"{i+1}", fill=style.accent, fg=T.navy) - add_shadow_card(s, cx - Inches(0.55), y - Inches(1.25), Inches(2.1), Inches(0.95), fill=_rgb("#F8FAFC"), line=_rgb("#E5E7EB")) - add_textbox(s, cx - Inches(0.45), y - Inches(1.1), Inches(1.9), Inches(0.75), txt, size=13, bold=True, color=T.text, align=PP_ALIGN.CENTER, line_spacing=1.05) - else: - # Grid fallback - cols = 3 - card_w = Inches(3.75) - card_h = Inches(1.1) - x0 = Inches(1.05) - y0 = Inches(1.95) - gx = Inches(0.35) - gy = Inches(0.25) - for i, txt in enumerate(st[:9]): - r = i // cols - c = i % cols - xx = x0 + (card_w + gx) * c - yy = y0 + (card_h + gy) * r - add_shadow_card(s, xx, yy, card_w, card_h, fill=_rgb("#F8FAFC"), line=_rgb("#E5E7EB")) - add_icon_circle(s, xx + Inches(0.22), yy + Inches(0.28), Inches(0.5), f"{i+1}", fill=style.accent_2, fg=T.text) - add_textbox(s, xx + Inches(0.85), yy + Inches(0.25), card_w - Inches(1.05), Inches(0.7), txt, size=14, bold=True, color=T.text, line_spacing=1.05) - - add_footer(s, slide_no, dark=False, footer_left=footer_left) - return s - - -def slide_prompt( - prs: Presentation, - slide_no: int, - *, - title: str, - prompt: str, - tips: Sequence[str] | None, - chapter: str | None, - footer_left: str | None, - style: DeckStyle, -): - s = prs.slides.add_slide(prs.slide_layouts[6]) - set_slide_bg(s, T.bg) - _header(s, title, chapter=chapter, style=style) - - # Code block style prompt card - add_shadow_card(s, Inches(0.7), Inches(1.55), Inches(11.93), Inches(3.2), fill=style.code_bg, line=None, radius=True) - add_pill(s, Inches(0.95), Inches(1.72), Inches(2.2), Inches(0.38), "Copy & Paste", fill=style.accent, fg=T.navy) - add_icon_circle(s, Inches(11.85), Inches(1.67), Inches(0.55), "AI", fill=style.accent, fg=T.navy) - add_textbox_mono(s, Inches(0.95), Inches(2.15), Inches(11.33), Inches(2.35), prompt, size=14, color=style.code_fg) - - if tips: - # Tip cards (3) - add_textbox(s, Inches(0.7), Inches(4.95), Inches(6.0), Inches(0.35), "핵심 포인트", size=16, bold=True, color=T.text) - tip_list = list(tips)[:3] - tw = Inches(3.85) - ty = Inches(5.3) - for i, tip in enumerate(tip_list): - tx = Inches(0.7) + (tw + Inches(0.25)) * i - add_shadow_card(s, tx, ty, tw, Inches(1.15), fill=T.white, line=_rgb("#E5E7EB")) - add_icon_circle(s, tx + Inches(0.25), ty + Inches(0.28), Inches(0.55), "i", fill=style.accent_2, fg=T.text) - add_textbox(s, tx + Inches(0.95), ty + Inches(0.22), tw - Inches(1.15), Inches(0.9), tip, size=14, bold=True, color=T.text, line_spacing=1.08) - - add_footer(s, slide_no, dark=False, footer_left=footer_left) - return s - - -def slide_table( - prs: Presentation, - slide_no: int, - *, - title: str, - columns: Sequence[str], - rows: Sequence[Sequence[str]], - chapter: str | None, - footer_left: str | None, - style: DeckStyle, -): - s = prs.slides.add_slide(prs.slide_layouts[6]) - set_slide_bg(s, T.bg) - _header(s, title, chapter=chapter, style=style) - - x = Inches(0.7) - y = Inches(1.55) - w = Inches(11.93) - h = Inches(4.9) - add_shadow_card(s, x, y, w, h, fill=T.white, line=T.line) - add_rect(s, x, y, w, Inches(0.08), fill=style.accent, line=None, radius=False) - add_icon_circle(s, x + Inches(0.2), y + Inches(0.18), Inches(0.55), "▦", fill=style.accent_2, fg=T.text) - - n_rows = 1 + len(rows) - n_cols = max(1, len(columns)) - # Leave a strip at bottom for mini chart. - table_h = h - Inches(1.45) - tbl = s.shapes.add_table(n_rows, n_cols, x + Inches(0.35), y + Inches(0.35), w - Inches(0.7), table_h).table - - col_names = [str(c) for c in columns] - col_names_l = [c.lower() for c in col_names] - savings_idx = next((j for j, c in enumerate(col_names_l) if ("절감" in c or "감소" in c or "saving" in c)), None) - before_idx = next((j for j, c in enumerate(col_names_l) if ("기존" in c or "before" in c or "as-is" in c or "현재" in c)), None) - after_idx = next((j for j, c in enumerate(col_names_l) if ("ai" in c or "after" in c or "to-be" in c or "협업" in c or "개선" in c)), None) - - for j, col in enumerate(columns): - cell = tbl.cell(0, j) - cell.text = col - for p in cell.text_frame.paragraphs: - for run in p.runs: - run.font.name = T.font_bold - run.font.bold = True - run.font.size = Pt(14) - run.font.color.rgb = T.white - p.alignment = PP_ALIGN.CENTER - cell.fill.solid() - if savings_idx is not None and j == savings_idx: - cell.fill.fore_color.rgb = _rgb("#166534") # deep green header for savings - else: - cell.fill.fore_color.rgb = T.navy_2 - - for i, r in enumerate(rows, start=1): - for j in range(n_cols): - cell = tbl.cell(i, j) - cell.text = (r[j] if j < len(r) else "") - for p in cell.text_frame.paragraphs: - for run in p.runs: - run.font.name = T.font - run.font.size = Pt(12) - run.font.color.rgb = T.text - p.alignment = PP_ALIGN.LEFT if j != 0 else PP_ALIGN.CENTER - cell.fill.solid() - base = _rgb("#F9FAFB") if i % 2 == 0 else T.white - if savings_idx is not None and j == savings_idx: - # subtle green tint for savings column - base = _rgb("#ECFDF5") if i % 2 == 0 else _rgb("#F0FDF4") - cell.fill.fore_color.rgb = base - - # --- Mini chart strip (paired bars / savings emphasis / percent) --- - def minutes_ok(col_idx: int) -> int: - ok = 0 - for rr in rows: - if col_idx < len(rr) and _parse_minutes(rr[col_idx]) is not None: - ok += 1 - return ok - - def percent_ok(col_idx: int) -> int: - ok = 0 - for rr in rows: - if col_idx < len(rr) and _parse_percent(rr[col_idx]) is not None: - ok += 1 - return ok - - minute_cols = [(minutes_ok(j), j) for j in range(1, n_cols)] - minute_cols.sort(reverse=True) - percent_cols = [(percent_ok(j), j) for j in range(1, n_cols)] - percent_cols.sort(reverse=True) - - # choose mode - mode: str | None = None - if before_idx is not None and after_idx is not None and minutes_ok(before_idx) >= 2 and minutes_ok(after_idx) >= 2: - mode = "paired_time" - a_idx = before_idx - b_idx = after_idx - elif percent_cols and percent_cols[0][0] >= 2: - mode = "percent" - p_idx = percent_cols[0][1] - elif minute_cols and minute_cols[0][0] >= 2: - mode = "single_time" - a_idx = minute_cols[0][1] - b_idx = minute_cols[1][1] if len(minute_cols) > 1 and minute_cols[1][0] >= 2 else None - else: - mode = None - - if mode: - chart_y = y + Inches(0.35) + table_h + Inches(0.18) - chart_h = Inches(0.86) - add_rect(s, x, chart_y, w, chart_h, fill=style.accent_2, line=None, radius=True) - add_textbox(s, x + Inches(0.35), chart_y + Inches(0.12), Inches(2.0), Inches(0.25), "Mini Chart", size=12, bold=True, color=T.text) - - label_x = x + Inches(0.35) - label_w = Inches(5.6) - bar_x = x + Inches(6.15) - bar_w = Inches(6.1) - - if mode == "percent": - # Legend - add_rect(s, x + Inches(2.45), chart_y + Inches(0.18), Inches(0.22), Inches(0.14), fill=style.accent, line=None, radius=True) - add_textbox(s, x + Inches(2.72), chart_y + Inches(0.11), Inches(3.4), Inches(0.3), str(columns[p_idx])[:18], size=11, bold=True, color=T.muted) - max_rows = min(4, len(rows)) - for i in range(max_rows): - rr = rows[i] - label = (rr[0] if rr else f"Row {i+1}")[:24] - v = _parse_percent(rr[p_idx]) if p_idx < len(rr) else None - if v is None: - continue - yy = chart_y + Inches(0.38) + Inches(0.18) * i - add_textbox(s, label_x, yy - Inches(0.06), label_w, Inches(0.2), label, size=11, bold=True, color=T.text) - bw = bar_w * (v / 100.0) - add_rect(s, bar_x, yy, bw, Inches(0.12), fill=style.accent, line=None, radius=True) - add_textbox(s, bar_x + bw + Inches(0.08), yy - Inches(0.06), Inches(1.0), Inches(0.2), f"{v:.0f}%", size=10, bold=True, color=T.muted) - - elif mode == "paired_time": - before_name = str(columns[a_idx]) - after_name = str(columns[b_idx]) - # Legend: before/after + savings - c_before = _rgb("#94A3B8") - c_after = style.accent - c_save = T.accent_green - lx = x + Inches(2.45) - for k, (cc, name) in enumerate([(c_before, before_name), (c_after, after_name), (c_save, "절감")]): - add_rect(s, lx + Inches(1.45) * k, chart_y + Inches(0.18), Inches(0.22), Inches(0.14), fill=cc, line=None, radius=True) - add_textbox(s, lx + Inches(1.45) * k + Inches(0.28), chart_y + Inches(0.11), Inches(1.2), Inches(0.3), name[:10], size=11, bold=True, color=T.muted) - - max_rows = min(3, len(rows)) - max_v = 0.0 - parsed: list[tuple[str, float | None, float | None, float | None]] = [] - for i in range(max_rows): - rr = rows[i] - label = (rr[0] if rr else f"Row {i+1}")[:24] - va = _parse_minutes(rr[a_idx]) if a_idx < len(rr) else None - vb = _parse_minutes(rr[b_idx]) if b_idx < len(rr) else None - vs = _parse_minutes(rr[savings_idx]) if (savings_idx is not None and savings_idx < len(rr)) else (va - vb if (va is not None and vb is not None) else None) - parsed.append((label, va, vb, vs)) - for vv in (va, vb): - if vv is not None: - max_v = max(max_v, vv) - if max_v <= 0: - max_v = 1.0 - - for i, (label, va, vb, vs) in enumerate(parsed): - yy = chart_y + Inches(0.36) + Inches(0.26) * i - add_textbox(s, label_x, yy - Inches(0.04), label_w, Inches(0.2), label, size=11, bold=True, color=T.text) - # stacked bars - if va is not None: - add_rect(s, bar_x, yy, bar_w * (va / max_v), Inches(0.10), fill=c_before, line=None, radius=True) - if vb is not None: - add_rect(s, bar_x, yy + Inches(0.12), bar_w * (vb / max_v), Inches(0.10), fill=c_after, line=None, radius=True) - if vs is not None and vs > 0: - add_pill(s, bar_x + bar_w + Inches(0.08), yy - Inches(0.03), Inches(1.05), Inches(0.22), f"-{vs:.0f}분", fill=_rgb("#DCFCE7"), fg=_rgb("#166534")) - - else: # single_time - # pick up to two cols and highlight savings if present - chosen = [a_idx] + ([b_idx] if b_idx is not None else []) - colors = [style.accent, _rgb("#94A3B8")] - lx = x + Inches(2.45) - for k, j in enumerate(chosen[:2]): - add_rect(s, lx + Inches(1.45) * k, chart_y + Inches(0.18), Inches(0.22), Inches(0.14), fill=colors[k], line=None, radius=True) - add_textbox(s, lx + Inches(1.45) * k + Inches(0.28), chart_y + Inches(0.11), Inches(1.2), Inches(0.3), str(columns[j])[:10], size=11, bold=True, color=T.muted) - - max_rows = min(4, len(rows)) - max_v = 0.0 - for i in range(max_rows): - rr = rows[i] - for j in chosen[:2]: - v = _parse_minutes(rr[j]) if j < len(rr) else None - if v is not None: - max_v = max(max_v, v) - if max_v <= 0: - max_v = 1.0 - - for i in range(max_rows): - rr = rows[i] - label = (rr[0] if rr else f"Row {i+1}")[:24] - yy = chart_y + Inches(0.38) + Inches(0.18) * i - add_textbox(s, label_x, yy - Inches(0.06), label_w, Inches(0.2), label, size=11, bold=True, color=T.text) - for k, j in enumerate(chosen[:2]): - v = _parse_minutes(rr[j]) if j < len(rr) else None - if v is None: - continue - bw = bar_w * (v / max_v) - yk = yy + Inches(0.14) * k - add_rect(s, bar_x, yk, bw, Inches(0.12), fill=colors[k], line=None, radius=True) - add_textbox(s, bar_x + bw + Inches(0.08), yk - Inches(0.06), Inches(1.0), Inches(0.2), str(rr[j])[:8], size=10, bold=True, color=T.muted) - - add_footer(s, slide_no, dark=False, footer_left=footer_left) - return s - - -def _require(cond: bool, msg: str) -> None: - if not cond: - raise ValueError(msg) - - -def _as_list(x: Any) -> list[Any]: - if x is None: - return [] - if isinstance(x, list): - return x - raise TypeError(f"expected list, got {type(x).__name__}") - - -def build_ppt(spec: dict[str, Any]) -> Presentation: - meta = spec.get("meta") or {} - title = str(meta.get("title") or "Untitled") - subtitle = meta.get("subtitle") - footer_left = meta.get("footer_left") - badge = meta.get("badge") - style = style_from_meta(meta) - - slides = _as_list(spec.get("slides")) - _require(len(slides) >= 20, f"slides must be >= 20 (got {len(slides)})") - - prs = Presentation() - prs.slide_width = SLIDE_W - prs.slide_height = SLIDE_H - - first = slides[0] - _require(first.get("type") == "cover", "first slide must be type=cover") - s0 = slide_cover(prs, title=title, subtitle=str(subtitle) if subtitle else None, badge=str(badge) if badge else None, footer_left=str(footer_left) if footer_left else None, style=style) - set_notes(s0, first.get("notes")) - - slide_no = 2 - for item in slides[1:]: - t = item.get("type") - chapter = item.get("chapter") - if t == "agenda": - s = slide_agenda(prs, slide_no, title=str(item.get("title") or "Agenda"), items=[str(x) for x in _as_list(item.get("items"))], footer_left=str(footer_left) if footer_left else None, style=style) - elif t == "section": - s = slide_section(prs, slide_no, title=str(item.get("title") or ""), subtitle=str(item.get("subtitle")) if item.get("subtitle") else None, footer_left=str(footer_left) if footer_left else None, style=style) - elif t == "bullets": - s = slide_bullets(prs, slide_no, title=str(item.get("title") or ""), bullets=[str(x) for x in _as_list(item.get("bullets"))], chapter=str(chapter) if chapter else None, footer_left=str(footer_left) if footer_left else None, style=style) - elif t == "two_column": - s = slide_two_column( - prs, - slide_no, - title=str(item.get("title") or ""), - left_title=str(item.get("left_title") or "Left"), - left_bullets=[str(x) for x in _as_list(item.get("left_bullets"))], - right_title=str(item.get("right_title") or "Right"), - right_bullets=[str(x) for x in _as_list(item.get("right_bullets"))], - chapter=str(chapter) if chapter else None, - footer_left=str(footer_left) if footer_left else None, - style=style, - ) - elif t == "process": - s = slide_process(prs, slide_no, title=str(item.get("title") or ""), steps=[str(x) for x in _as_list(item.get("steps"))], chapter=str(chapter) if chapter else None, footer_left=str(footer_left) if footer_left else None, style=style) - elif t == "prompt": - s = slide_prompt( - prs, - slide_no, - title=str(item.get("title") or ""), - prompt=str(item.get("prompt") or ""), - tips=[str(x) for x in _as_list(item.get("tips"))] if item.get("tips") is not None else None, - chapter=str(chapter) if chapter else None, - footer_left=str(footer_left) if footer_left else None, - style=style, - ) - elif t == "table": - s = slide_table( - prs, - slide_no, - title=str(item.get("title") or ""), - columns=[str(x) for x in _as_list(item.get("columns"))], - rows=[[str(c) for c in _as_list(r)] for r in _as_list(item.get("rows"))], - chapter=str(chapter) if chapter else None, - footer_left=str(footer_left) if footer_left else None, - style=style, - ) - else: - raise ValueError(f"unknown slide type: {t!r}") - set_notes(s, item.get("notes")) - slide_no += 1 - - return prs - - -def load_spec(path: Path) -> dict[str, Any]: - data = json.loads(path.read_text(encoding="utf-8")) - if not isinstance(data, dict): - raise TypeError("spec must be a JSON object") - return data - - -def maybe_install_deps() -> None: - try: - import pptx # noqa: F401 - except Exception: - subprocess.check_call([sys.executable, "-m", "pip", "install", "python-pptx"]) - - -def main() -> None: - ap = argparse.ArgumentParser() - ap.add_argument("--spec", required=True, help="slides.json path") - ap.add_argument("--out", required=False, help="output .pptx path (default: /.pptx)") - ap.add_argument("--install-deps", action="store_true", help="pip install python-pptx if missing") - args = ap.parse_args() - - if args.install_deps: - maybe_install_deps() - - spec_path = Path(args.spec).resolve() - spec = load_spec(spec_path) - meta = spec.get("meta") or {} - title = str(meta.get("title") or spec_path.parent.name) - out = Path(args.out).resolve() if args.out else (spec_path.parent / f"{title}.pptx").resolve() - out.parent.mkdir(parents=True, exist_ok=True) - - prs = build_ppt(spec) - prs.save(str(out)) - print(f"wrote {out} ({out.stat().st_size:,} bytes)") - - -if __name__ == "__main__": - main() - diff --git a/AX 강의 - 1/_common/slides.example.json b/AX 강의 - 1/_common/slides.example.json deleted file mode 100644 index 9518887..0000000 --- a/AX 강의 - 1/_common/slides.example.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} - diff --git a/AX 강의 - 1/_common/slides.schema.json b/AX 강의 - 1/_common/slides.schema.json deleted file mode 100644 index e42b38d..0000000 --- a/AX 강의 - 1/_common/slides.schema.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "$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 -} - diff --git a/AX 강의 - 1/generate_all.py b/AX 강의 - 1/generate_all.py deleted file mode 100644 index 5f25d8d..0000000 --- a/AX 강의 - 1/generate_all.py +++ /dev/null @@ -1,683 +0,0 @@ -from __future__ import annotations - -import json -import re -from dataclasses import dataclass -from pathlib import Path -from typing import Any - - -ROOT = Path(__file__).resolve().parent -COMMON = ROOT / "_common" - - -def dump_json(path: Path, obj: Any) -> None: - path.write_text(json.dumps(obj, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") - - -def dump_text(path: Path, text: str) -> None: - path.write_text(text.rstrip() + "\n", encoding="utf-8") - - -def prompt_text(*, title: str, category: str, seed_prompt: str) -> str: - return f"""너는 기업 AX 전환 교육용 PPT를 설계하는 교육 콘텐츠 디자이너다. - -주제(폴더명/PPT 제목): {title} -구분: {category} -요청(시드 프롬프트): -{seed_prompt} - -목표: -- 리더십부터 실무자까지 "왜 이 주제를 이해해야 하는지"를 먼저 설득한다. -- 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개 실행)으로 끝낸다. -""" - - -def wrapper_make_ppt_py() -> str: - return """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() -""" - - -@dataclass(frozen=True) -class Topic: - category: str - title: str - ppt_title: str | None - seed_prompt: str - leader_why: list[str] - worker_why: list[str] - myth: list[str] - reality: list[str] - effects: list[str] - concepts: list[str] - framework_steps: list[str] - good: list[str] - bad: list[str] - mistakes: list[str] - prompt1_title: str - prompt1: str - prompt1_tips: list[str] - prompt2_title: str - prompt2: str - prompt2_tips: list[str] - table_title: str - table_columns: list[str] - table_rows: list[list[str]] - risks: list[str] - mitigations: list[str] - checklist: list[str] - rollout: list[str] - summary: list[str] - - -def _title_without_practice_prefix(title: str) -> str: - t = title.strip() - t = re.sub(r"^\s*실습\s*\d+\)\s*", "", t) - t = re.sub(r"^\s*실습\s*\d+\.\s*", "", t) - return t.strip() - - -def _case_bullets(*, prompt: str, tips: list[str], max_tips: int = 3) -> list[str]: - """ - Convert a 'prompt template' into non-practice, lecture-friendly bullets: - - what to specify, why it matters, and a short example snippet (not an instruction to run). - """ - lines = [ln.strip() for ln in str(prompt).splitlines() if ln.strip()] - role = lines[0] if lines else "" - ex = " / ".join(lines[1:3]) if len(lines) >= 3 else (lines[1] if len(lines) >= 2 else "") - out = [] - if role: - out.append(f"요청의 역할/관점: {role.replace('너는 ', '').replace('야.', '').replace('야', '')[:40]}") - out.append("핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)") - out.append("출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨") - if ex: - out.append(f"짧은 예시 문장(참고): \"{ex[:55]}\"") - for t in tips[:max_tips]: - out.append(f"포인트: {t}") - # ensure 5~7 bullets - return out[:7] - - -def _sanitize_text(s: str) -> str: - # Phrase-level first - s = s.replace("실습 없이", "참여형 활동 없이") - s = s.replace("실습 유도로", "참여형 활동 유도로") - s = s.replace("실습 위주의", "강의형 중심의") - # Word-level - s = s.replace("워크숍", "강의") - s = s.replace("실습", "적용") - return s - - -def _sanitize_obj(obj: Any) -> Any: - if obj is None: - return None - if isinstance(obj, str): - return _sanitize_text(obj) - if isinstance(obj, list): - return [_sanitize_obj(x) for x in obj] - if isinstance(obj, dict): - return {k: _sanitize_obj(v) for k, v in obj.items()} - return obj - - -def _notes_for(slide: dict[str, Any], meta: dict[str, Any]) -> str: - title = str(meta.get("title") or "") - st = str(slide.get("type") or "") - slide_title = str(slide.get("title") or "") - if st == "cover": - return ( - f"오프닝(10초): 오늘 주제는 '{title}'입니다.\n" - "운영 안내(10초): 오늘은 참여형 활동 없이, 사례와 체크리스트 중심으로 정리합니다.\n" - "목표(10초): 왜 중요한지 → 핵심 원칙 → 사례 해설 → 리스크/대응 → 다음 행동까지 30분에 끝냅니다." - ) - if st == "agenda": - return ( - "전체 구성(20초): 5파트로 진행합니다.\n" - "- 1) 왜 필요한가\n- 2) 핵심 개념/원칙\n- 3) 사례로 이해하는 적용 가이드\n- 4) 리스크/체크리스트\n- 5) 요약 & 다음 행동\n" - "안내(10초): 참여형 활동 없이, 바로 가져가 쓸 수 있는 요약/체크리스트 중심입니다." - ) - if st == "section": - return f"전환(10초): 이제 '{slide_title}' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - if st == "bullets": - bullets = slide.get("bullets") or [] - top = " / ".join([str(x) for x in bullets[:2]]) if isinstance(bullets, list) else "" - return f"핵심(10초): '{slide_title}' 슬라이드입니다.\n포인트(20초): {top}\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - if st == "two_column": - return f"의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - if st == "process": - steps = slide.get("steps") or [] - top = " → ".join([str(x) for x in steps[:3]]) if isinstance(steps, list) else "" - return f"핵심(10초): '{slide_title}'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): {top} …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - if st == "table": - cols = slide.get("columns") or [] - return f"읽는 법(15초): 표는 {', '.join([str(c) for c in cols[:4]])} 기준으로 비교합니다.\n포인트(15초): 수치/정의/기간을 같이 확인해 오해를 줄입니다." - return "" - - -def spec_for(t: Topic) -> dict[str, Any]: - display_title = t.ppt_title or t.title - meta = { - "title": display_title, - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": f"{t.category} 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02", - } - - slides: list[dict[str, Any]] = [ - {"type": "cover"}, - { - "type": "agenda", - "title": "오늘의 흐름 (30분)", - "items": ["1) 왜 필요한가", "2) 핵심 개념/원칙", "3) 사례로 이해하는 적용 가이드", "4) 리스크/체크리스트", "5) 요약 & 다음 행동"], - }, - {"type": "section", "title": "1. 왜 이 주제를 이해해야 하나", "subtitle": "리더십부터 실무자까지"}, - {"type": "bullets", "chapter": "Part 1", "title": "리더십 관점: 왜 중요한가", "bullets": t.leader_why}, - {"type": "bullets", "chapter": "Part 1", "title": "실무자 관점: 무엇이 달라지나", "bullets": t.worker_why}, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": t.myth, - "right_title": "현실", - "right_bullets": t.reality, - }, - {"type": "bullets", "chapter": "Part 1", "title": "기대 효과(정량/정성)", "bullets": t.effects}, - {"type": "section", "title": "2. 핵심 개념과 원칙", "subtitle": "이것만 지키면 실패 확률이 줄어든다"}, - {"type": "bullets", "chapter": "Part 2", "title": "핵심 개념 6가지", "bullets": t.concepts}, - {"type": "process", "chapter": "Part 2", "title": "실행 프레임워크(권장 루틴)", "steps": t.framework_steps}, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": t.good, - "right_title": "나쁜 예", - "right_bullets": t.bad, - }, - {"type": "bullets", "chapter": "Part 2", "title": "자주 하는 실수", "bullets": t.mistakes}, - {"type": "section", "title": "3. 사례로 이해하는 적용 가이드", "subtitle": "참여형 활동 없이도 이해되는 예시 중심"}, - { - "type": "bullets", - "chapter": "Part 3", - "title": f"사례 1) {_title_without_practice_prefix(t.prompt1_title)}", - "bullets": _case_bullets(prompt=t.prompt1, tips=t.prompt1_tips), - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": f"사례 2) {_title_without_practice_prefix(t.prompt2_title)}", - "bullets": _case_bullets(prompt=t.prompt2, tips=t.prompt2_tips), - }, - ] - - if t.table_columns and t.table_rows: - slides.append( - { - "type": "table", - "chapter": "Part 3", - "title": t.table_title, - "columns": t.table_columns, - "rows": t.table_rows, - } - ) - else: - slides.append( - { - "type": "bullets", - "chapter": "Part 3", - "title": "적용 가이드(발표자 설명용)", - "bullets": ["핵심은 목적·대상·제약·형식 4요소", "예시 1개를 함께 보여주면 팀 표준이 빨리 잡힘", "중요 수치/규정/고유명사는 반드시 원문 대조", "결론을 ‘가설’로 두고 근거를 요구"], - } - ) - - slides += [ - {"type": "bullets", "chapter": "Part 3", "title": "결과 품질 검증 체크", "bullets": ["사실/수치/고유명사는 원문 대조", "누락된 가정이 없는지 질문", "대안 2개 이상 비교 요청", "리스크/반론을 함께 요청"]}, - {"type": "section", "title": "4. 리스크 & 체크리스트", "subtitle": "안전하게, 팀 단위로 굴리기"}, - { - "type": "two_column", - "chapter": "Part 4", - "title": "리스크와 완화 전략", - "left_title": "리스크", - "left_bullets": t.risks, - "right_title": "완화", - "right_bullets": t.mitigations, - }, - {"type": "bullets", "chapter": "Part 4", "title": "체크리스트(현업 적용용)", "bullets": t.checklist}, - {"type": "bullets", "chapter": "Part 4", "title": "팀 적용(롤아웃) 방법", "bullets": t.rollout}, - {"type": "section", "title": "5. 요약 & 다음 행동", "subtitle": "오늘부터 1개만 실행"}, - {"type": "bullets", "chapter": "Part 5", "title": "핵심 요약", "bullets": t.summary}, - ] - - # Attach speaker notes (no practice language) - for s in slides: - s["notes"] = _notes_for(s, meta) - - out = {"meta": meta, "slides": slides} - return _sanitize_obj(out) - - -def topics() -> list[Topic]: - return [ - Topic( - category="마인드셋", - title="AI는 내 자리를 뺏지 않는다, 내 시간을 벌어준다", - ppt_title=None, - seed_prompt='"AI와 인간의 협업 마인드셋"을 주제로 PPT 개요를 짜줘. AI가 일자리를 대체한다는 공포를 해소하고, \'인간의 창의성 + AI의 속도\'가 결합된 미래 업무 모습을 시각화해줘. 신뢰감 있고 희망찬 톤으로 작성해줘.', - leader_why=["AI 도입은 비용이 아니라 생산성 투자: KPI로 설계해야 함", "‘AI 활용 격차’가 성과 격차로 전이됨(조직 리스크)", "업무 프로세스 재설계 없이 툴만 깔면 실패 확률↑", "현장 저항/두려움은 변화관리의 핵심 변수", "작은 성공(Small Win)을 조직적으로 확산해야 함"], - worker_why=["AI는 반복 작업을 줄이고 ‘판단/소통’에 시간을 돌려줌", "내 업무를 잘 설명할수록 AI가 더 잘 도와줌", "초안→검토 루틴이 생기면 품질이 안정적으로 개선", "‘나만의 템플릿’이 곧 개인 경쟁력이 됨", "일/학습 속도가 빨라져 성장 체감이 생김"], - myth=["AI가 들어오면 내 일은 사라진다", "AI는 정답을 준다", "AI는 내가 알아서 잘 쓸 수 있다", "AI는 전문가만 쓰는 도구다"], - reality=["업무는 ‘대체’보다 ‘재배치’: 반복↓ 판단/협업↑", "AI는 ‘초안’에 강하고 검증은 사람 몫", "좋은 입력(목적/맥락/형식)이 성과를 결정", "초보도 ‘템플릿’으로 빠르게 숙련 가능"], - effects=["반복 문서(메일/요약/보고) 시간 30~70% 단축", "회의 후속 액션 누락 감소(체크리스트화)", "아이디어 발산 속도↑ → 의사결정 리드타임↓", "교육/온보딩 콘텐츠 제작 속도↑", "개인 단위로 ‘일하는 방식’이 표준화됨"], - concepts=["AI는 ‘확률 기반’ 언어 생성기: 그럴듯한 오류 가능", "입력 품질 = 출력 품질(맥락/제약/형식)", "AI는 초안 작성자, 사람은 검토자/의사결정자", "작게 시작해 반복 개선(Iterative)", "템플릿화(재사용)로 ROI를 만든다", "검증/보안은 습관으로 내재화"], - framework_steps=["업무 1개를 고른다(반복/시간소모)", "목적·대상·제약을 3줄로 정리", "형식(표/목차/분량/톤)을 지정", "초안 생성→내가 검토·수정", "좋은 결과는 템플릿으로 저장/공유", "주 1회 개선(예시 추가/실수 제거)"], - good=["목적/대상/형식이 명시된 요청", "‘결론 먼저 + 근거’ 구조", "예시 1개 제공(스타일 고정)", "검증 질문(반론/리스크) 포함"], - bad=["‘보고서 써줘’ 같은 모호한 지시", "데이터/기간/대상을 누락", "형식 지정 없이 장문 생성", "검증 없이 그대로 복붙"], - mistakes=["AI 답을 정답으로 취급(검증 생략)", "업무 목적 대신 ‘기능’만 요구", "회사/고객 민감정보를 그대로 입력", "결과물 책임 소재를 AI에 전가", "템플릿을 안 남겨 매번 처음부터 다시 함"], - prompt1_title="실습 1) 내 업무 1개를 ‘AI 협업’으로 재설계", - prompt1="너는 나의 업무 코치야.\n내 업무는 [업무명]이고, 목표는 [목표]야.\n현재 문제는 [시간이 오래 걸리는 이유/병목]이야.\nAI로 줄일 수 있는 단계 3개를 제안하고,\n각 단계별로 내가 입력해야 할 정보(체크리스트)를 만들어줘.\n출력: 표(열: 단계, AI가 할 일, 내가 할 일, 입력 체크리스트, 예상 절감시간)", - prompt1_tips=["업무를 ‘단계’로 쪼개기", "절감시간은 분 단위로 가정해보기", "입력 체크리스트를 바로 템플릿화"], - prompt2_title="실습 2) ‘검증 질문’ 붙여서 품질 올리기", - prompt2="너는 꼼꼼한 리뷰어야.\n아래 AI 초안을 검토해줘.\n- 사실/수치/고유명사 오류 가능성이 있는 부분 표시\n- 누락된 전제/가정 5개 질문\n- 반론/리스크 3개 제시\n- 더 명확한 버전으로 1회 리라이팅\n[초안]\n(여기에 초안을 붙여넣기)", - prompt2_tips=["‘누락 질문’이 품질을 올린다", "반론/리스크를 먼저 받으면 안전", "리라이팅은 1회만, 과도한 편집 방지"], - table_title="시간을 버는 대표 업무(예시)", - table_columns=["업무", "기존 소요", "AI 협업", "핵심 조건"], - table_rows=[["메일 초안", "15~25분", "3~7분", "대상/목적/톤"], ["회의록 요약", "30~45분", "8~15분", "결정/액션 추출"], ["보고서 1p 요약", "60분+", "15~25분", "결론 먼저/표"]], - risks=["성과 압박으로 ‘무작정 도입’", "검증 없이 복붙(품질 리스크)", "개인별 방식 난립(표준 부재)", "AI 과신/의존"], - mitigations=["작은 성공을 KPI로 설계", "검증 체크리스트를 기본 탑재", "템플릿/예시로 표준화", "사람 책임/승인 프로세스 명확화"], - checklist=["목적/대상/제약이 3줄로 정리됐나", "입력 데이터는 충분한가", "출력 형식(표/목차/분량/톤)을 줬나", "검증 질문(반론/리스크)을 붙였나", "좋은 결과를 템플릿으로 저장했나"], - rollout=["팀 공통 템플릿 5개부터 시작", "주 1회 ‘좋은 프롬프트 공유’ 10분", "성과는 시간절감/품질지표로 기록", "실패 사례도 같이 공유(학습)"], - summary=["AI는 대체자가 아니라 증폭기(Amplifier)", "핵심은 목적·맥락·형식 + 검증", "작게 시작해 템플릿으로 확장", "오늘 행동: 내 업무 1개를 단계로 쪼개고 템플릿 1개 만들기"], - ), - Topic( - category="윤리/보안", - title="회사의 비밀을 지키며 AI와 대화하는 법", - ppt_title=None, - seed_prompt='"기업용 AI 보안 및 가이드라인" 발표 자료를 만들어줘. 내부 데이터 유출 사례, 안전한 프롬프트 작성 규칙, 우리 회사만의 보안 수칙(Do\'s & Don\'ts)을 포함해줘. 경각심을 주되 명확한 행동 지침을 강조해줘.', - leader_why=["AI 활용은 ‘통제’가 없으면 보안 사고로 직결", "정책/도구/권한/감사(로그) 체계를 리더가 결정", "사고 1건의 비용은 도입 효익을 초과할 수 있음", "규정 준수(PII/저작권/계약) 책임은 조직에 있음", "현업이 이해하는 ‘행동 지침’이 있어야 실행됨"], - worker_why=["나도 모르게 기밀/개인정보를 넣기 쉬움", "보안 규칙은 복잡해 보여도 핵심은 단순(입력 금지)", "대안(가명화/요약/사내툴)만 알면 안전하게 쓸 수 있음", "안전한 프롬프트는 결과 품질도 더 좋아짐", "한 번의 실수가 개인/조직 리스크로 확대"], - myth=["‘내가 쓴 건 괜찮겠지’", "AI에 넣어도 어차피 저장 안 할 것", "민감정보만 빼면 원문을 넣어도 된다", "출처 없이 써도 문제 없다"], - reality=["실수는 항상 발생: 시스템으로 막아야 함", "도구/정책에 따라 저장/학습 여부가 다름", "원문 자체가 민감일 수 있음(계약/특허/환자)", "저작권/라이선스/규정은 ‘사람 책임’"], - effects=["데이터 유출 위험↓(입력 규칙 표준화)", "검증 가능한 활용만 남아 품질↑", "사고 대응 시간↓(로그/절차 명확)", "팀원 불안↓(허용/금지 기준 명확)", "AI 활용이 지속가능한 문화로 정착"], - concepts=["‘입력=외부 전송’으로 가정하고 설계", "PII/기밀/영업비밀/환자정보는 입력 금지", "가명화/요약/마스킹이 기본 대안", "출처/라이선스 확인(저작권)", "사내 승인된 도구 우선(계정/로그)", "결과물 검증·책임은 사용자/조직"], - framework_steps=["데이터 분류(공개/내부/기밀/PII)", "허용 도구 확인(사내/외부)", "입력 전 마스킹/요약", "출력 검증(사실/출처/저작권)", "저장/공유 기준 적용", "사고 시 보고 절차 실행"], - good=["가명화된 데이터로 질문", "규정/제약을 먼저 선언", "출처/근거를 요청", "최종 활용 전 ‘검증 체크’ 포함"], - bad=["고객/환자 원문 붙여넣기", "계약서/특허 원문 전체 입력", "사내 매출/단가/전략 수치 입력", "출처 없이 이미지/문구 그대로 사용"], - mistakes=["‘민감정보’ 정의를 협소하게 이해", "마스킹 없이 원문 그대로 입력", "도구별 정책(저장/학습) 미확인", "AI 생성물의 저작권/표절 리스크 무시", "결과물을 사내 공유 채널에 무단 게시"], - prompt1_title="실습 1) ‘안전하게 요약’ 프롬프트", - prompt1="너는 보안에 민감한 문서 요약 전문가야.\n아래 텍스트는 민감정보가 포함될 수 있으니,\n1) 민감정보로 추정되는 부분을 [REDACTED]로 표시하고\n2) 핵심 요지만 7줄로 요약해줘.\n3) 추가로 필요한 정보가 있으면 질문 3개를 해줘.\n[텍스트]\n(여기에 요약 대상 일부만 붙여넣기)", - prompt1_tips=["원문 전체가 아니라 ‘필요 최소’만", "REDACTED 표기 습관화", "추가 질문으로 누락 방지"], - prompt2_title="실습 2) Do & Don't 체크 생성", - prompt2="너는 기업용 AI 활용 가이드라인 작성자야.\n우리 팀 업무는 [업무영역]이고 다루는 데이터는 [데이터종류]야.\n이 팀에 적용할 AI 활용 Do 7개, Don't 7개를 만들어줘.\n각 항목마다 이유(1줄)와 예시(1줄)를 붙여줘.\n출력: 표(열: 구분, 규칙, 이유, 예시)", - prompt2_tips=["업무영역/데이터를 구체화", "규칙은 행동 단위로 쓰기", "예시는 실제 문장으로"], - table_title="입력 금지 vs 안전한 대안(예시)", - table_columns=["금지 입력", "왜 위험?", "대안"], - table_rows=[["개인식별정보(이름/연락처/주민번호)", "PII 유출", "가명화(ID치환) + 범위화"], ["계약서/특허 원문", "영업비밀/법적 리스크", "핵심 조항만 요약 + 비식별"], ["내부 매출/단가/전략", "경쟁/시장 리스크", "지표를 구간화 + 공개정보만"]], - risks=["기밀/PII 입력으로 인한 유출", "저작권/표절 이슈", "규정 위반(내부통제)", "환각으로 인한 오판"], - mitigations=["데이터 분류/입력 금지 리스트", "가명화/요약 템플릿 제공", "출처 표기/검증 프로세스", "승인된 도구만 사용 + 로그"], - checklist=["내가 넣는 데이터가 PII/기밀인가", "사내 승인 도구/계정인가", "원문 대신 요약/마스킹 했나", "출처/라이선스 확인했나", "결과물을 공유해도 되는가"], - rollout=["팀별 ‘금지 입력’ 사례집 만들기", "프롬프트 템플릿에 보안 문구 기본 삽입", "월 1회 사례 공유(사고/미스 포함)", "보안 담당과 채널 고정(질문/승인)"], - summary=["입력은 곧 외부 전송이라고 가정", "금지 리스트 + 대안(가명화/요약)만 지켜도 80% 해결", "출처/저작권/환각은 반드시 검증", "오늘 행동: 내 업무 ‘금지 입력 5개’와 대안 5개 정리"], - ), - Topic( - category="업무 효율", - title="칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기", - ppt_title=None, - seed_prompt='"직장인 공통 업무 자동화(이메일, 요약, 일정)"를 주제로 슬라이드를 구성해줘. 비포&애프터 비교표를 넣어서 AI 활용 시 절약되는 시간을 수치로 보여줘. 실용적이고 에너제틱한 느낌의 레이아웃으로 제안해줘.', - leader_why=["개인 효율이 팀 생산성으로 이어지는 ‘확장 효과’", "반복 업무 표준화는 품질/리스크를 동시에 낮춤", "‘시간 절감’은 가장 빠르게 측정 가능한 KPI", "업무 인수인계/온보딩 속도 개선", "자동화는 프로세스 개선의 출발점"], - worker_why=["메일/요약/일정이 하루 시간을 갉아먹는 주범", "AI는 초안/정리/체크리스트에 특히 강함", "내 업무 스타일을 템플릿으로 만들면 반복이 줄어듦", "실수(누락/오타/톤) 감소로 스트레스↓", "매일 10분 절감이 1달이면 큰 차이를 만듦"], - myth=["자동화는 개발자만 한다", "AI 쓰면 오히려 시간이 더 든다", "메일은 사람이 직접 써야 한다", "회의록은 정리할 수밖에 없다"], - reality=["No-code/템플릿으로 누구나 가능", "초안→검토 루틴이면 오히려 빨라짐", "톤/대상/형식 지정하면 안정적으로 작성", "결정/액션만 뽑으면 ‘짧게’ 끝남"], - effects=["하루 10~20분 절감 → 월 3~6시간 확보", "회의 후속 액션 누락 감소", "메일 품질(명확성/톤) 표준화", "일정 충돌/우선순위 정리로 야근 감소", "반복 작업 스트레스↓"], - concepts=["반복 업무를 ‘템플릿’으로 바꾸기", "입력: 맥락(대상/목적/제약) 주기", "출력: 형식(표/체크리스트/메일 구조) 주기", "검증: 누락/반론/다음 액션 확인", "축적: 잘 된 결과를 라이브러리화", "자동화: 앱 연결(메일-슬랙-시트)"], - framework_steps=["업무 3개(메일/요약/일정)를 선정", "각 업무의 ‘좋은 예’ 1개 수집", "AI에 초안 생성(형식 지정)", "검토 체크리스트로 빠르게 수정", "템플릿 저장(제목/용도/변수)", "주 1회 성과 기록(분 단위)"], - good=["메일: 대상/목적/톤/요청사항이 명확", "요약: 결론+액션 아이템 중심", "일정: 우선순위/제약(가능시간) 포함", "체크리스트: 누락 질문 포함"], - bad=["‘메일 써줘’만 요청", "회의 원문 그대로 장문 요약", "일정 제약 없이 ‘잡아줘’", "검증 없이 바로 전송"], - mistakes=["형식 없이 장문 생성", "변수(대상/날짜/숫자) 관리 안 함", "검토 없이 외부 발송", "템플릿을 저장하지 않음", "자동화를 먼저 하고 목적을 놓침"], - prompt1_title="실습 1) 3분 만에 ‘메일 초안’ 만들기", - prompt1="너는 비즈니스 이메일 작성 전문가야.\n수신자는 [직급/관계], 목적은 [목적]이야.\n배경: [상황 2~3줄]\n요청사항: [항목 3개]\n톤: 정중하지만 간결\n출력: 제목/인사/핵심요청(3줄)/세부내용/마감일/감사 인사 순서로 작성", - prompt1_tips=["수신자 관계를 꼭 명시", "요청사항은 번호로", "마감일/다음 행동을 명확히"], - prompt2_title="실습 2) 회의록을 ‘결정+액션’으로 압축", - prompt2="너는 회의록 정리 비서야.\n아래 회의 메모를 읽고 다음 형식으로 정리해줘.\n1) 결론/결정사항(최대 5개)\n2) 액션 아이템(담당/기한 포함)\n3) 쟁점/리스크(최대 3개)\n4) 다음 회의 아젠다 제안(3개)\n[메모]\n(여기에 메모를 붙여넣기)", - prompt2_tips=["액션은 ‘담당/기한’이 핵심", "리스크를 같이 뽑으면 누락↓", "다음 아젠다로 회의 품질↑"], - table_title="Before / After (시간 절감 예시)", - table_columns=["업무", "기존", "AI 협업", "절감"], - table_rows=[["메일 초안", "20분", "5분", "15분"], ["회의록 요약", "40분", "12분", "28분"], ["일정 조율", "15분", "5분", "10분"], ["보고서 1p 요약", "60분", "20분", "40분"]], - risks=["품질 미검증 상태로 외부 전송", "민감정보 포함 가능", "톤/표현 오류로 오해 발생", "자동화 실패(중복/오작동)"], - mitigations=["발송 전 체크리스트(수신자/톤/숫자)", "가명화/요약 후 입력", "표준 템플릿 사용", "자동화는 작은 범위부터 단계적"], - checklist=["메일 목적/요청/기한이 명확한가", "수치/날짜/이름을 원문 대조했나", "민감정보가 포함되지 않았나", "액션 아이템 담당/기한이 있는가", "템플릿으로 저장했나"], - rollout=["팀 공통 템플릿(메일/회의록) 배포", "주간 ‘절감시간’ 공유", "좋은 결과는 예시로 축적", "오해/실수 사례도 같이 공유"], - summary=["루틴 업무는 AI가 가장 잘 도와주는 영역", "핵심은 ‘형식 지정 + 검증’", "절감시간을 측정하면 확산이 빨라진다", "오늘 행동: 메일/회의록 템플릿 1개씩 저장"], - ), - Topic( - category="문제 해결", - title="질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법", - ppt_title=None, - seed_prompt='"AI 성능을 200% 끌어올리는 질문의 기술(Prompting)"에 대해 설명해줘. 단순 명령과 구체적 명령의 차이, 논리적 사고를 돕는 프롬프트 프레임워크를 단계별로 구성해줘. 교육적인 전문성이 느껴지는 톤으로 작성해줘.', - leader_why=["문제 정의가 흔들리면 AI도 흔들림(결정 품질 저하)", "질문 프레임은 조직의 사고 체계를 표준화", "빠른 실험(가설-검증)으로 전략 속도↑", "회의 생산성이 ‘질문 품질’에 의해 결정", "리스크/반론까지 포함한 질문이 안전한 의사결정으로 연결"], - worker_why=["AI는 ‘무엇을’보다 ‘왜/어떻게’를 잘 물을 때 강해짐", "좋은 질문은 작업 재작업을 줄여줌", "프레임워크만 있으면 누구나 품질을 올릴 수 있음", "아이디어 발산이 막힐 때 강력한 파트너", "문서/기획 능력도 함께 상승"], - myth=["AI는 센스 있게 알아서 해준다", "질문은 길수록 좋다", "정답을 한 번에 받아야 한다", "브레인스토밍은 사람끼리만 한다"], - reality=["AI는 맥락이 없으면 ‘평균 답’", "핵심 조건을 구조화하면 짧아도 강함", "초안→추가 질문→정제 루프가 정답", "AI는 발산·정리·비판 역할에 강함"], - effects=["아이디어 발산 속도↑(대안 10개/5분)", "문제 정의 명확화로 실행 리스크↓", "회의 아젠다/의사결정 질문이 정교해짐", "기획서/제안서 품질 표준화", "개인 논리/표현력 향상"], - concepts=["Role: 역할 부여", "Goal: 목적/성공 기준", "Context: 배경/제약", "Format: 출력 형식", "Critique: 반론/리스크", "Iterate: 후속 질문으로 정제"], - framework_steps=["문제 한 줄 정의(무엇을/왜)", "성공 기준 3개 설정", "맥락(현황/제약/대상) 추가", "출력 형식(표/목차/단계) 지정", "반론/리스크 요청", "2회 반복 정제(추가 질문)"], - good=["‘목적+성공기준’이 있는 질문", "대안 3개 이상을 강제", "반론/리스크 포함", "출력 형식(표/프레임) 지정"], - bad=["‘아이디어 내줘’만 요청", "제약 없이 무한 발산", "결론만 달라고 함(근거 없음)", "반론/리스크를 배제"], - mistakes=["문제 정의 없이 해결책부터 요청", "대상/상황을 숨김(‘알아서’ 기대)", "한 번에 완벽을 기대", "출력 형식을 주지 않아 재작업", "비판(리스크) 질문을 생략"], - prompt1_title="실습 1) 5W1H로 문제 정의하기", - prompt1="너는 논리적 사고 코치야.\n내가 해결하려는 문제는: [문제]\n아래 5W1H 질문을 통해 누락된 정보를 찾아줘.\n- Who/What/Why/When-Where/How 각 2개씩\n그 다음, 내가 답한 내용을 반영해서\n문제 정의(1문장) + 성공 기준 3개 + 제약 조건 5개를 정리해줘.", - prompt1_tips=["답을 채우면 프롬프트가 완성된다", "성공 기준은 측정 가능하게", "제약(예산/기간/규정)을 명시"], - prompt2_title="실습 2) 브레인스토밍을 ‘발산→수렴’으로", - prompt2="너는 브레인스토밍 파트너야.\n목표: [목표]\n제약: [기간/예산/규정]\n1) 아이디어 12개를 내고(각 1줄)\n2) 4개로 묶어 카테고리화하고\n3) 평가 기준(효과/난이도/리스크)으로 점수화해서\n4) 상위 3개를 추천해줘.\n출력: 표 + 결론 먼저", - prompt2_tips=["발산은 ‘개수 강제’", "수렴은 ‘평가기준’", "리스크까지 같이 보자"], - table_title="질문 프레임워크(요약)", - table_columns=["요소", "의미", "예시"], - table_rows=[["Role", "관점 고정", "너는 10년차 PM이야"], ["Goal", "목표/성공기준", "시간 20% 단축"], ["Format", "산출물 형태", "표(열: 옵션/장단)"], ["Critique", "반론/리스크", "리스크 3개도"]], - risks=["평균 답변으로 시간 낭비", "편향된 결론(대안 부족)", "현실 제약 미반영", "환각으로 근거 왜곡"], - mitigations=["프레임(Goal/Context/Format) 고정", "대안 3개 이상 요청", "제약 조건 명시", "근거/출처/가정 확인"], - checklist=["문제 정의 1문장 있는가", "성공 기준 3개가 있는가", "제약 조건이 포함됐나", "출력 형식을 지정했나", "반론/리스크를 요청했나"], - rollout=["팀 공통 질문 템플릿(회의용) 만들기", "회의 아젠다는 ‘질문’으로 작성", "좋은 질문/나쁜 질문 사례 공유", "결과물은 표준 포맷으로 저장"], - summary=["질문 품질이 AI 성과를 결정", "프레임워크(Goal/Context/Format/Critique)로 표준화", "발산→수렴 루프가 핵심", "오늘 행동: 내 업무 1개를 5W1H로 재질문"], - ), - Topic( - category="협업/공유", - title="우리 팀만의 AI 지식 창고 만들기", - ppt_title=None, - seed_prompt='"사내 AI 자산 공유 및 협업 문화"에 대한 발표 자료야. 팀원들이 발견한 좋은 프롬프트를 공유하는 방법과 사내 챗봇 활용법을 포함해줘. \'함께 성장하는 조직\'을 강조하는 따뜻하고 협력적인 톤으로 만들어줘.', - leader_why=["개인 역량이 아닌 ‘팀 자산’으로 전환해야 지속가능", "중복 작업(같은 프롬프트 재발명) 비용 절감", "검증된 템플릿은 품질/리스크를 동시에 관리", "사내 지식의 누적이 조직 경쟁력", "공유 문화는 변화관리의 핵심 장치"], - worker_why=["좋은 프롬프트를 공유하면 내 일이 쉬워짐", "남의 템플릿을 쓰면 빠르게 숙련 가능", "사내 챗봇/검색이 있으면 물어볼 곳이 생김", "실패 사례도 공유하면 같은 실수를 줄임", "함께 성장하는 경험이 동기부여가 됨"], - myth=["공유하면 내 경쟁력이 줄어든다", "프롬프트는 사람마다 달라서 공유가 무의미", "지식창고는 만들기만 하고 안 쓴다", "정리는 나중에 해도 된다"], - reality=["공유는 ‘표준’과 ‘시간 절감’을 만든다", "템플릿+변수로 재사용 가능", "검색 가능/업데이트 규칙이 핵심", "정리는 ‘업무 과정’에 붙여야 지속"], - effects=["템플릿 재사용으로 문서 품질 표준화", "신입/전배 온보딩 시간 단축", "보안/검증 규칙의 내재화", "아이디어/사례 축적으로 혁신 속도↑", "개인 만족도/협업 신뢰↑"], - concepts=["템플릿(목적/입력/출력/검증) 구조화", "태그/카테고리로 검색 가능하게", "예시(좋은 입력/좋은 출력) 포함", "버전 관리(업데이트 로그)", "검증 체크리스트를 함께 저장", "사내 챗봇은 Q&A + 자산 추천 허브"], - framework_steps=["팀 공통 업무 5개 선정", "각 업무 템플릿 1개씩 수집", "형식 통일(메타/변수/예시)", "검증/보안 규칙 삽입", "게시(위키/게시판) + 태그", "주 1회 ‘템플릿 개선’ 10분"], - good=["템플릿에 변수 자리 표시", "좋은 예시(입력/출력) 포함", "사용 시 주의사항/검증 포함", "태그로 검색 가능"], - bad=["본문만 덩어리로 공유", "사용 맥락(언제/누가)을 누락", "보안/검증 없이 공유", "중복 템플릿 난립"], - mistakes=["템플릿 표준 포맷이 없음", "업데이트/소유자 부재", "검색/태그 없이 저장", "공유가 ‘평가’가 되어 참여↓", "사내 챗봇과 연결하지 않음"], - prompt1_title="실습 1) 프롬프트를 ‘템플릿’으로 표준화", - prompt1="너는 프롬프트 라이브러리 편집자야.\n아래 프롬프트를 팀 공유용 템플릿으로 바꿔줘.\n- 목적(1줄)\n- 사용 상황(3줄)\n- 입력 변수 목록(표)\n- 최종 템플릿(복붙용)\n- 검증 체크리스트(5개)\n[원본 프롬프트]\n(여기에 붙여넣기)", - prompt1_tips=["변수는 [대괄호]로 표시", "검증 체크를 기본 포함", "사용 상황을 써야 재사용됨"], - prompt2_title="실습 2) 사내 챗봇용 Q&A/가이드 생성", - prompt2="너는 사내 챗봇 지식베이스 작성자야.\n주제: [주제]\n직원들이 자주 물을 질문 10개를 만들고,\n각 질문에 대해 1) 짧은 답 2) 주의사항 3) 관련 템플릿 링크(가상)\n형식으로 작성해줘.", - prompt2_tips=["질문은 실무자의 언어로", "주의사항(보안/검증)을 붙이기", "관련 템플릿을 추천하도록"], - table_title="지식 창고 카드(예시 포맷)", - table_columns=["필드", "예시"], - table_rows=[["제목", "회의록 요약(결정/액션)"], ["변수", "[메모], [참석자], [기한]"], ["출력", "표(결정/담당/기한)"], ["검증", "수치/이름 원문 대조"]], - risks=["기밀/민감정보가 공유됨", "품질 낮은 템플릿 확산", "관리 부재로 방치", "공유 문화 저항"], - mitigations=["공유 전 마스킹/가이드", "검증된 템플릿만 ‘추천’ 표시", "소유자/업데이트 주기 지정", "칭찬/학습 중심 운영"], - checklist=["템플릿에 목적/상황/변수가 있는가", "예시 입력/출력이 있는가", "검증/보안 체크가 있는가", "태그가 붙었는가", "소유자/버전이 있는가"], - rollout=["초기: 5개 템플릿으로 시작", "운영: 주간 공유 10분", "품질: 추천/검증 배지", "확장: 챗봇이 템플릿 추천"], - summary=["지식은 공유될 때 자산이 된다", "템플릿 표준화 + 검색 + 검증이 핵심", "운영(업데이트) 없으면 방치된다", "오늘 행동: 내 템플릿 1개를 표준 포맷으로 올리기"], - ), - Topic( - category="데이터 활용", - title="엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석", - ppt_title=None, - seed_prompt='"비전공자를 위한 AI 데이터 분석"을 주제로 해줘. 복잡한 코딩 없이 자연어로 그래프를 그리고 인사이트를 뽑아내는 과정을 시연하듯 구성해줘. \'누구나 할 수 있다\'는 자신감을 주는 쉬운 용어로 작성해줘.', - leader_why=["현장 데이터가 의사결정으로 이어지려면 분석 장벽을 낮춰야 함", "간단한 분석 자동화로 보고 리드타임이 줄어듦", "분석 표준(정의/단위/기간)이 중요해짐", "잘못된 해석(환각/오류)은 리스크", "데이터 기반 문화는 도구보다 습관"], - worker_why=["함수/피벗 없이도 ‘질문’으로 시작 가능", "그래프/요약/이상치 탐지가 빠르게 됨", "보고서에 넣을 문장까지 자동 초안", "데이터 정의만 잘 주면 오류가 크게 줄어듦", "작게 분석 루틴을 만들면 자신감↑"], - myth=["데이터 분석은 코딩을 해야 한다", "AI가 알아서 정확히 분석한다", "데이터가 조금만 있어도 인사이트가 나온다", "그래프는 전문가 영역이다"], - reality=["질문(목표/정의/기간)이 핵심", "AI는 오류 가능: 검증이 필요", "데이터 품질/정의가 결과를 좌우", "기본 차트는 누구나 만들 수 있다"], - effects=["리포트 초안 작성 시간 단축", "반복 지표(월간/주간) 자동화", "이상치/트렌드 조기 발견", "시각화로 커뮤니케이션 개선", "데이터 활용 자신감 상승"], - concepts=["지표 정의(분모/분자/단위)", "기간/범위 명시", "데이터 품질 체크(누락/중복)", "기본 통계(평균/중앙값/추세)", "시각화(막대/선/분포)", "해석(가설→근거→다음 행동)"], - framework_steps=["목표 질문 1개 정하기", "데이터 컬럼/정의 확인", "품질 체크(누락/중복/이상치)", "그래프 1개로 트렌드 보기", "인사이트 3개 + 가설 2개", "다음 액션(추가 데이터/실험)"], - good=["컬럼/단위/기간을 지정", "보고 목적(누가/왜) 명시", "그래프 종류를 지정", "인사이트+가설+액션까지 요청"], - bad=["‘분석해줘’만 요청", "데이터 정의 없이 수치 해석", "기간이 섞인 데이터로 비교", "검증 없이 결론 확정"], - mistakes=["컬럼 의미(정의) 누락", "단위 혼동", "결측/이상치 미처리", "상관/인과 혼동", "결론만 뽑고 다음 행동이 없음"], - prompt1_title="실습 1) 데이터 품질 체크 요청", - prompt1="너는 데이터 분석가야.\n아래 표 데이터를 보고 먼저 '품질 체크'를 해줘.\n- 누락/중복/이상치 가능성\n- 컬럼 정의가 애매한 부분 질문 5개\n- 분석 전에 필요한 전처리 제안\n출력: 체크리스트 + 질문 목록\n[데이터]\n(여기에 표/CSV 일부를 붙여넣기)", - prompt1_tips=["품질 체크가 먼저", "정의 질문을 받아서 오류를 줄이기", "전처리 제안을 기록"], - prompt2_title="실습 2) 그래프 + 인사이트 + 다음 행동", - prompt2="너는 비전공자를 돕는 분석 코치야.\n목표: [목표]\n데이터 컬럼: [컬럼명/정의/단위]\n기간: [기간]\n1) 적합한 그래프 2개를 추천하고(왜인지 1줄)\n2) 그래프를 보고 말로 설명하듯 인사이트 5개\n3) 원인 가설 3개와 검증 방법 3개\n4) 다음 행동(업무 의사결정) 3개\n형식: 번호 리스트 + 표 1개", - prompt2_tips=["‘왜 이 그래프인지’가 중요", "가설과 검증방법을 같이", "마지막은 의사결정 행동으로"], - table_title="자연어 분석 질문 예시(초보용)", - table_columns=["내가 묻는 말", "AI가 해주는 일", "주의"], - table_rows=[["이번 달이 왜 떨어졌어?", "요약+원인 후보", "인과로 확정 금지"], ["이상치가 있나?", "이상치 탐지", "원문 확인"], ["보고서 문장 써줘", "1p 요약", "수치 대조"]], - risks=["단위/정의 오류로 오해", "환각으로 근거 없는 결론", "민감 데이터 입력", "상관/인과 혼동"], - mitigations=["정의/단위/기간을 강제 입력", "가설+검증 절차 포함", "가명화/요약 후 입력", "결론은 ‘가설’로 표현"], - checklist=["지표 정의/단위/기간이 명확한가", "결측/중복/이상치 확인했나", "그래프가 목적과 맞나", "인사이트가 ‘근거’와 연결되나", "다음 행동이 있는가"], - rollout=["팀 공통 ‘지표 정의’ 템플릿 배포", "월간 리포트 질문 템플릿화", "분석 결과는 가설/근거/액션 포맷", "민감 데이터 처리 규칙 공유"], - summary=["분석은 코딩이 아니라 ‘질문+정의’", "품질 체크→그래프→인사이트→액션 루틴", "결론은 가설로 두고 검증", "오늘 행동: 내 지표 1개 정의(단위/기간) 쓰기"], - ), - Topic( - category="트렌드", - title="글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까", - ppt_title=None, - seed_prompt='"글로벌 AX 선도 기업의 성공 사례 벤치마킹" 자료를 만들어줘. 구글, 마이크로소프트, 테슬라 등 주요 기업들이 AI를 비즈니스 프로세스에 어떻게 녹였는지 분석하고 우리 회사에 주는 시사점을 정리해줘.', - leader_why=["성공 사례는 ‘무엇을 할지’보다 ‘어떻게 할지’를 알려줌", "투자/우선순위 결정을 근거 기반으로 할 수 있음", "사내 적용 시 ‘패턴’이 중요(데이터, 플랫폼, 인재)", "벤치마킹은 실행 속도를 높임", "리스크 관리(거버넌스)까지 같이 봐야 함"], - worker_why=["다른 회사 사례는 내 업무 적용 아이디어로 직결", "성공 패턴을 알면 시행착오를 줄임", "AI 활용이 ‘특별한’ 일이 아니라는 확신", "업무 프로세스 관점으로 보는 눈이 생김", "우리 조직에서도 가능한 1단계를 찾을 수 있음"], - myth=["AI는 빅테크만 할 수 있다", "좋은 모델만 쓰면 된다", "사례는 우리와 무관하다", "도입하면 자연히 성과가 난다"], - reality=["작게 시작해 확장하는 패턴이 핵심", "데이터/프로세스/사람이 같이 가야 함", "업종/규정에 맞게 변형해야 함", "성과는 KPI/거버넌스로 만든다"], - effects=["우선순위 도출(어디부터?)", "성공 패턴을 복제해 속도↑", "리스크를 사전에 인지", "현업 적용 아이디어 다수 확보", "조직 공감대 형성"], - concepts=["Use Case 중심(업무 문제)에서 시작", "데이터 파이프라인/플랫폼", "업무 내재화(워크플로우)", "Human-in-the-loop 검증", "거버넌스(보안/규정/품질)", "측정(KPI)과 확장"], - framework_steps=["업무 문제 3개 선정", "데이터/규정 체크", "파일럿(2~4주) 설계", "측정 지표 정의", "검증/승인 프로세스", "확장(템플릿/플랫폼화)"], - good=["업무 프로세스에 AI를 ‘내장’", "검증/승인 단계를 설계", "KPI로 효과를 측정", "플랫폼/재사용을 염두"], - bad=["데모만 하고 운영이 없음", "데이터/규정 없이 시작", "측정 없이 ‘좋아 보임’", "개인별 도구 난립"], - mistakes=["사례를 그대로 복사(현실 제약 무시)", "기술 중심으로 접근(문제 정의 부족)", "성과 지표 없이 확장", "거버넌스 없이 확산", "현업 참여 없이 추진"], - prompt1_title="실습 1) 사례를 내 회사에 맞게 변환", - prompt1="너는 AX 컨설턴트야.\n아래 글로벌 사례를 우리 회사(업종: [업종], 제약: [규정/보안])에 맞게 변환해줘.\n1) 적용 가능한 업무 프로세스 3개\n2) 필요한 데이터/시스템\n3) 예상 효과(KPI)\n4) 리스크/완화\n출력: 표(열: 프로세스, 데이터, KPI, 리스크, 완화)\n[사례]\n(여기에 사례 요약을 붙여넣기)", - prompt1_tips=["업종/규정을 명시", "KPI는 2~3개로", "리스크/완화를 반드시"], - prompt2_title="실습 2) 우리 조직의 ‘성공 패턴’ 체크", - prompt2="너는 실행 PM이야.\n우리 팀이 추진할 AI 과제 후보 3개를 아래 체크리스트로 평가해줘.\n- 문제 명확성\n- 데이터 확보 가능성\n- 기대 효과(정량/정성)\n- 구현 난이도\n- 리스크(보안/규정)\n- 확장성\n출력: 표 + 우선순위 결론(근거 포함)", - prompt2_tips=["후보 3개를 구체적으로", "데이터/규정 항목을 중요하게", "우선순위는 1~3위"], - table_title="벤치마킹 예시(요약)", - table_columns=["기업", "적용 프로세스", "효과(예시)"], - table_rows=[["Microsoft", "업무도구 내 Copilot", "문서/메일/회의 생산성↑"], ["Google", "검색/광고/개발 자동화", "의사결정 속도↑"], ["Tesla", "제조/운영 최적화", "품질/효율 개선"]], - risks=["사례 과신으로 무리한 도입", "데이터/규정 미스매치", "성과 측정 실패", "조직 저항"], - mitigations=["‘패턴’만 추출해 변형 적용", "규정/보안 사전 검토", "KPI/실험 설계", "현업 참여 + 변화관리"], - checklist=["우리 업무 문제로 번역했나", "데이터/시스템이 준비됐나", "KPI가 정의됐나", "검증/승인 프로세스가 있나", "확장(재사용) 계획이 있나"], - rollout=["파일럿 1개로 시작", "성과 지표 공유", "템플릿/플랫폼화로 확장", "사례 공유 세션 운영"], - summary=["성공은 기술이 아니라 ‘패턴’의 재현", "업무 문제→데이터→검증→측정→확장", "벤치마킹은 ‘복사’가 아니라 ‘번역’", "오늘 행동: 사례 1개를 우리 프로세스로 변환"], - ), - Topic( - category="자기계발", - title="AI 시대의 커리어 생존 전략 - AI와 공존하는 전문가 되기", - ppt_title=None, - seed_prompt='"임직원 자기계발: AI 시대의 필수 역량"을 주제로 해줘. 사라지는 기술과 새로 요구되는 기술(Soft Skills)을 비교하고, 회사가 지원하는 교육 로드맵을 보여줘. 동기부여를 자극하는 도전적인 톤으로 구성해줘.', - leader_why=["역량 변화는 인력 전략(채용/교육/평가)으로 연결", "AI 활용 격차는 조직 리스크(성과 편차)", "직무 재설계가 필요(업무 구조 변화)", "교육 로드맵이 있어야 불안이 줄어듦", "성과/성장 지표를 함께 설계해야 함"], - worker_why=["AI가 바꾸는 건 ‘직무’보다 ‘업무’ 단위", "새 역량은 지금부터 쌓을수록 유리", "AI는 나의 생산성을 올리는 레버리지", "소프트 스킬(문제정의/소통)이 더 중요", "학습 루틴을 만들면 커리어 불안이 줄어듦"], - myth=["AI 때문에 내 커리어는 끝이다", "기술만 배우면 된다", "도구를 하나만 익히면 된다", "학습은 시간이 있을 때 한다"], - reality=["업무 재구성으로 역할이 진화", "문제정의/검증/의사결정이 핵심", "도구는 바뀌고 원칙은 남는다", "매주 작은 학습이 장기 경쟁력"], - effects=["업무 속도↑로 ‘고부가가치’에 시간 투자", "학습 속도↑(자료/요약/초안)", "커리어 이동성↑(스킬 포트폴리오)", "성과 가시화(KPI) 쉬움", "불안↓ 자신감↑"], - concepts=["T자형 역량: 도메인 깊이 + AI 활용", "문제정의/목표설정", "프롬프트/워크플로우 설계", "검증/리스크 관리", "협업/커뮤니케이션", "학습 루틴(포트폴리오)"], - framework_steps=["내 업무를 ‘대체/증폭/신규’로 분류", "증폭 영역 1개 선택", "템플릿/체크리스트 구축", "결과를 포트폴리오로 기록", "피드백 받아 개선", "3개월 단위 목표 재설정"], - good=["도메인 문제를 AI로 증폭", "검증/책임을 내가 갖는다", "학습을 루틴화", "성과를 기록한다"], - bad=["도구만 따라하기", "검증 없이 복붙", "학습을 ‘나중에’로 미룸", "성과 기록 없음"], - mistakes=["기술만 보고 도메인 이해를 소홀", "학습 목표가 모호", "성과/결과물을 남기지 않음", "보안/규정 무시", "혼자만 쓰고 공유 안 함"], - prompt1_title="실습 1) 내 직무 ‘업무 재구성’ 지도", - prompt1="너는 커리어 코치야.\n내 직무는 [직무]이고, 주요 업무는 아래 6개야.\n- (업무 리스트)\n각 업무를 1) AI로 대체 가능 2) AI로 증폭 3) 사람이 더 중요 로 분류하고,\n증폭 영역 2개를 선정해 ‘학습 계획(4주)’을 만들어줘.\n출력: 표 + 4주 로드맵", - prompt1_tips=["업무를 6개로 쪼개기", "증폭 2개만 선택", "4주 계획은 작게"], - prompt2_title="실습 2) 역량 로드맵(회사 교육 연계) 만들기", - prompt2="너는 사내 교육 설계자야.\n대상: [직군/연차]\nAI 시대 핵심 역량을 6개로 정리하고,\n각 역량별로 1) 학습 목표 2) 실습 과제 3) 성과 지표를 제안해줘.\n출력: 표(열: 역량, 목표, 실습, 지표)", - prompt2_tips=["실습은 ‘산출물’로", "지표는 측정 가능하게", "직군/연차를 구체화"], - table_title="역량 변화(예시)", - table_columns=["약해지는 역량", "강해지는 역량", "예시"], - table_rows=[["반복 문서 작성", "문제 정의", "요구사항 구조화"], ["단순 번역/요약", "검증/리스크", "팩트체크"], ["정해진 절차 수행", "워크플로우 설계", "자동화"]], - risks=["불안/저항으로 학습 중단", "도구 변화에 피로", "성과 가시화 실패", "보안 리스크"], - mitigations=["작은 목표/성공 경험 설계", "원칙 중심 학습", "포트폴리오로 성과 기록", "보안 체크리스트 내재화"], - checklist=["업무를 대체/증폭으로 분류했나", "증폭 2개 목표가 있는가", "4주 실습 계획이 있는가", "성과 지표가 있는가", "산출물(포트폴리오)을 남겼나"], - rollout=["팀별 학습 스프린트 운영", "산출물 데모/공유", "멘토/리뷰 체계", "교육 로드맵 공개"], - summary=["AI 시대 핵심은 도구가 아니라 역량", "증폭 영역을 선택하고 루틴으로 학습", "성과는 포트폴리오로 남긴다", "오늘 행동: 내 업무 6개를 대체/증폭으로 분류"], - ), - Topic( - category="조직문화", - title="실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기", - ppt_title=None, - seed_prompt='"사내 AI 실험(Small Win) 장려 캠페인" 발표용이야. 완벽한 결과보다는 시도 자체에 가치를 두는 문화, 작은 성공 사례를 전파하는 프로세스를 담아줘. 혁신적이고 자유로운 분위기의 디자인 컨셉을 제안해줘.', - leader_why=["실험 문화 없이는 혁신이 확장되지 않음", "작은 성공은 변화관리의 증거(저항 감소)", "리스크를 통제하는 실험 프로세스가 필요", "성과를 ‘학습’으로 정의해야 지속", "사례 전파가 투자 대비 효과를 만든다"], - worker_why=["완벽을 요구하면 시도 자체가 멈춘다", "작은 실험은 내 업무를 개선하는 가장 빠른 길", "실패 사례 공유는 팀 전체의 시간 절감", "AI는 실험-피드백에 최적", "인정/보상이 있으면 참여가 늘어난다"], - myth=["실패하면 평가가 깎인다", "실험은 큰 프로젝트여야 한다", "아이디어가 완벽해야 시작", "보안 때문에 아무것도 못 한다"], - reality=["실험은 학습을 위한 장치", "2주짜리 작은 개선이 더 가치", "초안으로 시작해 반복", "가이드와 범위 설정으로 안전하게 가능"], - effects=["개선 아이디어가 실제 성과로 연결", "팀 내 학습 속도↑", "업무 표준 템플릿 축적", "도입 저항 감소", "성과 공유로 동기부여↑"], - concepts=["Small Win: 2주 이내, 영향 범위 제한", "가설-실험-측정-회고", "리스크 사전 체크(보안/규정)", "성과는 ‘시간/품질’로 측정", "사례는 템플릿으로 전환", "칭찬/공유가 운영의 핵심"], - framework_steps=["문제 1개 선정(반복/병목)", "가설 세우기(어떻게 나아질까)", "2주 실험 설계(범위/지표)", "실행(템플릿/자동화)", "측정(전/후 비교)", "공유(사례 카드)"], - good=["범위를 작게 잡는다", "전/후 지표를 정한다", "보안 체크를 먼저 한다", "산출물을 템플릿으로 남긴다"], - bad=["범위를 크게 잡는다", "측정 없이 ‘좋아 보임’", "규정/보안 미검토", "공유 없이 개인만 사용"], - mistakes=["실험 목표가 모호", "일정/범위 과대", "회고 없이 종료", "실패를 숨김", "운영/보상 구조 부재"], - prompt1_title="실습 1) 2주 Small Win 실험 설계", - prompt1="너는 혁신 실험 코치야.\n업무 문제: [문제]\n목표: [정량 목표]\n제약: 2주, 팀 2명, 외부 공유 금지\n실험 계획을 만들어줘:\n- 가설 2개\n- 해야 할 일(주차별)\n- 측정 지표(전/후)\n- 리스크/완화\n출력: 표 + 2주 플랜", - prompt1_tips=["정량 목표 1개는 필수", "리스크/완화 포함", "주차별로 쪼개기"], - prompt2_title="실습 2) 사례 전파용 ‘사례 카드’ 만들기", - prompt2="너는 사내 공유 게시판 에디터야.\n아래 실험 결과를 1장 사례 카드로 요약해줘.\n- 문제(1줄)\n- 해결(3줄)\n- 전/후 효과(숫자)\n- 템플릿/프롬프트(복붙용)\n- 다음 실험 아이디어(2개)\n[결과]\n(여기에 결과를 붙여넣기)", - prompt2_tips=["숫자(효과)를 꼭 넣기", "복붙용 템플릿 포함", "다음 실험으로 연결"], - table_title="Small Win 기준(예시)", - table_columns=["기준", "권장", "피해야 할 것"], - table_rows=[["기간", "2주 이내", "3개월 장기"], ["범위", "팀/프로세스 1개", "전사 확장"], ["지표", "시간/품질", "모호한 만족"], ["리스크", "사전 체크", "사후 대응"]], - risks=["범위 확대(스코프 크립)", "성과 미측정", "보안/규정 위반", "실패 낙인"], - mitigations=["실험 범위/기간 고정", "전/후 지표 강제", "리스크 체크리스트", "학습/칭찬 중심 운영"], - checklist=["2주 이내인가", "지표가 있는가", "범위가 1개인가", "리스크 체크했나", "사례 카드로 공유했나"], - rollout=["월 1회 데모데이", "사례 카드 템플릿 통일", "작은 보상/인정", "실패 공유도 보상"], - summary=["작게, 빠르게, 측정하고 공유", "실험은 학습을 위한 장치", "템플릿이 자산이 된다", "오늘 행동: 내 업무 1개를 2주 실험으로 정의"], - ), - Topic( - category="기술 이해", - title="AI의 거짓말(환각 현상)을 잡아내는 팩트체크 기술", - ppt_title=None, - seed_prompt='"AI 환각(Hallucination) 대응 및 팩트체크" 자료를 만들어줘. AI 답변의 오류 유형, 교차 검증 방법, 최종 의사결정자로서 인간의 역할을 강조해줘. 분석적이고 객관적인 느낌의 톤앤매너를 유지해줘.', - leader_why=["환각은 품질/규정/법적 리스크로 직결", "검증 프로세스가 없으면 도입이 위험", "의사결정은 근거 기반이어야 함", "업무별 ‘검증 난이도’가 다르다", "책임 소재(승인/검토)를 명확히 해야 함"], - worker_why=["AI가 그럴듯하게 틀릴 수 있음을 알아야 안전", "팩트체크 습관이 있으면 활용 범위가 넓어짐", "검증 질문 템플릿만 있어도 품질이 크게 향상", "업무 문서 품질이 올라가 신뢰가 생김", "실수를 줄이면 스트레스가 줄어듦"], - myth=["AI는 최신 정보를 항상 안다", "출처를 말하면 무조건 맞다", "자신감 있는 답은 맞다", "수치/법률도 믿어도 된다"], - reality=["모델/도구에 따라 최신성은 제한", "가짜 출처(환각)도 생성 가능", "자신감은 정확도와 무관", "중요 정보는 반드시 원문 대조"], - effects=["오류로 인한 재작업/사고 감소", "의사결정 근거의 품질 개선", "검증 루틴으로 조직 신뢰↑", "AI 활용 범위 확장(안전장치)", "개인 역량(비판적 사고) 강화"], - concepts=["환각 유형: 허위 사실/가짜 출처/수치 오류", "위험 영역: 법률/규정/수치/고유명사", "교차검증: 원문 대조 + 2개 출처", "가정/전제 확인", "반론/리스크 요청", "최종 책임은 사람"], - framework_steps=["중요도 분류(결정 영향도)", "출처 요청(링크/문서)", "원문 대조(수치/이름)", "대안/반론 요청", "검증 결과 기록", "승인/공유"], - good=["출처/근거를 요구", "가정/전제를 명시", "반론/리스크 포함", "검증 체크리스트 적용"], - bad=["결론만 달라고 함", "수치/법률을 그대로 복붙", "출처 없이 인용", "단일 답변에 의존"], - mistakes=["검증을 ‘나중에’로 미룸", "출처 링크만 보고 내용 미확인", "상관/인과 혼동", "정의/단위를 누락", "승인 없이 외부 배포"], - prompt1_title="실습 1) 답변 검증(팩트체크) 프롬프트", - prompt1="너는 팩트체커야.\n아래 AI 답변을 검증해줘.\n- 사실 주장/수치/고유명사를 항목별로 분리\n- 각 항목의 검증 방법 제안(원문/공식 출처)\n- 불확실한 부분은 '확신도(상/중/하)'로 표시\n- 최종 결론은 '검증 필요' 관점으로 요약\n[AI 답변]\n(여기에 답변 붙여넣기)", - prompt1_tips=["항목 분리부터", "확신도 표시", "공식 출처를 우선"], - prompt2_title="실습 2) 반론/리스크 먼저 받기", - prompt2="너는 회의에서 반대편 역할(Devil's Advocate)이야.\n내 주장: [주장]\n근거: [근거]\n1) 반론 5개\n2) 반론별 추가로 확인해야 할 데이터/문서\n3) 리스크 완화 방안\n출력: 표(열: 반론, 필요한 검증, 완화)", - prompt2_tips=["반론을 먼저 받으면 안전", "검증 데이터까지 요청", "완화 방안까지"], - table_title="환각 유형과 대응(요약)", - table_columns=["오류 유형", "징후", "대응"], - table_rows=[["가짜 출처", "URL/논문이 존재하지 않음", "원문 검색/대조"], ["수치 오류", "단위/기간 불명확", "정의/단위 확인"], ["규정/법률 오류", "개정 전 정보", "공식 문서 확인"]], - risks=["의사결정 오류", "법적/규정 위반", "대외 신뢰 하락", "재작업 증가"], - mitigations=["중요도 기반 검증", "출처/원문 대조", "2개 이상 교차검증", "승인/리뷰 프로세스"], - checklist=["이 답이 의사결정에 영향 주나", "출처/원문이 확인됐나", "수치의 정의/단위/기간이 명확한가", "반론/리스크를 검토했나", "공유/배포 전에 리뷰했나"], - rollout=["팀 공통 팩트체크 템플릿", "중요 문서는 리뷰 필수", "사례 공유(실수 포함)", "승인 단계에 체크리스트 포함"], - summary=["AI는 그럴듯하게 틀릴 수 있다", "핵심은 출처/원문 대조 + 교차검증", "반론/리스크 질문이 안전장치", "오늘 행동: 내 문서 1개에 팩트체크 프롬프트 적용"], - ), - Topic( - category="실행력", - title="오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)", - ppt_title=None, - seed_prompt='"노코드 툴을 활용한 워크플로우 자동화 설계(강의형)" 슬라이드를 구성해줘. 서로 다른 앱(메일-슬랙-엑셀)을 AI로 연결하는 구조도를 포함하고, 운영 관점(예외 처리, 승인 단계, 로그/모니터링)을 자세히 설명해줘. 직관적이고 기술적인 신뢰감이 가는 디자인으로 제안해줘.', - leader_why=["자동화는 ‘업무 표준화’와 직결", "작은 자동화가 누적되면 생산성 격차가 커짐", "통합(메일/슬랙/시트)의 설계가 중요", "권한/로그/보안 통제가 필수", "운영 관점(장애/오작동) 고려 필요"], - worker_why=["반복 전달/복붙 작업을 줄이는 가장 빠른 방법", "노코드로도 충분히 시작 가능", "자동화는 ‘작게’가 핵심", "실수(누락/지연) 감소", "내 업무를 시스템화하면 야근이 줄어듦"], - myth=["자동화는 거창하다", "개발이 없으면 못 한다", "한 번 만들면 끝이다", "자동화는 위험하다"], - reality=["1~2개 앱 연결부터 가능", "노코드+AI로 시작 가능", "운영/모니터링이 중요", "권한/로그로 안전하게 가능"], - effects=["복붙/전달 시간 절감", "업무 누락 감소(트리거/알림)", "업무 흐름 가시화", "협업 속도↑", "프로세스 표준화"], - concepts=["Trigger(시작 조건)", "Action(실행)", "Filter(조건)", "AI Step(분류/요약/추출)", "Human 승인 단계", "로그/모니터링"], - framework_steps=["업무 1개 선정(반복/규칙적)", "Trigger 정의(메일 수신 등)", "AI 단계(요약/분류/추출)", "Action 연결(슬랙/시트)", "예외 처리(조건/승인)", "모니터링/개선"], - good=["단일 흐름부터 시작", "예외/승인 단계 포함", "로그/테스트 케이스 준비", "권한 최소화"], - bad=["여러 흐름을 한 번에", "예외 없이 자동 발송", "테스트 없이 운영", "권한 과다 부여"], - mistakes=["트리거 조건이 모호", "중복 실행", "에러 시 알림 없음", "민감 데이터 노출", "운영 주체 없음"], - prompt1_title="실습 1) 자동화 시나리오 설계(업무→흐름)", - prompt1="너는 워크플로우 설계자야.\n업무: [업무]\n앱: 이메일, 슬랙, 구글시트\n목표: [목표]\n자동화 흐름을 설계해줘.\n- Trigger\n- AI 단계(요약/분류/추출)\n- Action(슬랙 메시지/시트 기록)\n- 예외 처리(조건/승인)\n출력: 단계 리스트 + 체크리스트", - prompt1_tips=["목표를 1개로", "예외/승인을 반드시", "중복 방지 조건 넣기"], - prompt2_title="실습 2) AI 단계 프롬프트(분류+추출)", - prompt2="너는 이메일 분류/추출기야.\n입력은 이메일 본문이야.\n1) 카테고리(요청/문의/공지/기타)로 분류\n2) 핵심 요약 3줄\n3) 액션 아이템(담당/기한 추정)\n4) 시트에 넣을 필드 추출(표)\n출력: JSON + 표(열: 필드, 값)", - prompt2_tips=["출력 형식을 고정", "담당/기한이 핵심", "필드 추출로 자동 기록"], - table_title="워크플로우 예시(메일→슬랙→시트)", - table_columns=["단계", "입력", "출력"], - table_rows=[["Trigger", "특정 메일 수신", "본문/제목"], ["AI Step", "본문", "요약+카테고리"], ["Action", "요약", "슬랙 알림"], ["Log", "필드", "시트 기록"]], - risks=["오작동으로 잘못된 알림/기록", "민감정보 유출", "중복 실행", "운영 부재"], - mitigations=["승인 단계/조건 필터", "가명화/필드 최소화", "중복 방지 키", "에러 알림/로그"], - checklist=["트리거가 명확한가", "예외/승인이 있는가", "민감정보를 최소화했나", "중복 방지 장치가 있나", "에러 알림이 있나"], - rollout=["팀 1개 흐름부터 파일럿", "체크리스트로 승인", "성과(절감시간) 공유", "표준 템플릿으로 확장"], - summary=["자동화는 ‘작게 시작→안전하게 확장’", "Trigger-AI-Action-Log가 기본 구조", "예외/승인/로그가 안전장치", "오늘 행동: 내 업무 1개를 Trigger/Action으로 정의"], - ), - Topic( - category="리더십", - title="AI 시대의 리더십 - 데이터로 결정하고 AI로 실행하라", - ppt_title=None, - seed_prompt='"리더를 위한 AI 의사결정 전략" 주제야. 리더가 AI를 성과 관리에 어떻게 활용할지, 팀원들의 AI 활용도를 높이기 위한 코칭법은 무엇인지 다뤄줘. 권위 있으면서도 혁신적인 리더의 모습을 투영해줘.', - leader_why=["AI는 도구가 아니라 ‘의사결정 시스템’의 일부", "성과 관리는 데이터 정의/KPI가 핵심", "팀 AI 활용도를 올리려면 코칭/표준이 필요", "리스크(보안/품질)를 통제해야 확장", "리더의 질문/프레임이 조직을 바꾼다"], - worker_why=["리더의 기준이 명확하면 실행이 쉬움", "데이터 기반 의사결정은 불필요한 재작업↓", "AI는 실행(초안/분석/정리)을 가속", "코칭을 받으면 활용 격차가 줄어듦", "성과가 투명해지면 성장 경로가 보임"], - myth=["AI 도입은 IT의 일이다", "리더는 결과만 보면 된다", "KPI는 나중에 잡아도 된다", "팀원에게 알아서 쓰라 하면 된다"], - reality=["리더가 목표/지표/리스크를 설계", "과정(검증/승인)이 품질을 만든다", "KPI 없이는 확장할 수 없다", "코칭/템플릿이 활용도를 만든다"], - effects=["의사결정 속도↑(정보 요약/대안 비교)", "성과 관리의 일관성↑", "팀 생산성 표준화", "리스크 감소(검증/승인)", "학습 문화 정착"], - concepts=["KPI/지표 정의", "의사결정 질문 프레임", "Human-in-the-loop", "성과 리뷰(주간/월간)", "코칭(템플릿/리뷰)", "거버넌스(보안/규정)"], - framework_steps=["목표/지표 정의", "데이터 수집/정의 통일", "AI로 요약/분석(대안 생성)", "검증/리스크 리뷰", "결정/실행 계획 작성", "성과 리뷰/개선"], - good=["지표 정의가 명확", "대안/리스크를 함께 본다", "코칭(템플릿)으로 표준화", "리뷰로 지속 개선"], - bad=["감으로 결정", "결론만 보고 근거 없음", "AI 결과를 무비판 수용", "팀마다 제각각 도구 사용"], - mistakes=["KPI를 너무 많이 설정", "정의/단위가 다른 데이터 혼용", "검증 없이 실행", "코칭 없이 방치", "리스크 발생 후 대응"], - prompt1_title="실습 1) 리더의 의사결정 질문 템플릿", - prompt1="너는 경영진 보좌관이야.\n의사결정 주제: [주제]\n목표: [목표]\n제약: [기간/예산/규정]\n아래 형식으로 1페이지 의사결정 메모를 만들어줘.\n- 결론(추천안) 3줄\n- 옵션 3개 비교(효과/비용/리스크)\n- 필요한 추가 데이터/검증\n- 다음 행동(담당/기한)\n출력: 표 + 요약", - prompt1_tips=["옵션 3개 강제", "추가 데이터/검증 포함", "담당/기한까지"], - prompt2_title="실습 2) 팀 AI 활용 코칭 플랜", - prompt2="너는 리더 코치야.\n팀 구성: [구성]\n업무: [업무]\n팀의 AI 활용도를 4주 안에 올리는 코칭 플랜을 만들어줘.\n- 주차별 목표\n- 템플릿 5개 선정\n- 리뷰/공유 운영 방법\n- 측정 지표(절감시간/품질)\n출력: 4주 로드맵 + 체크리스트", - prompt2_tips=["템플릿 5개로 시작", "리뷰/공유가 핵심", "지표는 간단히"], - table_title="성과 관리 지표(예시)", - table_columns=["영역", "지표", "측정 방법"], - table_rows=[["생산성", "절감시간(분)", "전/후 기록"], ["품질", "재작업 횟수", "리뷰 로그"], ["활용", "템플릿 사용률", "라이브러리 조회"], ["리스크", "보안 위반 0건", "점검"]], - risks=["지표 정의 오류", "AI 과신으로 오판", "팀 내 격차 확대", "보안/규정 위반"], - mitigations=["지표 정의서/단위 통일", "검증/승인 프로세스", "코칭/템플릿 표준화", "가이드라인/점검"], - checklist=["목표/KPI가 명확한가", "데이터 정의가 통일됐나", "옵션/리스크를 같이 봤나", "코칭/공유 운영이 있나", "보안 체크가 내재화됐나"], - rollout=["리더가 질문 템플릿을 먼저 사용", "주간 성과 리뷰에 AI 활용 포함", "템플릿 라이브러리 구축", "확장 시 거버넌스 강화"], - summary=["리더십은 목표/지표/리스크를 설계하는 것", "AI는 의사결정과 실행을 가속한다", "코칭/템플릿/리뷰로 활용도를 만든다", "오늘 행동: 의사결정 메모 템플릿 1개 도입"], - ), - ] - - -def main() -> None: - schema = (COMMON / "slides.schema.json").read_text(encoding="utf-8") - example = (COMMON / "slides.example.json").read_text(encoding="utf-8") - wrapper = wrapper_make_ppt_py() - - for t in topics(): - d = ROOT / t.title - d.mkdir(parents=True, exist_ok=True) - dump_json(d / "slides.json", spec_for(t)) - dump_text(d / f"PROMPT_{t.title}.txt", prompt_text(title=(t.ppt_title or t.title), category=t.category, seed_prompt=t.seed_prompt)) - dump_text(d / "make_ppt.py", wrapper) - dump_text(d / "slides.schema.json", schema) - dump_text(d / "slides.example.json", example) - - print("done") - - -if __name__ == "__main__": - main() - diff --git a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/PROMPT_글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까.txt b/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/PROMPT_글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까.txt index 5aabb46..0ab4bbb 100644 --- a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/PROMPT_글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까.txt +++ b/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/PROMPT_글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/make_ppt.py b/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.example.json b/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.json b/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.json deleted file mode 100644 index 8ebbd7b..0000000 --- a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "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초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.schema.json b/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까.pptx b/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까.pptx index 0cabfe9..52aebe2 100644 Binary files a/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까.pptx and b/AX 강의 - 1/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까/글로벌 1등 기업들은 AI를 어떻게 쓰고 있을까.pptx differ diff --git a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/PROMPT_실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기.txt b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/PROMPT_실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기.txt index 6128d9b..42ccdb5 100644 --- a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/PROMPT_실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기.txt +++ b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/PROMPT_실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/make_ppt.py b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.example.json b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.json b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.json deleted file mode 100644 index f69169c..0000000 --- a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.json +++ /dev/null @@ -1,311 +0,0 @@ -{ - "meta": { - "title": "실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "조직문화 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기'입니다.\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는 실험-피드백에 최적", - "인정/보상이 있으면 참여가 늘어난다" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): 완벽을 요구하면 시도 자체가 멈춘다 / 작은 실험은 내 업무를 개선하는 가장 빠른 길\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "실패하면 평가가 깎인다", - "실험은 큰 프로젝트여야 한다", - "아이디어가 완벽해야 시작", - "보안 때문에 아무것도 못 한다" - ], - "right_title": "현실", - "right_bullets": [ - "실험은 학습을 위한 장치", - "2주짜리 작은 개선이 더 가치", - "초안으로 시작해 반복", - "가이드와 범위 설정으로 안전하게 가능" - ], - "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": [ - "Small Win: 2주 이내, 영향 범위 제한", - "가설-실험-측정-회고", - "리스크 사전 체크(보안/규정)", - "성과는 ‘시간/품질’로 측정", - "사례는 템플릿으로 전환", - "칭찬/공유가 운영의 핵심" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): Small Win: 2주 이내, 영향 범위 제한 / 가설-실험-측정-회고\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "문제 1개 선정(반복/병목)", - "가설 세우기(어떻게 나아질까)", - "2주 실험 설계(범위/지표)", - "실행(템플릿/자동화)", - "측정(전/후 비교)", - "공유(사례 카드)" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 문제 1개 선정(반복/병목) → 가설 세우기(어떻게 나아질까) → 2주 실험 설계(범위/지표) …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "범위를 작게 잡는다", - "전/후 지표를 정한다", - "보안 체크를 먼저 한다", - "산출물을 템플릿으로 남긴다" - ], - "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) 2주 Small Win 실험 설계", - "bullets": [ - "요청의 역할/관점: 혁신 실험 코치", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"업무 문제: [문제] / 목표: [정량 목표]\"", - "포인트: 정량 목표 1개는 필수", - "포인트: 리스크/완화 포함", - "포인트: 주차별로 쪼개기" - ], - "notes": "핵심(10초): '사례 1) 2주 Small Win 실험 설계' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 혁신 실험 코치 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) 사례 전파용 ‘사례 카드’ 만들기", - "bullets": [ - "요청의 역할/관점: 사내 공유 게시판 에디터", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"아래 실험 결과를 1장 사례 카드로 요약해줘. / - 문제(1줄)\"", - "포인트: 숫자(효과)를 꼭 넣기", - "포인트: 복붙용 템플릿 포함", - "포인트: 다음 실험으로 연결" - ], - "notes": "핵심(10초): '사례 2) 사례 전파용 ‘사례 카드’ 만들기' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 사내 공유 게시판 에디터 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "Small Win 기준(예시)", - "columns": [ - "기준", - "권장", - "피해야 할 것" - ], - "rows": [ - [ - "기간", - "2주 이내", - "3개월 장기" - ], - [ - "범위", - "팀/프로세스 1개", - "전사 확장" - ], - [ - "지표", - "시간/품질", - "모호한 만족" - ], - [ - "리스크", - "사전 체크", - "사후 대응" - ] - ], - "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": [ - "실험 범위/기간 고정", - "전/후 지표 강제", - "리스크 체크리스트", - "학습/칭찬 중심 운영" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "2주 이내인가", - "지표가 있는가", - "범위가 1개인가", - "리스크 체크했나", - "사례 카드로 공유했나" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 2주 이내인가 / 지표가 있는가\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개를 2주 실험으로 정의" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): 작게, 빠르게, 측정하고 공유 / 실험은 학습을 위한 장치\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.schema.json b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기.pptx b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기.pptx index caf25e8..38a1a26 100644 Binary files a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기.pptx and b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기.pptx differ diff --git a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실.pptx b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실.pptx new file mode 100644 index 0000000..acb3606 Binary files /dev/null and b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실.pptx differ diff --git a/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실_Gen.pptx b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실_Gen.pptx new file mode 100644 index 0000000..2b8b419 Binary files /dev/null and b/AX 강의 - 1/실패해도 괜찮은 AI 실험실 - 작은 성공(Small Win) 만들기/실패해도 괜찮은 AI 실험실_Gen.pptx differ diff --git a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/PROMPT_엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석.txt b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/PROMPT_엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석.txt index 0cdcd89..3da90b3 100644 --- a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/PROMPT_엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석.txt +++ b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/PROMPT_엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/make_ppt.py b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.example.json b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.json b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.json deleted file mode 100644 index 46fd738..0000000 --- a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "meta": { - "title": "엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "데이터 활용 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석'입니다.\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": [ - "함수/피벗 없이도 ‘질문’으로 시작 가능", - "그래프/요약/이상치 탐지가 빠르게 됨", - "보고서에 넣을 문장까지 자동 초안", - "데이터 정의만 잘 주면 오류가 크게 줄어듦", - "작게 분석 루틴을 만들면 자신감↑" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): 함수/피벗 없이도 ‘질문’으로 시작 가능 / 그래프/요약/이상치 탐지가 빠르게 됨\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "데이터 분석은 코딩을 해야 한다", - "AI가 알아서 정확히 분석한다", - "데이터가 조금만 있어도 인사이트가 나온다", - "그래프는 전문가 영역이다" - ], - "right_title": "현실", - "right_bullets": [ - "질문(목표/정의/기간)이 핵심", - "AI는 오류 가능: 검증이 필요", - "데이터 품질/정의가 결과를 좌우", - "기본 차트는 누구나 만들 수 있다" - ], - "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": [ - "지표 정의(분모/분자/단위)", - "기간/범위 명시", - "데이터 품질 체크(누락/중복)", - "기본 통계(평균/중앙값/추세)", - "시각화(막대/선/분포)", - "해석(가설→근거→다음 행동)" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): 지표 정의(분모/분자/단위) / 기간/범위 명시\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "목표 질문 1개 정하기", - "데이터 컬럼/정의 확인", - "품질 체크(누락/중복/이상치)", - "그래프 1개로 트렌드 보기", - "인사이트 3개 + 가설 2개", - "다음 액션(추가 데이터/실험)" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 목표 질문 1개 정하기 → 데이터 컬럼/정의 확인 → 품질 체크(누락/중복/이상치) …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "컬럼/단위/기간을 지정", - "보고 목적(누가/왜) 명시", - "그래프 종류를 지정", - "인사이트+가설+액션까지 요청" - ], - "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": [ - "요청의 역할/관점: 데이터 분석가", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"아래 표 데이터를 보고 먼저 '품질 체크'를 해줘. / - 누락/중복/이상치 가능성\"", - "포인트: 품질 체크가 먼저", - "포인트: 정의 질문을 받아서 오류를 줄이기", - "포인트: 전처리 제안을 기록" - ], - "notes": "핵심(10초): '사례 1) 데이터 품질 체크 요청' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 데이터 분석가 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) 그래프 + 인사이트 + 다음 행동", - "bullets": [ - "요청의 역할/관점: 비전공자를 돕는 분석 코치", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"목표: [목표] / 데이터 컬럼: [컬럼명/정의/단위]\"", - "포인트: ‘왜 이 그래프인지’가 중요", - "포인트: 가설과 검증방법을 같이", - "포인트: 마지막은 의사결정 행동으로" - ], - "notes": "핵심(10초): '사례 2) 그래프 + 인사이트 + 다음 행동' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 비전공자를 돕는 분석 코치 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "자연어 분석 질문 예시(초보용)", - "columns": [ - "내가 묻는 말", - "AI가 해주는 일", - "주의" - ], - "rows": [ - [ - "이번 달이 왜 떨어졌어?", - "요약+원인 후보", - "인과로 확정 금지" - ], - [ - "이상치가 있나?", - "이상치 탐지", - "원문 확인" - ], - [ - "보고서 문장 써줘", - "1p 요약", - "수치 대조" - ] - ], - "notes": "읽는 법(15초): 표는 내가 묻는 말, AI가 해주는 일, 주의 기준으로 비교합니다.\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": [ - "정의/단위/기간을 강제 입력", - "가설+검증 절차 포함", - "가명화/요약 후 입력", - "결론은 ‘가설’로 표현" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "지표 정의/단위/기간이 명확한가", - "결측/중복/이상치 확인했나", - "그래프가 목적과 맞나", - "인사이트가 ‘근거’와 연결되나", - "다음 행동이 있는가" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 지표 정의/단위/기간이 명확한가 / 결측/중복/이상치 확인했나\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "팀 공통 ‘지표 정의’ 템플릿 배포", - "월간 리포트 질문 템플릿화", - "분석 결과는 가설/근거/액션 포맷", - "민감 데이터 처리 규칙 공유" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 팀 공통 ‘지표 정의’ 템플릿 배포 / 월간 리포트 질문 템플릿화\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초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.schema.json b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석.pptx b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석.pptx deleted file mode 100644 index 4f0259e..0000000 Binary files a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석.pptx and /dev/null differ diff --git a/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/엑셀 함수 몰라도 괜찮아 말로 하는 데이터 분석.pptx b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/엑셀 함수 몰라도 괜찮아 말로 하는 데이터 분석.pptx new file mode 100644 index 0000000..eb286ec Binary files /dev/null and b/AX 강의 - 1/엑셀 함수 몰라도 괜찮아 - 말로 하는 데이터 분석/엑셀 함수 몰라도 괜찮아 말로 하는 데이터 분석.pptx differ diff --git a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/PROMPT_오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형).txt b/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/PROMPT_오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형).txt index f003520..f72f8f9 100644 --- a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/PROMPT_오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형).txt +++ b/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/PROMPT_오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형).txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/make_ppt.py b/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.example.json b/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.json b/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.json deleted file mode 100644 index 3ff3fc9..0000000 --- a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.json +++ /dev/null @@ -1,311 +0,0 @@ -{ - "meta": { - "title": "오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "실행력 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '오늘 바로 적용하는 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": [ - "반복 전달/복붙 작업을 줄이는 가장 빠른 방법", - "노코드로도 충분히 시작 가능", - "자동화는 ‘작게’가 핵심", - "실수(누락/지연) 감소", - "내 업무를 시스템화하면 야근이 줄어듦" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): 반복 전달/복붙 작업을 줄이는 가장 빠른 방법 / 노코드로도 충분히 시작 가능\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "자동화는 거창하다", - "개발이 없으면 못 한다", - "한 번 만들면 끝이다", - "자동화는 위험하다" - ], - "right_title": "현실", - "right_bullets": [ - "1~2개 앱 연결부터 가능", - "노코드+AI로 시작 가능", - "운영/모니터링이 중요", - "권한/로그로 안전하게 가능" - ], - "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": [ - "Trigger(시작 조건)", - "Action(실행)", - "Filter(조건)", - "AI Step(분류/요약/추출)", - "Human 승인 단계", - "로그/모니터링" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): Trigger(시작 조건) / Action(실행)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "업무 1개 선정(반복/규칙적)", - "Trigger 정의(메일 수신 등)", - "AI 단계(요약/분류/추출)", - "Action 연결(슬랙/시트)", - "예외 처리(조건/승인)", - "모니터링/개선" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 업무 1개 선정(반복/규칙적) → Trigger 정의(메일 수신 등) → AI 단계(요약/분류/추출) …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "단일 흐름부터 시작", - "예외/승인 단계 포함", - "로그/테스트 케이스 준비", - "권한 최소화" - ], - "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": [ - "요청의 역할/관점: 워크플로우 설계자", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"업무: [업무] / 앱: 이메일, 슬랙, 구글시트\"", - "포인트: 목표를 1개로", - "포인트: 예외/승인을 반드시", - "포인트: 중복 방지 조건 넣기" - ], - "notes": "핵심(10초): '사례 1) 자동화 시나리오 설계(업무→흐름)' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 워크플로우 설계자 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) AI 단계 프롬프트(분류+추출)", - "bullets": [ - "요청의 역할/관점: 이메일 분류/추출기", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"입력은 이메일 본문이야. / 1) 카테고리(요청/문의/공지/기타)로 분류\"", - "포인트: 출력 형식을 고정", - "포인트: 담당/기한이 핵심", - "포인트: 필드 추출로 자동 기록" - ], - "notes": "핵심(10초): '사례 2) AI 단계 프롬프트(분류+추출)' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 이메일 분류/추출기 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "워크플로우 예시(메일→슬랙→시트)", - "columns": [ - "단계", - "입력", - "출력" - ], - "rows": [ - [ - "Trigger", - "특정 메일 수신", - "본문/제목" - ], - [ - "AI Step", - "본문", - "요약+카테고리" - ], - [ - "Action", - "요약", - "슬랙 알림" - ], - [ - "Log", - "필드", - "시트 기록" - ] - ], - "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": [ - "승인 단계/조건 필터", - "가명화/필드 최소화", - "중복 방지 키", - "에러 알림/로그" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "트리거가 명확한가", - "예외/승인이 있는가", - "민감정보를 최소화했나", - "중복 방지 장치가 있나", - "에러 알림이 있나" - ], - "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": [ - "자동화는 ‘작게 시작→안전하게 확장’", - "Trigger-AI-Action-Log가 기본 구조", - "예외/승인/로그가 안전장치", - "오늘 행동: 내 업무 1개를 Trigger/Action으로 정의" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): 자동화는 ‘작게 시작→안전하게 확장’ / Trigger-AI-Action-Log가 기본 구조\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.schema.json b/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형).pptx b/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형).pptx deleted file mode 100644 index 58d03ce..0000000 Binary files a/AX 강의 - 1/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형)/오늘 바로 적용하는 AI 업무 자동화 - 노코드 워크플로우 설계(강의형).pptx and /dev/null differ diff --git a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/PROMPT_우리 팀만의 AI 지식 창고 만들기.txt b/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/PROMPT_우리 팀만의 AI 지식 창고 만들기.txt index 3893ba1..f200a2c 100644 --- a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/PROMPT_우리 팀만의 AI 지식 창고 만들기.txt +++ b/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/PROMPT_우리 팀만의 AI 지식 창고 만들기.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/make_ppt.py b/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.example.json b/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.json b/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.json deleted file mode 100644 index e41c7aa..0000000 --- a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "meta": { - "title": "우리 팀만의 AI 지식 창고 만들기", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "협업/공유 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '우리 팀만의 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": [ - "좋은 프롬프트를 공유하면 내 일이 쉬워짐", - "남의 템플릿을 쓰면 빠르게 숙련 가능", - "사내 챗봇/검색이 있으면 물어볼 곳이 생김", - "실패 사례도 공유하면 같은 실수를 줄임", - "함께 성장하는 경험이 동기부여가 됨" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): 좋은 프롬프트를 공유하면 내 일이 쉬워짐 / 남의 템플릿을 쓰면 빠르게 숙련 가능\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "공유하면 내 경쟁력이 줄어든다", - "프롬프트는 사람마다 달라서 공유가 무의미", - "지식창고는 만들기만 하고 안 쓴다", - "정리는 나중에 해도 된다" - ], - "right_title": "현실", - "right_bullets": [ - "공유는 ‘표준’과 ‘시간 절감’을 만든다", - "템플릿+변수로 재사용 가능", - "검색 가능/업데이트 규칙이 핵심", - "정리는 ‘업무 과정’에 붙여야 지속" - ], - "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": [ - "템플릿(목적/입력/출력/검증) 구조화", - "태그/카테고리로 검색 가능하게", - "예시(좋은 입력/좋은 출력) 포함", - "버전 관리(업데이트 로그)", - "검증 체크리스트를 함께 저장", - "사내 챗봇은 Q&A + 자산 추천 허브" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): 템플릿(목적/입력/출력/검증) 구조화 / 태그/카테고리로 검색 가능하게\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "팀 공통 업무 5개 선정", - "각 업무 템플릿 1개씩 수집", - "형식 통일(메타/변수/예시)", - "검증/보안 규칙 삽입", - "게시(위키/게시판) + 태그", - "주 1회 ‘템플릿 개선’ 10분" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 팀 공통 업무 5개 선정 → 각 업무 템플릿 1개씩 수집 → 형식 통일(메타/변수/예시) …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "템플릿에 변수 자리 표시", - "좋은 예시(입력/출력) 포함", - "사용 시 주의사항/검증 포함", - "태그로 검색 가능" - ], - "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": [ - "요청의 역할/관점: 프롬프트 라이브러리 편집자", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"아래 프롬프트를 팀 공유용 템플릿으로 바꿔줘. / - 목적(1줄)\"", - "포인트: 변수는 [대괄호]로 표시", - "포인트: 검증 체크를 기본 포함", - "포인트: 사용 상황을 써야 재사용됨" - ], - "notes": "핵심(10초): '사례 1) 프롬프트를 ‘템플릿’으로 표준화' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 프롬프트 라이브러리 편집자 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) 사내 챗봇용 Q&A/가이드 생성", - "bullets": [ - "요청의 역할/관점: 사내 챗봇 지식베이스 작성자", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"주제: [주제] / 직원들이 자주 물을 질문 10개를 만들고,\"", - "포인트: 질문은 실무자의 언어로", - "포인트: 주의사항(보안/검증)을 붙이기", - "포인트: 관련 템플릿을 추천하도록" - ], - "notes": "핵심(10초): '사례 2) 사내 챗봇용 Q&A/가이드 생성' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 사내 챗봇 지식베이스 작성자 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "지식 창고 카드(예시 포맷)", - "columns": [ - "필드", - "예시" - ], - "rows": [ - [ - "제목", - "회의록 요약(결정/액션)" - ], - [ - "변수", - "[메모], [참석자], [기한]" - ], - [ - "출력", - "표(결정/담당/기한)" - ], - [ - "검증", - "수치/이름 원문 대조" - ] - ], - "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": [ - "공유 전 마스킹/가이드", - "검증된 템플릿만 ‘추천’ 표시", - "소유자/업데이트 주기 지정", - "칭찬/학습 중심 운영" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "템플릿에 목적/상황/변수가 있는가", - "예시 입력/출력이 있는가", - "검증/보안 체크가 있는가", - "태그가 붙었는가", - "소유자/버전이 있는가" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 템플릿에 목적/상황/변수가 있는가 / 예시 입력/출력이 있는가\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "초기: 5개 템플릿으로 시작", - "운영: 주간 공유 10분", - "품질: 추천/검증 배지", - "확장: 챗봇이 템플릿 추천" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 초기: 5개 템플릿으로 시작 / 운영: 주간 공유 10분\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초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.schema.json b/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/우리 팀만의 AI 지식 창고 만들기.pptx b/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/우리 팀만의 AI 지식 창고 만들기.pptx index 3769485..4537d9e 100644 Binary files a/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/우리 팀만의 AI 지식 창고 만들기.pptx and b/AX 강의 - 1/우리 팀만의 AI 지식 창고 만들기/우리 팀만의 AI 지식 창고 만들기.pptx differ diff --git a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/PROMPT_질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법.txt b/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/PROMPT_질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법.txt index 787960a..62f045f 100644 --- a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/PROMPT_질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법.txt +++ b/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/PROMPT_질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/make_ppt.py b/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.example.json b/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.json b/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.json deleted file mode 100644 index c5e5fdb..0000000 --- a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.json +++ /dev/null @@ -1,311 +0,0 @@ -{ - "meta": { - "title": "질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "문제 해결 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '질문이 경쟁력이다 - 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": [ - "문제 정의가 흔들리면 AI도 흔들림(결정 품질 저하)", - "질문 프레임은 조직의 사고 체계를 표준화", - "빠른 실험(가설-검증)으로 전략 속도↑", - "회의 생산성이 ‘질문 품질’에 의해 결정", - "리스크/반론까지 포함한 질문이 안전한 의사결정으로 연결" - ], - "notes": "핵심(10초): '리더십 관점: 왜 중요한가' 슬라이드입니다.\n포인트(20초): 문제 정의가 흔들리면 AI도 흔들림(결정 품질 저하) / 질문 프레임은 조직의 사고 체계를 표준화\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "실무자 관점: 무엇이 달라지나", - "bullets": [ - "AI는 ‘무엇을’보다 ‘왜/어떻게’를 잘 물을 때 강해짐", - "좋은 질문은 작업 재작업을 줄여줌", - "프레임워크만 있으면 누구나 품질을 올릴 수 있음", - "아이디어 발산이 막힐 때 강력한 파트너", - "문서/기획 능력도 함께 상승" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): AI는 ‘무엇을’보다 ‘왜/어떻게’를 잘 물을 때 강해짐 / 좋은 질문은 작업 재작업을 줄여줌\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "AI는 센스 있게 알아서 해준다", - "질문은 길수록 좋다", - "정답을 한 번에 받아야 한다", - "브레인스토밍은 사람끼리만 한다" - ], - "right_title": "현실", - "right_bullets": [ - "AI는 맥락이 없으면 ‘평균 답’", - "핵심 조건을 구조화하면 짧아도 강함", - "초안→추가 질문→정제 루프가 정답", - "AI는 발산·정리·비판 역할에 강함" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "기대 효과(정량/정성)", - "bullets": [ - "아이디어 발산 속도↑(대안 10개/5분)", - "문제 정의 명확화로 실행 리스크↓", - "회의 아젠다/의사결정 질문이 정교해짐", - "기획서/제안서 품질 표준화", - "개인 논리/표현력 향상" - ], - "notes": "핵심(10초): '기대 효과(정량/정성)' 슬라이드입니다.\n포인트(20초): 아이디어 발산 속도↑(대안 10개/5분) / 문제 정의 명확화로 실행 리스크↓\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "2. 핵심 개념과 원칙", - "subtitle": "이것만 지키면 실패 확률이 줄어든다", - "notes": "전환(10초): 이제 '2. 핵심 개념과 원칙' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "핵심 개념 6가지", - "bullets": [ - "Role: 역할 부여", - "Goal: 목적/성공 기준", - "Context: 배경/제약", - "Format: 출력 형식", - "Critique: 반론/리스크", - "Iterate: 후속 질문으로 정제" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): Role: 역할 부여 / Goal: 목적/성공 기준\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "문제 한 줄 정의(무엇을/왜)", - "성공 기준 3개 설정", - "맥락(현황/제약/대상) 추가", - "출력 형식(표/목차/단계) 지정", - "반론/리스크 요청", - "2회 반복 정제(추가 질문)" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 문제 한 줄 정의(무엇을/왜) → 성공 기준 3개 설정 → 맥락(현황/제약/대상) 추가 …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "‘목적+성공기준’이 있는 질문", - "대안 3개 이상을 강제", - "반론/리스크 포함", - "출력 형식(표/프레임) 지정" - ], - "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) 5W1H로 문제 정의하기", - "bullets": [ - "요청의 역할/관점: 논리적 사고 코치", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"내가 해결하려는 문제는: [문제] / 아래 5W1H 질문을 통해 누락된 정보를 찾아줘.\"", - "포인트: 답을 채우면 프롬프트가 완성된다", - "포인트: 성공 기준은 측정 가능하게", - "포인트: 제약(예산/기간/규정)을 명시" - ], - "notes": "핵심(10초): '사례 1) 5W1H로 문제 정의하기' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 논리적 사고 코치 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) 브레인스토밍을 ‘발산→수렴’으로", - "bullets": [ - "요청의 역할/관점: 브레인스토밍 파트너", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"목표: [목표] / 제약: [기간/예산/규정]\"", - "포인트: 발산은 ‘개수 강제’", - "포인트: 수렴은 ‘평가기준’", - "포인트: 리스크까지 같이 보자" - ], - "notes": "핵심(10초): '사례 2) 브레인스토밍을 ‘발산→수렴’으로' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 브레인스토밍 파트너 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "질문 프레임워크(요약)", - "columns": [ - "요소", - "의미", - "예시" - ], - "rows": [ - [ - "Role", - "관점 고정", - "너는 10년차 PM이야" - ], - [ - "Goal", - "목표/성공기준", - "시간 20% 단축" - ], - [ - "Format", - "산출물 형태", - "표(열: 옵션/장단)" - ], - [ - "Critique", - "반론/리스크", - "리스크 3개도" - ] - ], - "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": [ - "프레임(Goal/Context/Format) 고정", - "대안 3개 이상 요청", - "제약 조건 명시", - "근거/출처/가정 확인" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "문제 정의 1문장 있는가", - "성공 기준 3개가 있는가", - "제약 조건이 포함됐나", - "출력 형식을 지정했나", - "반론/리스크를 요청했나" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 문제 정의 1문장 있는가 / 성공 기준 3개가 있는가\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "팀 공통 질문 템플릿(회의용) 만들기", - "회의 아젠다는 ‘질문’으로 작성", - "좋은 질문/나쁜 질문 사례 공유", - "결과물은 표준 포맷으로 저장" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 팀 공통 질문 템플릿(회의용) 만들기 / 회의 아젠다는 ‘질문’으로 작성\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "5. 요약 & 다음 행동", - "subtitle": "오늘부터 1개만 실행", - "notes": "전환(10초): 이제 '5. 요약 & 다음 행동' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 5", - "title": "핵심 요약", - "bullets": [ - "질문 품질이 AI 성과를 결정", - "프레임워크(Goal/Context/Format/Critique)로 표준화", - "발산→수렴 루프가 핵심", - "오늘 행동: 내 업무 1개를 5W1H로 재질문" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): 질문 품질이 AI 성과를 결정 / 프레임워크(Goal/Context/Format/Critique)로 표준화\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.schema.json b/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법.pptx b/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법.pptx index 637dfb0..428d594 100644 Binary files a/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법.pptx and b/AX 강의 - 1/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법/질문이 경쟁력이다 - AI를 브레인스토밍 파트너로 쓰는 법.pptx differ diff --git a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/PROMPT_칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기.txt b/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/PROMPT_칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기.txt index 3904914..c18648d 100644 --- a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/PROMPT_칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기.txt +++ b/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/PROMPT_칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/make_ppt.py b/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.example.json b/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.json b/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.json deleted file mode 100644 index 6f772a5..0000000 --- a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.json +++ /dev/null @@ -1,316 +0,0 @@ -{ - "meta": { - "title": "칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "업무 효율 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기'입니다.\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": [ - "개인 효율이 팀 생산성으로 이어지는 ‘확장 효과’", - "반복 업무 표준화는 품질/리스크를 동시에 낮춤", - "‘시간 절감’은 가장 빠르게 측정 가능한 KPI", - "업무 인수인계/온보딩 속도 개선", - "자동화는 프로세스 개선의 출발점" - ], - "notes": "핵심(10초): '리더십 관점: 왜 중요한가' 슬라이드입니다.\n포인트(20초): 개인 효율이 팀 생산성으로 이어지는 ‘확장 효과’ / 반복 업무 표준화는 품질/리스크를 동시에 낮춤\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "실무자 관점: 무엇이 달라지나", - "bullets": [ - "메일/요약/일정이 하루 시간을 갉아먹는 주범", - "AI는 초안/정리/체크리스트에 특히 강함", - "내 업무 스타일을 템플릿으로 만들면 반복이 줄어듦", - "실수(누락/오타/톤) 감소로 스트레스↓", - "매일 10분 절감이 1달이면 큰 차이를 만듦" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): 메일/요약/일정이 하루 시간을 갉아먹는 주범 / AI는 초안/정리/체크리스트에 특히 강함\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "자동화는 개발자만 한다", - "AI 쓰면 오히려 시간이 더 든다", - "메일은 사람이 직접 써야 한다", - "회의록은 정리할 수밖에 없다" - ], - "right_title": "현실", - "right_bullets": [ - "No-code/템플릿으로 누구나 가능", - "초안→검토 루틴이면 오히려 빨라짐", - "톤/대상/형식 지정하면 안정적으로 작성", - "결정/액션만 뽑으면 ‘짧게’ 끝남" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "기대 효과(정량/정성)", - "bullets": [ - "하루 10~20분 절감 → 월 3~6시간 확보", - "회의 후속 액션 누락 감소", - "메일 품질(명확성/톤) 표준화", - "일정 충돌/우선순위 정리로 야근 감소", - "반복 작업 스트레스↓" - ], - "notes": "핵심(10초): '기대 효과(정량/정성)' 슬라이드입니다.\n포인트(20초): 하루 10~20분 절감 → 월 3~6시간 확보 / 회의 후속 액션 누락 감소\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "2. 핵심 개념과 원칙", - "subtitle": "이것만 지키면 실패 확률이 줄어든다", - "notes": "전환(10초): 이제 '2. 핵심 개념과 원칙' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "핵심 개념 6가지", - "bullets": [ - "반복 업무를 ‘템플릿’으로 바꾸기", - "입력: 맥락(대상/목적/제약) 주기", - "출력: 형식(표/체크리스트/메일 구조) 주기", - "검증: 누락/반론/다음 액션 확인", - "축적: 잘 된 결과를 라이브러리화", - "자동화: 앱 연결(메일-슬랙-시트)" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): 반복 업무를 ‘템플릿’으로 바꾸기 / 입력: 맥락(대상/목적/제약) 주기\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "업무 3개(메일/요약/일정)를 선정", - "각 업무의 ‘좋은 예’ 1개 수집", - "AI에 초안 생성(형식 지정)", - "검토 체크리스트로 빠르게 수정", - "템플릿 저장(제목/용도/변수)", - "주 1회 성과 기록(분 단위)" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 업무 3개(메일/요약/일정)를 선정 → 각 업무의 ‘좋은 예’ 1개 수집 → AI에 초안 생성(형식 지정) …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "메일: 대상/목적/톤/요청사항이 명확", - "요약: 결론+액션 아이템 중심", - "일정: 우선순위/제약(가능시간) 포함", - "체크리스트: 누락 질문 포함" - ], - "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) 3분 만에 ‘메일 초안’ 만들기", - "bullets": [ - "요청의 역할/관점: 비즈니스 이메일 작성 전문가", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"수신자는 [직급/관계], 목적은 [목적]이야. / 배경: [상황 2~3줄]\"", - "포인트: 수신자 관계를 꼭 명시", - "포인트: 요청사항은 번호로", - "포인트: 마감일/다음 행동을 명확히" - ], - "notes": "핵심(10초): '사례 1) 3분 만에 ‘메일 초안’ 만들기' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 비즈니스 이메일 작성 전문가 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) 회의록을 ‘결정+액션’으로 압축", - "bullets": [ - "요청의 역할/관점: 회의록 정리 비서", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"아래 회의 메모를 읽고 다음 형식으로 정리해줘. / 1) 결론/결정사항(최대 5개)\"", - "포인트: 액션은 ‘담당/기한’이 핵심", - "포인트: 리스크를 같이 뽑으면 누락↓", - "포인트: 다음 아젠다로 회의 품질↑" - ], - "notes": "핵심(10초): '사례 2) 회의록을 ‘결정+액션’으로 압축' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 회의록 정리 비서 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "Before / After (시간 절감 예시)", - "columns": [ - "업무", - "기존", - "AI 협업", - "절감" - ], - "rows": [ - [ - "메일 초안", - "20분", - "5분", - "15분" - ], - [ - "회의록 요약", - "40분", - "12분", - "28분" - ], - [ - "일정 조율", - "15분", - "5분", - "10분" - ], - [ - "보고서 1p 요약", - "60분", - "20분", - "40분" - ] - ], - "notes": "읽는 법(15초): 표는 업무, 기존, AI 협업, 절감 기준으로 비교합니다.\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": [ - "발송 전 체크리스트(수신자/톤/숫자)", - "가명화/요약 후 입력", - "표준 템플릿 사용", - "자동화는 작은 범위부터 단계적" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "메일 목적/요청/기한이 명확한가", - "수치/날짜/이름을 원문 대조했나", - "민감정보가 포함되지 않았나", - "액션 아이템 담당/기한이 있는가", - "템플릿으로 저장했나" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 메일 목적/요청/기한이 명확한가 / 수치/날짜/이름을 원문 대조했나\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "팀 공통 템플릿(메일/회의록) 배포", - "주간 ‘절감시간’ 공유", - "좋은 결과는 예시로 축적", - "오해/실수 사례도 같이 공유" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 팀 공통 템플릿(메일/회의록) 배포 / 주간 ‘절감시간’ 공유\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "5. 요약 & 다음 행동", - "subtitle": "오늘부터 1개만 실행", - "notes": "전환(10초): 이제 '5. 요약 & 다음 행동' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 5", - "title": "핵심 요약", - "bullets": [ - "루틴 업무는 AI가 가장 잘 도와주는 영역", - "핵심은 ‘형식 지정 + 검증’", - "절감시간을 측정하면 확산이 빨라진다", - "오늘 행동: 메일/회의록 템플릿 1개씩 저장" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): 루틴 업무는 AI가 가장 잘 도와주는 영역 / 핵심은 ‘형식 지정 + 검증’\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.schema.json b/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기.pptx b/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기.pptx index b9debde..88884fa 100644 Binary files a/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기.pptx and b/AX 강의 - 1/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기/칼퇴를 부르는 AI 비서 - 루틴 업무 1시간 단축하기.pptx differ diff --git a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/PROMPT_회사의 비밀을 지키며 AI와 대화하는 법.txt b/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/PROMPT_회사의 비밀을 지키며 AI와 대화하는 법.txt index 8a31486..ea6ed9b 100644 --- a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/PROMPT_회사의 비밀을 지키며 AI와 대화하는 법.txt +++ b/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/PROMPT_회사의 비밀을 지키며 AI와 대화하는 법.txt @@ -13,13 +13,7 @@ - 발표자가 그대로 읽어도 자연스럽도록 슬라이드 흐름(도입→핵심→사례→리스크→정리)을 만든다. - 발표 중 **참여형 활동 없이 진행한다.** (참여자에게 '직접 해보라'는 지시 금지) - 프롬프트/템플릿은 "참고 예시"로만 제시하고, 단계별 따라하기 구성은 만들지 않는다. - -출력 형식(반드시 준수): -- 최종 출력은 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자 내로. @@ -27,3 +21,4 @@ - table 슬라이드는 열 3~4개, 행 3~6개 정도로 간결하게. - 보안/윤리/환각 등 리스크가 있는 주제는 "Do & Don't" 또는 "리스크/완화"를 반드시 포함한다. - 마지막은 요약 + 다음 행동(오늘부터 1개 실행)으로 끝낸다. +- 슬라이드마다 그대로 발표할 수 있을 정도의 스크립트를 슬라이드노트에 기록해줘. \ No newline at end of file diff --git a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/make_ppt.py b/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/make_ppt.py deleted file mode 100644 index 6ae124f..0000000 --- a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/make_ppt.py +++ /dev/null @@ -1,17 +0,0 @@ -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() diff --git a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.example.json b/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.example.json deleted file mode 100644 index 44a390a..0000000 --- a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.example.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "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": "마무리는 '오늘부터 무엇을 할지' 한 문장으로 정리합니다." - } - ] -} diff --git a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.json b/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.json deleted file mode 100644 index 9030208..0000000 --- a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "meta": { - "title": "회사의 비밀을 지키며 AI와 대화하는 법", - "subtitle": "AX 전환 교육 (30분 / 20+ Slides)", - "badge": "윤리/보안 트랙", - "duration_minutes": 30, - "audience": "리더십 + 실무자", - "tone": "명확하고 실용적, 예시 중심", - "footer_left": "AX 전환 교육 | 2026.02" - }, - "slides": [ - { - "type": "cover", - "notes": "오프닝(10초): 오늘 주제는 '회사의 비밀을 지키며 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": [ - "AI 활용은 ‘통제’가 없으면 보안 사고로 직결", - "정책/도구/권한/감사(로그) 체계를 리더가 결정", - "사고 1건의 비용은 도입 효익을 초과할 수 있음", - "규정 준수(PII/저작권/계약) 책임은 조직에 있음", - "현업이 이해하는 ‘행동 지침’이 있어야 실행됨" - ], - "notes": "핵심(10초): '리더십 관점: 왜 중요한가' 슬라이드입니다.\n포인트(20초): AI 활용은 ‘통제’가 없으면 보안 사고로 직결 / 정책/도구/권한/감사(로그) 체계를 리더가 결정\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "실무자 관점: 무엇이 달라지나", - "bullets": [ - "나도 모르게 기밀/개인정보를 넣기 쉬움", - "보안 규칙은 복잡해 보여도 핵심은 단순(입력 금지)", - "대안(가명화/요약/사내툴)만 알면 안전하게 쓸 수 있음", - "안전한 프롬프트는 결과 품질도 더 좋아짐", - "한 번의 실수가 개인/조직 리스크로 확대" - ], - "notes": "핵심(10초): '실무자 관점: 무엇이 달라지나' 슬라이드입니다.\n포인트(20초): 나도 모르게 기밀/개인정보를 넣기 쉬움 / 보안 규칙은 복잡해 보여도 핵심은 단순(입력 금지)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "two_column", - "chapter": "Part 1", - "title": "흔한 오해 vs 현실", - "left_title": "오해", - "left_bullets": [ - "‘내가 쓴 건 괜찮겠지’", - "AI에 넣어도 어차피 저장 안 할 것", - "민감정보만 빼면 원문을 넣어도 된다", - "출처 없이 써도 문제 없다" - ], - "right_title": "현실", - "right_bullets": [ - "실수는 항상 발생: 시스템으로 막아야 함", - "도구/정책에 따라 저장/학습 여부가 다름", - "원문 자체가 민감일 수 있음(계약/특허/환자)", - "저작권/라이선스/규정은 ‘사람 책임’" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 1", - "title": "기대 효과(정량/정성)", - "bullets": [ - "데이터 유출 위험↓(입력 규칙 표준화)", - "검증 가능한 활용만 남아 품질↑", - "사고 대응 시간↓(로그/절차 명확)", - "팀원 불안↓(허용/금지 기준 명확)", - "AI 활용이 지속가능한 문화로 정착" - ], - "notes": "핵심(10초): '기대 효과(정량/정성)' 슬라이드입니다.\n포인트(20초): 데이터 유출 위험↓(입력 규칙 표준화) / 검증 가능한 활용만 남아 품질↑\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "2. 핵심 개념과 원칙", - "subtitle": "이것만 지키면 실패 확률이 줄어든다", - "notes": "전환(10초): 이제 '2. 핵심 개념과 원칙' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "핵심 개념 6가지", - "bullets": [ - "‘입력=외부 전송’으로 가정하고 설계", - "PII/기밀/영업비밀/환자정보는 입력 금지", - "가명화/요약/마스킹이 기본 대안", - "출처/라이선스 확인(저작권)", - "사내 승인된 도구 우선(계정/로그)", - "결과물 검증·책임은 사용자/조직" - ], - "notes": "핵심(10초): '핵심 개념 6가지' 슬라이드입니다.\n포인트(20초): ‘입력=외부 전송’으로 가정하고 설계 / PII/기밀/영업비밀/환자정보는 입력 금지\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "process", - "chapter": "Part 2", - "title": "실행 프레임워크(권장 루틴)", - "steps": [ - "데이터 분류(공개/내부/기밀/PII)", - "허용 도구 확인(사내/외부)", - "입력 전 마스킹/요약", - "출력 검증(사실/출처/저작권)", - "저장/공유 기준 적용", - "사고 시 보고 절차 실행" - ], - "notes": "핵심(10초): '실행 프레임워크(권장 루틴)'는 실행 흐름(루틴)을 제시합니다.\n요약(20초): 데이터 분류(공개/내부/기밀/PII) → 허용 도구 확인(사내/외부) → 입력 전 마스킹/요약 …\n팁(10초): 이 순서를 팀 템플릿으로 고정하면 재작업이 크게 줄어듭니다." - }, - { - "type": "two_column", - "chapter": "Part 2", - "title": "좋은 예 vs 나쁜 예 (짧은 비교)", - "left_title": "좋은 예", - "left_bullets": [ - "가명화된 데이터로 질문", - "규정/제약을 먼저 선언", - "출처/근거를 요청", - "최종 활용 전 ‘검증 체크’ 포함" - ], - "right_title": "나쁜 예", - "right_bullets": [ - "고객/환자 원문 붙여넣기", - "계약서/특허 원문 전체 입력", - "사내 매출/단가/전략 수치 입력", - "출처 없이 이미지/문구 그대로 사용" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 2", - "title": "자주 하는 실수", - "bullets": [ - "‘민감정보’ 정의를 협소하게 이해", - "마스킹 없이 원문 그대로 입력", - "도구별 정책(저장/학습) 미확인", - "AI 생성물의 저작권/표절 리스크 무시", - "결과물을 사내 공유 채널에 무단 게시" - ], - "notes": "핵심(10초): '자주 하는 실수' 슬라이드입니다.\n포인트(20초): ‘민감정보’ 정의를 협소하게 이해 / 마스킹 없이 원문 그대로 입력\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "3. 사례로 이해하는 적용 가이드", - "subtitle": "참여형 활동 없이도 이해되는 예시 중심", - "notes": "전환(10초): 이제 '3. 사례로 이해하는 적용 가이드' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 1) ‘안전하게 요약’ 프롬프트", - "bullets": [ - "요청의 역할/관점: 보안에 민감한 문서 요약 전문가", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"아래 텍스트는 민감정보가 포함될 수 있으니, / 1) 민감정보로 추정되는 부분을 [REDACTED]\"", - "포인트: 원문 전체가 아니라 ‘필요 최소’만", - "포인트: REDACTED 표기 습관화", - "포인트: 추가 질문으로 누락 방지" - ], - "notes": "핵심(10초): '사례 1) ‘안전하게 요약’ 프롬프트' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 보안에 민감한 문서 요약 전문가 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 3", - "title": "사례 2) Do & Don't 체크 생성", - "bullets": [ - "요청의 역할/관점: 기업용 AI 활용 가이드라인 작성자", - "핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)", - "출력 통제: 결론 먼저, 근거/리스크를 함께 요청하면 품질이 안정화됨", - "짧은 예시 문장(참고): \"우리 팀 업무는 [업무영역]이고 다루는 데이터는 [데이터종류]야. / 이 팀에 적용할 AI 활용 D\"", - "포인트: 업무영역/데이터를 구체화", - "포인트: 규칙은 행동 단위로 쓰기", - "포인트: 예시는 실제 문장으로" - ], - "notes": "핵심(10초): '사례 2) Do & Don't 체크 생성' 슬라이드입니다.\n포인트(20초): 요청의 역할/관점: 기업용 AI 활용 가이드라인 작성자 / 핵심 입력 요소: 목적·대상·제약·데이터·출력 형식(표/목차/분량)\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "table", - "chapter": "Part 3", - "title": "입력 금지 vs 안전한 대안(예시)", - "columns": [ - "금지 입력", - "왜 위험?", - "대안" - ], - "rows": [ - [ - "개인식별정보(이름/연락처/주민번호)", - "PII 유출", - "가명화(ID치환) + 범위화" - ], - [ - "계약서/특허 원문", - "영업비밀/법적 리스크", - "핵심 조항만 요약 + 비식별" - ], - [ - "내부 매출/단가/전략", - "경쟁/시장 리스크", - "지표를 구간화 + 공개정보만" - ] - ], - "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": [ - "기밀/PII 입력으로 인한 유출", - "저작권/표절 이슈", - "규정 위반(내부통제)", - "환각으로 인한 오판" - ], - "right_title": "완화", - "right_bullets": [ - "데이터 분류/입력 금지 리스트", - "가명화/요약 템플릿 제공", - "출처 표기/검증 프로세스", - "승인된 도구만 사용 + 로그" - ], - "notes": "의도(10초): 좌/우 대비로 메시지를 빠르게 정렬합니다.\n정리(10초): 오른쪽(권장/현실/완화) 기준으로 팀 표준을 잡는 것이 목표입니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "체크리스트(현업 적용용)", - "bullets": [ - "내가 넣는 데이터가 PII/기밀인가", - "사내 승인 도구/계정인가", - "원문 대신 요약/마스킹 했나", - "출처/라이선스 확인했나", - "결과물을 공유해도 되는가" - ], - "notes": "핵심(10초): '체크리스트(현업 적용용)' 슬라이드입니다.\n포인트(20초): 내가 넣는 데이터가 PII/기밀인가 / 사내 승인 도구/계정인가\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "bullets", - "chapter": "Part 4", - "title": "팀 적용(롤아웃) 방법", - "bullets": [ - "팀별 ‘금지 입력’ 사례집 만들기", - "프롬프트 템플릿에 보안 문구 기본 삽입", - "월 1회 사례 공유(사고/미스 포함)", - "보안 담당과 채널 고정(질문/승인)" - ], - "notes": "핵심(10초): '팀 적용(롤아웃) 방법' 슬라이드입니다.\n포인트(20초): 팀별 ‘금지 입력’ 사례집 만들기 / 프롬프트 템플릿에 보안 문구 기본 삽입\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - }, - { - "type": "section", - "title": "5. 요약 & 다음 행동", - "subtitle": "오늘부터 1개만 실행", - "notes": "전환(10초): 이제 '5. 요약 & 다음 행동' 파트로 넘어갑니다.\n안내(15초): 핵심 메시지를 먼저 잡고, 사례/체크리스트로 연결하겠습니다." - }, - { - "type": "bullets", - "chapter": "Part 5", - "title": "핵심 요약", - "bullets": [ - "입력은 곧 외부 전송이라고 가정", - "금지 리스트 + 대안(가명화/요약)만 지켜도 80% 해결", - "출처/저작권/환각은 반드시 검증", - "오늘 행동: 내 업무 ‘금지 입력 5개’와 대안 5개 정리" - ], - "notes": "핵심(10초): '핵심 요약' 슬라이드입니다.\n포인트(20초): 입력은 곧 외부 전송이라고 가정 / 금지 리스트 + 대안(가명화/요약)만 지켜도 80% 해결\n연결(10초): 다음 슬라이드에서 구조(원칙/사례/리스크)로 이어갑니다." - } - ] -} diff --git a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.schema.json b/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.schema.json deleted file mode 100644 index 11cd0ff..0000000 --- a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/slides.schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$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 -} diff --git a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/회사의 비밀을 지키며 AI와 대화하는 법.pptx b/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/회사의 비밀을 지키며 AI와 대화하는 법.pptx index 987e621..fdbc249 100644 Binary files a/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/회사의 비밀을 지키며 AI와 대화하는 법.pptx and b/AX 강의 - 1/회사의 비밀을 지키며 AI와 대화하는 법/회사의 비밀을 지키며 AI와 대화하는 법.pptx differ