SuperAPI AI Directory

pptx

Office & productivity

View repository

Updated 10-15 20:31

About this skill

Marketing Presentation Toolkit

A tool for creating professional presentations such as marketing campaigns, brand introductions, and proposals.

Key Features

Feature Description Use Case
Create New Presentation HTML → PPTX Conversion Campaign proposals, brand introductions
Edit Existing Files Direct OOXML Editing Text modification, layout adjustment
Template-Based Generation Use of corporate templates Applying consistent brand guidelines
Thumbnail Generation Slide preview Verification and approval

Workflow 1: Create New Presentation (HTML → PPTX)

Step-by-Step Process

[콘텐츠 기획] → [HTML 작성] → [PPTX 변환] → [검증]

1. Write HTML File

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <style>
    /* 브랜드 컬러 정의 */
    :root {
      --primary: #1a365d;
      --accent: #ed8936;
      --text: #2d3748;
    }
    .slide { page-break-after: always; }
    h1 { color: var(--primary); font-size: 36pt; }
    h2 { color: var(--accent); font-size: 28pt; }
  </style>
</head>
<body>
  <div class="slide">
    <h1>브랜드 소개</h1>
    <p>우리 브랜드의 핵심 가치</p>
  </div>
  <div class="slide">
    <h2>캠페인 전략</h2>
    <ul>
      <li>타겟 오디언스</li>
      <li>채널 믹스</li>
      <li>예상 KPI</li>
    </ul>
  </div>
</body>
</html>

2. PPTX Conversion

# html2pptx 설치
pip install html2pptx

# 변환 실행
python -c "
from html2pptx import Html2Pptx

with open('presentation.html', 'r') as f:
    html_content = f.read()

pptx = Html2Pptx(html_content)
pptx.save('presentation.pptx')
"

Workflow 2: Edit Existing PPTX (OOXML)

Understanding PPTX Structure

presentation.pptx (ZIP)
├── [Content_Types].xml
├── _rels/
├── docProps/
├── ppt/
│   ├── presentation.xml
│   ├── slides/
│   │   ├── slide1.xml
│   │   ├── slide2.xml
│   │   └── ...
│   ├── slideLayouts/
│   ├── slideMasters/
│   └── theme/
└── ...

Editing Script Example

import zipfile
import xml.etree.ElementTree as ET
from pathlib import Path
import shutil

def edit_slide_text(pptx_path, slide_num, old_text, new_text):
    """슬라이드 텍스트 교체"""
    temp_dir = Path('temp_pptx')

    # PPTX 압축 해제
    with zipfile.ZipFile(pptx_path, 'r') as zip_ref:
        zip_ref.extractall(temp_dir)

    # 슬라이드 XML 수정
    slide_path = temp_dir / f'ppt/slides/slide{slide_num}.xml'
    tree = ET.parse(slide_path)

    for elem in tree.iter():
        if elem.text and old_text in elem.text:
            elem.text = elem.text.replace(old_text, new_text)

    tree.write(slide_path, xml_declaration=True, encoding='UTF-8')

    # 새 PPTX 생성
    output_path = pptx_path.replace('.pptx', '_edited.pptx')
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for file in temp_dir.rglob('*'):
            if file.is_file():
                zipf.write(file, file.relative_to(temp_dir))

    shutil.rmtree(temp_dir)
    return output_path

Marketing Design Guide

Color Palette

1. Professional (B2B/Corporate)

Primary:   #1a365d (Navy)
Secondary: #2b6cb0 (Blue)
Accent:    #ed8936 (Orange)
Text:      #2d3748 (Dark Gray)
Background:#f7fafc (Light Gray)

2. Modern & Trendy (Startup)

Primary:   #553c9a (Purple)
Secondary: #805ad5 (Violet)
Accent:    #38b2ac (Teal)
Text:      #1a202c (Black)
Background:#ffffff (White)

3. Warmth & Friendliness (F&B/Lifestyle)

Primary:   #744210 (Brown)
Secondary: #c05621 (Orange)
Accent:    #2f855a (Green)
Text:      #1a202c (Black)
Background:#fffaf0 (Warm White)

4. Luxury & Premium

Primary:   #1a202c (Black)
Secondary: #b7791f (Gold)
Accent:    #c53030 (Red)
Text:      #2d3748 (Dark Gray)
Background:#f7fafc (Off-White)

Typography

Use Case Recommended Font Size
Title Pretendard Bold, Noto Sans KR Bold 36-48pt
Subtitle Pretendard SemiBold 24-32pt
Body Pretendard Regular 18-24pt
Caption Pretendard Light 14-16pt

