PowerPoint 기본 활성
.pptx 생성, 편집, 분석 — 단일 슬라이드 수정부터 모프 전환과 데이터 기반 생성을 갖춘 투자자 발표자료까지.
트리거 키워드
빠른 참조
| 작업 | 방법 |
|---|---|
| 기존 발표자료 서식 따르기 | cp source.pptx target.pptx && officecli open target.pptx — 테마/레이아웃/마스터 상속 |
| 내용 읽기 / 분석 | officecli view 및 officecli get 명령어 |
| 기존 프레젠테이션 편집 | 참조 기반 편집 워크플로우 (복사 → 수정) |
| 처음부터 새로 만들기 | officecli create → 슬라이드 추가 → 요소 추가 |
| 피치덱 (Seed / Series) | 서브스킬: officecli-pitch-deck |
| 모프 전환 애니메이션 | 서브스킬: morph-ppt |
| 3D 모프 효과 | 서브스킬: morph-ppt-3d |
| JS 프로그래밍 방식 대안 | 50개 이상의 데이터 기반 슬라이드에 pptxgenjs |
| 색상 팔레트 / 타이포그래피 | 디자인 시스템: 20개 팔레트, 8개 폰트 조합 |
| 썸네일 그리드 / 시각적 QA | python3 scripts/thumbnail.py deck.pptx grid.png |
| 압축 해제 / 복구 | python3 scripts/pptx_cli.py {open|save|validate|repair} |
.pptx 파일에 대해 병렬 명령어를 실행하지 마세요."~해줘" 예시
이 스킬을 활성화하는 자연어 요청입니다. 한국어, 영어, 혼합 모두 가능합니다.
officecli view text로 모든 슬라이드 내용을 읽고, officecli view issues로 디자인 문제를 확인하며, 검증을 실행한 후 요약과 문제점(오버플로우, alt 텍스트 누락, 낮은 대비)을 보고합니다.officecli add에 차트 속성을 지정하여 컬럼 차트 요소가 포함된 새 슬라이드를 추가합니다. 데이터는 인라인으로 전달되며 차트는 적절한 여백으로 배치됩니다.morph-ppt 서브스킬을 활성화합니다. 48개의 큐레이션된 스타일 정의에서 다크 스타일을 선택하고, 슬라이드 간 모프 전환을 적용하며, 썸네일로 시각적 QA를 수행합니다.주요 도구: OfficeCLI
officecli는 PPTX 작업의 약 80%를 처리합니다: 슬라이드 추가/설정/제거, 검증, 쿼리, 시각적 검사. 이것이 주요 인터페이스이며 — 다른 도구로 에스컬레이션하기 전에 항상 OfficeCLI를 먼저 시도하세요.
탐색 규칙
officecli --help와 officecli help pptx ... --json을 먼저 실행하세요. CLI가 사용 가능한 속성과 구문의 기준점입니다.officecli --help
officecli help pptx
officecli help pptx add slide --json # 정확한 속성 목록
officecli help pptx add shape --json
officecli help pptx set slide --json
officecli help pptx set shape --json
officecli view --help # 모든 보기 모드
officecli help pptx query
핵심 워크플로우
읽기 & 분석
# 텍스트 추출
officecli view slides.pptx text
officecli view slides.pptx text --start 1 --end 5
# 구조적 보기
officecli view slides.pptx outline
officecli view slides.pptx annotated
officecli view slides.pptx stats
요소 검사 (PATH 구문)
경로는 1부터 시작합니다: /slide[1], /shape[1]. zsh에서 glob 확장을 방지하려면 항상 경로를 따옴표로 감싸세요.
officecli get slides.pptx '/slide[1]' --depth 1
officecli get slides.pptx '/slide[1]/shape[1]'
officecli get slides.pptx '/slide[1]/chart[1]'
officecli get slides.pptx '/slide[1]/table[1]' --depth 3
CSS 유사 쿼리
officecli query slides.pptx 'shape:contains("Revenue")'
officecli query slides.pptx "picture:no-alt"
officecli query slides.pptx 'shape[fill=#4472C4]'
officecli query slides.pptx "shape[width>=10cm]"
시각적 검사
officecli view slides.pptx html --browser # 권장
officecli view slides.pptx svg --start 1 --end 1 --browser
상주 모드
상주 모드는 더 빠른 순차 편집을 위해 파일을 백그라운드 데몬으로 열어둡니다. open 명령어는 즉시 반환됩니다 — 백그라운드 셸 작업으로 실행하지 마세요.
officecli open slides.pptx # 즉시 반환; 데몬이 백그라운드에서 실행
officecli add slides.pptx ...
officecli set slides.pptx ...
officecli close slides.pptx # 항상 명시적으로 닫기
officecli open을 백그라운드 셸 작업으로 실행하지 마세요. 즉시 반환되며 데몬이 자동으로 백그라운드에서 실행됩니다. 백그라운드 셸 생성은 좀비 프로세스와 파일 잠금을 유발합니다.배치 모드
JSON을 사용하여 단일 호출로 여러 작업을 실행합니다. 셸 구문이 JSON에 유입되는 것을 방지하려면 작은따옴표 구분자가 있는 heredoc을 사용하세요.
cat <<'EOF' | officecli batch slides.pptx
[
{"command":"add","parent":"/slide[1]","type":"shape","props":{"text":"Title","x":"2cm","y":"2cm","width":"20cm","height":"3cm","size":"36","bold":"true"}},
{"command":"add","parent":"/slide[1]","type":"shape","props":{"text":"Body","x":"2cm","y":"6cm","width":"20cm","height":"10cm","size":"16"}}
]
EOF
배치 지원 명령어: add, set, get, query, remove, move, swap, view, raw, raw-set, validate.
참조 기반 편집
사용자가 원본 파일을 제공하거나 "X.pptx처럼 서식 맞춰줘"라고 하면 — 항상 원본에서 시작하세요. 테마를 처음부터 다시 만들지 마세요.
이것이 중요한 이유
슬라이드 마스터와 테마 정의(폰트, 색상, 플레이스홀더 geometry)는 문서마다 다릅니다. 처음부터 다시 만들면 슬라이드 간 일관된 브랜딩이 깨지고, 기존 플레이스홀더 위치가 틀어지며, 복사본을 수정하는 것보다 5~10배 더 오래 걸립니다.
워크플로우
- 원본 복사:
cp source.pptx target.pptx— 테마, 슬라이드 마스터, 레이아웃, 폰트, 색상 상속 - 열기:
officecli open target.pptx— 데몬이 즉시 반환 - 슬라이드 내용 제거 —
/slideMaster,/slideLayout,/theme는 유지 - 새 슬라이드 추가 — 기존 레이아웃 사용 (
--prop layout=Title+Content) — 테마가 자동 상속됨
템플릿 소스 (우선순위 순)
| 우선순위 | 소스 | 사용 시기 |
|---|---|---|
| 1 | 사용자 제공 원본 파일 | 최우선 템플릿 — 항상 우선 |
| 2 | tests/fixtures/*.pptx | 스킬에 포함된 사전 제작 예시 |
| 3 | officecli-pitch-deck/ 템플릿 | 피치/투자자 맥락 |
| 4 | morph-ppt/reference/styles/* | 48개 큐레이션된 스타일 정의 |
| 5 | officecli create 빈 파일 | 다른 것이 해당되지 않을 때만 |
예시 — 기존 브랜드 상속
# 올바른 방법: 테마와 레이아웃 상속
cp CompanyBrand.pptx Q4Report.pptx
officecli open Q4Report.pptx
officecli remove Q4Report.pptx "/slide[1]"
officecli add Q4Report.pptx / --type slide --prop layout=Title
officecli add Q4Report.pptx '/slide[1]' --type textbox \
--prop text="Q4 Report" --prop placeholder=title
officecli close Q4Report.pptx
# 잘못된 방법: 테마 재생성 (브랜드 손실)
officecli create Q4Report.pptx
# ... 모든 폰트, 색상, 마스터를 처음부터 추가 ...
생성 워크플로우
# 1. /tmp/에서 ASCII 파일명으로 작업 (한국어 파일명은 상주 모드에서 손상 유발)
officecli create /tmp/deck_work.pptx --type pptx
# 2. 슬라이드 추가, 배경 설정, 도형/텍스트박스/차트 추가
officecli add /tmp/deck_work.pptx /slide --type slide
officecli set /tmp/deck_work.pptx '/slide[1]' --prop background=1E2761
officecli add /tmp/deck_work.pptx '/slide[1]' --type textbox \
--prop 'text=Title Here' --prop x=2cm --prop y=3cm --prop w=30cm --prop h=4cm \
--prop fontsize=44 --prop bold=true --prop color=FFFFFF --prop fontFamily=Pretendard
# 3. 편집 후 상주 모드 명시적 닫기
officecli close /tmp/deck_work.pptx
# 4. 최종 파일명으로 복사 (최종 출력에는 한국어 파일명 사용 가능)
python3 -c "import shutil; shutil.copy2('/tmp/deck_work.pptx', 'final.pptx')"
에스컬레이션 사다리
OfficeCLI로 처리할 수 없을 때 순서대로 에스컬레이션하세요. 대부분의 작업은 L1에서 해결됩니다.
| 레벨 | 상황 | 도구 |
|---|---|---|
| L1 officecli 고수준 | 일반적인 슬라이드/도형 추가/설정/제거 | officecli add/set/remove/query/view |
| L2 officecli raw-set | XML 주입 — 커스텀 애니메이션, 차트 XML, 테마 조정 | officecli raw-set FILE PATH --xpath X --action A --xml ... |
| L3 Python 스크립트 | 썸네일 생성, 고아 미디어 정리, 통합 CLI 작업 | python3 scripts/*.py |
| L4 압축 해제 → XML 편집 → 재압축 | officecli 범위를 넘는 모프 전환, 커스텀 p:transition XML, 매크로 처리 |
scripts/pptx_cli.py open → XML 편집 → save |
| L5 pptxgenjs | 데이터셋으로 50장 이상, 조합 가능한 팩토리, 복잡한 반복 로직 | npm install pptxgenjs + JS 파이프라인 |
에스컬레이션 신호
- officecli가 "silently ignored" 또는 미지원 속성을 표시 → L2
- 고수준 명령어 범위를 넘는 모프/커스텀 전환이 필요 → L4
- 데이터 기반 대량 생성 (50장 이상) → L5 (pptxgenjs)
- 정리/재구성을 위한 압축 해제 워크플로우 → L3 (
pptx_cli.py clean) - 디자인 선택 (색상, 폰트, 스타일) → 먼저
references/design-system.md+morph-ppt/reference/styles/INDEX.md읽기
요소 타입 & 명령어
OfficeCLI는 다양한 요소 타입을 지원합니다. 적극적으로 활용하세요 — 텍스트만 있는 슬라이드는 기억에 남지 않습니다.
도형을 콘텐츠 컨테이너로 사용
officecli add deck.pptx '/slide[1]' --type shape --prop geometry=roundRect \
--prop fill=1E2761 --prop x=1cm --prop y=4cm --prop w=15cm --prop h=12cm
표
officecli add deck.pptx '/slide[2]' --type table \
--prop rows=4 --prop cols=3 --prop x=1cm --prop y=3cm \
--prop width=24cm --prop height=6cm
차트
officecli add deck.pptx '/slide[3]' --type chart \
--prop chartType=column --prop title='Revenue' \
--prop 'data=Q1:12,Q2:15,Q3:18,Q4:20'
이미지
officecli add deck.pptx '/slide[1]' --type picture \
--prop path=photo.png --prop x=14cm --prop y=3cm \
--prop width=8cm --prop height=5cm --prop alt='Team photo'
비디오 / 오디오
officecli add deck.pptx '/slide[4]' --type video --prop path=demo.mp4 \
--prop x=2cm --prop y=3cm --prop width=20cm --prop height=12cm --prop autoplay=true
OLE 임베드 (Excel, Word, PDF)
officecli add deck.pptx '/slide[5]' --type ole --prop path=data.xlsx \
--prop x=2cm --prop y=3cm --prop width=20cm --prop height=12cm
연결선 / 화살표
officecli add deck.pptx '/slide[2]' --type connector \
--prop startShape=1 --prop endShape=2 --prop lineColor=4472C4 --prop tailEnd=arrow
발표자 노트
officecli add deck.pptx '/slide[1]' --type notes --prop 'text=Key talking point here.'
애니메이션
officecli set deck.pptx '/slide[1]/shape[2]' --prop animation=fadeIn --prop delay=500
테마 색상
# 테마 인식 발표자료에는 hex 대신 테마 토큰 사용
officecli set deck.pptx '/slide[1]/shape[1]' --prop fill=accent1
# 사용 가능: accent1..accent6, dk1, dk2, lt1, lt2, tx1, tx2, bg1, bg2
추가 작업
# 하이퍼링크
officecli set deck.pptx '/slide[1]/shape[2]' --prop link='https://example.com'
# 뒤집기 / 회전
officecli set deck.pptx '/slide[1]/shape[2]' --prop flipH=true
officecli set deck.pptx '/slide[1]/shape[2]' --prop rotation=45
# 슬라이드 마스터 / 레이아웃 편집
officecli set deck.pptx '/slideMaster[1]/shape[2]' --prop text='Company Name'
officecli set deck.pptx '/slideLayout[2]/shape[1]' --prop fill=1E2761
# 데이터와 템플릿 병합
officecli merge template.pptx output.pptx --data '{"title":"Q4 Report","revenue":"$5.1M"}'
# 감시 모드 (실시간 미리보기)
officecli watch deck.pptx --port 3000
# 슬라이드쇼 설정
officecli set deck.pptx / --prop show.loop=true --prop show.narration=false
디자인 시스템
디자인 다이얼
생성 전에 이 세 가지 매개변수를 결정하세요. 모호한 경우 사용자에게 제시하세요.
| 다이얼 | 범위 | 기본값 | 의미 |
|---|---|---|---|
| DESIGN_VARIANCE | 1–10 | 4 | 1 = 대칭 그리드, 10 = 비대칭 아트 디렉팅 |
| VISUAL_DENSITY | 1–10 | 5 | 1 = 갤러리 여백, 10 = 대시보드 밀도 |
| MOTION_INTENSITY | 1–10 | 3 | 1 = 정적 컷, 10 = 시네마틱 모프 |
발표자료 유형별 프리셋
| 발표자료 유형 | 변화도 | 밀도 | 모션 |
|---|---|---|---|
| 투자자 피치 | 6 | 3 | 4 |
| 내부 리뷰 | 3 | 7 | 1 |
| 컨퍼런스 키노트 | 8 | 2 | 7 |
| 워크숍 / 교육 | 4 | 6 | 2 |
| 제품 출시 | 7 | 4 | 6 |
권장 팔레트
주제에 맞는 색상을 선택하세요 — 기본 파란색을 그냥 쓰지 마세요.
| 테마 | 주색 | 보조색 | 강조색 | 텍스트 | 뮤트 |
|---|---|---|---|---|---|
| Midnight Executive | 1E2761 | CADCFC | FFFFFF | 333333 | 8899BB |
| Slate Professional | 2C3E50 | ECF0F1 | E74C3C | 333333 | 7A8A94 |
| Forest & Moss | 2C5F2D | 97BC62 | F5F5F5 | 2D2D2D | 6B8E6B |
| Coral Energy | F96167 | F9E795 | 2F3C7E | 333333 | 8B7E6A |
| Warm Terracotta | B85042 | E7E8D1 | A7BEAE | 3D2B2B | 8C7B75 |
| Ocean Gradient | 065A82 | 1C7293 | 21295C | 2B3A4E | 6B8FAA |
| Charcoal Minimal | 36454F | F2F2F2 | 212121 | 333333 | 7A8A94 |
| Berry & Cream | 6D2E46 | A26769 | ECE2D0 | 3D2233 | 8C6B7A |
밝은 배경에서는 본문에 텍스트 색상, 캡션/라벨/축 텍스트에는 뮤트 색상을 사용하세요. 어두운 배경(밝기 < 30%)에서는 모든 본문 텍스트를 흰색(FFFFFF) 또는 거의 흰색으로 해야 합니다. 순수 검정 대신: 000000이 아닌 0A0A0A.
FFFFFF 배경 + 000000 텍스트 (개성 없음).타이포그래피
| 제목 폰트 | 본문 폰트 | 적합한 용도 |
|---|---|---|
| Georgia | Calibri | 격식 있는 비즈니스, 금융 |
| Arial Black | Arial | 강렬한 마케팅, 출시 |
| Trebuchet MS | Calibri | 친근한 테크, 스타트업 |
| Consolas | Calibri | 개발자 도구, 엔지니어링 |
한국어: Pretendard, Noto Sans KR, Wanted Sans. Malgun Gothic을 단독 폰트로 사용하지 마세요 — a:ea 폰트 스택에서 CJK 대체용으로만 허용됩니다.
| 요소 | 크기 |
|---|---|
| 슬라이드 제목 | 36–44pt 볼드 |
| 섹션 헤더 | 20–24pt 볼드 |
| 본문 텍스트 | 16–20pt (최소 16pt) |
| 캡션 / 출처 | 10–12pt 뮤트 |
| 핵심 지표 | 60–72pt 볼드, 강조색 |
슬라이드 리듬
10장짜리 발표자료에는 최소 4가지 구별되는 레이아웃 유형이 있어야 합니다:
- 전면 히어로 — 제목 또는 핵심 지표
- 분할 레이아웃 — 텍스트 + 시각 자료
- 그리드 또는 비교 — 2–3개 항목
- 데이터 시각화 — 차트, 다이어그램 또는 인포그래픽
콘텐츠-레이아웃 가이드
| 콘텐츠 유형 | 권장 레이아웃 |
|---|---|
| 가격 / 요금제 티어 | 2–3열 카드 (비교) |
| 팀 / 인물 | 아이콘 그리드 또는 2x3 카드 |
| 타임라인 / 로드맵 | 화살표가 있는 프로세스 플로우 / 번호 단계 |
| 핵심 지표 / KPI | 큰 숫자 콜아웃 (3–4개 큰 숫자) |
| 고객 추천사 / 인용문 | 전체 너비 인용문 + 출처 |
| 기능 비교 | 2열 전후 비교 또는 표 |
| 아키텍처 / 시스템 | 도형 + 연결선 다이어그램 |
| 재무 데이터 | 차트 + 요약 표 나란히 배치 |
서브스킬
작업에 맞는 서브스킬 하나만 로드하세요. 전부 로드하지 마세요.
투자자 피치덱을 위한 특화된 템플릿과 구조. 문제/솔루션/시장/트랙션/팀/재무 흐름을 처리합니다.
슬라이드 간 시네마틱 모프 전환. 48개 큐레이션된 스타일 정의, 결정 규칙 (피라미드 원칙, SCQA), 캔버스 사양, 품질 게이트를 포함합니다.
고급 시각적 프레젠테이션을 위한 3D 모델 통합 모프 전환.
조합 가능한 팩토리와 반복 로직으로 50장 이상의 데이터 기반 슬라이드를 대량 생성하는 PptxGenJS API.
참조 자료
디자인 참조
| 파일 | 읽어야 할 시점 | 포함 내용 |
|---|---|---|
references/design-system.md | 색상/폰트 선택 전 | 20개 팔레트, 8개 폰트 조합, 4개 한국어 폰트 |
morph-ppt/reference/styles/INDEX.md | 독특한 시각적 스타일 선택 시 | 사양 + 예시가 포함된 48개 스타일 정의 |
morph-ppt/reference/decision-rules.md | 콘텐츠가 많은 발표자료 기획 시 | 피라미드 원칙, SCQA, 페이지 유형 |
morph-ppt/reference/pptx-design.md | 캔버스 사양, 고스트 위치 계산 | 캔버스, 폰트, 간격 토큰 |
morph-ppt/reference/quality-gates.md | 4~5단계 QA 게이트 | 모프 발표자료 QA 체크리스트 |
recipes.md | 빠른 수정 패턴 | 섹션 구분선 z-order, KPI 오버플로우, 타임라인 간격 |
Python 스크립트 (scripts/)
| 스크립트 | 용도 | 명령어 |
|---|---|---|
pptx_cli.py | 통합 CLI: 압축 해제, 저장, 검증, 복구, 썸네일, 검색, 목차, 슬라이드 추가, 정리, PDF 내보내기 | python3 scripts/pptx_cli.py {open|save|validate|repair|...} |
thumbnail.py | 시각적 QA를 위한 슬라이드 썸네일 그리드 또는 개별 PNG | python3 scripts/thumbnail.py IN.pptx grid.png |
clean.py | 압축 해제된 PPTX에서 고아 미디어 찾기/제거 | python3 scripts/clean.py work/ [--delete] |
add_slide.py | 압축 해제된 디렉토리에서 슬라이드 추가 또는 복제 (레거시 OOXML) | python3 scripts/add_slide.py work/ --blank |
run_tests.py | 스킬 회귀 테스트 실행 | python3 scripts/run_tests.py |
QA (필수)
1단계 — 자동 QA
officecli validate output.pptx
officecli view output.pptx issues
officecli view output.pptx text | grep -iE 'xxxx|lorem|ipsum|placeholder|TODO|click to'
officecli view output.pptx stats
2단계 — 시각적 QA
officecli view output.pptx html --browser
# 빠른 스캔을 위한 썸네일 그리드
python3 scripts/thumbnail.py output.pptx grid.png
시각적 검사에는 서브에이전트를 사용하세요 — 2~3장짜리 슬라이드라도. 여러분은 실제로 있는 것이 아니라 기대하는 것을 보게 됩니다. 새로운 시각이 더 많은 버그를 잡습니다.
시각적 QA 체크리스트
- 겹치는 요소 (도형을 통과하는 텍스트, 쌓인 요소)
- 텍스트 박스 경계에서 넘치거나 잘리는 텍스트
- 너무 가까운 요소 (< 0.3인치 간격) 또는 거의 닿는 요소
- 불균일한 간격 (넓은 빈 영역 vs 빽빽한 부분)
- 슬라이드 가장자리에서 불충분한 여백 (< 0.5인치)
- 열이나 유사 요소가 정렬되지 않음
- 대비가 낮은 텍스트 또는 아이콘
- 남아 있는 플레이스홀더 콘텐츠
- 과도한 줄바꿈을 유발하는 너무 좁은 텍스트 박스
3단계 — 수정 및 재검증
officecli set으로 수정하고 QA를 다시 실행하세요. 최소 한 번의 수정-검증 사이클을 완료하기 전에는 완료를 선언하지 마세요.
납품 전 체크리스트
- 모든 콘텐츠 슬라이드에 발표자 노트
- 최소 하나의 전환 스타일 적용
- 모든 이미지에 alt 텍스트:
officecli query deck.pptx 'picture:no-alt' - 슬라이드 전체에 레이아웃 다양성 ≥ 3가지 유형
- 오버플로우 없음:
y + height ≤ 19.05cm,x + width ≤ 33.87cm - 남아 있는 플레이스홀더 텍스트 없음
- 모든 곳에서 본문 텍스트 ≥ 16pt
- 차트 제목에 실제 값 포함 (TBD, 빈 괄호 없음)
흔한 실수
| 실수 | 올바른 접근법 |
|---|---|
zsh에서 따옴표 없는 [N] | 항상 따옴표 사용: "/slide[1]" 또는 '/slide[1]' |
--name "foo" | --prop name="foo" 사용 — 모든 속성은 --prop을 통해 |
| 속성 이름 추측 | officecli help pptx set shape --json을 실행하여 정확한 이름 확인 |
#가 포함된 hex 색상 | #FF0000이 아닌 FF0000 사용 |
--prop text=에서 $ | 작은따옴표 사용: '$15M' |
view text가 표를 놓침 | 전체 텍스트에는 view annotated 사용 |
| 생성 후 차트 시리즈 추가 | 추가 불가 — 차트를 삭제하고 다시 만드세요 |
| 한국어 파일명 + 상주 모드 | CJK가 상주 모드 UTF-8 손상을 유발. ASCII 사용 후 복사 |
| 상주 모드 좀비 | pkill -9 -f "resident-serve", 1초 대기 후 재시도 |
| 기존 테마/마스터를 처음부터 재생성 | cp source.pptx target.pptx를 먼저. 마스터/레이아웃/테마 유지 |
officecli open을 백그라운드 셸로 | 포그라운드에서 실행 — 즉시 반환되며 데몬이 자동으로 백그라운드에서 실행 |
| 배치 JSON 파싱 오류 | 셸 구문이 유입됨. heredoc 사용: cat <<'EOF' | officecli batch FILE.pptx |
| 색상/폰트를 막연히 선택 | 선택 전 references/design-system.md 읽기 |
안티패턴
- 서브스킬 파일의 예시 데이터 사용 금지 (FitPulse, LearnFlow 등)
- 플레이스홀더 텍스트 남기기 금지:
lorem,ipsum,XXXX,TODO - 모든 슬라이드에 제목 필수 (접근성)
- 모든 콘텐츠 슬라이드에 발표자 노트
- 발표자료당 최대 2개 폰트 패밀리
Malgun Gothic단독 사용 = 거부view issues에서 blank 레이아웃의 "(untitled)"는 예상된 결과이며 결함이 아님- 제목 아래 강조선 — AI가 생성한 슬라이드의 전형적 특징; 대신 여백 활용
- 장식용 웹 UI 요소 (얇은 사이드바 선, 장식적 원) — PPT는 프로젝터 매체이지 웹 앱이 아님
- 모든 슬라이드에 동일한 레이아웃 — 열, 카드, 콜아웃을 다양하게
- 본문 텍스트 가운데 정렬 — 문단은 왼쪽 정렬; 가운데 정렬은 제목에만
- 불충분한 크기 대비 — 제목 36pt 이상 vs 본문 16pt
- 텍스트만 있는 슬라이드 — 도형, 차트, 색상 블록, 이미지 추가
접근성 (WCAG 2.1 AA)
- 모든 슬라이드에 제목:
officecli view deck.pptx outline - 이미지에 alt 텍스트:
officecli query deck.pptx 'picture:no-alt' - 읽기 순서 = 도형 순서 (제목 먼저)
- 대비 ≥ 4.5:1 일반, ≥ 3:1 대형
- 색상만으로 정보를 전달하지 않음
CJK / 한국어 지원
cli-jaw 포크는 한국어 콘텐츠를 자동 감지하여 언어 태그 + 기본 폰트를 적용합니다. 상주 모드 편집 중에는 UTF-8 손상을 방지하기 위해 ASCII 파일명을 사용하세요; 최종 단계에서 한국어 파일명으로 복사하면 됩니다.
필수 조건
| 도구 | 용도 | 상태 |
|---|---|---|
officecli (PATH) | 주요 PPTX CLI | 필수 |
python3 + python-pptx | L3/L4 작업용 스크립트 | 스크립트 사용 시 필수 |
pptxgenjs | 대규모 프로그래밍 방식 생성 (L5) | 선택 |
soffice (LibreOffice) | PDF 변환, QA용 썸네일 | 선택 (필요 시 자동 설치) |
# 필수 조건 확인
python3 -c "import pptx" || echo "MISSING: pip install python-pptx"
which officecli >/dev/null 2>&1 || echo "INFO: OfficeCLI not installed"
which soffice >/dev/null 2>&1 || echo "INFO: LibreOffice not installed (optional)"