From ca14804c9f157396fd3d654773e1e055006d42ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sat, 14 Feb 2026 21:06:19 +0900 Subject: [PATCH] =?UTF-8?q?feat:SAM=20=EB=A7=88=EC=BC=80=ED=8C=85=20?= =?UTF-8?q?=ED=94=84=EB=A0=88=EC=A0=A0=ED=85=8C=EC=9D=B4=EC=85=98=20PPTX?= =?UTF-8?q?=20=EC=A0=9C=EC=9E=91=20(10=EC=9E=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 중소기업 CEO 대상 SAM 도입 필요성 전략 마케팅 자료 - Direct PptxGenJS 방식으로 네이티브 PPTX 생성 - 다크 테마 + 민트 악센트 디자인 시스템 적용 Co-Authored-By: Claude Opus 4.6 --- pptx-output/convert.cjs | 624 ++++++++++++++++++++++++++++ pptx-output/sam-marketing-deck.pptx | Bin 0 -> 364564 bytes 2 files changed, 624 insertions(+) create mode 100644 pptx-output/convert.cjs create mode 100644 pptx-output/sam-marketing-deck.pptx diff --git a/pptx-output/convert.cjs b/pptx-output/convert.cjs new file mode 100644 index 0000000..40980d3 --- /dev/null +++ b/pptx-output/convert.cjs @@ -0,0 +1,624 @@ +const path = require('path'); +module.paths.unshift(path.join(require('os').homedir(), '.claude/skills/pptx-skill/scripts/node_modules')); + +const PptxGenJS = require('pptxgenjs'); + +// ═══════════════════════════════════════════════════════ +// 색상 팔레트 (# 없이!) +// ═══════════════════════════════════════════════════════ +const C = { + dark: '0F1923', + darkBlue: '1A2940', + navy: '162447', + accent: '00D4AA', // 민트 그린 (핵심 강조) + accentDark: '00B894', + gold: 'FFD700', + goldDark: 'F0C800', + orange: 'FF6B35', + red: 'FF4757', + blue: '3742FA', + lightBlue: '70A1FF', + purple: '7C5CFC', + white: 'FFFFFF', + gray: '8B95A5', + lightGray: 'C8D1DC', + softWhite: 'F0F4F8', + cardBg: '1E3350', + cardBg2: '243B55', + green: '26DE81', + greenDark: '20BF6B', +}; + +async function main() { + const pres = new PptxGenJS(); + pres.defineLayout({ name: 'CUSTOM_16x9', width: 10, height: 5.625 }); + pres.layout = 'CUSTOM_16x9'; + + // ═══════════════════════════════════════════════════════ + // SLIDE 1: 표지 — "당신의 회사, 아직도 감(感)으로 경영하십니까?" + // ═══════════════════════════════════════════════════════ + let slide = pres.addSlide(); + // 배경: 다크 그라데이션 느낌 (단색으로 대체) + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + + // 좌측 상단 악센트 라인 + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.accent } }); + + // 좌측 상단 태그 + slide.addShape(pres.ShapeType.roundRect, { x: 0.6, y: 0.5, w: 2.0, h: 0.35, rectRadius: 0.05, fill: { color: C.accent } }); + slide.addText('중소기업 CEO를 위한 제안', { x: 0.6, y: 0.5, w: 2.0, h: 0.35, fontSize: 9, fontFace: 'Malgun Gothic', color: C.dark, bold: true, align: 'center' }); + + // 메인 카피 + slide.addText('당신의 회사,\n아직도 감(感)으로\n경영하십니까?', { + x: 0.6, y: 1.3, w: 5.5, h: 2.2, + fontSize: 32, fontFace: 'Malgun Gothic', color: C.white, bold: true, + lineSpacingMultiple: 1.2, + }); + + // 서브 카피 + slide.addText('직원이 20명인데, 실시간으로 현금 흐름을 파악하고 계십니까?\n매달 세금 마감일에 허둥대지 않으십니까?', { + x: 0.6, y: 3.5, w: 5.5, h: 0.7, + fontSize: 11, fontFace: 'Malgun Gothic', color: C.gray, lineSpacingMultiple: 1.5, + }); + + // 우측 대형 SAM 로고 텍스트 + slide.addText('SAM', { + x: 5.5, y: 0.8, w: 4.2, h: 2.5, + fontSize: 80, fontFace: 'Arial', color: C.accent, bold: true, align: 'center', + }); + slide.addText('Smart Automation Management', { + x: 5.5, y: 2.8, w: 4.2, h: 0.4, + fontSize: 11, fontFace: 'Arial', color: C.lightBlue, align: 'center', + }); + + // 우측 하단 포인트 + slide.addShape(pres.ShapeType.roundRect, { x: 6.0, y: 3.6, w: 3.2, h: 1.2, rectRadius: 0.1, fill: { color: C.cardBg } }); + slide.addText([ + { text: '제조업 특화 ', options: { fontSize: 10, color: C.gray, fontFace: 'Malgun Gothic' } }, + { text: 'ERP/MES 통합 솔루션\n', options: { fontSize: 10, color: C.accent, bold: true, fontFace: 'Malgun Gothic' } }, + { text: 'AI 경영 비서 | 모바일 대시보드 | SaaS', options: { fontSize: 9, color: C.lightGray, fontFace: 'Malgun Gothic' } }, + ], { x: 6.2, y: 3.7, w: 2.8, h: 1.0, lineSpacingMultiple: 1.6 }); + + // 하단 구분선 + slide.addShape(pres.ShapeType.rect, { x: 0.6, y: 5.2, w: 8.8, h: 0.01, fill: { color: '2A3F5F' } }); + slide.addText('SAM | 대표님의 경영 무기', { x: 0.6, y: 5.25, w: 4, h: 0.3, fontSize: 7, color: C.gray, fontFace: 'Malgun Gothic' }); + slide.addText('Confidential', { x: 8.0, y: 5.25, w: 1.5, h: 0.3, fontSize: 7, color: C.red, fontFace: 'Arial', align: 'right' }); + + // ═══════════════════════════════════════════════════════ + // SLIDE 2: 중소기업 CEO의 20가지 고민 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.orange } }); + + // 헤더 + slide.addText('02', { x: 0.5, y: 0.3, w: 0.7, h: 0.5, fontSize: 24, fontFace: 'Arial', color: C.orange, bold: true }); + slide.addText('대표님, 이런 고민 하고 계시죠?', { x: 1.1, y: 0.3, w: 5, h: 0.5, fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + slide.addShape(pres.ShapeType.roundRect, { x: 7.0, y: 0.35, w: 2.5, h: 0.35, rectRadius: 0.05, fill: { color: '3D1F00' } }); + slide.addText('CEO 20대 고민 리스트', { x: 7.0, y: 0.35, w: 2.5, h: 0.35, fontSize: 9, fontFace: 'Malgun Gothic', color: C.orange, align: 'center' }); + + // 고민 카드 4열 5행 + const worries = [ + { icon: '⏰', text: '직원이 몇 시에\n출근하는지 모른다' }, + { icon: '💰', text: '현금 흐름이\n실시간 파악 안 된다' }, + { icon: '📋', text: '세금 마감일마다\n허둥댄다' }, + { icon: '📦', text: '재고가 얼마나\n쌓여있는지 모른다' }, + { icon: '📊', text: '매출은 나는데\n이익이 안 남는다' }, + { icon: '🏗️', text: '현장에서 뭐하는지\n알 수 없다' }, + { icon: '📱', text: '외근 중에도\n회사 상황 확인 불가' }, + { icon: '🔄', text: '직원 퇴사하면\n인수인계가 안 된다' }, + { icon: '📑', text: '견적서 하나 만드는데\n30분 걸린다' }, + { icon: '🔍', text: '미수금이 얼마인지\n파악이 안 된다' }, + { icon: '⚠️', text: '불량이 발생해도\n원인 추적 불가' }, + { icon: '💳', text: '법인카드 사용 내역\n엑셀로 관리한다' }, + { icon: '🏭', text: '생산 진행률을\n실시간 못 본다' }, + { icon: '📈', text: '거래처별 수익성을\n분석 못 한다' }, + { icon: '🗂️', text: '결재 서류가\n산더미처럼 쌓인다' }, + { icon: '🔐', text: '직원이 어떤 데이터를\n봤는지 모른다' }, + { icon: '📞', text: '고객 문의에\n즉답이 안 된다' }, + { icon: '🧮', text: '급여 계산을\n수작업으로 한다' }, + { icon: '🚛', text: '출하 일정 관리가\n엉망이다' }, + { icon: '😰', text: '이 모든 걸\n엑셀로 관리한다' }, + ]; + + const cols = 4, rows = 5; + const cardW = 2.1, cardH = 0.58; + const startX = 0.5, startY = 1.0; + const gapX = 0.15, gapY = 0.08; + + worries.forEach((w, i) => { + const col = i % cols; + const row = Math.floor(i / cols); + const x = startX + col * (cardW + gapX); + const y = startY + row * (cardH + gapY); + + // 마지막 카드는 빨간색 강조 + const isLast = i === worries.length - 1; + const bg = isLast ? '3D1520' : C.cardBg; + const borderColor = isLast ? C.red : '2A3F5F'; + + slide.addShape(pres.ShapeType.roundRect, { + x, y, w: cardW, h: cardH, rectRadius: 0.06, + fill: { color: bg }, line: { color: borderColor, width: 0.5 }, + }); + slide.addText(w.icon, { x: x + 0.08, y: y + 0.05, w: 0.35, h: 0.45, fontSize: 16, align: 'center', valign: 'middle' }); + slide.addText(w.text, { + x: x + 0.4, y: y + 0.05, w: cardW - 0.5, h: 0.48, + fontSize: 7.5, fontFace: 'Malgun Gothic', color: isLast ? C.red : C.lightGray, + lineSpacingMultiple: 1.3, valign: 'middle', bold: isLast, + }); + }); + + // 하단 한줄 카피 + slide.addText('"이 중 5개 이상 해당된다면, 지금 당장 SAM이 필요합니다."', { + x: 0.5, y: 4.85, w: 9, h: 0.4, + fontSize: 12, fontFace: 'Malgun Gothic', color: C.gold, bold: true, align: 'center', + }); + + addFooter(slide, pres, '2 / 10'); + + // ═══════════════════════════════════════════════════════ + // SLIDE 3: SAM은 직원 관리 도구가 아닙니다 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.accent } }); + + // 헤더 + slide.addText('03', { x: 0.5, y: 0.3, w: 0.7, h: 0.5, fontSize: 24, fontFace: 'Arial', color: C.accent, bold: true }); + slide.addText('SAM은 "직원 관리 도구"가 아닙니다.', { x: 1.1, y: 0.3, w: 7, h: 0.5, fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + + // 큰 텍스트 강조 + slide.addText([ + { text: '대표님의 ', options: { fontSize: 28, color: C.lightGray, fontFace: 'Malgun Gothic' } }, + { text: '경영 무기', options: { fontSize: 36, color: C.accent, bold: true, fontFace: 'Malgun Gothic' } }, + { text: '입니다.', options: { fontSize: 28, color: C.lightGray, fontFace: 'Malgun Gothic' } }, + ], { x: 0.6, y: 1.0, w: 9, h: 0.8, align: 'center' }); + + // 전투기 콕핏 메타포 + slide.addShape(pres.ShapeType.roundRect, { x: 0.6, y: 2.0, w: 4.2, h: 2.8, rectRadius: 0.12, fill: { color: C.cardBg }, line: { color: C.accent, width: 1 } }); + slide.addText('SAM 대시보드', { + x: 0.6, y: 2.05, w: 4.2, h: 0.4, + fontSize: 12, fontFace: 'Malgun Gothic', color: C.accent, bold: true, align: 'center', + }); + slide.addText('"전투기 조종석의 HUD처럼\n핵심 지표만 한눈에"', { + x: 0.9, y: 2.45, w: 3.6, h: 0.55, + fontSize: 10, fontFace: 'Malgun Gothic', color: C.gray, align: 'center', lineSpacingMultiple: 1.4, italic: true, + }); + + // HUD 시뮬레이션: 5대 KPI + const kpis = [ + { label: '오늘 매출', value: '₩12.5M', color: C.green, icon: '📈' }, + { label: '미수금 현황', value: '₩4.2M', color: C.red, icon: '⚠️' }, + { label: '생산 진행률', value: '87%', color: C.lightBlue, icon: '🏭' }, + { label: '출근율', value: '95%', color: C.accent, icon: '👥' }, + { label: '이번달 이익률', value: '18.5%', color: C.gold, icon: '💰' }, + ]; + + kpis.forEach((kpi, i) => { + const y = 3.1 + i * 0.38; + slide.addShape(pres.ShapeType.roundRect, { x: 0.9, y, w: 3.6, h: 0.32, rectRadius: 0.04, fill: { color: '15293D' } }); + slide.addText(kpi.icon + ' ' + kpi.label, { x: 1.0, y, w: 2.0, h: 0.32, fontSize: 8.5, fontFace: 'Malgun Gothic', color: C.lightGray, valign: 'middle' }); + slide.addText(kpi.value, { x: 3.4, y, w: 1.0, h: 0.32, fontSize: 10, fontFace: 'Arial', color: kpi.color, bold: true, align: 'right', valign: 'middle' }); + }); + + // 우측: 기존 ERP vs SAM 비교 + slide.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 2.0, w: 4.3, h: 2.8, rectRadius: 0.12, fill: { color: C.cardBg } }); + slide.addText('기존 ERP vs SAM', { + x: 5.2, y: 2.05, w: 4.3, h: 0.4, + fontSize: 12, fontFace: 'Malgun Gothic', color: C.white, bold: true, align: 'center', + }); + + const comparisons = [ + { old: '직원 관리 초점', sam: 'CEO 의사결정 초점', highlight: true }, + { old: '복잡한 테이블/리포트', sam: '신호등 시스템 (직관적)' }, + { old: '데스크톱 전용', sam: '모바일 퍼스트' }, + { old: '수동 데이터 입력', sam: 'AI 자동 입력' }, + { old: '일괄 리포트 (월/주)', sam: '실시간 푸시 알림' }, + { old: '3,000만원+ 초기 비용', sam: '월 50만원 구독' }, + ]; + + // 헤더 행 + slide.addShape(pres.ShapeType.rect, { x: 5.4, y: 2.45, w: 3.9, h: 0.28, fill: { color: '15293D' } }); + slide.addText('기존 ERP', { x: 5.4, y: 2.45, w: 1.95, h: 0.28, fontSize: 8, fontFace: 'Malgun Gothic', color: C.red, bold: true, align: 'center', valign: 'middle' }); + slide.addText('SAM', { x: 7.35, y: 2.45, w: 1.95, h: 0.28, fontSize: 8, fontFace: 'Malgun Gothic', color: C.accent, bold: true, align: 'center', valign: 'middle' }); + + comparisons.forEach((c, i) => { + const y = 2.78 + i * 0.32; + const bg = i % 2 === 0 ? '1B3048' : C.cardBg; + slide.addShape(pres.ShapeType.rect, { x: 5.4, y, w: 3.9, h: 0.3, fill: { color: bg } }); + slide.addText(c.old, { x: 5.4, y, w: 1.95, h: 0.3, fontSize: 7.5, fontFace: 'Malgun Gothic', color: C.lightGray, align: 'center', valign: 'middle' }); + slide.addText(c.sam, { x: 7.35, y, w: 1.95, h: 0.3, fontSize: 7.5, fontFace: 'Malgun Gothic', color: c.highlight ? C.accent : C.white, align: 'center', valign: 'middle', bold: !!c.highlight }); + }); + + addFooter(slide, pres, '3 / 10'); + + // ═══════════════════════════════════════════════════════ + // SLIDE 4: 10초 만에 회사 전체가 보입니다 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.gold } }); + + slide.addText('04', { x: 0.5, y: 0.3, w: 0.7, h: 0.5, fontSize: 24, fontFace: 'Arial', color: C.gold, bold: true }); + slide.addText('10초 만에, 회사 전체가 보입니다', { x: 1.1, y: 0.3, w: 7, h: 0.5, fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + + // 6대 핵심 모듈 카드 + const modules = [ + { icon: '📊', name: '영업/CRM', desc: '현장설명회 → 견적 → 수주\n자동 파이프라인 관리', color: C.accent }, + { icon: '🏭', name: '생산/MES', desc: '작업지시 → 생산실적 → 품질검사\n실시간 진행률 추적', color: C.lightBlue }, + { icon: '💰', name: '재무/회계', desc: '카드/통장 자동 연동\n매출채권/매입채무 실시간', color: C.gold }, + { icon: '👥', name: '인사/근태', desc: '출퇴근 자동 기록\n급여/복리후생 통합 관리', color: C.green }, + { icon: '📦', name: '재고/자재', desc: '실시간 재고 조회\nBOM 자동 전개', color: C.purple }, + { icon: '📋', name: '전자결재', desc: '모바일 결재 승인\n문서 양식 커스터마이징', color: C.orange }, + ]; + + modules.forEach((m, i) => { + const col = i % 3; + const row = Math.floor(i / 3); + const x = 0.5 + col * 3.1; + const y = 1.0 + row * 2.0; + + slide.addShape(pres.ShapeType.roundRect, { x, y, w: 2.8, h: 1.7, rectRadius: 0.1, fill: { color: C.cardBg }, line: { color: m.color, width: 0.8 } }); + // 상단 컬러 바 + slide.addShape(pres.ShapeType.rect, { x: x + 0.01, y: y + 0.01, w: 2.78, h: 0.06, fill: { color: m.color } }); + + slide.addText(m.icon, { x, y: y + 0.15, w: 2.8, h: 0.4, fontSize: 22, align: 'center' }); + slide.addText(m.name, { x, y: y + 0.55, w: 2.8, h: 0.3, fontSize: 13, fontFace: 'Malgun Gothic', color: m.color, bold: true, align: 'center' }); + slide.addText(m.desc, { x: x + 0.15, y: y + 0.9, w: 2.5, h: 0.65, fontSize: 8, fontFace: 'Malgun Gothic', color: C.lightGray, align: 'center', lineSpacingMultiple: 1.4 }); + }); + + // 하단 강조 + slide.addShape(pres.ShapeType.roundRect, { x: 1.5, y: 5.0, w: 7, h: 0.35, rectRadius: 0.05, fill: { color: '142030' }, line: { color: C.gold, width: 0.5 } }); + slide.addText('하나의 시스템에서 영업 → 생산 → 재무 → 인사까지 자동 연계', { + x: 1.5, y: 5.0, w: 7, h: 0.35, fontSize: 10, fontFace: 'Malgun Gothic', color: C.gold, align: 'center', valign: 'middle', bold: true, + }); + + addFooter(slide, pres, '4 / 10'); + + // ═══════════════════════════════════════════════════════ + // SLIDE 5: 제조업에 특화된 자동 견적 엔진 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.purple } }); + + slide.addText('05', { x: 0.5, y: 0.3, w: 0.7, h: 0.5, fontSize: 24, fontFace: 'Arial', color: C.purple, bold: true }); + slide.addText('견적서 30분? SAM은 2분이면 끝납니다', { x: 1.1, y: 0.3, w: 7, h: 0.5, fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + + // 프로세스 플로우 + const flowSteps = [ + { label: '개구부 크기\n입력', sub: 'W × H 입력' }, + { label: 'BOM\n자동 전개', sub: '완제품→부품→원자재' }, + { label: '고객별\n단가 적용', sub: '시계열 단가 자동' }, + { label: '견적서\n자동 생성', sub: 'PDF/PPT 출력' }, + ]; + + flowSteps.forEach((s, i) => { + const x = 0.6 + i * 2.35; + slide.addShape(pres.ShapeType.roundRect, { x, y: 1.0, w: 1.9, h: 1.1, rectRadius: 0.1, fill: { color: C.cardBg }, line: { color: C.purple, width: 0.8 } }); + // 번호 원 + slide.addShape(pres.ShapeType.ellipse, { x: x + 0.7, y: 1.05, w: 0.45, h: 0.45, fill: { color: C.purple } }); + slide.addText(`${i + 1}`, { x: x + 0.7, y: 1.05, w: 0.45, h: 0.45, fontSize: 16, fontFace: 'Arial', color: C.white, bold: true, align: 'center', valign: 'middle' }); + slide.addText(s.label, { x, y: 1.55, w: 1.9, h: 0.35, fontSize: 9, fontFace: 'Malgun Gothic', color: C.white, bold: true, align: 'center', lineSpacingMultiple: 1.2 }); + slide.addText(s.sub, { x, y: 1.85, w: 1.9, h: 0.2, fontSize: 7, fontFace: 'Malgun Gothic', color: C.gray, align: 'center' }); + + // 화살표 (마지막 제외) + if (i < flowSteps.length - 1) { + slide.addText('→', { x: x + 1.95, y: 1.3, w: 0.35, h: 0.4, fontSize: 20, fontFace: 'Arial', color: C.purple, align: 'center', valign: 'middle' }); + } + }); + + // Before/After 비교 + slide.addShape(pres.ShapeType.roundRect, { x: 0.6, y: 2.4, w: 4.2, h: 2.5, rectRadius: 0.1, fill: { color: '2D1520' }, line: { color: C.red, width: 0.8 } }); + slide.addText('BEFORE (기존 방식)', { x: 0.6, y: 2.45, w: 4.2, h: 0.35, fontSize: 11, fontFace: 'Malgun Gothic', color: C.red, bold: true, align: 'center' }); + + const befores = [ + '엑셀 열고 → 품목 찾고 → 수량 계산하고', + '단가표 뒤지고 → 수식 확인하고', + '양식 맞추고 → PDF 출력하고', + '메일 보내고... → 30분+ 소요', + ]; + befores.forEach((b, i) => { + slide.addText('✗ ' + b, { x: 0.8, y: 2.85 + i * 0.38, w: 3.8, h: 0.35, fontSize: 8.5, fontFace: 'Malgun Gothic', color: C.lightGray, lineSpacingMultiple: 1.3 }); + }); + + slide.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 2.4, w: 4.3, h: 2.5, rectRadius: 0.1, fill: { color: '0D2920' }, line: { color: C.green, width: 0.8 } }); + slide.addText('AFTER (SAM)', { x: 5.2, y: 2.45, w: 4.3, h: 0.35, fontSize: 11, fontFace: 'Malgun Gothic', color: C.green, bold: true, align: 'center' }); + + const afters = [ + { text: '개구부 크기만 입력', bold: true }, + { text: 'BOM 자동 전개 + 단가 자동 적용', bold: false }, + { text: '견적서 PDF/PPT 자동 생성', bold: false }, + { text: '2분 완료 → 93% 시간 절약', bold: true }, + ]; + afters.forEach((a, i) => { + slide.addText('✓ ' + a.text, { + x: 5.4, y: 2.85 + i * 0.38, w: 3.9, h: 0.35, + fontSize: 8.5, fontFace: 'Malgun Gothic', color: a.bold ? C.green : C.lightGray, bold: a.bold, + }); + }); + + // 시간 절약 강조 + slide.addShape(pres.ShapeType.roundRect, { x: 5.5, y: 4.35, w: 3.7, h: 0.4, rectRadius: 0.05, fill: { color: C.green } }); + slide.addText('견적 시간 93% 단축 | 30분 → 2분', { x: 5.5, y: 4.35, w: 3.7, h: 0.4, fontSize: 10, fontFace: 'Malgun Gothic', color: C.dark, bold: true, align: 'center', valign: 'middle' }); + + addFooter(slide, pres, '5 / 10'); + + // ═══════════════════════════════════════════════════════ + // SLIDE 6: AI가 24시간 일합니다 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.lightBlue } }); + + slide.addText('06', { x: 0.5, y: 0.3, w: 0.7, h: 0.5, fontSize: 24, fontFace: 'Arial', color: C.lightBlue, bold: true }); + slide.addText('AI가 24시간 대표님 곁에서 일합니다', { x: 1.1, y: 0.3, w: 7, h: 0.5, fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + + // 비용 비교 대형 배너 + slide.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 1.0, w: 9, h: 1.0, rectRadius: 0.1, fill: { color: C.cardBg } }); + slide.addText([ + { text: '경리 1명 채용 ', options: { fontSize: 13, color: C.lightGray, fontFace: 'Malgun Gothic' } }, + { text: '연 3,600만원', options: { fontSize: 15, color: C.red, bold: true, fontFace: 'Malgun Gothic' } }, + { text: ' vs ', options: { fontSize: 13, color: C.gray, fontFace: 'Malgun Gothic' } }, + { text: 'SAM AI 비서 ', options: { fontSize: 13, color: C.lightGray, fontFace: 'Malgun Gothic' } }, + { text: '월 30만원', options: { fontSize: 15, color: C.accent, bold: true, fontFace: 'Malgun Gothic' } }, + { text: ' (1/10 비용)', options: { fontSize: 11, color: C.gold, fontFace: 'Malgun Gothic' } }, + ], { x: 0.5, y: 1.0, w: 9, h: 1.0, align: 'center', valign: 'middle' }); + + // AI 기능 카드 3개 + const aiFeatures = [ + { + icon: '🎙️', title: '음성 → 텍스트', color: C.lightBlue, + items: ['회의 내용 자동 요약', '현장 음성 메모 → 업무일지', '월 520분(8.6시간) 처리'], + }, + { + icon: '📄', title: '문서 자동 분석', color: C.purple, + items: ['계약서/견적서 자동 분류', '핵심 내용 추출 & 요약', '월 300~400페이지 처리'], + }, + { + icon: '🔔', title: '실시간 알림', color: C.orange, + items: ['미수금 경고 자동 발송', '세금 마감 D-Day 알림', '이상 징후 즉시 Push'], + }, + ]; + + aiFeatures.forEach((f, i) => { + const x = 0.5 + i * 3.15; + slide.addShape(pres.ShapeType.roundRect, { x, y: 2.3, w: 2.85, h: 2.6, rectRadius: 0.1, fill: { color: C.cardBg }, line: { color: f.color, width: 0.8 } }); + slide.addShape(pres.ShapeType.rect, { x: x + 0.01, y: 2.31, w: 2.83, h: 0.06, fill: { color: f.color } }); + slide.addText(f.icon, { x, y: 2.45, w: 2.85, h: 0.45, fontSize: 24, align: 'center' }); + slide.addText(f.title, { x, y: 2.9, w: 2.85, h: 0.35, fontSize: 12, fontFace: 'Malgun Gothic', color: f.color, bold: true, align: 'center' }); + f.items.forEach((item, j) => { + slide.addText('✓ ' + item, { x: x + 0.2, y: 3.35 + j * 0.35, w: 2.5, h: 0.3, fontSize: 8.5, fontFace: 'Malgun Gothic', color: C.lightGray }); + }); + }); + + addFooter(slide, pres, '6 / 10'); + + // ═══════════════════════════════════════════════════════ + // SLIDE 7: 직원이 퇴사해도 데이터는 남습니다 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.greenDark } }); + + slide.addText('07', { x: 0.5, y: 0.3, w: 0.7, h: 0.5, fontSize: 24, fontFace: 'Arial', color: C.green, bold: true }); + slide.addText('직원이 퇴사해도, 데이터는 남습니다', { x: 1.1, y: 0.3, w: 7, h: 0.5, fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + + // 좌측: 기존 문제 + slide.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 1.0, w: 4.3, h: 3.8, rectRadius: 0.1, fill: { color: '2D1520' } }); + slide.addText('😰 기존: 퇴사 = 업무 공백', { x: 0.5, y: 1.05, w: 4.3, h: 0.4, fontSize: 12, fontFace: 'Malgun Gothic', color: C.red, bold: true, align: 'center' }); + + const oldProblems = [ + '핵심 담당자가 갑자기 퇴사', + '인수인계 없이 업무 공백 발생', + '거래처 연락처, 단가 정보 소실', + '진행 중인 프로젝트 히스토리 유실', + 'USB/개인 폴더에 있던 자료 삭제', + '신입 교육 기간 3~6개월 소요', + ]; + oldProblems.forEach((p, i) => { + slide.addText('✗ ' + p, { + x: 0.7, y: 1.55 + i * 0.45, w: 3.9, h: 0.4, + fontSize: 9.5, fontFace: 'Malgun Gothic', color: C.lightGray, + }); + }); + + // 아래 금액 + slide.addShape(pres.ShapeType.roundRect, { x: 0.8, y: 4.25, w: 3.7, h: 0.4, rectRadius: 0.05, fill: { color: C.red } }); + slide.addText('평균 손실 비용: 연 2,000만원+', { x: 0.8, y: 4.25, w: 3.7, h: 0.4, fontSize: 10, fontFace: 'Malgun Gothic', color: C.white, bold: true, align: 'center', valign: 'middle' }); + + // 우측: SAM 해결 + slide.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.0, w: 4.3, h: 3.8, rectRadius: 0.1, fill: { color: '0D2920' } }); + slide.addText('✅ SAM: 자동 인수인계 시스템', { x: 5.2, y: 1.05, w: 4.3, h: 0.4, fontSize: 12, fontFace: 'Malgun Gothic', color: C.green, bold: true, align: 'center' }); + + const samSolutions = [ + { text: '모든 업무 기록 중앙 저장', bold: false }, + { text: '감사 로그로 누가/언제/무엇 추적', bold: false }, + { text: '거래처/단가/히스토리 시스템 보관', bold: true }, + { text: '권한 체계로 데이터 유출 방지', bold: false }, + { text: 'Before/After 스냅샷 완전 보관', bold: false }, + { text: '신입 교육 1주일이면 충분', bold: true }, + ]; + samSolutions.forEach((s, i) => { + slide.addText('✓ ' + s.text, { + x: 5.4, y: 1.55 + i * 0.45, w: 3.9, h: 0.4, + fontSize: 9.5, fontFace: 'Malgun Gothic', color: s.bold ? C.green : C.lightGray, bold: s.bold, + }); + }); + + slide.addShape(pres.ShapeType.roundRect, { x: 5.5, y: 4.25, w: 3.7, h: 0.4, rectRadius: 0.05, fill: { color: C.green } }); + slide.addText('업무 연속성 100% 보장', { x: 5.5, y: 4.25, w: 3.7, h: 0.4, fontSize: 10, fontFace: 'Malgun Gothic', color: C.dark, bold: true, align: 'center', valign: 'middle' }); + + addFooter(slide, pres, '7 / 10'); + + // ═══════════════════════════════════════════════════════ + // SLIDE 8: 비용 비교 — 투자 대비 효과 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.gold } }); + + slide.addText('08', { x: 0.5, y: 0.3, w: 0.7, h: 0.5, fontSize: 24, fontFace: 'Arial', color: C.gold, bold: true }); + slide.addText('투자 대비 효과: 숫자로 증명합니다', { x: 1.1, y: 0.3, w: 7, h: 0.5, fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + + // 비용 비교 테이블 + slide.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 1.0, w: 5.5, h: 3.8, rectRadius: 0.1, fill: { color: C.cardBg } }); + + // 테이블 헤더 + slide.addShape(pres.ShapeType.rect, { x: 0.55, y: 1.05, w: 5.4, h: 0.4, fill: { color: '15293D' } }); + slide.addText('항목', { x: 0.55, y: 1.05, w: 2.0, h: 0.4, fontSize: 9, fontFace: 'Malgun Gothic', color: C.gray, align: 'center', valign: 'middle', bold: true }); + slide.addText('기존 방식', { x: 2.55, y: 1.05, w: 1.7, h: 0.4, fontSize: 9, fontFace: 'Malgun Gothic', color: C.red, align: 'center', valign: 'middle', bold: true }); + slide.addText('SAM', { x: 4.25, y: 1.05, w: 1.7, h: 0.4, fontSize: 9, fontFace: 'Malgun Gothic', color: C.accent, align: 'center', valign: 'middle', bold: true }); + + const costItems = [ + { item: 'ERP 도입 초기 비용', old: '3,000만원+', sam: '2,000만원', highlight: false }, + { item: '월 유지보수 비용', old: '100~200만원', sam: '50만원', highlight: false }, + { item: '커스터마이징 비용', old: '500~1,000만원', sam: '0원 (자체 설정)', highlight: true }, + { item: '직원 교육 기간', old: '3~6개월', sam: '1주일', highlight: true }, + { item: '보고서 작성 시간', old: '주 5시간+', sam: '0분 (자동)', highlight: true }, + { item: '견적서 작성 시간', old: '건당 30분', sam: '건당 2분', highlight: false }, + { item: '데이터 추적성', old: '없음', sam: '완전 감사 로그', highlight: false }, + { item: '모바일 지원', old: '불가', sam: '완전 지원', highlight: false }, + ]; + + costItems.forEach((c, i) => { + const y = 1.5 + i * 0.38; + const bg = i % 2 === 0 ? '1B3048' : C.cardBg; + slide.addShape(pres.ShapeType.rect, { x: 0.55, y, w: 5.4, h: 0.35, fill: { color: bg } }); + slide.addText(c.item, { x: 0.55, y, w: 2.0, h: 0.35, fontSize: 8.5, fontFace: 'Malgun Gothic', color: C.lightGray, align: 'center', valign: 'middle' }); + slide.addText(c.old, { x: 2.55, y, w: 1.7, h: 0.35, fontSize: 8.5, fontFace: 'Malgun Gothic', color: C.red, align: 'center', valign: 'middle' }); + slide.addText(c.sam, { x: 4.25, y, w: 1.7, h: 0.35, fontSize: 8.5, fontFace: 'Malgun Gothic', color: c.highlight ? C.accent : C.green, align: 'center', valign: 'middle', bold: c.highlight }); + }); + + // 우측: ROI 카드 + slide.addShape(pres.ShapeType.roundRect, { x: 6.3, y: 1.0, w: 3.3, h: 3.8, rectRadius: 0.1, fill: { color: C.cardBg }, line: { color: C.gold, width: 1 } }); + slide.addText('💰', { x: 6.3, y: 1.15, w: 3.3, h: 0.5, fontSize: 28, align: 'center' }); + slide.addText('연간 절감 효과', { x: 6.3, y: 1.65, w: 3.3, h: 0.35, fontSize: 13, fontFace: 'Malgun Gothic', color: C.gold, bold: true, align: 'center' }); + + const savings = [ + { label: '보고서 자동화', amount: '1,200만원/년' }, + { label: '견적 시간 절약', amount: '480만원/년' }, + { label: '인수인계 비용 절감', amount: '500만원/년' }, + { label: '데이터 오류 방지', amount: '300만원/년' }, + ]; + savings.forEach((s, i) => { + slide.addText(s.label, { x: 6.5, y: 2.2 + i * 0.45, w: 1.8, h: 0.35, fontSize: 9, fontFace: 'Malgun Gothic', color: C.lightGray }); + slide.addText(s.amount, { x: 8.0, y: 2.2 + i * 0.45, w: 1.4, h: 0.35, fontSize: 9, fontFace: 'Arial', color: C.green, bold: true, align: 'right' }); + }); + + // 합계 + slide.addShape(pres.ShapeType.rect, { x: 6.5, y: 4.05, w: 2.9, h: 0.01, fill: { color: C.gold } }); + slide.addText('합계', { x: 6.5, y: 4.1, w: 1.2, h: 0.4, fontSize: 11, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + slide.addText('2,480만원/년', { x: 7.5, y: 4.1, w: 1.9, h: 0.4, fontSize: 16, fontFace: 'Arial', color: C.gold, bold: true, align: 'right' }); + + // ROI 배지 + slide.addShape(pres.ShapeType.roundRect, { x: 6.6, y: 4.5, w: 2.7, h: 0.3, rectRadius: 0.05, fill: { color: C.gold } }); + slide.addText('투자 회수 기간: 약 10개월', { x: 6.6, y: 4.5, w: 2.7, h: 0.3, fontSize: 9, fontFace: 'Malgun Gothic', color: C.dark, bold: true, align: 'center', valign: 'middle' }); + + addFooter(slide, pres, '8 / 10'); + + // ═══════════════════════════════════════════════════════ + // SLIDE 9: 고객 신뢰 — 이미 검증된 시스템 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.08, h: 5.625, fill: { color: C.accent } }); + + slide.addText('09', { x: 0.5, y: 0.3, w: 0.7, h: 0.5, fontSize: 24, fontFace: 'Arial', color: C.accent, bold: true }); + slide.addText('왜 SAM이어야 하는가?', { x: 1.1, y: 0.3, w: 5, h: 0.5, fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true }); + + // 5대 차별점 + const reasons = [ + { num: '01', title: '제조업 전문가가 만든 시스템', desc: '20년 제조현장 경험이 녹아든 업무 프로세스.\n타사 범용 ERP와는 차원이 다릅니다.', color: C.accent }, + { num: '02', title: 'Multi-tenant SaaS 아키텍처', desc: '하나의 시스템으로 여러 사업장 통합 관리.\n사업 확장 시 추가 비용 최소화.', color: C.lightBlue }, + { num: '03', title: '바로빌/카카오톡 자동 연동', desc: '전자세금계산서 자동 발행, 카카오톡 알림.\n수작업 제로, 실수 제로.', color: C.gold }, + { num: '04', title: '3단계 보안 & 감사 시스템', desc: '역할별 권한 제어 + 전체 작업 감사 로그.\n13개월간 모든 변경 이력 완전 보관.', color: C.purple }, + { num: '05', title: '지속적 업데이트 & 지원', desc: '클라우드 SaaS이므로 항상 최신 버전.\n업데이트 비용 0원, 중단 시간 0분.', color: C.green }, + ]; + + reasons.forEach((r, i) => { + const y = 1.0 + i * 0.85; + slide.addShape(pres.ShapeType.roundRect, { x: 0.5, y, w: 9, h: 0.72, rectRadius: 0.08, fill: { color: C.cardBg } }); + + // 좌측 번호 + slide.addShape(pres.ShapeType.roundRect, { x: 0.6, y: y + 0.12, w: 0.65, h: 0.48, rectRadius: 0.06, fill: { color: r.color } }); + slide.addText(r.num, { x: 0.6, y: y + 0.12, w: 0.65, h: 0.48, fontSize: 14, fontFace: 'Arial', color: C.dark, bold: true, align: 'center', valign: 'middle' }); + + // 제목 + 설명 + slide.addText(r.title, { x: 1.45, y: y + 0.06, w: 3.5, h: 0.3, fontSize: 12, fontFace: 'Malgun Gothic', color: r.color, bold: true }); + slide.addText(r.desc, { x: 1.45, y: y + 0.32, w: 7.8, h: 0.35, fontSize: 8, fontFace: 'Malgun Gothic', color: C.lightGray, lineSpacingMultiple: 1.3 }); + }); + + addFooter(slide, pres, '9 / 10'); + + // ═══════════════════════════════════════════════════════ + // SLIDE 10: CTA — 지금 바로 시작하세요 + // ═══════════════════════════════════════════════════════ + slide = pres.addSlide(); + slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } }); + + // 중앙 대형 텍스트 + slide.addText('SAM', { + x: 0, y: 0.6, w: 10, h: 1.0, + fontSize: 60, fontFace: 'Arial', color: C.accent, bold: true, align: 'center', + }); + slide.addText('대표님의 경영을 바꿀 시간입니다.', { + x: 0, y: 1.5, w: 10, h: 0.5, + fontSize: 20, fontFace: 'Malgun Gothic', color: C.white, bold: true, align: 'center', + }); + + // 3단계 CTA + const ctaSteps = [ + { step: 'STEP 1', title: '무료 경영 진단', desc: '귀사 맞춤 대시보드\n미리보기 제공', icon: '🔍', color: C.accent }, + { step: 'STEP 2', title: '맞춤 데모 시연', desc: '실제 업무 데이터로\n시연해 드립니다', icon: '💻', color: C.lightBlue }, + { step: 'STEP 3', title: '3일 무료 체험', desc: '결제 없이 먼저\n사용해 보세요', icon: '🚀', color: C.gold }, + ]; + + ctaSteps.forEach((c, i) => { + const x = 0.8 + i * 3.1; + slide.addShape(pres.ShapeType.roundRect, { x, y: 2.3, w: 2.7, h: 2.0, rectRadius: 0.12, fill: { color: C.cardBg }, line: { color: c.color, width: 1 } }); + slide.addShape(pres.ShapeType.roundRect, { x: x + 0.8, y: 2.15, w: 1.1, h: 0.35, rectRadius: 0.05, fill: { color: c.color } }); + slide.addText(c.step, { x: x + 0.8, y: 2.15, w: 1.1, h: 0.35, fontSize: 9, fontFace: 'Arial', color: C.dark, bold: true, align: 'center', valign: 'middle' }); + + slide.addText(c.icon, { x, y: 2.55, w: 2.7, h: 0.45, fontSize: 26, align: 'center' }); + slide.addText(c.title, { x, y: 3.0, w: 2.7, h: 0.35, fontSize: 13, fontFace: 'Malgun Gothic', color: c.color, bold: true, align: 'center' }); + slide.addText(c.desc, { x, y: 3.4, w: 2.7, h: 0.6, fontSize: 9, fontFace: 'Malgun Gothic', color: C.lightGray, align: 'center', lineSpacingMultiple: 1.4 }); + + // 화살표 (마지막 제외) + if (i < ctaSteps.length - 1) { + slide.addText('→', { x: x + 2.75, y: 2.9, w: 0.3, h: 0.5, fontSize: 20, fontFace: 'Arial', color: C.gray, align: 'center', valign: 'middle' }); + } + }); + + // 하단 CTA 버튼 스타일 + slide.addShape(pres.ShapeType.roundRect, { x: 2.5, y: 4.55, w: 5, h: 0.55, rectRadius: 0.08, fill: { color: C.accent } }); + slide.addText('지금 무료 경영 진단 신청하기', { + x: 2.5, y: 4.55, w: 5, h: 0.55, + fontSize: 15, fontFace: 'Malgun Gothic', color: C.dark, bold: true, align: 'center', valign: 'middle', + }); + + // 하단 연락처 + slide.addText('SAM | Smart Automation Management | Confidential', { + x: 0, y: 5.2, w: 10, h: 0.3, + fontSize: 8, fontFace: 'Arial', color: C.gray, align: 'center', + }); + + // ═══════════════════════════════════════════════════════ + // 저장 + // ═══════════════════════════════════════════════════════ + const outputPath = path.join(__dirname, 'sam-marketing-deck.pptx'); + await pres.writeFile({ fileName: outputPath }); + console.log(`✅ PPTX 생성 완료: ${outputPath}`); +} + +// ═══════════════════════════════════════════════════════ +// 공통 함수: 하단 푸터 +// ═══════════════════════════════════════════════════════ +function addFooter(slide, pres, pageNum) { + slide.addShape(pres.ShapeType.rect, { x: 0.5, y: 5.25, w: 9, h: 0.005, fill: { color: '2A3F5F' } }); + slide.addText('SAM | 중소기업을 위한 경영 무기', { x: 0.5, y: 5.28, w: 4, h: 0.25, fontSize: 7, fontFace: 'Malgun Gothic', color: '5A6A7A' }); + slide.addText(pageNum, { x: 8.5, y: 5.28, w: 1, h: 0.25, fontSize: 7, fontFace: 'Arial', color: '5A6A7A', align: 'right' }); +} + +main().catch(err => { console.error('오류:', err); process.exit(1); }); diff --git a/pptx-output/sam-marketing-deck.pptx b/pptx-output/sam-marketing-deck.pptx new file mode 100644 index 0000000000000000000000000000000000000000..e9c41e1aea682dbeb5165f13ef07750c8e47d4ac GIT binary patch literal 364564 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