📋 워크플로우 개요
Input
음성 녹음 파일
(MP3, WAV)
Process
AI 분석 & 변환
(Gemini + Claude)
Output
견적서 PPTX 파일
(자동 생성)
🔄 상세 프로세스 (4단계)
음성 데이터 분석 및 데이터 구조화
Gemini 1.5 Pro 활용
📥 Input
- • 음성 파일 (MP3, WAV 등)
- • 기존 견적서 양식 샘플
⚙️ Process
- • 대화 내용을 텍스트로 변환 (STT)
- • 맥락 파악 및 규칙 정리
📤 Output
// Structured Data (JSON)
{
"customer": "A사",
"items": [...],
"total_price": "..."
}
웹 기반 중간 검토 및 데이터 보정
Claude Web Page Skill
⚙️ Process
- 1 추출된 데이터를 테이블 형태로 표시
- 2 사용자가 오인식된 항목을 직접 수정
- 3 수정 사항 즉시 JSON 데이터에 반영
✨ Key Feature
확정 버튼을 누르면 PPTX 생성 스크립트로 데이터가 전달됩니다.
PPTX 생성 로직 실행
Claude Code Skill
⚙️ Process
-
1
python-pptx라이브러리 활용 - 2 템플릿 슬라이드에 데이터 매핑
- 3 코드 자동 작성 및 실행
📐 레이아웃 자동 배치
OUTPUT
최종 견적서 파일 (.pptx)
최종 산출물 피드백 및 저장
Review & Iteration
📋 프로세스
- ✓ 생성된 PPTX 파일을 사용자에게 제공
- ✓ 디자인/내용 수정 필요 시 Claude에게 요청
- ✓ 코드 즉시 재수정 가능
💬 수정 요청 예시
"표의 색상을 변경해줘"
"마지막에 안내 문구를 추가해줘"
🛠 주요 기술 스택 및 역할 분담
| 단계 | 담당 AI | 기술 및 도구 | 비고 |
|---|---|---|---|
| 음성 인식 & 추론 | Gemini |
Multimodal Audio Input
|
긴 대화의 맥락 파악에 최적 |
| 데이터 구조화 | Gemini / Claude |
JSON Schema 추출
|
비정형 → 정형 데이터 변환 |
| UI/UX 구성 | Claude |
React / HTML/JS
|
사용자 데이터 확인 인터페이스 |
| 문서 생성 | Claude |
Python (python-pptx)
|
실제 파일 바이너리 생성 |
💡 성공적인 자동화를 위한 팁
프롬프트 엔지니어링 (Few-shot)
Gemini에게 음성을 넘길 때, "이전 견적서 사례" 2~3개를 함께 예시로 주면 추출 정확도가 대폭 향상됩니다.
핵심: 예시 기반 학습으로 정확도 향상
템플릿 고정
PPTX의 배경 디자인이나 로고는 미리 만든 template.pptx 파일을 활용하고, AI는 값만 채우도록 설정
핵심: 디자인 품질 유지에 유리
예외 처리
대화 중 불확실한 내용은 Unconfirmed 플래그를 달아 웹 페이지에서 강조 표시되도록 설계
핵심: 불확실성 명시적 관리
🔧 Claude Code Skills 기반 구현
음성 → 텍스트 변환 이후 PPTX 생성까지 Claude Code의 Subagent와 Skills를 활용한 자동화 파이프라인
🏗️ Skills 아키텍처
text-analyzer-skill
자연어 텍스트 분석 및 PDF 템플릿 구조 매핑
node txt-to-pptx.js
proposal-skill
PDF 기획서 분석 및 PPT 기획서 자동 생성
npm run create-proposal
pptx-skill
HTML 슬라이드를 PowerPoint 파일로 변환
node html2pptx.js
📊 PPT Team Agent 워크플로우
Input
source/*.txt
Parser
텍스트 파싱
Analyzer
섹션 인식
Mapper
템플릿 매핑
Output
PPTX 생성
📁 디렉터리 구조
flow-chart/ ├── source/ # TXT 입력 파일 ├── pptx/ # PPTX 출력 ├── templates/ # JSON 템플릿 ├── data/ # 샘플 데이터 ├── run.js # 통합 실행 └── estimate-pptx-generator.js
⚡ 실행 명령어
npm run ppt
# TXT → PPTX
npm run estimate
# 견적서 생성
npm run template
# 템플릿 기반
📋 SAM ERP 견적서 생성기
생성되는 슬라이드 구성
견적 데이터 구조 (JSON)
{
"company": "(주) 주일기업",
"documentNumber": "ABC123",
"client": {
"name": "회사명",
"site": "현장명",
"contact": "연락처"
},
"items": [
{
"name": "FSSB01(주차장)",
"width": 2530,
"height": 2550,
"materialCost": 1420000,
"laborCost": 510000
}
],
"summary": {
"grandTotal": 93950000
}
}
⚙️ 기술 구현 세부사항
📝 텍스트 파서 (TextParser)
자연어 텍스트의 구조와 내용을 자동 파싱
섹션 인식 패턴:
프로젝트명:
메타데이터 추출
=== 섹션 ===
주요 섹션 구분
1. 항목
번호 목록 인식
🗺️ 템플릿 매퍼 (TemplateMapper)
파싱된 데이터를 PDF 템플릿 구조에 매핑
매핑 대상:
📊 PptxGenJS 라이브러리
JavaScript 기반 PowerPoint 생성
// 색상 코드 (# 없이)
{ color: 'FF0000' }
{ fill: { color: '1e3a5f' } }
// 슬라이드 크기 (16:9)
pres.defineLayout({
name: 'CUSTOM_16x9',
width: 10,
height: 5.625
});
🔄 HTML → PPTX 변환
Playwright + PptxGenJS 조합
HTML 작성 규칙:
🔀 전체 흐름도
음성 녹음
Gemini STT
JSON 데이터
웹 검토
Claude Code
PPTX 완성