데이터 보고서를 웹 기반 슬라이드 덱으로 변환하는 도구
요약
본 도구는 데이터 보고서를 16:9 웹 기반 슬라이드 덱으로 변환하는 워크플로우를 제공합니다. Claude Code 스킬 또는 독립형 프로젝트 템플릿으로 사용 가능하며, 복잡한 다이어그램(지형도, 가치 흐름 등)을 자동화된 CSS/JS 구조로 구현하여 보고서 제작의 비효율성을 해결합니다.
핵심 포인트
- 데이터 보고서를 웹 기반 슬라이드 덱으로 변환하는 도구입니다.
- Claude Code 스킬 또는 독립형 프로젝트 템플릿으로 사용 가능합니다.
- 수동 수정이 필요했던 다이어그램을 자동화된 CSS/JS 구조로 구현했습니다.
- 슬라이드를 개별 파일(HTML+CSS+JS)로 분리하여 유지보수를 용이하게 했습니다.
데이터 보고서를 16:9 웹 기반 슬라이드 덱으로 변환하는 방법 — Claude Code 스킬 / 독립형 프로젝트 템플릿
슬라이드당 하나의 파일 · 물리적 데이터 분리 · ECharts · 5가지 테마 · 원클릭 PDF 내보내기
추천 시스템 계층 구조 (Recommender-system layered architecture) (landscape-map
템플릿, ECharts 미사용 — 순수 CSS 구조 그래프):
산업 지형도 (Industry landscape map) (3단계 중첩 + 로고 월; 민감한 데이터는 공공 기관으로 대체):
인간 실루엣 초상화 (Human silhouette portrait) (human-portrait
템플릿 — 데이터 기반, 원스텝(one-pass) 방식: 리더 라인 앵커가 주변 레이블에 자동으로 연결되는 컨설팅 등급의 인간 실루엣. "OpenAI IPO" 자료에서 탄생했으며 OpenClipart CC0 라이선스를 따릅니다):
중앙 실루엣은 깔끔하게 유지되며, 실루엣 마크의 신체 부위에는 색상 점(실제 SVG 요소)이 표시되고, 이 각 점으로부터 슬라이드 가장자리에 있는 레이블 카드까지 대시 리더 라인이 자동으로 연결됩니다. 사용자는 단지 하나의 labels 데이터 블록만 작성하면 됩니다 (각 블록은 머리/심장/다리/어깨/오른손과 같은 신체 부위에 바인딩됨). 실루엣, 앵커 좌표, 점, 리더 라인은 모두 자동으로 계산됩니다 — 손으로 그린 실루엣도 없고, 좌표 보정 작업도 필요 없으며, 수동으로 리더 라인을 배치할 필요가 없습니다. 사용자 페르소나, 인간형 역량 지도(anthropomorphic capability maps), 직무 위험 히트맵, 팀 픽토그램에 모두 사용 가능합니다.
가치 흐름 사슬 (Value-flow chain) (value-chain
템플릿 — 물리적 산업을 위한 프레임워크 다이어그램; 자가 운영/아웃소싱 배지 및 체를 따라 색상 그라디언트가 적용된 수평 가치 흐름, 순수 CSS):
세로형 / 초상화 (Vertical / portrait) (portrait
포맷 — 시나리오 기반, 낮은 콘텐츠 밀도; 하나의 덱으로 모든 플랫폼 크기에 내보내기 가능: 샤오홍슈(小红书) 3:4 / 위챗 장문 이미지 / 스토리 9:16 …):
"데이터 보고서 → 웹 슬라이드 덱" 워크플로우를 구현하는 템플릿입니다. 사용 방법은 두 가지가 있습니다:
Claude Code 스킬로 사용하기 — 이 리포지토리를 ~/.claude/skills/ppt-report-generator/에 넣고, Claude가 이 사양을 따라 보고서를 자동으로 생성하도록 합니다.
독립형 프로젝트 템플릿으로 사용하기 — assets/를 src/로 복사한 후 python3 build.py를 실행합니다.
하나의 HTML로 번들링하여
슬라이드 도구(Keynote / Lark Docs / Google Slides)는 데이터 보고서 작성에 있어 몇 가지 만성적인 문제점을 가지고 있습니다:
- ❌ 숫자 하나를 변경해도 → 전체 차트를 다시 그려야 함 → 반 시간 소요
- ❌ 슬라이드 간 글꼴 크기 불일치, 정렬되지 않은 카드, 지저분한 팔레트
- ❌ 다른 스타일을 원한다면? 모든 슬라이드를 일일이 수정해야 함
- ❌ Claude / GPT가 한 슬라이드를 고쳐주길 원한다면? 전체 파일을 보내야 함 — 토큰 폭발
ppt-report-generator는 다음 엔지니어링 접근 방식으로 이 문제를 해결합니다:
- ✅ 한 슬라이드 = 3개의 작은 파일(HTML + CSS + JS); 슬라이드를 변경해도 각 ≤ 200줄로 된 3개 파일만 수정하면 됨 - ✅
Excel / CSV에 있는 데이터(JSON도 지원); JSON으로 자동 변환하여 주입하며 — 다음 업데이트에서는 Excel만 편집하고, 렌더링 코드는 건드리지 않음 - ✅
5가지 사전 설정 테마, 오른쪽 상단 모서리에서 클릭 한 번으로 전환 가능 — Business Navy / Tech Dark / Warm Business / Light Minimal / Minimal Mono - ✅
ECharts 차트 + data-shape 결정 테이블, 어떤 데이터에 어떤 차트가 적합한지 알려줌 (슬라이스 5개 이상의 파이 차트는 거부함) - ✅
**8가지 글꼴 크기 레벨 / 4가지 글꼴 두께 /
— McKinsey / BCG 스타일 2×2 전략 매트릭스 (4분면 + 버블 배치 + 3가지 핵심 전략 통찰; 순수 CSS 사용, ECharts 산점도 아님)human-portrait
—컨설팅 수준의 인간 실루엣 초상화, 데이터 기반 원샷(서류 가방을 든 남성 사업가 + 긴 머리의 여성 전문가, OpenClipart CC0; 중앙 실루엣 + 신체 부위별 색칠된 점이 실제 SVG 요소로 표현됨 + 리더 라인이 주변 레이블 카드와 자동 연결). labels는 단 하나의 블록만 작성하면 됩니다.
data — 각 데이터 포인트는 특정 신체 part(머리 / 심장 / 다리 / 어깨 / 오른손)에 바인딩됩니다. 실루엣, 좌표, 점, 리더 라인은 모두 자동으로 계산됩니다 (수작업 실루엣 아님, 좌표 보정 필요 없음, 수동 리더 라인 배치 불필요). 사용처: 사용자 페르소나 / 인간형 역량 맵 / 직무 위험 히트맵 / 팀 피그마(pictogram). scripts/silhouette.js에 미리 구현되어 있으며, window.SILHOUETTE로 접근 가능합니다.
+injectSilhouette()
+renderHumanPortrait()
— 모든 슬라이드에서 공유 가능한 드롭인 요소 (value-chain)
—NEW ⭐ 가치 흐름 수평축 (물리 산업 프레임워크 다이어그램)— landscape-skeleton의 B 골격 구조를 활용하여, 물리적 산업/자산 집약적 비즈니스(상업 공간, 에너지, 제조, 소비재)가
1. 레포지토리 복제
git clone https://github.com/<your-username>/ppt-report-generator.git
cd ppt-report-generator
...
macOS / Linux
mkdir -p ~/.claude/skills
git clone https://github.com/<your-username>/ppt-report-generator.git ~/.claude/skills/ppt-report-generator
그 후 Claude Code에서 "make a monthly report" 또는 **"turn this data into a slide deck"**라고만 말하면, Claude가 이 스킬의 워크플로우를 자동으로 따릅니다: 페이지 템플릿 선택 → src/data/slide-N.xlsx에 데이터 정리
→ 8가지 글꼴 크기 레벨 + "Golden 11" 원칙을 사용하여 레이아웃 구성 → 일치하는 ECharts 템플릿 함수 호출 → build.py를 통해 출력
.
언어: 스킬 명세와 참고 문서는 두 가지 언어로 제공됩니다. 리포지토리 루트(SKILL.md, references/)는 중국어이며, 완전히 영어 버전은 i18n/en/에 있습니다 (i18n/en/SKILL.md + i18n/en/references/, 여기에 영어 트리거 설명이 포함되어 있습니다). 영어 사용의 경우, 해당 경로를 스킬 루트로 복제하세요. 예: Claude Code가 i18n/en/SKILL.md를 가리키도록 지정합니다.
자세한 내용은 SKILL.md를 참조하세요.
비즈니스 데이터는 이미 Excel에 존재하므로 JSON으로 다시 타이핑하지 마세요:
src/data/
├── slide-1.xlsx ← 권장됨 — 여러 시트가 여러 JSON 키로 자동 변환됩니다
├── slide-2.csv ← 단일 테이블 데이터
...
xlsx 변환 규칙: 각 시트는 하나의 최상위 JSON 키가 되고, 각 행은 하나의 객체({헤더: 값})가 됩니다. _로 시작하는 시트/열은 건너뜁니다.
예시: slide-3.xlsx에는 kpis (columns label/value/unit)와 trend (columns week/na/eu) 시트가 포함되어 있습니다. 빌드 후 다음과 같이 주입됩니다:
window.__DATA_3__ = {
kpis: [{label: 'DAU', value: 12.4, unit: '万'}, {label: 'ARR', value: 48, unit: 'M USD'}],
trend: [{week: 'W1', na: 12.1, eu: 8.4}, {week: 'W2', na: 12.4, eu: 8.6}]
...```
**xlsx 의존성**: `pip install openpyxl`
(csv / json은 표준 라이브러리를 사용하므로 의존성이 없습니다). 자세한 내용은 `references/architecture.md`를 참조하세요.
데이터 디렉토리
`src/data/`는 `quickstart.sh`가 초기화 시 프로젝트별로 생성합니다. 샘플 데이터는 미리 설정되어 있지 않습니다.
- 렌더링 코드에 데이터를 하드코딩하지 마세요 → `data/slide-N.json`에 넣으세요
- 단일 슬라이드의 HTML이 200줄을 초과하지 않도록 하세요
- 8가지 글꼴 크기 레벨(`var(--fs-*)`)만 사용하세요
; 임의로 새 크기를 추가하지 마세요 - 항목이 5개 이상인 파이 차트는 불가합니다 (100% 누적 막대 그래프를 사용하세요)
- 색상을 하드코딩하지 마세요 → `var(--accent*)` 테마 변수를 사용하세요
- 모든 슬라이드는 레이블/제목/부제목의 삼요소를 갖춰야 하며, 부제목에는 핵심 숫자가 포함되어야 합니다
- 디자인 캔버스는 1600×900으로 고정되어 있으니 vw/vh를 사용하지 마세요
- 항상 `src/`만 편집하고 빌드 출력물은 절대 건드리지 마세요 - 각 슬라이드는 하나의 질문에 답하며 하나의 시각적 기준점(visual anchor)을 가집니다
- 전체 덱은 리듬감(높음/낮음 밀도의 교차)이 필요합니다
**카드 경계는 엄격하게 정렬되어야 합니다**: grid`1fr 1fr`
+ `flex:1 1 0; min-height:0`
+ 유연한 간격 채우기(flexible spacer)를 사용하여 차이를 흡수하세요. 절대 높이를 하드코딩하지 마세요
자세한 내용은 `references/`를 참조하세요.
- ✅ 월별 / 분기별 비즈니스 보고서
- ✅ 데이터 팀을 위한 내부 / 외부 덱
- ✅ 프로젝트 제안서, 프로젝트 회고록
- ✅
페이지별 파일 분리 · 데이터 물리적 분리 · ECharts · 5가지 테마 세트 · 원클릭 PDF 내보내기
**추천 시스템 계층 구조 (Recommended System Layered Architecture)** (`landscape-map`
템플릿, 순수 CSS 구조도. ECharts에 의존하지 않음):
**산업 지도 전경 (Industry Map Panorama)** (3단계 중첩 + 로고 벽; 민감 데이터 대신 공개 엔티티 사용):
**인체 실루엣 포트레이트 (Human Silhouette Portrait)** (`human-portrait`
템플릿 — 데이터 기반으로 한 번에 생성: 컨설팅 보고서 스타일의 정장 재킷 실루엣 + 선 자동 연결을 통해 주변 태그를 고정 배치; 'OpenAI IPO' 덱, OpenClipart CC0에서 출처):
중앙 실루엣은 깔끔하게 유지 — 실루엣 몸통에 가시적인 색점(실제 SVG 요소)으로 부위를 표시하고, 점선 연결선이 이 색점에서 슬라이드 가장자리의 태그 카드까지 자동으로 연결됩니다.
labels 데이터만 작성하면 됩니다 (각 태그는 신체 부위 이름, 예: head / heart / legs / shoulder / rightHand에 바인딩). 실루엣, 좌표, 색점, 연결선이 모두 자동 계산되므로 — 실루엣을 직접 그리거나, 좌표를 보정하거나, 연결선을 수동으로 배치할 필요가 없습니다. 배경 강조 원도 불필요합니다. 사용자 프로필, 의인화된 역량 지도, 직업 위험 히트맵, 팀 픽토그램 등에 적합합니다.
**가치 흐름 가로축 (Value Flow Horizontal Axis)** (`value-chain`
템플릿 — 엔티티 산업 프레임워크 다이어그램: 가로형 가치 사슬 + 자체 보유/외부 조달 배지 + 사슬을 따라 그라데이션 색상, 순수 CSS 전 정적):
**세로형 · 모바일 / 샤오홍슈 / 위챗 공공 계정** (`portrait`
포맷 — 시나리오 기반, 낮은 콘텐츠 밀도; **하나의 내용으로 여러 플랫폼 규격에 맞춰 정확하게 내보내기**: 샤오홍슈 3:4 / 공공 계정 긴 이미지 / 위챗 친구 전용 4:5 / 모바일 전체 화면 9:16 등):
'데이터 보고 → 웹 PPT' 과정을 자동화한 템플릿. **두 가지 사용법**:
**Claude Code Skill로 사용하기** — 이 저장소를 `~/.claude/skills/ppt-report-generator/`에 배치하여, Claude가 이 규격에 맞춰 자동으로 보고서를 작성하게 합니다.
**독립적인 엔지니어링 템플릿으로 사용하기** — `assets/`를 `src/`로 복사한 후, `python3 build.py`를 실행하여 단일 HTML을 합성합니다.
PPT 도구(Keynote / Feishu 문서 / Google Slides)로 데이터 보고서를 만들 때 어려운 점들이 있습니다:
- ❌ 숫자 하나 수정 → 전체 그림 재작업 → 반나절 소요
- ❌ 상하 페이지 글자 크기 불일치, 카드 정렬 오류, 색상 조합 난잡
- ❌ 스타일을 바꾸고 싶다면? 매 페이지 수동으로 다시 작업해야 함
- ❌ Claude / GPT가 특정 페이지를 수정해 주길 원한다면? 전체 문서를 통째로 보내야 하므로 토큰 폭발
`ppt-report-generator`는 엔지니어링 방식으로 해결합니다:
- ✅ **페이지당 = 3개의 작은 파일** (HTML + CSS + JS). 한 페이지를 수정해도 200줄 이하의 작은 파일 3개만 건드리면 됩니다. - ✅
- **데이터는 Excel / CSV 사용 가능** (JSON도 지원). build가 자동으로 JSON으로 변환하여 주입합니다. 다음 업데이트 시에는 Excel만 수정하면 되고, 렌더링 코드는 전혀 건드릴 필요가 없습니다. - ✅
- **5가지 사전 설정 테마**, 오른쪽 상단에서 원클릭 전환 — 비즈니스 다크 블루 / 테크 다크 모드 / 따뜻한 색상 비즈니스 / 밝은 미니멀리즘 / 초간단 단색 - ✅
- **ECharts 차트 + 데이터 형태 결정표**. 어떤 데이터를 어떤 차트로 사용해야 하는지 알려줍니다 (파이 차트는 5개 이상 금지) - ✅
- **8단계 글자 크기 / 4단계 글자 굵기 / '황금 11가지' 핵심 개념** — 카드 경계가 엄격하게 정렬되어, 더 이상 '보기만 해도 지저분하지 않습니다.' - ✅
- **템플릿 단일 파일 즉시 사용 가능**. build.py가 인라인 `<style>`/`<script>`를 자동으로 추출합니다. 템플릿을 복사해 붙여넣기만 하면 바로 사용할 수 있습니다 (스타일 블록을 별도의 CSS 파일로 수동 분리할 필요 없음) - ✅
- **원클릭 PDF 내보내기** (playwright + img2pdf, 13.33×7.5 inch 16:9 표준)
**9가지 페이지 템플릿** (`assets/slides-templates/`):
`:kpi-overview` — 다중 섹션 × 다수 카드 총괄 개요
`:two-country` — 두 객체 좌우 비교 (KPI + 지표 테이블)
`:three-phase` — 3단계 타임라인 + 다수 차트
`:multi-trend` — 다수 객체 추이 비교
`:supply-bars` — 분류 막대 + 추이 선 그래프
`:landscape-map` — 산업 지도 / 경쟁사 전경 (12 그리드, 3단계 중첩 + 로고 벽; 순수 CSS 전 정적, JS는 로고 주입만)
`:matrix-2x2` — 맥킨지 / BCG 풍 2×2 전략 매트릭스 (4 사분면 + 버블 위치 + 3가지 전략 통찰; 순수 CSS, ECharts 스캐터 사용 안 함)
`:human-portrait`
—**컨설팅 보고서 수준의 인체 실루엣 이미지 및 데이터 기반 표현** (정장 차림 남성 + 긴 머리의 어깨를 드러낸 전문직 여성, OpenClipart CC0; 중앙 실루엣 + 신체 부위별 색점(실제 SVG 요소) + 색점에서 주변 라벨 카드까지 자동으로 연결되는 선). **라벨 데이터만 작성**하면 됩니다 (각 라벨은 head / heart / legs / shoulder / rightHand와 같은 신체 부위에 바인딩됨). 실루엣, 좌표, 색점, 연결선이 모두 자동 계산되므로 수동으로 실루엣을 그리거나 좌표를 보정하거나 선을 배치할 필요가 없습니다; **배경 없는 하이라이트 원**은 실루엣을 깔끔하게 유지합니다. 사용자 프로필 / 인격화 역량 지도 / 직업 위험도 분석 / 팀 피그마(pictogram) 등에 적용 가능합니다. 실루엣 경로(path) / 부위 좌표 / 렌더링 로직은 `scripts/silhouette.js`에 미리 설정되어 있습니다.
(`window.SILHOUETTE`
+`injectSilhouette()`
+`renderHumanPortrait()`
), `renderHumanPortrait()`를 통해 한 번 렌더링하면 모든 슬라이드에서 해당 값을 호출하여 사용할 수 있습니다 (`value-chain`).
—**새로운 ⭐ 가치 흐름(Value Flow) 가로축 템플릿 (landscape-skeleton의 B 골격)**— 실물 산업 / 중공업 분야(우주 항공, 에너지, 제조, 소비재 등)에서 '가치가 어떻게 사슬을 따라 흐르는지'를 표현할 수 있습니다. 5~6개 단계 카드가 가로로 연결되며 ▶ 각 섹션은 핵심 숫자 + 주요 활동 + 자체 보유/외부 구매 배지를 포함하고, 색상은 사슬을 따라 점진적으로 진해집니다. 순수 CSS 전용 정적 구조이며 JavaScript가 필요 없습니다.
**5가지 사전 설정 테마**: modern-light / dark-tech / warm-business / brand-blue / minimal-mono (우측 상단에서 원클릭 전환, localStorage에 저장)
**11개 참고 문서** (`references/`)
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기