| name | design-ppt |
| description | Use this skill to create a branded .pptx presentation from any content source (markdown doc, PDF, existing PPT) using a named design system from getdesign.md. Trigger whenever the user mentions making/creating a PPT or slides with a specific brand design (apple, claude, stripe, notion, etc.), or when they have a document they want turned into a polished slide deck. Keywords: '๋์์ธ PPT', 'PPT ๋ง๋ค์ด', 'slides from', 'brand PPT', 'getdesign', 'apple design ppt', '๊ณต๋ชจ์ PPT'. Always use this skill when the user wants a visually designed presentation, not just any pptx task โ for editing/reading existing .pptx files use the pptx skill instead. |
Design PPT Skill
๋ธ๋๋ ๋์์ธ ์์คํ
์ ์ ์ฉํ .pptx ํ์ผ์ ์ฝํ
์ธ ๋ฌธ์์์ ์๋ ์์ฑํ๋ค.
์ํฌํ๋ก์ฐ ๊ฐ์
- ๋์์ธ ์์คํ
ํ๋ โ
npx getdesign@latest add [brand]๋ก DESIGN.md ์์ฑ
- ์ฝํ
์ธ ๋ถ์ โ ์
๋ ฅ ๋ฌธ์(md/pdf/pptx)์์ ํต์ฌ ๋ด์ฉ ์ถ์ถ
- ์ฌ๋ผ์ด๋ ๊ตฌ์ฑ ๊ณํ โ ์น์
ยท์ฌ๋ผ์ด๋ ๋ชฉ๋ก ์ด์ (์ฌ์ฉ์ ํ์ธ)
- PPT ์์ฑ โ pptxgenjs ์คํฌ๋ฆฝํธ ์์ฑ + ์คํ
- QA โ ์ด๋ฏธ์ง ๋ณํ ํ ์๊ฐ ๊ฒ์, ๋ฌธ์ ์์
Step 1: ๋์์ธ ์์คํ
ํ๋
์ฌ์ฉ์๊ฐ ๋ธ๋๋๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๋ฌผ์ด๋ณธ๋ค. ๊ธฐ๋ณธ๊ฐ์ apple.
npx getdesign@latest add [brand]
DESIGN.md๋ฅผ ์ฝ์ด์ ๋ค์์ ํ์
ํ๋ค:
- ์์: primary, background, text, accent, surface ๊ณ์ด
- ํ์ดํฌ๊ทธ๋ํผ: ์ ๋ชฉ/๋ณธ๋ฌธ ํฐํธ ํจ๋ฐ๋ฆฌ, ํฌ๊ธฐ
- ํน์ฑ: ์ ์ฒด์ ์ธ ๋ถ์๊ธฐ์ ๋ ์ด์์ ์์น
PPT์ฉ ์์ ๋งคํ (DESIGN.md์ ์ค์ hex ๊ฐ์ผ๋ก ์ฑ์ด๋ค):
TITLE_BG = [๋ธ๋๋์ ์ด๋์ด/๊ฐํ ๋ฐฐ๊ฒฝ์]
CONTENT_BG = [๋ธ๋๋์ ๋ฐ์ ์บ๋ฒ์ค/๋ฐฐ๊ฒฝ์]
PRIMARY = [๋ธ๋๋ primary/accent ์]
TEXT_DARK = [์งํ ํ
์คํธ ์]
TEXT_MUTED = [ํ๋ฆฐ ํ
์คํธ ์]
CARD_BG = [์นด๋/์ํผ์ค ์]
ํฐํธ๋ ์์คํ
์ ์์ ์ ์๋ค. Calibri(sans) / Georgia(serif)๋ฅผ fallback์ผ๋ก ์ด๋ค.
๋ธ๋๋๊ฐ serif ๊ณ์ด์ด๋ฉด ์ ๋ชฉ์ Georgia, sans ๊ณ์ด์ด๋ฉด Calibri ์ฌ์ฉ.
Step 2: ์ฝํ
์ธ ๋ถ์
์
๋ ฅ ํ์ผ ํ์
๋ณ ์ฒ๋ฆฌ:
cat content.md
python -m markitdown content.pdf
python -m markitdown content.pptx
๋ถ์ ์ ํ์
ํ ๊ฒ:
- ์ ์ฒด ๋ชฉ์ /์ฃผ์ (ํ ์ค ์์ฝ)
- ์ฃผ์ ์น์
๋ฐ ๊ณ์ธต ๊ตฌ์กฐ
- ํต์ฌ ๋ฐ์ดํฐ/์ซ์ (์ฐจํธ๋ก ๋ง๋ค ํ๋ณด)
- ํ/๋ฆฌ์คํธ ๊ตฌ์กฐ
Step 3: ์ฌ๋ผ์ด๋ ๊ตฌ์ฑ ๊ณํ
๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ฌ๋ผ์ด๋ ๋ชฉ๋ก์ ์์ฑํ๊ณ ์ฌ์ฉ์์๊ฒ ํ์ธ๋ฐ๋๋ค.
[์ฌ๋ผ์ด๋ ๊ณํ ์์]
1. ํ์ง โ ์๋น์ค๋ช
+ ํ ์ค ์ ์ + ๋ํ๋ช
2. ๋ฌธ์ ์ ์ โ ํต์ฌ ํต๊ณ 3๊ฐ (๋ํ ์ซ์ callout)
3. ๊ฒฝ์ ํํฉ โ ๋น๊ต ํ
์ด๋ธ
4. ์๋ฃจ์
โ 3๊ฐ ํต์ฌ ๊ธฐ๋ฅ (์์ด์ฝ+ํ
์คํธ ๊ทธ๋ฆฌ๋)
5. ๊ธฐ์ ๊ตฌ์กฐ โ ์คํ ๋ค์ด์ด๊ทธ๋จ ๋๋ ํ
์คํธ ์นด๋
6. ๋ฐ์ดํฐ โ ๊ณต๊ณต๋ฐ์ดํฐ ์ถ์ฒ ํ
7. AI ์ค๊ณ โ ์๋โtool ๋งคํ (ํ
์ด๋ธ)
8. ์ฑ๊ณผ/์งํ โ ๋ฐฑํ
์คํธ ๊ฒฐ๊ณผ (๋ฐ ์ฐจํธ)
9. ๋ก๋๋งต โ ๋จ๊ธฐ/์ค๊ธฐ/์ฅ๊ธฐ ํ์๋ผ์ธ
10. ๋ง๋ฌด๋ฆฌ โ ํต์ฌ ๋ฉ์์ง + CTA
์ฌ๋ผ์ด๋๊ฐ ๋๋ฌด ๋ง์ผ๋ฉด ๋ด์ฉ์ ์์ถํ๊ณ , ๋๋ฌด ์ ์ผ๋ฉด ์ค์ ์น์
์ ๋ถ๋ฆฌํ๋ค.
์ผ๋ฐ์ ์ผ๋ก 8~12์ฌ๋ผ์ด๋๊ฐ ์ ๋นํ๋ค.
Step 4: PPT ์์ฑ
์ฌ์ ์ค๋น
npm list -g pptxgenjs || npm install -g pptxgenjs
์คํฌ๋ฆฝํธ ์์ฑ ์์น
pptx ์คํฌ์ pptxgenjs.md๋ฅผ ๋ฐ๋์ ์ฝ๊ณ ๋ฐ๋ฅธ๋ค (~/.claude/skills/pptx/pptxgenjs.md).
ํต์ฌ ์ฃผ์์ฌํญ:
- hex ์์์
# ์ ๋ ๊ธ์ง ("CC785C" โ, "#CC785C" โ)
- shadow ์ต์
์ฌ์ฌ์ฉ ๊ธ์ง โ
makeShadow() ํฉํ ๋ฆฌ ํจ์ ์ฌ์ฉ
- bullet์
bullet: true ์ฌ์ฉ, unicode โข ๊ธ์ง
- 8์๋ฆฌ hex ๊ธ์ง (opacity๋ ๋ณ๋
opacity ํ๋๋ก)
์ฌ๋ผ์ด๋ ๋ ์ด์์ ํจํด
ํ์ง ์ฌ๋ผ์ด๋ (TITLE_BG ๋ฐฐ๊ฒฝ + ๋ฐ์ ํ
์คํธ):
[๋ธ๋๋ PRIMARY ์ปฌ๋ฌ ์๋จ ๋ฐ ๋๋ ์ฌ์ด๋ ์
์ผํธ]
[์๋น์ค๋ช
โ ๋ํ serif/sans ์ ๋ชฉ]
[ํ ์ค ์ ์ โ ์ค๊ฐ ํฌ๊ธฐ]
[๋ถ์ โ ๋ ์ง/๋ํ๋ช
โ ์์ ํฌ๊ธฐ, muted]
์ฝํ
์ธ ์ฌ๋ผ์ด๋ (CONTENT_BG ๋ฐฐ๊ฒฝ):
- ์ข์๋จ: ์น์
๋ ์ด๋ธ (์ํ, PRIMARY ์ปฌ๋ฌ, ๋๋ฌธ์)
- ์๋จ: ์ฌ๋ผ์ด๋ ์ ๋ชฉ (์ค-๋ํ)
- ๋ณธ๋ฌธ: ๋ ์ด์์์ ๋ฐ๋ผ โ 2์ปฌ๋ผ / ์นด๋ ๊ทธ๋ฆฌ๋ / ํ
์ด๋ธ / ์ฐจํธ
ํต๊ณ callout ์ฌ๋ผ์ด๋:
[ํฐ ์ซ์ 72pt PRIMARY ์]
[๋จ์/๋ ์ด๋ธ 18pt]
[์ค๋ช
14pt muted]
์ฐจํธ ์ฌ๋ผ์ด๋:
chartColors๋ฅผ ๋ธ๋๋ PRIMARY/CARD_BG/ACCENT์ผ๋ก ์ง์
chartArea: { fill: { color: CONTENT_BG } }
- ๊ทธ๋ฆฌ๋์ subtleํ๊ฒ:
valGridLine: { color: "E5E5E5", size: 0.5 }
์คํฌ๋ฆฝํธ ํ์ผ ์ ์ฅ ๋ฐ ์คํ
cat > /tmp/generate_ppt.js << 'EOF'
[์์ฑํ ์คํฌ๋ฆฝํธ]
EOF
node /tmp/generate_ppt.js
ls -la output.pptx
Step 5: QA
์ด๋ฏธ์ง ๋ณํ ํ ์๊ฐ ๊ฒ์
python ~/.claude/skills/pptx/scripts/office/soffice.py --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide
ls slide-*.jpg
๋ณํ๋ ์ด๋ฏธ์ง๋ฅผ Read ๋๊ตฌ๋ก ์ฝ์ด ์๊ฐ ๊ฒ์:
- ํ
์คํธ ์๋ฆผ/์ค๋ฒํ๋ก์ฐ
- ์์ ๋๋น (์ด๋์ด ๋ฐฐ๊ฒฝ์ ์ด๋์ด ํ
์คํธ ๊ธ์ง)
- ๋ ์ด์์ ์ผ๊ด์ฑ (์ ๋ชฉ ์์น, ์ฌ๋ฐฑ)
- ๋น ์ฌ๋ผ์ด๋ ๋๋ ๋ด์ฉ ๋๋ฝ
ํ
์คํธ ๊ฒ์
python -m markitdown output.pptx | grep -iE "xxxx|lorem|placeholder|undefined"
๋ฌธ์ ๋ฐ๊ฒฌ ์ ์คํฌ๋ฆฝํธ ์์ โ ์ฌ์คํ โ ์ฌ๊ฒ์ ๋ฃจํ.
์ถ๋ ฅ
์์
์๋ฃ ์:
- ์์ฑ๋
.pptx ํ์ผ ๊ฒฝ๋ก ์๋ ค์ค
- ์ฌ๋ผ์ด๋ ๋ชฉ๋ก ๊ฐ๋ต ์์ฝ
- ์์ ์์ฒญ ๋ฐ์ ์ค๋น ("ํน์ ์ฌ๋ผ์ด๋ ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉด ๋งํด์")
๋น ๋ฅธ ์ฐธ์กฐ
| ์ํฉ | ์ก์
|
|---|
| ๋ธ๋๋ ๋ฏธ์ง์ | ์ฌ์ฉ์์๊ฒ ๋ฌผ์ด๋ด (์ถ์ฒ: apple, claude, stripe, notion) |
| ํฐํธ ์์ | Georgia(serif) / Calibri(sans) fallback |
| ์ฐจํธ ๋ฐ์ดํฐ ์์ | ๋ฌธ์์์ ์ถ์ถํ ์์น๋ก ๋์ฒด, ์์ผ๋ฉด placeholder |
| ์ฌ๋ผ์ด๋ ์ ์ด๊ฒฌ | 8~12๊ฐ ๊ธฐ์ค, ๋ด์ฉ๋์ ๋ฐ๋ผ ์กฐ์ |
| PDF ๋ณํ ์คํจ | python ~/.claude/skills/pptx/scripts/thumbnail.py output.pptx๋ก ๋์ฒด |