Slide Composition Templates

Cover Slide

┌─────────────────────────────────────┐
│                                     │
│         [로고]                       │
│                                     │
│    ████████████████████            │
│         메인 제목                    │
│    ────────────────────            │
│         부제목                       │
│                                     │
│                    2024.01          │
└─────────────────────────────────────┘

Section Divider Slide

┌─────────────────────────────────────┐
│                                     │
│         01                          │
│    ════════════                    │
│    BRAND ANALYSIS                   │
│    브랜드 분석                       │
│                                     │
└─────────────────────────────────────┘

Two-Column Layout

┌─────────────────────────────────────┐
│  제목                               │
├────────────────┬────────────────────┤
│                │                    │
│   [이미지]      │   • 포인트 1       │
│                │   • 포인트 2       │
│                │   • 포인트 3       │
│                │                    │
└────────────────┴────────────────────┘

Data Visualization Slide

┌─────────────────────────────────────┐
│  핵심 지표                           │
├───────────┬───────────┬─────────────┤
│           │           │             │
│   45%     │   128K    │   +23%      │
│  전환율    │   도달     │   성장률    │
│           │           │             │
├───────────┴───────────┴─────────────┤
│                                     │
│        [차트/그래프]                 │
│                                     │
└─────────────────────────────────────┘

Structure by Marketing Presentation Type

1. Campaign Proposal

1. 표지
2. 목차
3. 현황 분석 (As-Is)
4. 목표 설정
5. 타겟 정의
6. 전략 개요
7. 채널 믹스
8. 콘텐츠 계획
9. 예산 및 일정
10. 기대 효과
11. Q&A

2. Brand Introduction

1. 표지
2. 브랜드 스토리
3. 미션 & 비전
4. 핵심 가치
5. 제품/서비스 라인업
6. 차별화 포인트
7. 고객 사례
8. 연락처

3. Analysis Report

1. 표지
2. Executive Summary
3. 분석 배경
4. 데이터 개요
5. 주요 발견 (Insights)
6. 상세 분석
7. 시사점
8. 액션 플랜

Verification Process

Thumbnail Generation

from pptx import Presentation
from pdf2image import convert_from_path
import subprocess

def generate_thumbnails(pptx_path, output_dir):
    """슬라이드 썸네일 생성"""
    # PPTX → PDF 변환 (LibreOffice)
    subprocess.run([
        'soffice', '--headless', '--convert-to', 'pdf',
        '--outdir', output_dir, pptx_path
    ])

    pdf_path = pptx_path.replace('.pptx', '.pdf')

    # PDF → 이미지
    images = convert_from_path(pdf_path, dpi=150)

    for i, image in enumerate(images, 1):
        image.save(f'{output_dir}/slide_{i:02d}.png', 'PNG')

File Storage

Presentation files are saved in the project's standard directory structure.

{project}/
├── reports/
│   └── presentations/       # 최종 프레젠테이션
│       ├── campaign-proposal-20240115.pptx
│       ├── brand-intro-20240115.pptx
│       └── analysis-report-20240115.pptx
├── assets/
│   └── pptx-resources/      # 프레젠테이션 리소스
│       ├── templates/       # 템플릿 파일
│       ├── images/          # 삽입용 이미지
│       └── thumbnails/      # 썸네일 미리보기
└── tmp/
    └── pptx-drafts/         # 초안 및 작업 파일

File Naming Convention

{project}/reports/presentations/{type}-{subject}-{date}.pptx

예시:
reports/presentations/campaign-proposal-dante-coffee-20240115.pptx
reports/presentations/brand-intro-dante-coffee-20240115.pptx
reports/presentations/monthly-report-january-20240115.pptx

Scripts and References

Reference Documents

Document Path Description
HTML → PPTX Guide html2pptx.md Detailed guide for converting HTML to PPTX
OOXML Editing Guide ooxml.md Guide for directly editing PowerPoint XML

Scripts

Script Path Description
html2pptx.js scripts/html2pptx.js HTML → PPTX Conversion (Playwright + PptxGenJS)
replace.py scripts/replace.py Bulk text replacement
thumbnail.py scripts/thumbnail.py Slide thumbnail generation
inventory.py scripts/inventory.py Slide inventory
rearrange.py scripts/rearrange.py Slide reordering

OOXML Tools

Script Path Description
unpack.py ooxml/scripts/unpack.py PPTX → XML Extraction
pack.py ooxml/scripts/pack.py XML → PPTX Packing
validate.py ooxml/scripts/validate.py XML Schema Validation

Usage

This skill is creative-director 및 copy-strategist The agent refers to this when creating marketing presentations.