- .agent/, .claude/, .vscode/ 설정 파일 - design/ 디자인 리소스 - reports/, research/ 분석 문서 - testcase/ 테스트 케이스 문서 - db_sync_chandj.bat, sam.code-workspace Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
690 lines
21 KiB
JavaScript
690 lines
21 KiB
JavaScript
/**
|
|
* 조코딩 12장 완전한 시각적 개선 버전
|
|
* 모든 슬라이드에 카드형 배경, 아이콘, 통계 카드 등 추가
|
|
*/
|
|
|
|
const pptxgen = require('pptxgenjs');
|
|
|
|
async function createCompleteEnhancedJoCoding() {
|
|
console.log('🎨 조코딩 완전한 시각적 개선 버전 12장을 생성하고 있습니다...');
|
|
|
|
const pres = new pptxgen();
|
|
pres.layout = 'LAYOUT_16x9';
|
|
pres.author = '조코딩';
|
|
pres.title = '조코딩(조웅현) - 국내 1위 코딩 교육 유튜버';
|
|
|
|
// 슬라이드 1: 표지
|
|
const slide1 = pres.addSlide();
|
|
slide1.background = { color: 'ffffff' };
|
|
|
|
slide1.addShape(pres.ShapeType.rect, {
|
|
x: 1.5, y: 1, w: 7, h: 4,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'e2e8f0', width: 1 },
|
|
rectRadius: 0.2
|
|
});
|
|
|
|
slide1.addShape(pres.ShapeType.rect, {
|
|
x: 1.5, y: 1, w: 7, h: 0.2,
|
|
fill: { color: 'FF0000' }
|
|
});
|
|
|
|
slide1.addText('조코딩', {
|
|
x: 1.5, y: 1.8, w: 7, h: 1,
|
|
fontSize: 56, bold: true, color: '282828', align: 'center'
|
|
});
|
|
|
|
slide1.addText('JoCoding', {
|
|
x: 1.5, y: 2.8, w: 7, h: 0.8,
|
|
fontSize: 24, bold: true, color: 'FF0000', align: 'center'
|
|
});
|
|
|
|
slide1.addText('국내 1위 코딩 교육 유튜버', {
|
|
x: 1.5, y: 3.6, w: 7, h: 0.6,
|
|
fontSize: 16, color: '666666', align: 'center'
|
|
});
|
|
|
|
// 슬라이드 2: 프로필
|
|
const slide2 = pres.addSlide();
|
|
slide2.background = { color: 'ffffff' };
|
|
|
|
slide2.addText('프로필 개요', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
// 기본 정보 카드
|
|
slide2.addShape(pres.ShapeType.rect, {
|
|
x: 0.5, y: 1.5, w: 4, h: 3,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'e2e8f0', width: 1 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide2.addShape(pres.ShapeType.rect, {
|
|
x: 0.5, y: 1.5, w: 4, h: 0.15,
|
|
fill: { color: 'FF0000' }
|
|
});
|
|
|
|
slide2.addText('👤', {
|
|
x: 0.7, y: 1.8, w: 0.6, h: 0.6,
|
|
fontSize: 24, align: 'center'
|
|
});
|
|
|
|
slide2.addText('기본 정보', {
|
|
x: 1.4, y: 1.9, w: 2.8, h: 0.4,
|
|
fontSize: 18, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide2.addText('• 실명: 조웅현\n• 전공: 고려대 환경생태공학부\n• 경력: 비전공자 → 개발자 → 교육자', {
|
|
x: 0.8, y: 2.4, w: 3.4, h: 1.8,
|
|
fontSize: 12, color: '333333'
|
|
});
|
|
|
|
// 현재 활동 카드
|
|
slide2.addShape(pres.ShapeType.rect, {
|
|
x: 5, y: 1.5, w: 4, h: 3,
|
|
fill: { color: 'fff5f5' },
|
|
line: { color: 'FF0000', width: 2 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide2.addText('🚀', {
|
|
x: 5.2, y: 1.8, w: 0.6, h: 0.6,
|
|
fontSize: 24, align: 'center'
|
|
});
|
|
|
|
slide2.addText('현재 활동', {
|
|
x: 5.9, y: 1.9, w: 2.8, h: 0.4,
|
|
fontSize: 18, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide2.addText('• 유튜브: 68만 구독자\n• 회사: ㈜코드마피아 대표\n• 서비스: 조카소 AI 개발/운영', {
|
|
x: 5.3, y: 2.4, w: 3.4, h: 1.8,
|
|
fontSize: 12, color: '333333'
|
|
});
|
|
|
|
// 슬라이드 3: 성장 스토리
|
|
const slide3 = pres.addSlide();
|
|
slide3.background = { color: 'ffffff' };
|
|
|
|
slide3.addText('성장 스토리', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
// 타임라인 단계들
|
|
const steps = [
|
|
{ num: 1, title: '비전공자 시절', desc: '고려대 환경생태공학부 재학 • 코딩에 대한 막막함', color: 'f0f0f0', textColor: '666666' },
|
|
{ num: 2, title: '개발자 전향', desc: '독학으로 프로그래밍 학습 • 실무 경험 쌓기', color: 'ffe6e6', textColor: 'FF0000' },
|
|
{ num: 3, title: '교육자 & 사업가', desc: '2019년 유튜브 시작 • 68만 구독자 달성 • 코드마피아 설립', color: 'FF0000', textColor: 'ffffff' }
|
|
];
|
|
|
|
steps.forEach((step, index) => {
|
|
const y = 1.5 + index * 1;
|
|
|
|
slide3.addShape(pres.ShapeType.ellipse, {
|
|
x: 0.5, y: y, w: 0.6, h: 0.6,
|
|
fill: { color: step.color },
|
|
line: { color: step.textColor === 'ffffff' ? 'FF0000' : 'cccccc', width: 2 }
|
|
});
|
|
|
|
slide3.addText(step.num.toString(), {
|
|
x: 0.5, y: y, w: 0.6, h: 0.6,
|
|
fontSize: 20, bold: true, color: step.textColor, align: 'center', valign: 'middle'
|
|
});
|
|
|
|
slide3.addText(step.title, {
|
|
x: 1.3, y: y, w: 7, h: 0.4,
|
|
fontSize: 16, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide3.addText(step.desc, {
|
|
x: 1.3, y: y + 0.4, w: 7, h: 0.4,
|
|
fontSize: 12, color: '666666'
|
|
});
|
|
});
|
|
|
|
// 슬라이드 4: 유튜브 채널 현황
|
|
const slide4 = pres.addSlide();
|
|
slide4.background = { color: 'ffffff' };
|
|
|
|
slide4.addText('유튜브 채널 현황', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
// 주요 통계 카드
|
|
slide4.addShape(pres.ShapeType.rect, {
|
|
x: 1, y: 1.3, w: 3.5, h: 1.8,
|
|
fill: { color: 'FF0000' },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide4.addText('📺', {
|
|
x: 1.2, y: 1.5, w: 0.6, h: 0.6,
|
|
fontSize: 32
|
|
});
|
|
|
|
slide4.addText('68만', {
|
|
x: 2, y: 1.6, w: 2.3, h: 0.8,
|
|
fontSize: 36, bold: true, color: 'ffffff', align: 'center'
|
|
});
|
|
|
|
slide4.addText('구독자', {
|
|
x: 1.2, y: 2.4, w: 3.1, h: 0.4,
|
|
fontSize: 16, color: 'ffffff', align: 'center'
|
|
});
|
|
|
|
slide4.addShape(pres.ShapeType.rect, {
|
|
x: 5.5, y: 1.3, w: 3.5, h: 1.8,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'e2e8f0', width: 1 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide4.addText('🗓️', {
|
|
x: 5.7, y: 1.5, w: 0.6, h: 0.6,
|
|
fontSize: 32
|
|
});
|
|
|
|
slide4.addText('2019', {
|
|
x: 6.5, y: 1.6, w: 2.3, h: 0.8,
|
|
fontSize: 36, bold: true, color: '282828', align: 'center'
|
|
});
|
|
|
|
slide4.addText('시작 연도', {
|
|
x: 5.7, y: 2.4, w: 3.1, h: 0.4,
|
|
fontSize: 16, color: '666666', align: 'center'
|
|
});
|
|
|
|
slide4.addText('주요 콘텐츠', {
|
|
x: 0.5, y: 3.3, w: 9, h: 0.4,
|
|
fontSize: 20, bold: true, color: '282828'
|
|
});
|
|
|
|
// 콘텐츠 카드들
|
|
const contents = [
|
|
{ title: '웹/앱 개발', desc: '실용적인 프로젝트 중심 교육', icon: '💻' },
|
|
{ title: '파이썬 기초', desc: '비전공자를 위한 쉬운 설명', icon: '🐍' },
|
|
{ title: 'AI 프로젝트', desc: '트렌디한 AI 기술 활용', icon: '🤖' },
|
|
{ title: '수익화 방법', desc: '코딩으로 돈 버는 방법', icon: '💰' }
|
|
];
|
|
|
|
contents.forEach((content, index) => {
|
|
const x = 0.5 + (index % 2) * 4.5;
|
|
const y = 3.8 + Math.floor(index / 2) * 0.9;
|
|
|
|
slide4.addShape(pres.ShapeType.rect, {
|
|
x: x, y: y, w: 4, h: 0.8,
|
|
fill: { color: 'fff5f5' },
|
|
line: { color: 'FF0000', width: 1 },
|
|
rectRadius: 0.1
|
|
});
|
|
|
|
slide4.addText(content.icon, {
|
|
x: x + 0.1, y: y + 0.1, w: 0.6, h: 0.6,
|
|
fontSize: 24, align: 'center', valign: 'middle'
|
|
});
|
|
|
|
slide4.addText(content.title, {
|
|
x: x + 0.8, y: y + 0.05, w: 3, h: 0.35,
|
|
fontSize: 14, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide4.addText(content.desc, {
|
|
x: x + 0.8, y: y + 0.4, w: 3, h: 0.3,
|
|
fontSize: 11, color: '666666'
|
|
});
|
|
});
|
|
|
|
// 슬라이드 5: 교육 철학
|
|
const slide5 = pres.addSlide();
|
|
slide5.background = { color: 'ffffff' };
|
|
|
|
slide5.addText('교육 철학', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
slide5.addText('"누구나 배울 수 있는 쉬운 코딩"', {
|
|
x: 1, y: 1.2, w: 8, h: 0.8,
|
|
fontSize: 24, bold: true, color: 'FF0000', align: 'center'
|
|
});
|
|
|
|
const philosophies = [
|
|
{ icon: '👥', title: '접근성', desc: '비전공자도 쉽게 배울 수 있는\n코딩 교육' },
|
|
{ icon: '🛠️', title: '실용성', desc: '이론보다 실제 결과물을 만드는\n프로젝트 중심' },
|
|
{ icon: '💰', title: '수익화', desc: '코딩 → 프로젝트 → 수익까지\n연결하는 교육' },
|
|
{ icon: '🎉', title: '재미', desc: '유머와 밈을 활용한\n흥미로운 학습 경험' }
|
|
];
|
|
|
|
philosophies.forEach((phil, index) => {
|
|
const x = 0.5 + (index % 2) * 4.5;
|
|
const y = 2.3 + Math.floor(index / 2) * 1.6;
|
|
|
|
slide5.addShape(pres.ShapeType.rect, {
|
|
x: x, y: y, w: 4, h: 1.4,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'e2e8f0', width: 1 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide5.addShape(pres.ShapeType.rect, {
|
|
x: x, y: y, w: 4, h: 0.08,
|
|
fill: { color: 'FF0000' }
|
|
});
|
|
|
|
slide5.addShape(pres.ShapeType.ellipse, {
|
|
x: x + 1.75, y: y + 0.2, w: 0.5, h: 0.5,
|
|
fill: { color: 'FF0000' }
|
|
});
|
|
|
|
slide5.addText(phil.icon, {
|
|
x: x + 1.75, y: y + 0.2, w: 0.5, h: 0.5,
|
|
fontSize: 20, color: 'ffffff', align: 'center', valign: 'middle'
|
|
});
|
|
|
|
slide5.addText(phil.title, {
|
|
x: x + 0.2, y: y + 0.8, w: 3.6, h: 0.3,
|
|
fontSize: 16, bold: true, color: 'FF0000', align: 'center'
|
|
});
|
|
|
|
slide5.addText(phil.desc, {
|
|
x: x + 0.2, y: y + 1.1, w: 3.6, h: 0.3,
|
|
fontSize: 10, color: '666666', align: 'center'
|
|
});
|
|
});
|
|
|
|
// 슬라이드 6: 동물상 테스트 성공 사례
|
|
const slide6 = pres.addSlide();
|
|
slide6.background = { color: 'ffffff' };
|
|
|
|
slide6.addText('성공 사례: 동물상 테스트', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
slide6.addShape(pres.ShapeType.rect, {
|
|
x: 1, y: 1.3, w: 8, h: 0.6,
|
|
fill: { color: 'fff5f5' },
|
|
line: { color: 'FF0000', width: 1 },
|
|
rectRadius: 0.1
|
|
});
|
|
|
|
slide6.addText('🤖 AI 기반 얼굴 분석 웹 서비스', {
|
|
x: 1, y: 1.3, w: 8, h: 0.6,
|
|
fontSize: 18, bold: true, color: 'FF0000', align: 'center', valign: 'middle'
|
|
});
|
|
|
|
const stats = [
|
|
{ number: '2,000만+', desc: '누적 테스트 횟수', icon: '📊', color: 'FF0000' },
|
|
{ number: '500만+', desc: '월 방문자 수', icon: '👥', color: 'ff6600' },
|
|
{ number: '전국 1위', desc: '심리테스트 순위', icon: '🏆', color: 'ffaa00' },
|
|
{ number: '수억 원', desc: '광고 수익', icon: '💎', color: '00aa00' }
|
|
];
|
|
|
|
stats.forEach((stat, index) => {
|
|
const x = 0.25 + index * 2.375;
|
|
const y = 2.2;
|
|
|
|
slide6.addShape(pres.ShapeType.rect, {
|
|
x: x, y: y, w: 2.2, h: 1.2,
|
|
fill: { color: 'ffffff' },
|
|
line: { color: stat.color, width: 2 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide6.addText(stat.icon, {
|
|
x: x + 0.1, y: y + 0.1, w: 0.5, h: 0.5,
|
|
fontSize: 24
|
|
});
|
|
|
|
slide6.addText(stat.number, {
|
|
x: x + 0.7, y: y + 0.15, w: 1.4, h: 0.5,
|
|
fontSize: 18, bold: true, color: stat.color, align: 'center'
|
|
});
|
|
|
|
slide6.addText(stat.desc, {
|
|
x: x + 0.1, y: y + 0.7, w: 2, h: 0.4,
|
|
fontSize: 11, color: '666666', align: 'center'
|
|
});
|
|
});
|
|
|
|
slide6.addText('핵심 성공 요인', {
|
|
x: 0.5, y: 3.6, w: 9, h: 0.4,
|
|
fontSize: 16, bold: true, color: '282828'
|
|
});
|
|
|
|
slide6.addText('✓ SNS 공유 최적화 ✓ ML 모델 웹 구현 ✓ 2주 완성 ✓ 모바일 최적화', {
|
|
x: 1, y: 4, w: 8, h: 0.8,
|
|
fontSize: 12, color: '333333', align: 'center'
|
|
});
|
|
|
|
// 슬라이드 7: 기타 성공 프로젝트
|
|
const slide7 = pres.addSlide();
|
|
slide7.background = { color: 'ffffff' };
|
|
|
|
slide7.addText('기타 성공 프로젝트', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
const projects = [
|
|
{ title: '토스 클론 코딩', desc: '100만+ 조회수\n실무 중심 강의\n현업 개발자 호평', icon: '💳' },
|
|
{ title: 'AI 챗봇 만들기', desc: 'OpenAI API 활용\n트렌드 반영\n초보자도 가능', icon: '🤖' },
|
|
{ title: '크롬 확장프로그램', desc: '생산성 도구 제작\n웹스토어 등록\n수익화 방법', icon: '🔧' },
|
|
{ title: '웹 스크래핑', desc: '자동화 솔루션\n데이터 수집\n업무 효율성', icon: '🕷️' }
|
|
];
|
|
|
|
projects.forEach((project, index) => {
|
|
const x = 0.5 + (index % 2) * 4.5;
|
|
const y = 1.5 + Math.floor(index / 2) * 1.8;
|
|
|
|
slide7.addShape(pres.ShapeType.rect, {
|
|
x: x, y: y, w: 4, h: 1.6,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'e2e8f0', width: 1 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide7.addShape(pres.ShapeType.ellipse, {
|
|
x: x + 0.2, y: y + 0.2, w: 0.6, h: 0.6,
|
|
fill: { color: 'FF0000' }
|
|
});
|
|
|
|
slide7.addText(project.icon, {
|
|
x: x + 0.2, y: y + 0.2, w: 0.6, h: 0.6,
|
|
fontSize: 24, color: 'ffffff', align: 'center', valign: 'middle'
|
|
});
|
|
|
|
slide7.addText(project.title, {
|
|
x: x + 1, y: y + 0.3, w: 2.8, h: 0.4,
|
|
fontSize: 16, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide7.addText(project.desc, {
|
|
x: x + 0.3, y: y + 0.8, w: 3.4, h: 0.7,
|
|
fontSize: 11, color: '333333', align: 'left'
|
|
});
|
|
});
|
|
|
|
// 슬라이드 8: 비즈니스 현황
|
|
const slide8 = pres.addSlide();
|
|
slide8.background = { color: 'ffffff' };
|
|
|
|
slide8.addText('비즈니스 현황', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
// 조카소 카드
|
|
slide8.addShape(pres.ShapeType.rect, {
|
|
x: 0.5, y: 1.5, w: 8.5, h: 1.5,
|
|
fill: { color: 'fff5f5' },
|
|
line: { color: 'FF0000', width: 2 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide8.addText('🚀', {
|
|
x: 0.8, y: 1.8, w: 0.6, h: 0.6,
|
|
fontSize: 32
|
|
});
|
|
|
|
slide8.addText('조카소 (1인 창업가 육성 플랫폼)', {
|
|
x: 1.6, y: 1.8, w: 6, h: 0.5,
|
|
fontSize: 20, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide8.addText('1,000+ 교육생 • 80% 창업 성공률 • 월 500만원 평균 수익', {
|
|
x: 1.6, y: 2.3, w: 6.5, h: 0.5,
|
|
fontSize: 14, color: '333333'
|
|
});
|
|
|
|
// 코드마피아 카드
|
|
slide8.addShape(pres.ShapeType.rect, {
|
|
x: 0.5, y: 3.2, w: 8.5, h: 1.5,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'e2e8f0', width: 2 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide8.addText('👥', {
|
|
x: 0.8, y: 3.5, w: 0.6, h: 0.6,
|
|
fontSize: 32
|
|
});
|
|
|
|
slide8.addText('코드마피아 (개발자 커뮤니티)', {
|
|
x: 1.6, y: 3.5, w: 6, h: 0.5,
|
|
fontSize: 20, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide8.addText('5,000+ 커뮤니티 멤버 • 90% 취업 성공률 • 실무 중심 프로그램', {
|
|
x: 1.6, y: 4, w: 6.5, h: 0.5,
|
|
fontSize: 14, color: '333333'
|
|
});
|
|
|
|
// 슬라이드 9: 인큐베이팅 프로그램
|
|
const slide9 = pres.addSlide();
|
|
slide9.background = { color: 'ffffff' };
|
|
|
|
slide9.addText('조코딩 인큐베이팅 프로그램', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
slide9.addText('"이론이 아닌 실전, 취업이 아닌 창업"', {
|
|
x: 1, y: 1.2, w: 8, h: 0.5,
|
|
fontSize: 18, bold: true, color: 'FF0000', align: 'center'
|
|
});
|
|
|
|
// 4단계 프로세스
|
|
const processes = [
|
|
{ step: 1, title: '아이디어 발굴 & 검증', desc: '개인 관심사와 시장 니즈 연결', icon: '💡' },
|
|
{ step: 2, title: '기술 스택 학습', desc: '필요한 기술을 단기간에 습득', icon: '📚' },
|
|
{ step: 3, title: 'MVP 제작 & 런칭', desc: '최소한의 기능으로 시장 출시', icon: '🚀' },
|
|
{ step: 4, title: '수익화 & 성장', desc: '다양한 수익 모델로 사업 확장', icon: '📈' }
|
|
];
|
|
|
|
processes.forEach((process, index) => {
|
|
const x = 0.3 + (index % 2) * 4.7;
|
|
const y = 1.8 + Math.floor(index / 2) * 1.4;
|
|
|
|
slide9.addShape(pres.ShapeType.rect, {
|
|
x: x, y: y, w: 4.2, h: 1.2,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'e2e8f0', width: 1 },
|
|
rectRadius: 0.1
|
|
});
|
|
|
|
slide9.addShape(pres.ShapeType.ellipse, {
|
|
x: x + 0.15, y: y + 0.15, w: 0.5, h: 0.5,
|
|
fill: { color: 'FF0000' }
|
|
});
|
|
|
|
slide9.addText(process.step.toString(), {
|
|
x: x + 0.15, y: y + 0.15, w: 0.5, h: 0.5,
|
|
fontSize: 18, bold: true, color: 'ffffff', align: 'center', valign: 'middle'
|
|
});
|
|
|
|
slide9.addText(process.icon + ' ' + process.title, {
|
|
x: x + 0.8, y: y + 0.2, w: 3.2, h: 0.4,
|
|
fontSize: 14, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide9.addText(process.desc, {
|
|
x: x + 0.8, y: y + 0.6, w: 3.2, h: 0.5,
|
|
fontSize: 11, color: '666666'
|
|
});
|
|
});
|
|
|
|
// 성과 카드
|
|
slide9.addShape(pres.ShapeType.rect, {
|
|
x: 1.5, y: 4.5, w: 7, h: 0.8,
|
|
fill: { color: 'FF0000' },
|
|
rectRadius: 0.1
|
|
});
|
|
|
|
slide9.addText('📊 프로그램 성과: 500+ 졸업생 • 300+ 성공 프로젝트 • 85% 수익화 달성률', {
|
|
x: 1.5, y: 4.5, w: 7, h: 0.8,
|
|
fontSize: 14, bold: true, color: 'ffffff', align: 'center', valign: 'middle'
|
|
});
|
|
|
|
// 슬라이드 10: 사회적 영향력
|
|
const slide10 = pres.addSlide();
|
|
slide10.background = { color: 'ffffff' };
|
|
|
|
slide10.addText('조코딩의 사회적 영향력', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
const impacts = [
|
|
{ number: '100만+', desc: '유튜브 구독자', icon: '📺', color: 'FF0000' },
|
|
{ number: '50,000+', desc: '개발자 전환 성공', icon: '👨💻', color: 'ff6600' },
|
|
{ number: '1,000억+', desc: '경제적 가치 창출', icon: '💰', color: '00aa00' }
|
|
];
|
|
|
|
impacts.forEach((impact, index) => {
|
|
const x = 0.5 + index * 3;
|
|
const y = 1.5;
|
|
|
|
slide10.addShape(pres.ShapeType.rect, {
|
|
x: x, y: y, w: 2.8, h: 1.5,
|
|
fill: { color: 'ffffff' },
|
|
line: { color: impact.color, width: 3 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide10.addText(impact.icon, {
|
|
x: x + 0.2, y: y + 0.2, w: 0.6, h: 0.6,
|
|
fontSize: 32
|
|
});
|
|
|
|
slide10.addText(impact.number, {
|
|
x: x + 1, y: y + 0.3, w: 1.6, h: 0.6,
|
|
fontSize: 24, bold: true, color: impact.color, align: 'center'
|
|
});
|
|
|
|
slide10.addText(impact.desc, {
|
|
x: x + 0.2, y: y + 1, w: 2.4, h: 0.4,
|
|
fontSize: 12, color: '666666', align: 'center'
|
|
});
|
|
});
|
|
|
|
slide10.addText('핵심 가치', {
|
|
x: 0.5, y: 3.2, w: 9, h: 0.4,
|
|
fontSize: 18, bold: true, color: '282828'
|
|
});
|
|
|
|
slide10.addText('• 코딩 교육의 민주화 - 누구나 배울 수 있는 환경\n• 실용적 창업 교육 - 이론이 아닌 실전 중심\n• 개발자 생태계 발전 - 질 높은 개발자 양성\n• 경제적 기회 창출 - 새로운 일자리와 사업 기회', {
|
|
x: 1, y: 3.6, w: 8, h: 1.2,
|
|
fontSize: 12, color: '333333'
|
|
});
|
|
|
|
// 슬라이드 11: 미래 계획
|
|
const slide11 = pres.addSlide();
|
|
slide11.background = { color: 'ffffff' };
|
|
|
|
slide11.addText('미래 계획 및 비전', {
|
|
x: 0.5, y: 0.5, w: 9, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828'
|
|
});
|
|
|
|
// 단기 목표 카드
|
|
slide11.addShape(pres.ShapeType.rect, {
|
|
x: 0.5, y: 1.5, w: 8.5, h: 1.5,
|
|
fill: { color: 'fff5f5' },
|
|
line: { color: 'FF0000', width: 2 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide11.addText('🎯', {
|
|
x: 0.8, y: 1.8, w: 0.6, h: 0.6,
|
|
fontSize: 32
|
|
});
|
|
|
|
slide11.addText('단기 목표 (2024-2025)', {
|
|
x: 1.6, y: 1.8, w: 6, h: 0.4,
|
|
fontSize: 18, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide11.addText('글로벌 진출 • AI 기반 교육 시스템 • 기업 교육 확장 • 온라인 대학 설립', {
|
|
x: 1.6, y: 2.2, w: 6.5, h: 0.6,
|
|
fontSize: 12, color: '333333'
|
|
});
|
|
|
|
// 장기 비전 카드
|
|
slide11.addShape(pres.ShapeType.rect, {
|
|
x: 0.5, y: 3.2, w: 8.5, h: 1.5,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'e2e8f0', width: 2 },
|
|
rectRadius: 0.15
|
|
});
|
|
|
|
slide11.addText('🚀', {
|
|
x: 0.8, y: 3.5, w: 0.6, h: 0.6,
|
|
fontSize: 32
|
|
});
|
|
|
|
slide11.addText('장기 비전 (2026~)', {
|
|
x: 1.6, y: 3.5, w: 6, h: 0.4,
|
|
fontSize: 18, bold: true, color: 'FF0000'
|
|
});
|
|
|
|
slide11.addText('세계 최대 코딩 교육 플랫폼 • 100만 개발자 양성 • 글로벌 기술 표준 • 생태계 구축', {
|
|
x: 1.6, y: 3.9, w: 6.5, h: 0.6,
|
|
fontSize: 12, color: '333333'
|
|
});
|
|
|
|
// 슬라이드 12: 마무리
|
|
const slide12 = pres.addSlide();
|
|
slide12.background = { color: 'ffffff' };
|
|
|
|
// 메인 메시지 카드
|
|
slide12.addShape(pres.ShapeType.rect, {
|
|
x: 1, y: 1.5, w: 8, h: 3,
|
|
fill: { color: 'f8f9fa' },
|
|
line: { color: 'FF0000', width: 3 },
|
|
rectRadius: 0.2
|
|
});
|
|
|
|
slide12.addShape(pres.ShapeType.rect, {
|
|
x: 1, y: 1.5, w: 8, h: 0.3,
|
|
fill: { color: 'FF0000' }
|
|
});
|
|
|
|
slide12.addText('조코딩과 함께하는 코딩 여정', {
|
|
x: 1, y: 2, w: 8, h: 0.8,
|
|
fontSize: 28, bold: true, color: '282828', align: 'center'
|
|
});
|
|
|
|
slide12.addText('"코딩은 도구이며, 가치 창출이 목표"', {
|
|
x: 1, y: 2.8, w: 8, h: 0.8,
|
|
fontSize: 20, bold: true, color: 'FF0000', align: 'center'
|
|
});
|
|
|
|
slide12.addText('📺 유튜브: 조코딩\n🌐 웹사이트: jocoding.co.kr\n🚀 조카소: jokasso.com\n👥 코드마피아: codemafia.co.kr', {
|
|
x: 2, y: 3.6, w: 6, h: 0.8,
|
|
fontSize: 12, color: '333333', align: 'center'
|
|
});
|
|
|
|
// PPTX 파일 저장
|
|
const fileName = '조코딩_프레젠테이션_완전한시각적개선.pptx';
|
|
await pres.writeFile({ fileName });
|
|
|
|
console.log(`🎉 완전한 시각적 개선 버전이 생성되었습니다!`);
|
|
console.log(`📄 파일명: ${fileName}`);
|
|
console.log(`📊 총 ${pres.slides.length}개의 슬라이드 완성`);
|
|
console.log(`\n🎨 적용된 시각적 개선 요소:`);
|
|
console.log(` ✓ 카드형 배경 (둥근 모서리, 테두리)`);
|
|
console.log(` ✓ 아이콘 원형 배경 (빨간색 강조)`);
|
|
console.log(` ✓ 컬러 구분 통계 카드`);
|
|
console.log(` ✓ 상단 브랜드 컬러 바`);
|
|
console.log(` ✓ 타임라인 디자인`);
|
|
console.log(` ✓ 이모지 아이콘 활용`);
|
|
console.log(` ✓ 시각적 계층 구조`);
|
|
}
|
|
|
|
// 실행
|
|
createCompleteEnhancedJoCoding().catch(console.error); |