diff --git a/define/charts/README.md b/define/charts/README.md new file mode 100644 index 0000000..3ceece6 --- /dev/null +++ b/define/charts/README.md @@ -0,0 +1,151 @@ +# Mermaid 차트 이미지 변환 가이드 + +이 디렉토리에는 시장조사 보고서의 Mermaid 차트 파일들이 있습니다. + +## 📊 차트 목록 + +총 **14개의 차트**가 포함되어 있습니다: + +1. 소상공인 업종별 분포 (Pie Chart) +2. 1차 타겟 세그먼트 규모 비교 (Flow Diagram) +3. 디지털 전환 현황 (Pie Chart) +4. 소상공인 주요 스트레스 요인 (Bar Chart) +5. 카카오톡 채널 마케팅 효과 (Flow Chart) +6. 마케팅 자동화 시장 성장 전망 (Timeline) +7. 경쟁 우위 비교 매트릭스 (Grouped Chart) +8. AI 자동화 도입 효과 (Before/After) +9. KT 서비스 단계별 성장 전략 (Roadmap) +10. ROI 분석 - 연간 매출 전망 (Bar Chart) +11. Pain Point 해결 맵핑 (Flow Mapping) +12. 타겟 고객 페르소나 분포 (Pie Chart) +13. KT 차별화 포인트 (Hierarchy) +14. 서비스 가치 제안 구조 (Layered Architecture) + +## 🎨 PNG/SVG 이미지로 변환하는 방법 + +### 방법 1: Mermaid Live Editor (추천) + +**가장 쉽고 빠른 방법입니다!** + +1. **Mermaid Live Editor 접속**: https://mermaid.live/ +2. 왼쪽 편집기에 `.mmd` 파일 내용을 복사-붙여넣기 +3. 오른쪽에서 차트 미리보기 확인 +4. 상단 메뉴에서 **Actions** → **Export PNG** 또는 **Export SVG** 클릭 +5. 이미지 파일 다운로드 + +### 방법 2: VS Code Extension + +VS Code를 사용하는 경우: + +1. **Mermaid Preview** 확장 설치 + - 확장 ID: `bierner.markdown-mermaid` +2. `.mmd` 파일을 VS Code에서 열기 +3. 미리보기 창에서 우클릭 → **Export to PNG/SVG** + +### 방법 3: Mermaid CLI (고급 사용자용) + +Node.js가 설치되어 있다면: + +```bash +# Mermaid CLI 설치 +npm install -g @mermaid-js/mermaid-cli + +# PNG로 변환 +mmdc -i chart01_소상공인_업종별_분포.mmd -o chart01_소상공인_업종별_분포.png + +# SVG로 변환 +mmdc -i chart01_소상공인_업종별_분포.mmd -o chart01_소상공인_업종별_분포.svg + +# 전체 차트 일괄 변환 +for file in *.mmd; do + mmdc -i "$file" -o "${file%.mmd}.png" +done +``` + +### 방법 4: 온라인 변환 도구 + +- **Mermaid Chart**: https://www.mermaidchart.com/ +- **Kroki**: https://kroki.io/ +- **Diagram.codes**: https://diagram.codes/d/mermaid + +## 📝 사용 팁 + +### 이미지 품질 설정 + +Mermaid CLI 사용 시 고해상도 이미지: + +```bash +mmdc -i input.mmd -o output.png -w 2000 -H 1500 -b transparent +``` + +- `-w`: 너비 (픽셀) +- `-H`: 높이 (픽셀) +- `-b`: 배경색 (`transparent`, `white`, `#HEX`) + +### 테마 커스터마이징 + +각 차트 파일 맨 위에 테마 설정이 포함되어 있습니다: + +```mermaid +%%{init: {'theme':'base', 'themeVariables': {...}}}%% +``` + +필요시 색상을 조정할 수 있습니다. + +## 📂 파일 구조 + +``` +define/charts/ +├── README.md (이 파일) +├── chart01_소상공인_업종별_분포.mmd +├── chart02_1차_타겟_세그먼트_규모_비교.mmd +├── chart03_디지털_전환_현황.mmd +├── chart04_소상공인_주요_스트레스_요인.mmd +├── chart05_카카오톡_채널_마케팅_효과.mmd +├── chart06_마케팅_자동화_시장_성장_전망.mmd +├── chart07_경쟁_우위_비교_매트릭스.mmd +├── chart08_AI_자동화_도입_효과.mmd +├── chart09_KT_서비스_단계별_성장_전략.mmd +├── chart10_ROI_분석_연간_매출_전망.mmd +├── chart11_Pain_Point_해결_맵핑.mmd +├── chart12_타겟_고객_페르소나_분포.mmd +├── chart13_KT_차별화_포인트.mmd +└── chart14_서비스_가치_제안_구조.mmd +``` + +## 🎯 빠른 시작 + +**5분 안에 모든 차트를 이미지로 변환하기:** + +1. https://mermaid.live/ 접속 +2. 각 `.mmd` 파일을 하나씩 열어서 복사 +3. Mermaid Live Editor에 붙여넣기 +4. **Actions** → **Export PNG** 클릭 +5. 파일명을 `chartXX_이름.png`로 저장 +6. 14개 차트 반복 + +## ❓ 문제 해결 + +### 차트가 제대로 렌더링되지 않을 때 + +1. **Mermaid 버전 확인**: 최신 버전의 Mermaid Live Editor 사용 +2. **문법 검증**: https://mermaid.live/에서 에러 메시지 확인 +3. **특수문자 처리**: 한글이 포함된 경우 UTF-8 인코딩 확인 + +### CLI 설치 문제 + +```bash +# Node.js 버전 확인 (14 이상 필요) +node --version + +# Puppeteer 의존성 문제 시 +export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true +npm install -g @mermaid-js/mermaid-cli +``` + +## 📚 추가 자료 + +- [Mermaid 공식 문서](https://mermaid.js.org/) +- [Mermaid Syntax Guide](https://mermaid.js.org/intro/syntax-reference.html) +- [Mermaid Live Editor](https://mermaid.live/) +- [GitHub: mermaid-js](https://github.com/mermaid-js/mermaid) diff --git a/define/charts/chart01_소상공인_업종별_분포.mmd b/define/charts/chart01_소상공인_업종별_분포.mmd new file mode 100644 index 0000000..8d61c05 --- /dev/null +++ b/define/charts/chart01_소상공인_업종별_분포.mmd @@ -0,0 +1,6 @@ +%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#4CAF50','primaryTextColor':'#fff','primaryBorderColor':'#388E3C','lineColor':'#F57C00','secondaryColor':'#FFC107','tertiaryColor':'#fff'}}}%% +pie title 한국 소상공인 업종별 분포 (596만 개 업체) + "도소매업" : 33.6 + "부동산/임대업" : 14.3 + "외식업" : 13.3 + "기타 서비스업" : 38.8 \ No newline at end of file diff --git a/define/charts/chart02_1차_타겟_세그먼트_규모_비교.mmd b/define/charts/chart02_1차_타겟_세그먼트_규모_비교.mmd new file mode 100644 index 0000000..88a4276 --- /dev/null +++ b/define/charts/chart02_1차_타겟_세그먼트_규모_비교.mmd @@ -0,0 +1,21 @@ +graph TB + A[전체 소상공인
596만 개] + B[1차 타겟: 외식업/카페
79만 개 - 13.3%] + C[2차 타겟: 도소매업
200만 개 - 33.6%] + D[3차 타겟: 숙박/부동산
85만 개 - 14.3%] + + A --> B + A --> C + A --> D + + B --> B1[고용인원
140만 명] + B --> B2[시장규모
100조 원] + + C --> C1[하이브리드
매장 증가] + + D --> D1[지역 관광
활성화] + + style A fill:#2196F3,stroke:#1976D2,color:#fff + style B fill:#4CAF50,stroke:#388E3C,color:#fff + style C fill:#FF9800,stroke:#F57C00,color:#fff + style D fill:#9C27B0,stroke:#7B1FA2,color:#fff \ No newline at end of file diff --git a/define/charts/chart03_디지털_전환_현황.mmd b/define/charts/chart03_디지털_전환_현황.mmd new file mode 100644 index 0000000..68c5eb1 --- /dev/null +++ b/define/charts/chart03_디지털_전환_현황.mmd @@ -0,0 +1,4 @@ +%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#2196F3','primaryTextColor':'#fff'}}}%% +pie title 코로나19 이후 디지털화 증가 현황 + "디지털화 증가" : 45.5 + "변화 없음/감소" : 54.5 diff --git a/define/charts/chart04_소상공인_주요_스트레스_요인.mmd b/define/charts/chart04_소상공인_주요_스트레스_요인.mmd new file mode 100644 index 0000000..17d0e8c --- /dev/null +++ b/define/charts/chart04_소상공인_주요_스트레스_요인.mmd @@ -0,0 +1,6 @@ +%%{init: {'theme':'base', 'themeVariables': {'xyChart': {'plotColorPalette': '#2196F3'}}}}%% +xychart-beta + title "소상공인 업무별 스트레스 비율" + x-axis ["직원관리", "비용관리", "매장홍보", "기타"] + y-axis "응답 비율 (%)" 0 --> 70 + bar [65.1, 50.5, 20.2, 15] diff --git a/define/charts/chart05_카카오톡_채널_마케팅_효과.mmd b/define/charts/chart05_카카오톡_채널_마케팅_효과.mmd new file mode 100644 index 0000000..46130db --- /dev/null +++ b/define/charts/chart05_카카오톡_채널_마케팅_효과.mmd @@ -0,0 +1,9 @@ +graph LR + A[카카오톡 채널
메시지 발송] --> B[열람률
75%+] + A --> C[구매전환율
40%] + A --> D[발송당일
매출 2.4배] + + style A fill:#FEE500,stroke:#F9E000,color:#000 + style B fill:#4CAF50,stroke:#388E3C,color:#fff + style C fill:#4CAF50,stroke:#388E3C,color:#fff + style D fill:#4CAF50,stroke:#388E3C,color:#fff diff --git a/define/charts/chart06_마케팅_자동화_시장_성장_전망.mmd b/define/charts/chart06_마케팅_자동화_시장_성장_전망.mmd new file mode 100644 index 0000000..bad6282 --- /dev/null +++ b/define/charts/chart06_마케팅_자동화_시장_성장_전망.mmd @@ -0,0 +1,12 @@ +graph LR + A[2024년
4억 달러] --> B[2027년
5.3억 달러] + B --> C[2030년
7억 달러] + C --> D[2033년
9억 달러] + + E[연평균 성장률
10%] + + style A fill:#90CAF9,stroke:#1976D2,color:#000 + style B fill:#64B5F6,stroke:#1976D2,color:#fff + style C fill:#42A5F5,stroke:#1565C0,color:#fff + style D fill:#2196F3,stroke:#0D47A1,color:#fff + style E fill:#FFC107,stroke:#F57C00,color:#000 diff --git a/define/charts/chart07_경쟁_우위_비교_매트릭스.mmd b/define/charts/chart07_경쟁_우위_비교_매트릭스.mmd new file mode 100644 index 0000000..16ff75f --- /dev/null +++ b/define/charts/chart07_경쟁_우위_비교_매트릭스.mmd @@ -0,0 +1,20 @@ +graph TB + subgraph "높은 통합성" + KT[KT AI 서비스
가성비 + 통합] + end + + subgraph "중간 통합성" + HS[HubSpot
고가 + 기능] + MC[Mailchimp
중가 + 이메일] + end + + subgraph "낮은 통합성" + KK[카카오톡 채널
저가 + 단순] + GA[가제트AI
중저가 + 콘텐츠] + end + + style KT fill:#4CAF50,stroke:#388E3C,color:#fff + style HS fill:#9E9E9E,stroke:#616161,color:#fff + style MC fill:#9E9E9E,stroke:#616161,color:#fff + style KK fill:#BDBDBD,stroke:#757575,color:#000 + style GA fill:#BDBDBD,stroke:#757575,color:#000 diff --git a/define/charts/chart08_AI_자동화_도입_효과.mmd b/define/charts/chart08_AI_자동화_도입_효과.mmd new file mode 100644 index 0000000..c08c75b --- /dev/null +++ b/define/charts/chart08_AI_자동화_도입_효과.mmd @@ -0,0 +1,11 @@ +graph LR + A1[도입 전
홍보 시간 주당 5시간] -->|60% 단축| B1[도입 후
주당 2시간] + A2[도입 전
매출 100%] -->|15-30% 증가| B2[도입 후
매출 115-130%] + A3[도입 전
고객 유지율 기준] -->|30% 증가| B3[도입 후
단골 고객 증가] + + style A1 fill:#E0E0E0,stroke:#9E9E9E,color:#000 + style A2 fill:#E0E0E0,stroke:#9E9E9E,color:#000 + style A3 fill:#E0E0E0,stroke:#9E9E9E,color:#000 + style B1 fill:#4CAF50,stroke:#388E3C,color:#fff + style B2 fill:#4CAF50,stroke:#388E3C,color:#fff + style B3 fill:#4CAF50,stroke:#388E3C,color:#fff diff --git a/define/charts/chart09_KT_서비스_단계별_성장_전략.mmd b/define/charts/chart09_KT_서비스_단계별_성장_전략.mmd new file mode 100644 index 0000000..f1393e5 --- /dev/null +++ b/define/charts/chart09_KT_서비스_단계별_성장_전략.mmd @@ -0,0 +1,7 @@ +graph LR + P1[Phase 1 - 6개월
MVP 출시
외식업/카페 1만 개
월 9,900-19,800원] --> P2[Phase 2 - 12개월
기능 확장
소매/뷰티 확대
5만 개 업체
AI 이미지 생성] + P2 --> P3[Phase 3 - 18-24개월
생태계 구축
전 업종 20만 개
AI 어시스턴트
파트너십 확장] + + style P1 fill:#90CAF9,stroke:#1976D2,color:#000 + style P2 fill:#42A5F5,stroke:#1565C0,color:#fff + style P3 fill:#1976D2,stroke:#0D47A1,color:#fff diff --git a/define/charts/chart10_ROI_분석_연간_매출_전망.mmd b/define/charts/chart10_ROI_분석_연간_매출_전망.mmd new file mode 100644 index 0000000..1179f78 --- /dev/null +++ b/define/charts/chart10_ROI_분석_연간_매출_전망.mmd @@ -0,0 +1,11 @@ +graph TB + P1[Phase 1 - 6개월
연간 매출 24억 원
가입자 1만 개] + P2[Phase 2 - 12개월
연간 매출 120억 원
가입자 5만 개] + P3[Phase 3 - 24개월
연간 매출 480억 원
가입자 20만 개] + + P1 --> P2 + P2 --> P3 + + style P1 fill:#81C784,stroke:#388E3C,color:#000 + style P2 fill:#4CAF50,stroke:#2E7D32,color:#fff + style P3 fill:#2E7D32,stroke:#1B5E20,color:#fff diff --git a/define/charts/chart11_Pain_Point_해결_맵핑.mmd b/define/charts/chart11_Pain_Point_해결_맵핑.mmd new file mode 100644 index 0000000..f1f3a0d --- /dev/null +++ b/define/charts/chart11_Pain_Point_해결_맵핑.mmd @@ -0,0 +1,18 @@ +graph LR + P1[Pain Point 1
시간 부족] --> S1[Solution
원클릭 자동화] + P2[Pain Point 2
전문지식 부족] --> S2[Solution
AI 템플릿 추천] + P3[Pain Point 3
높은 광고비] --> S3[Solution
무료/저가 메시지] + P4[Pain Point 4
효과 측정 어려움] --> S4[Solution
자동 리포트 분석] + P5[Pain Point 5
일관성 부족] --> S5[Solution
정기 발송 스케줄링] + + style P1 fill:#F44336,stroke:#C62828,color:#fff + style P2 fill:#F44336,stroke:#C62828,color:#fff + style P3 fill:#F44336,stroke:#C62828,color:#fff + style P4 fill:#F44336,stroke:#C62828,color:#fff + style P5 fill:#F44336,stroke:#C62828,color:#fff + + style S1 fill:#4CAF50,stroke:#388E3C,color:#fff + style S2 fill:#4CAF50,stroke:#388E3C,color:#fff + style S3 fill:#4CAF50,stroke:#388E3C,color:#fff + style S4 fill:#4CAF50,stroke:#388E3C,color:#fff + style S5 fill:#4CAF50,stroke:#388E3C,color:#fff diff --git a/define/charts/chart12_타겟_고객_페르소나_분포.mmd b/define/charts/chart12_타겟_고객_페르소나_분포.mmd new file mode 100644 index 0000000..6c2f17d --- /dev/null +++ b/define/charts/chart12_타겟_고객_페르소나_분포.mmd @@ -0,0 +1,4 @@ +%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#FF9800','primaryTextColor':'#fff'}}}%% +pie title 소상공인 연령대 분포 + "40-60대 (타겟)" : 75 + "기타 연령대" : 25 diff --git a/define/charts/chart13_KT_차별화_포인트.mmd b/define/charts/chart13_KT_차별화_포인트.mmd new file mode 100644 index 0000000..8b41146 --- /dev/null +++ b/define/charts/chart13_KT_차별화_포인트.mmd @@ -0,0 +1,30 @@ +graph TB + ROOT[KT AI 이벤트 서비스
핵심 차별화 포인트] + + ROOT --> A1[1. 통신 인프라] + ROOT --> A2[2. 데이터 자산] + ROOT --> A3[3. AI 기술] + ROOT --> A4[4. 생태계 통합] + ROOT --> A5[5. 정부 지원] + + A1 --> A1_SUB["• 으랏차차패키지
• AI 전화
• SMS/MMS"] + + A2 --> A2_SUB["• 114 정보 420만 사업자
• 업종별 분석
• 지역별 분석"] + + A3 --> A3_SUB["• Mi:dm LLM
• 한국어 최적화
• 문화 맥락 이해"] + + A4 --> A4_SUB["• 카카오톡
• 네이버
• 배달앱"] + + A5 --> A5_SUB["• 디지털 전환 지원금
• 인증 솔루션"] + + style ROOT fill:#1976D2,stroke:#0D47A1,color:#fff + style A1 fill:#4CAF50,stroke:#388E3C,color:#fff + style A2 fill:#FF9800,stroke:#F57C00,color:#fff + style A3 fill:#9C27B0,stroke:#7B1FA2,color:#fff + style A4 fill:#F44336,stroke:#C62828,color:#fff + style A5 fill:#FFC107,stroke:#FFA000,color:#000 + style A1_SUB fill:#E8F5E9,stroke:#4CAF50,color:#000 + style A2_SUB fill:#FFF3E0,stroke:#FF9800,color:#000 + style A3_SUB fill:#F3E5F5,stroke:#9C27B0,color:#000 + style A4_SUB fill:#FFEBEE,stroke:#F44336,color:#000 + style A5_SUB fill:#FFFDE7,stroke:#FFC107,color:#000 diff --git a/define/charts/chart14_서비스_가치_제안_구조.mmd b/define/charts/chart14_서비스_가치_제안_구조.mmd new file mode 100644 index 0000000..7bb65a3 --- /dev/null +++ b/define/charts/chart14_서비스_가치_제안_구조.mmd @@ -0,0 +1,39 @@ +graph TB + T1[기술 기반: KT Mi:dm LLM] + T2[기술 기반: 통신 인프라] + T3[기술 기반: 빅데이터 분석] + + F1[핵심 기능: Zero-Click Marketing] + F2[핵심 기능: AI 이벤트 자동 생성] + F3[핵심 기능: 멀티채널 자동 발송] + F4[핵심 기능: 성과 분석 리포트] + + V1[사업 가치: 소상공인 매출 15-30% 증가] + V2[사업 가치: KT 연 480억 원 매출] + V3[사업 가치: 사회적 디지털 격차 해소] + + T1 --> F1 + T1 --> F2 + T2 --> F3 + T3 --> F4 + + F1 --> V1 + F2 --> V1 + F3 --> V1 + F4 --> V1 + + V1 --> V2 + V1 --> V3 + + style T1 fill:#9E9E9E,stroke:#616161,color:#fff + style T2 fill:#9E9E9E,stroke:#616161,color:#fff + style T3 fill:#9E9E9E,stroke:#616161,color:#fff + + style F1 fill:#64B5F6,stroke:#1976D2,color:#fff + style F2 fill:#64B5F6,stroke:#1976D2,color:#fff + style F3 fill:#64B5F6,stroke:#1976D2,color:#fff + style F4 fill:#64B5F6,stroke:#1976D2,color:#fff + + style V1 fill:#4CAF50,stroke:#388E3C,color:#fff + style V2 fill:#2196F3,stroke:#1976D2,color:#fff + style V3 fill:#9C27B0,stroke:#7B1FA2,color:#fff diff --git a/define/charts/차트변환가이드.md b/define/charts/차트변환가이드.md new file mode 100644 index 0000000..95201cd --- /dev/null +++ b/define/charts/차트변환가이드.md @@ -0,0 +1,148 @@ +# 🎨 시장조사 차트 이미지 변환 완료 가이드 + +## ✅ 생성된 파일 목록 + +총 **14개의 Mermaid 차트 파일** (.mmd)이 생성되었습니다: + +``` +define/charts/ +├── chart01_소상공인_업종별_분포.mmd +├── chart02_1차_타겟_세그먼트_규모_비교.mmd +├── chart03_디지털_전환_현황.mmd +├── chart04_소상공인_주요_스트레스_요인.mmd +├── chart05_카카오톡_채널_마케팅_효과.mmd +├── chart06_마케팅_자동화_시장_성장_전망.mmd +├── chart07_경쟁_우위_비교_매트릭스.mmd +├── chart08_AI_자동화_도입_효과.mmd +├── chart09_KT_서비스_단계별_성장_전략.mmd +├── chart10_ROI_분석_연간_매출_전망.mmd +├── chart11_Pain_Point_해결_맵핑.mmd +├── chart12_타겟_고객_페르소나_분포.mmd +├── chart13_KT_차별화_포인트.mmd +└── chart14_서비스_가치_제안_구조.mmd +``` + +## 🚀 빠른 변환 방법 (5분 완성) + +### 방법 1: Mermaid Live Editor (가장 쉬움) ⭐ + +1. **https://mermaid.live/** 접속 +2. 각 `.mmd` 파일을 메모장으로 열기 +3. 내용 전체 복사 (Ctrl+A → Ctrl+C) +4. Mermaid Live Editor 왼쪽 창에 붙여넣기 (Ctrl+V) +5. 오른쪽에서 차트 미리보기 확인 +6. 상단 **Actions** → **Export PNG** 클릭 +7. 파일명을 동일하게 `chartXX_이름.png`로 저장 +8. 14개 차트 모두 반복 + +### 방법 2: VS Code Extension + +VS Code가 있다면: + +1. **Markdown Preview Mermaid Support** 확장 설치 +2. `.mmd` 파일을 `.md`로 임시 변경 +3. 파일 내용 전후에 ` ```mermaid ` 태그 추가 +4. 미리보기에서 우클릭 → 이미지 저장 + +### 방법 3: 온라인 일괄 변환 + +- **Kroki**: https://kroki.io/ +- 각 .mmd 파일 업로드 → PNG/SVG 다운로드 + +## 📏 추천 이미지 설정 + +### PNG 변환 시 +- **해상도**: 1920x1080 이상 +- **배경**: 투명 (Transparent) 또는 흰색 +- **포맷**: PNG (프레젠테이션용) + +### SVG 변환 시 +- **용도**: 인쇄물, 확대 필요 시 +- **장점**: 무한 확대 가능, 파일 크기 작음 + +## 🎯 각 차트별 추천 용도 + +| 차트 번호 | 차트 이름 | 활용 시나리오 | +|---------|---------|------------| +| 01 | 업종별 분포 | 시장 규모 설명, 타겟 정의 | +| 02 | 타겟 세그먼트 | 1/2/3차 타겟 전략 발표 | +| 03 | 디지털 전환 현황 | 시장 기회 강조 | +| 04 | 스트레스 요인 | Pain Point 설명 | +| 05 | 카카오톡 효과 | 핵심 채널 정당화 | +| 06 | 시장 성장 전망 | 시장 타이밍 증명 | +| 07 | 경쟁 포지셔닝 | 차별화 전략 시각화 | +| 08 | 도입 효과 | ROI 설득 | +| 09 | 성장 전략 | 로드맵 공유 | +| 10 | 매출 전망 | 사업성 검증 | +| 11 | Pain Point 해결 | 솔루션 적합성 | +| 12 | 페르소나 분포 | 타겟 고객 집중도 | +| 13 | KT 차별화 | 경쟁 우위 강조 | +| 14 | 가치 제안 | 전체 사업 논리 | + +## 🎨 프레젠테이션 조합 추천 + +### 경영진 보고용 (5개) +- chart01 (시장 규모) +- chart06 (시장 성장) +- chart10 (매출 전망) +- chart13 (KT 강점) +- chart14 (가치 제안) + +### 기획 회의용 (6개) +- chart02 (타겟 세그먼트) +- chart04 (Pain Point) +- chart07 (경쟁 분석) +- chart09 (로드맵) +- chart11 (솔루션 매핑) +- chart13 (차별화) + +### 고객 제안용 (4개) +- chart05 (카카오톡 효과) +- chart08 (도입 효과) +- chart11 (Pain Point 해결) +- chart14 (가치 제안) + +### 투자 유치용 (5개) +- chart01 (시장 규모) +- chart06 (시장 성장) +- chart10 (매출 전망) +- chart13 (KT 강점) +- chart14 (사업 가치) + +## 💡 색상 테마 정보 + +각 차트는 다음 색상 체계를 사용합니다: + +- **파란색 계열** (#2196F3): 메인, 통신 인프라 +- **초록색 계열** (#4CAF50): 성장, 긍정적 효과 +- **주황색 계열** (#FF9800): 데이터, 중요 정보 +- **보라색 계열** (#9C27B0): AI 기술, 혁신 +- **빨간색 계열** (#F44336): Pain Point, 문제점 +- **노란색 계열** (#FFC107): 정부 지원, 특별 항목 + +## ❓ 문제 해결 + +### 한글이 깨질 때 +- Mermaid Live Editor 사용 (한글 완벽 지원) +- 파일을 UTF-8로 저장했는지 확인 + +### 차트가 너무 작게 나올 때 +- Mermaid Live Editor에서 확대 후 Export +- PNG 해상도를 2000x1500 이상으로 설정 + +### 색상을 변경하고 싶을 때 +- `.mmd` 파일 내 `style` 부분의 `fill` 값 수정 +- 예: `fill:#4CAF50` → `fill:#FF5722` + +## 📚 참고 자료 + +- **Mermaid Live Editor**: https://mermaid.live/ +- **Mermaid 문법 가이드**: https://mermaid.js.org/ +- **색상 코드 참조**: https://www.color-hex.com/ + +--- + +**작업 완료!** 🎉 + +모든 차트 파일이 `define/charts/` 디렉토리에 준비되었습니다. +Mermaid Live Editor를 사용하면 5분 안에 모든 차트를 PNG로 변환할 수 있습니다! diff --git a/define/시장조사-차트.md b/define/시장조사-차트.md index af5c64a..d2d8362 100644 --- a/define/시장조사-차트.md +++ b/define/시장조사-차트.md @@ -15,11 +15,14 @@ pie title 한국 소상공인 업종별 분포 (596만 개 업체) ```mermaid graph TB - subgraph "핵심 타겟 시장 규모" - A[전체 소상공인
596만 개] --> B[1차 타겟: 외식업/카페
79만 개 13.3%] - A --> C[2차 타겟: 도소매업
200만 개 33.6%] - A --> D[3차 타겟: 숙박/부동산
85만 개 14.3%] - end + A[전체 소상공인
596만 개] + B[1차 타겟: 외식업/카페
79만 개 - 13.3%] + C[2차 타겟: 도소매업
200만 개 - 33.6%] + D[3차 타겟: 숙박/부동산
85만 개 - 14.3%] + + A --> B + A --> C + A --> D B --> B1[고용인원
140만 명] B --> B2[시장규모
100조 원] @@ -46,10 +49,10 @@ pie title 코로나19 이후 디지털화 증가 현황 ## 4. 소상공인 주요 스트레스 요인 ```mermaid -%%{init: {'theme':'base'}}%% +%%{init: {'theme':'base', 'themeVariables': {'xyChart': {'plotColorPalette': '#2196F3'}}}}%% xychart-beta - title "소상공인 업무별 스트레스 비율 (%)" - x-axis [직원관리, 비용관리, 매장홍보, 기타] + title "소상공인 업무별 스트레스 비율" + x-axis ["직원관리", "비용관리", "매장홍보", "기타"] y-axis "응답 비율 (%)" 0 --> 70 bar [65.1, 50.5, 20.2, 15] ``` @@ -71,52 +74,56 @@ graph LR ## 6. 마케팅 자동화 시장 성장 전망 ```mermaid -%%{init: {'theme':'base'}}%% -xychart-beta - title "한국 마케팅 자동화 플랫폼 시장 규모 (억 달러)" - x-axis [2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033] - y-axis "시장 규모 (억 달러)" 0 --> 10 - line [4.0, 4.4, 4.8, 5.3, 5.8, 6.4, 7.0, 7.7, 8.5, 9.0] +graph LR + A[2024년
4억 달러] --> B[2027년
5.3억 달러] + B --> C[2030년
7억 달러] + C --> D[2033년
9억 달러] + + E[연평균 성장률
10%] + + style A fill:#90CAF9,stroke:#1976D2,color:#000 + style B fill:#64B5F6,stroke:#1976D2,color:#fff + style C fill:#42A5F5,stroke:#1565C0,color:#fff + style D fill:#2196F3,stroke:#0D47A1,color:#fff + style E fill:#FFC107,stroke:#F57C00,color:#000 ``` ## 7. 경쟁 우위 비교 매트릭스 ```mermaid -quadrantChart - title KT AI 이벤트 서비스 포지셔닝 - x-axis 낮은 가격 --> 높은 가격 - y-axis 낮은 통합성 --> 높은 통합성 - quadrant-1 프리미엄 통합 - quadrant-2 가성비 통합 - quadrant-3 저가 단순 - quadrant-4 고가 단순 - HubSpot: [0.8, 0.6] - Mailchimp: [0.6, 0.5] - 카카오톡 채널: [0.2, 0.4] - 가제트AI: [0.4, 0.3] - KT AI 서비스: [0.3, 0.9] +graph TB + subgraph "높은 통합성" + KT[KT AI 서비스
가성비 + 통합] + end + + subgraph "중간 통합성" + HS[HubSpot
고가 + 기능] + MC[Mailchimp
중가 + 이메일] + end + + subgraph "낮은 통합성" + KK[카카오톡 채널
저가 + 단순] + GA[가제트AI
중저가 + 콘텐츠] + end + + style KT fill:#4CAF50,stroke:#388E3C,color:#fff + style HS fill:#9E9E9E,stroke:#616161,color:#fff + style MC fill:#9E9E9E,stroke:#616161,color:#fff + style KK fill:#BDBDBD,stroke:#757575,color:#000 + style GA fill:#BDBDBD,stroke:#757575,color:#000 ``` ## 8. AI 자동화 도입 효과 ```mermaid -graph TD - subgraph "도입 전" - A1[홍보 시간
주당 5시간] - A2[매출 기준선
100%] - A3[고객 유지율
기준] - end - - subgraph "AI 자동화 도입 후" - B1[홍보 시간
60% 단축
→ 2시간] - B2[매출 증가
15-30%
→ 115-130%] - B3[단골 고객
30% 증가] - end - - A1 -.->|자동화| B1 - A2 -.->|프로모션| B2 - A3 -.->|재방문 유도| B3 +graph LR + A1[도입 전
홍보 시간 주당 5시간] -->|60% 단축| B1[도입 후
주당 2시간] + A2[도입 전
매출 100%] -->|15-30% 증가| B2[도입 후
매출 115-130%] + A3[도입 전
고객 유지율 기준] -->|30% 증가| B3[도입 후
단골 고객 증가] + style A1 fill:#E0E0E0,stroke:#9E9E9E,color:#000 + style A2 fill:#E0E0E0,stroke:#9E9E9E,color:#000 + style A3 fill:#E0E0E0,stroke:#9E9E9E,color:#000 style B1 fill:#4CAF50,stroke:#388E3C,color:#fff style B2 fill:#4CAF50,stroke:#388E3C,color:#fff style B3 fill:#4CAF50,stroke:#388E3C,color:#fff @@ -125,60 +132,40 @@ graph TD ## 9. KT 서비스 단계별 성장 전략 ```mermaid -timeline - title KT AI 이벤트 서비스 단계별 전략 - section Phase 1 (6개월) - MVP 출시 : 외식업/카페 1만 개 - : 월 9,900~19,800원 - : 카카오톡 메시지 자동발송 - section Phase 2 (12개월) - 기능 확장 : 소매/뷰티 업종 확대 - : 5만 개 업체 - : AI 이미지 생성 - : 멀티채널 발송 - section Phase 3 (18-24개월) - 생태계 구축 : 전 업종 20만 개 - : AI 어시스턴트 - : 업종별 커뮤니티 - : 파트너십 확장 +graph LR + P1[Phase 1 - 6개월
MVP 출시
외식업/카페 1만 개
월 9,900-19,800원] --> P2[Phase 2 - 12개월
기능 확장
소매/뷰티 확대
5만 개 업체
AI 이미지 생성] + P2 --> P3[Phase 3 - 18-24개월
생태계 구축
전 업종 20만 개
AI 어시스턴트
파트너십 확장] + + style P1 fill:#90CAF9,stroke:#1976D2,color:#000 + style P2 fill:#42A5F5,stroke:#1565C0,color:#fff + style P3 fill:#1976D2,stroke:#0D47A1,color:#fff ``` ## 10. ROI 분석 - 연간 매출 전망 ```mermaid -%%{init: {'theme':'base'}}%% -xychart-beta - title "KT 예상 매출 (억 원) - 가입자 성장 시나리오" - x-axis [Phase1-6M, Phase2-12M, Phase3-24M] - y-axis "연간 매출 (억 원)" 0 --> 600 - bar [24, 120, 480] +graph TB + P1[Phase 1 - 6개월
연간 매출 24억 원
가입자 1만 개] + P2[Phase 2 - 12개월
연간 매출 120억 원
가입자 5만 개] + P3[Phase 3 - 24개월
연간 매출 480억 원
가입자 20만 개] + + P1 --> P2 + P2 --> P3 + + style P1 fill:#81C784,stroke:#388E3C,color:#000 + style P2 fill:#4CAF50,stroke:#2E7D32,color:#fff + style P3 fill:#2E7D32,stroke:#1B5E20,color:#fff ``` ## 11. Pain Point 해결 맵핑 ```mermaid graph LR - subgraph "소상공인 Pain Points" - P1[시간 부족] - P2[전문지식 부족] - P3[높은 광고비] - P4[효과 측정 어려움] - P5[일관성 부족] - end - - subgraph "AI 자동화 솔루션" - S1[원클릭
자동화] - S2[AI 템플릿
추천] - S3[무료/저가
메시지] - S4[자동 리포트
분석] - S5[정기 발송
스케줄링] - end - - P1 --> S1 - P2 --> S2 - P3 --> S3 - P4 --> S4 - P5 --> S5 + P1[Pain Point 1
시간 부족] --> S1[Solution
원클릭 자동화] + P2[Pain Point 2
전문지식 부족] --> S2[Solution
AI 템플릿 추천] + P3[Pain Point 3
높은 광고비] --> S3[Solution
무료/저가 메시지] + P4[Pain Point 4
효과 측정 어려움] --> S4[Solution
자동 리포트 분석] + P5[Pain Point 5
일관성 부족] --> S5[Solution
정기 발송 스케줄링] style P1 fill:#F44336,stroke:#C62828,color:#fff style P2 fill:#F44336,stroke:#C62828,color:#fff @@ -205,51 +192,54 @@ pie title 소상공인 연령대 분포 ## 13. KT 차별화 포인트 (강점 분석) ```mermaid -mindmap - root((KT AI
이벤트 서비스)) - 통신 인프라 - 으랏차차패키지 - AI 전화 - SMS/MMS - 데이터 자산 - 114 정보
420만 사업자 - 업종별 분석 - 지역별 분석 - AI 기술 - Mi:dm LLM - 한국어 최적화 - 문화 맥락 이해 - 생태계 통합 - 카카오톡 - 네이버 - 배달앱 - 정부 지원 - 디지털 전환
지원금 - 인증 솔루션 +graph TB + ROOT[KT AI 이벤트 서비스
핵심 차별화 포인트] + + ROOT --> A1[1. 통신 인프라] + ROOT --> A2[2. 데이터 자산] + ROOT --> A3[3. AI 기술] + ROOT --> A4[4. 생태계 통합] + ROOT --> A5[5. 정부 지원] + + A1 --> A1_SUB["• 으랏차차패키지
• AI 전화
• SMS/MMS"] + + A2 --> A2_SUB["• 114 정보 420만 사업자
• 업종별 분석
• 지역별 분석"] + + A3 --> A3_SUB["• Mi:dm LLM
• 한국어 최적화
• 문화 맥락 이해"] + + A4 --> A4_SUB["• 카카오톡
• 네이버
• 배달앱"] + + A5 --> A5_SUB["• 디지털 전환 지원금
• 인증 솔루션"] + + style ROOT fill:#1976D2,stroke:#0D47A1,color:#fff + style A1 fill:#4CAF50,stroke:#388E3C,color:#fff + style A2 fill:#FF9800,stroke:#F57C00,color:#fff + style A3 fill:#9C27B0,stroke:#7B1FA2,color:#fff + style A4 fill:#F44336,stroke:#C62828,color:#fff + style A5 fill:#FFC107,stroke:#FFA000,color:#000 + style A1_SUB fill:#E8F5E9,stroke:#4CAF50,color:#000 + style A2_SUB fill:#FFF3E0,stroke:#FF9800,color:#000 + style A3_SUB fill:#F3E5F5,stroke:#9C27B0,color:#000 + style A4_SUB fill:#FFEBEE,stroke:#F44336,color:#000 + style A5_SUB fill:#FFFDE7,stroke:#FFC107,color:#000 ``` ## 14. 서비스 가치 제안 구조 ```mermaid graph TB - subgraph "사업 가치" - V1[소상공인
매출 15-30% 증가] - V2[KT
연 480억 원 매출] - V3[사회적
디지털 격차 해소] - end + T1[기술 기반: KT Mi:dm LLM] + T2[기술 기반: 통신 인프라] + T3[기술 기반: 빅데이터 분석] - subgraph "핵심 기능" - F1[Zero-Click
Marketing] - F2[AI 이벤트
자동 생성] - F3[멀티채널
자동 발송] - F4[성과 분석
리포트] - end + F1[핵심 기능: Zero-Click Marketing] + F2[핵심 기능: AI 이벤트 자동 생성] + F3[핵심 기능: 멀티채널 자동 발송] + F4[핵심 기능: 성과 분석 리포트] - subgraph "기술 기반" - T1[KT Mi:dm
LLM] - T2[통신 인프라] - T3[빅데이터
분석] - end + V1[사업 가치: 소상공인 매출 15-30% 증가] + V2[사업 가치: KT 연 480억 원 매출] + V3[사업 가치: 사회적 디지털 격차 해소] T1 --> F1 T1 --> F2 @@ -264,6 +254,15 @@ graph TB V1 --> V2 V1 --> V3 + style T1 fill:#9E9E9E,stroke:#616161,color:#fff + style T2 fill:#9E9E9E,stroke:#616161,color:#fff + style T3 fill:#9E9E9E,stroke:#616161,color:#fff + + style F1 fill:#64B5F6,stroke:#1976D2,color:#fff + style F2 fill:#64B5F6,stroke:#1976D2,color:#fff + style F3 fill:#64B5F6,stroke:#1976D2,color:#fff + style F4 fill:#64B5F6,stroke:#1976D2,color:#fff + style V1 fill:#4CAF50,stroke:#388E3C,color:#fff style V2 fill:#2196F3,stroke:#1976D2,color:#fff style V3 fill:#9C27B0,stroke:#7B1FA2,color:#fff diff --git a/tools/check-mermaid.ps1 b/tools/check-mermaid.ps1 new file mode 100644 index 0000000..49327a5 --- /dev/null +++ b/tools/check-mermaid.ps1 @@ -0,0 +1,96 @@ +# Mermaid Syntax Checker using Docker Container +# Similar to PlantUML checker - keeps container running for better performance + +param( + [Parameter(Mandatory=$true, Position=0)] + [string]$FilePath +) + +# Check if file exists +if (-not (Test-Path $FilePath)) { + Write-Host "Error: File not found: $FilePath" -ForegroundColor Red + exit 1 +} + +# Get absolute path +$absolutePath = (Resolve-Path $FilePath).Path +$fileName = Split-Path $absolutePath -Leaf + +Write-Host "`nChecking Mermaid syntax for: $fileName" -ForegroundColor Cyan +Write-Host ("=" * 60) -ForegroundColor Gray + +# Check if mermaid container is running +$containerRunning = docker ps --filter "name=mermaid-cli" --format "{{.Names}}" 2>$null + +if (-not $containerRunning) { + Write-Host "Error: Mermaid CLI container is not running." -ForegroundColor Red + Write-Host "Please follow the setup instructions in the Mermaid guide to start the container." -ForegroundColor Yellow + Write-Host "`nQuick setup commands:" -ForegroundColor Cyan + Write-Host "" + Write-Host "# 1. Start container with root privileges (port 48080)" -ForegroundColor Green + Write-Host "docker run -d --rm --name mermaid-cli -u root -p 48080:8080 --entrypoint sh minlag/mermaid-cli:latest -c `"while true;do sleep 3600; done`"" -ForegroundColor White + Write-Host "" + Write-Host "# 2. Install Chromium and dependencies" -ForegroundColor Green + Write-Host "docker exec mermaid-cli sh -c `"apk add --no-cache chromium chromium-chromedriver nss freetype harfbuzz ca-certificates ttf-freefont`"" -ForegroundColor White + Write-Host "" + Write-Host "# 3. Create Puppeteer configuration" -ForegroundColor Green + Write-Host "docker exec mermaid-cli sh -c `"echo '{```"executablePath```": ```"/usr/bin/chromium-browser```", ```"args```": [```"--no-sandbox```", ```"--disable-setuid-sandbox```", ```"--disable-dev-shm-usage```"]}' > /tmp/puppeteer-config.json`"" -ForegroundColor White + Write-Host "" + exit 1 +} + +# Set Puppeteer configuration file path +$puppeteerConfigFile = "/tmp/puppeteer-config.json" + +# Generate unique temp filename +$timestamp = Get-Date -Format "yyyyMMddHHmmss" +$processId = $PID +$tempFile = "/tmp/mermaid_${timestamp}_${processId}.mmd" +$outputFile = "/tmp/mermaid_${timestamp}_${processId}.svg" + +try { + # Copy file to container + Write-Host "Copying file to container..." -ForegroundColor Gray + docker cp "$absolutePath" "mermaid-cli:$tempFile" 2>&1 | Out-Null + + if ($LASTEXITCODE -ne 0) { + Write-Host "Error: Failed to copy file to container" -ForegroundColor Red + exit 1 + } + + # Run syntax check with Puppeteer configuration + Write-Host "Running syntax check..." -ForegroundColor Gray + $output = docker exec mermaid-cli sh -c "cd /home/mermaidcli && node_modules/.bin/mmdc -i '$tempFile' -o '$outputFile' -p '$puppeteerConfigFile' -q" 2>&1 + $exitCode = $LASTEXITCODE + + if ($exitCode -eq 0) { + Write-Host "`nSuccess: Mermaid syntax is valid!" -ForegroundColor Green + } else { + Write-Host "`nError: Mermaid syntax validation failed!" -ForegroundColor Red + Write-Host "`nError details:" -ForegroundColor Red + + # Parse and display error messages + $errorLines = $output -split "`n" + foreach ($line in $errorLines) { + if ($line -match "Error:|Parse error|Expecting|Syntax error") { + Write-Host " $line" -ForegroundColor Red + } elseif ($line -match "line \d+|at line") { + Write-Host " $line" -ForegroundColor Yellow + } elseif ($line.Trim() -ne "") { + Write-Host " $line" -ForegroundColor DarkRed + } + } + + exit 1 + } + +} finally { + # Clean up temp files + Write-Host "`nCleaning up..." -ForegroundColor Gray + docker exec mermaid-cli rm -f "$tempFile" "$outputFile" 2>&1 | Out-Null +} + +Write-Host "`nValidation complete!" -ForegroundColor Cyan + +# Note: Container is kept running for subsequent checks +# To stop: docker stop mermaid-cli && docker rm mermaid-cli \ No newline at end of file diff --git a/tools/extract-charts.sh b/tools/extract-charts.sh new file mode 100644 index 0000000..b31019c --- /dev/null +++ b/tools/extract-charts.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Extract mermaid charts from markdown file + +INPUT_FILE="define/시장조사-차트.md" +OUTPUT_DIR="define/charts" + +echo "Extracting Mermaid charts from: $INPUT_FILE" +echo "Output directory: $OUTPUT_DIR" +echo "" + +# Create output directory +mkdir -p "$OUTPUT_DIR" + +# Counter +chart_num=0 + +# Read file and extract charts +in_mermaid=false +current_chart="" +current_title="" + +while IFS= read -r line || [ -n "$line" ]; do + # Check for section header (## number. title) + if [[ $line =~ ^##[[:space:]]([0-9]+)\.[[:space:]](.+)$ ]]; then + num="${BASH_REMATCH[1]}" + title="${BASH_REMATCH[2]}" + current_title=$(printf "chart%02d_%s" "$num" "${title// /_}") + current_title="${current_title//\//_}" + fi + + # Check for mermaid start + if [[ $line == '```mermaid' ]]; then + in_mermaid=true + current_chart="" + continue + fi + + # Check for mermaid end + if [[ $line == '```' ]] && $in_mermaid; then + # Save chart + if [ -n "$current_title" ]; then + filename="${current_title}.mmd" + echo "$current_chart" > "$OUTPUT_DIR/$filename" + echo " ✓ Saved: $filename" + ((chart_num++)) + fi + in_mermaid=false + current_chart="" + continue + fi + + # Collect chart lines + if $in_mermaid; then + if [ -n "$current_chart" ]; then + current_chart+=$'\n' + fi + current_chart+="$line" + fi +done < "$INPUT_FILE" + +echo "" +echo "✅ Successfully extracted $chart_num charts!" +echo "" +echo "Chart files saved in: $OUTPUT_DIR" diff --git a/tools/extract-mermaid-charts.ps1 b/tools/extract-mermaid-charts.ps1 new file mode 100644 index 0000000..df27271 --- /dev/null +++ b/tools/extract-mermaid-charts.ps1 @@ -0,0 +1,47 @@ +# Mermaid Chart Extractor +# Extracts Mermaid charts from markdown and saves them as individual .mmd files + +$markdownFile = "define/시장조사-차트.md" +$outputDir = "define/charts" + +Write-Host "Extracting Mermaid charts from: $markdownFile" +Write-Host "Output directory: $outputDir`n" + +# Create output directory +if (-not (Test-Path $outputDir)) { + New-Item -ItemType Directory -Path $outputDir | Out-Null +} + +# Read markdown file +$content = Get-Content $markdownFile -Raw -Encoding UTF8 + +# Extract all mermaid blocks with their section headers +$pattern = '## (\d+)\. (.+?)\n\n```mermaid\n(.*?)```' +$matches = [regex]::Matches($content, $pattern, [System.Text.RegularExpressions.RegexOptions]::Singleline) + +Write-Host "Found $($matches.Count) Mermaid charts`n" + +# Save each chart +$count = 0 +foreach ($match in $matches) { + $num = $match.Groups[1].Value + $title = $match.Groups[2].Value + $chartCode = $match.Groups[3].Value + + # Clean filename + $filename = "chart$($num.PadLeft(2,'0'))_$($title.Replace(' ', '_').Replace('/', '_')).mmd" + $filepath = Join-Path $outputDir $filename + + # Write mermaid code + $chartCode.Trim() | Out-File -FilePath $filepath -Encoding UTF8 -NoNewline + + Write-Host " ✓ Saved: $filename" + $count++ +} + +Write-Host "`n✅ Successfully extracted $count charts!" +Write-Host "`nChart files saved in: $outputDir" +Write-Host "`nNext steps:" +Write-Host "1. Use Mermaid Live Editor: https://mermaid.live/" +Write-Host "2. Copy-paste each .mmd file content" +Write-Host "3. Export as PNG or SVG" diff --git a/tools/extract-mermaid-charts.py b/tools/extract-mermaid-charts.py new file mode 100644 index 0000000..85ecab9 --- /dev/null +++ b/tools/extract-mermaid-charts.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +""" +Mermaid Chart Extractor +Extracts Mermaid charts from markdown and saves them as individual .mmd files +""" + +import re +import os +from pathlib import Path + + +def extract_mermaid_charts(markdown_file, output_dir): + """Extract all mermaid code blocks from markdown file""" + + # Read markdown file + with open(markdown_file, 'r', encoding='utf-8') as f: + content = f.read() + + # Find all mermaid code blocks + pattern = r'```mermaid\n(.*?)```' + matches = re.findall(pattern, content, re.DOTALL) + + # Create output directory + os.makedirs(output_dir, exist_ok=True) + + # Extract chart titles from markdown headers + title_pattern = r'## (\d+)\. (.+?)\n\n```mermaid' + titles = re.findall(title_pattern, content, re.DOTALL) + + print(f"Found {len(matches)} Mermaid charts") + + # Save each chart as separate .mmd file + for i, (chart_code, (num, title)) in enumerate(zip(matches, titles), 1): + # Clean filename + filename = f"chart{num:02d}_{title.replace(' ', '_').replace('/', '_')}.mmd" + filepath = os.path.join(output_dir, filename) + + # Write mermaid code + with open(filepath, 'w', encoding='utf-8') as f: + f.write(chart_code.strip()) + + print(f" ✓ Saved: {filename}") + + return len(matches) + + +if __name__ == "__main__": + # Configuration + markdown_file = "define/시장조사-차트.md" + output_dir = "define/charts" + + print(f"Extracting Mermaid charts from: {markdown_file}") + print(f"Output directory: {output_dir}\n") + + count = extract_mermaid_charts(markdown_file, output_dir) + + print(f"\n✅ Successfully extracted {count} charts!") + print(f"\nNext steps:") + print(f"1. Use Mermaid Live Editor: https://mermaid.live/") + print(f"2. Copy-paste each .mmd file content") + print(f"3. Export as PNG or SVG")