| name | ppt-designer |
| description | This skill should be used when the user asks to design, create, or generate a presentation (PPT, slides, slide deck) from a topic outline or research document. Triggers on requests like "ํ๋ ์ ํ
์ด์
๋ง๋ค์ด์ค", "์ฌ๋ผ์ด๋ ๋์์ธํด์ค", "PPT ๋ง๋ค์ด์ค", "make a presentation", "design slides". Reads topic-outline.md (or similar structured markdown) and generates a polished HTML presentation using reveal.js. |
| version | 0.1.0 |
PPT Designer
topic-outline.md๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ๋ จ๋ HTML ํ๋ ์ ํ
์ด์
์ ์์ฑํ๋ skill.
์ํฌํ๋ก์ฐ
1. ์์ค ํ์ผ ํ์ธ
ํ์ฌ ๋๋ ํ ๋ฆฌ์์ topic-outline.md ํ์ผ์ ์ฝ๋๋ค. ํ์ผ์ด ์์ผ๋ฉด ์ฌ์ฉ์์๊ฒ ๋จผ์ ํ ํฝ ๋ฆฌ์์น๋ฅผ ์งํํ๋๋ก ์๋ดํ๋ค.
2. ์์๋ผ์ธ ํ์ฑ
topic-outline.md์์ ๋ค์ ๊ตฌ์กฐ๋ฅผ ์ถ์ถํ๋ค:
- ๋ฉํ ์ ๋ณด: ์ ๋ชฉ, ๋ชฉ์ , ๋์ ์ฒญ์ค
- Executive Summary: ํต์ฌ ํฌ์ธํธ ๋ฆฌ์คํธ
- ์๋ธํ ํฝ๋ค: ๊ฐ๊ฐ์ ํต์ฌ ๋ฉ์์ง, ํคํฌ์ธํธ, ๋ฐ์ดํฐ/ํต๊ณ, ์ฌ๋ผ์ด๋ ๊ตฌ์ฑ ์ ์
3. ํ๋ ์ ํ
์ด์
์์ฑ
reveal.js CDN์ ์ฌ์ฉํ ๋จ์ผ HTML ํ์ผ๋ก ํ๋ ์ ํ
์ด์
์ ์์ฑํ๋ค.
์ฌ๋ผ์ด๋ ๊ตฌ์กฐ
1. ํ์ดํ ์ฌ๋ผ์ด๋ (์ ๋ชฉ + ๋ ์ง + ๋ชฉ์ )
2. ๋ชฉ์ฐจ ์ฌ๋ผ์ด๋
3. Executive Summary ์ฌ๋ผ์ด๋ (ํต์ฌ ํฌ์ธํธ)
4~N. ์๋ธํ ํฝ๋ณ ์ฌ๋ผ์ด๋ ๊ทธ๋ฃน:
- ์๋ธํ ํฝ ํ์ดํ ์ฌ๋ผ์ด๋ (ํต์ฌ ๋ฉ์์ง)
- ํคํฌ์ธํธ ์ฌ๋ผ์ด๋ (bullet points)
- ๋ฐ์ดํฐ/ํต๊ณ ์ฌ๋ผ์ด๋ (์์น ๊ฐ์กฐ)
N+1. ์ ๋ฆฌ/์์ฝ ์ฌ๋ผ์ด๋
N+2. ์ฐธ๊ณ ์๋ฃ ์ฌ๋ผ์ด๋
HTML ํ
ํ๋ฆฟ
์๋ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ ํ
์ด์
HTML์ ์์ฑํ๋ค:
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{ํ๋ ์ ํ
์ด์
์ ๋ชฉ}</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reveal.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/theme/black.css">
<style>
</style>
</head>
<body>
<div class="reveal">
<div class="slides">
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reveal.js"></script>
<script>
Reveal.initialize({
hash: true,
slideNumber: true,
transition: 'slide',
backgroundTransition: 'fade'
});
</script>
</body>
</html>
4. ๋์์ธ ๊ฐ์ด๋๋ผ์ธ
์ปฌ๋ฌ & ํ
๋ง
- ๋คํฌ ํ
๋ง ๊ธฐ๋ณธ (๋ฐฐ๊ฒฝ: #0a0a1a ~ #1a1a2e ๊ณ์ด ๋คํฌ ๋ค์ด๋น/๋ธ๋)
- ํฌ์ธํธ ์ปฌ๋ฌ: ํ ํฝ์ ์ด์ธ๋ฆฌ๋ ๋น๋น๋ accent color 1๊ฐ ์ ํ (์: AI ๊ด๋ จ์ด๋ฉด ์์/๋ค์จ๋ธ๋ฃจ #00d4ff, ๋น์ฆ๋์ค๋ฉด ๊ณจ๋ #f0c040 ๋ฑ)
- ๊ทธ๋ผ๋์ธํธ ํ์ฉ: ๋ฐฐ๊ฒฝ์ด๋ ๊ฐ์กฐ ์์์ ๋ฏธ๋ฌํ ๊ทธ๋ผ๋์ธํธ ์ ์ฉ
- CSS ๋ณ์๋ก ์ปฌ๋ฌ ์์คํ
๊ด๋ฆฌ
ํ์ดํฌ๊ทธ๋ํผ
- Google Fonts CDN ์ฌ์ฉ
- ์ ๋ชฉ: ๋ณผ๋ํ๊ณ ์ํฉํธ ์๋ ํฐํธ (์: Pretendard, Noto Sans KR Black, Montserrat Bold)
- ๋ณธ๋ฌธ: ๊ฐ๋
์ฑ ์ข์ ํด๋ฆฐํ ํฐํธ
- ํต์ฌ ์์น๋ ํต๊ณ๋ ๋งค์ฐ ํฌ๊ฒ (3rem+) ํ์
- ํ๊ตญ์ด ์ง์ ํฐํธ ํ์ ํฌํจ
๋ ์ด์์
- ์ฌ๋ผ์ด๋๋น ํต์ฌ ๋ฉ์์ง 1๊ฐ์ ์ง์ค
- bullet point๋ ์ต๋ 4-5๊ฐ
- ๋ฐ์ดํฐ ์ฌ๋ผ์ด๋: ํฐ ์ซ์ + ์งง์ ์ค๋ช
๋ ์ด์์
- ์ถฉ๋ถํ ์ฌ๋ฐฑ (padding: 2rem+)
- ํ์ดํ ์ฌ๋ผ์ด๋๋ ํ์คํฌ๋ฆฐ ์ํฉํธ
์๊ฐ ํจ๊ณผ
- reveal.js fragment ์ ๋๋ฉ์ด์
์ผ๋ก bullet point ์์ฐจ ๋ฑ์ฅ
- ์๋ธํ ํฝ ์ ํ ์ ์น์
๊ตฌ๋ถ ๋ช
ํํ๊ฒ (๋ฐฐ๊ฒฝ์ ๋ณํ or ๋ํ ํ์ดํ)
- ์์น/ํต๊ณ์ CSS counter ์ ๋๋ฉ์ด์
๋๋ ํฐ ํฐํธ ๊ฐ์กฐ
- subtleํ box-shadow, border-radius ํ์ฉ
์ฌ๋ผ์ด๋ ์ ํ๋ณ ํจํด
ํ์ดํ ์ฌ๋ผ์ด๋:
<section data-background-gradient="linear-gradient(135deg, #0a0a1a 0%, #1a1a3e 100%)">
<h1 style="font-size: 2.5em;">{์ ๋ชฉ}</h1>
<p style="opacity: 0.7;">{๋ถ์ ๋๋ ๋ ์ง}</p>
</section>
ํคํฌ์ธํธ ์ฌ๋ผ์ด๋:
<section>
<h2>{์๋ธํ ํฝ ์ ๋ชฉ}</h2>
<ul>
<li class="fragment">{ํฌ์ธํธ 1}</li>
<li class="fragment">{ํฌ์ธํธ 2}</li>
<li class="fragment">{ํฌ์ธํธ 3}</li>
</ul>
</section>
๋ฐ์ดํฐ ๊ฐ์กฐ ์ฌ๋ผ์ด๋:
<section>
<div style="font-size: 4em; font-weight: bold; color: var(--accent);">{์์น}</div>
<p>{์์น ์ค๋ช
}</p>
<small style="opacity: 0.5;">{์ถ์ฒ}</small>
</section>
์ธ์ฉ/ํต์ฌ ๋ฉ์์ง ์ฌ๋ผ์ด๋:
<section>
<blockquote style="font-size: 1.5em; border-left: 4px solid var(--accent);">
{ํต์ฌ ๋ฉ์์ง}
</blockquote>
</section>
5. ์ถ๋ ฅ
- ํ์ผ๋ช
:
presentation.html
- ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ ์ฅ
- ์์ฑ ํ ์ฌ์ฉ์์๊ฒ
open presentation.html๋ก ์ด ์ ์์์ ์๋ด
6. ํ์ง ์ฒดํฌ๋ฆฌ์คํธ
์์ฑ ํ ํ์ธ:
์ฃ์ง ์ผ์ด์ค
| ์ํฉ | ๋์ |
|---|
| topic-outline.md ์์ | ์ฌ์ฉ์์๊ฒ ๋ฆฌ์์น ๋จผ์ ์งํ ์๋ด |
| ์๋ธํ ํฝ์ด ๋๋ฌด ๋ง์ (10+) | ์ฃผ์ 7-8๊ฐ๋ก ์์ถ ์ ์ |
| ๋ฐ์ดํฐ/ํต๊ณ ์๋ ์๋ธํ ํฝ | ํคํฌ์ธํธ ์ค์ฌ ๋ ์ด์์์ผ๋ก ๋์ฒด |
| ์๋ฌธ ํ ํฝ | ์๋ฌธ ํฐํธ๋ก ์ ํ, ๋ ์ด์์ ๋์ผ |