🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1698 lines
53 KiB
HTML
1698 lines
53 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>클로더즈 첫 수업 - 빌더가 되자 (30분)</title>
|
|
|
|
<!-- Fonts -->
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
|
|
|
<style>
|
|
/* ===== CSS Variables ===== */
|
|
:root {
|
|
--primary: #7C3AED;
|
|
--primary-light: #A78BFA;
|
|
--primary-dark: #5B21B6;
|
|
--primary-gradient: linear-gradient(135deg, #7C3AED 0%, #8B5CF6 50%, #A78BFA 100%);
|
|
|
|
--secondary: #E11D48;
|
|
--secondary-light: #FB7185;
|
|
|
|
--bg-white: #FFFFFF;
|
|
--bg-cream: #FFF7ED;
|
|
--bg-purple: #F5F3FF;
|
|
--bg-gray: #F9FAFB;
|
|
--bg-dark: #1F2937;
|
|
|
|
--text-primary: #1F2937;
|
|
--text-secondary: #4B5563;
|
|
--text-muted: #9CA3AF;
|
|
--text-white: #FFFFFF;
|
|
|
|
--accent-gold: #F59E0B;
|
|
--accent-purple: #7C3AED;
|
|
--accent-blue: #3B82F6;
|
|
--accent-green: #10B981;
|
|
--accent-red: #EF4444;
|
|
|
|
--shadow-sm: 0 1px 3px rgba(0,0,0,0.1);
|
|
--shadow-md: 0 10px 30px rgba(124,58,237,0.1);
|
|
--shadow-lg: 0 25px 50px rgba(124,58,237,0.15);
|
|
|
|
--radius-sm: 8px;
|
|
--radius-md: 16px;
|
|
--radius-lg: 24px;
|
|
}
|
|
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
background: var(--bg-white);
|
|
color: var(--text-primary);
|
|
line-height: 1.8;
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
/* ===== 슬라이드 기본 ===== */
|
|
.slide {
|
|
min-height: 100vh;
|
|
padding: 80px 10%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
border-bottom: 1px solid rgba(0,0,0,0.05);
|
|
position: relative;
|
|
background: var(--bg-white);
|
|
}
|
|
|
|
.slide-title {
|
|
min-height: 100vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
text-align: center;
|
|
background: linear-gradient(180deg, var(--bg-purple) 0%, var(--bg-white) 100%);
|
|
}
|
|
|
|
.slide-alt {
|
|
background: var(--bg-gray);
|
|
}
|
|
|
|
.slide-dark {
|
|
background: var(--bg-dark);
|
|
color: var(--text-white);
|
|
}
|
|
|
|
.slide-purple {
|
|
background: var(--bg-purple);
|
|
}
|
|
|
|
/* ===== 타이포그래피 ===== */
|
|
h1 {
|
|
font-size: 6rem;
|
|
font-weight: 800;
|
|
margin-bottom: 1rem;
|
|
background: var(--primary-gradient);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
h2 {
|
|
font-size: 4.5rem;
|
|
font-weight: 800;
|
|
margin-bottom: 2rem;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.slide-dark h2 {
|
|
color: var(--text-white);
|
|
}
|
|
|
|
h3 {
|
|
font-size: 3rem;
|
|
font-weight: 700;
|
|
margin-bottom: 1.5rem;
|
|
color: var(--primary-dark);
|
|
}
|
|
|
|
p {
|
|
font-size: 2.4rem;
|
|
margin-bottom: 1rem;
|
|
color: var(--text-primary);
|
|
font-weight: 500;
|
|
}
|
|
|
|
.subtitle {
|
|
font-size: 3rem;
|
|
color: var(--text-primary);
|
|
margin-bottom: 2rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.highlight {
|
|
color: var(--primary);
|
|
font-weight: 700;
|
|
}
|
|
|
|
.gradient-text {
|
|
background: var(--primary-gradient);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* ===== 인용구 ===== */
|
|
.big-quote {
|
|
font-size: 3.5rem;
|
|
font-style: italic;
|
|
color: var(--text-primary);
|
|
border-left: 8px solid var(--primary);
|
|
padding-left: 2.5rem;
|
|
margin: 2rem 0;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.center-quote {
|
|
font-size: 4rem;
|
|
text-align: center;
|
|
color: var(--text-primary);
|
|
font-weight: 700;
|
|
max-width: 1000px;
|
|
margin: 0 auto;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
/* ===== 카드 ===== */
|
|
.card {
|
|
background: var(--bg-white);
|
|
border-radius: var(--radius-md);
|
|
padding: 2rem;
|
|
margin: 1rem 0;
|
|
border: 1px solid rgba(0,0,0,0.08);
|
|
box-shadow: var(--shadow-sm);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.card:hover {
|
|
transform: translateY(-5px);
|
|
box-shadow: var(--shadow-md);
|
|
}
|
|
|
|
.card-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
gap: 1.5rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.card-grid-2 {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, 1fr);
|
|
gap: 2rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.card-warning {
|
|
border-color: var(--accent-red);
|
|
background: rgba(239, 68, 68, 0.05);
|
|
}
|
|
|
|
.card-primary {
|
|
border-color: var(--primary);
|
|
background: var(--bg-purple);
|
|
}
|
|
|
|
.card-success {
|
|
border-color: var(--accent-green);
|
|
background: rgba(16, 185, 129, 0.05);
|
|
}
|
|
|
|
/* ===== 비교 테이블 ===== */
|
|
.compare-table {
|
|
width: 100%;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.compare-row {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 2rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.compare-item {
|
|
padding: 2rem;
|
|
border-radius: var(--radius-md);
|
|
}
|
|
|
|
.compare-old {
|
|
background: rgba(0,0,0,0.05);
|
|
border-left: 6px solid var(--text-secondary);
|
|
}
|
|
|
|
.compare-new {
|
|
background: var(--bg-purple);
|
|
border-left: 6px solid var(--primary);
|
|
}
|
|
|
|
/* ===== 리스트 ===== */
|
|
.list {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.list li {
|
|
font-size: 2.6rem;
|
|
padding: 1.2rem 0;
|
|
padding-left: 3rem;
|
|
position: relative;
|
|
color: var(--text-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.list li::before {
|
|
content: "→";
|
|
position: absolute;
|
|
left: 0;
|
|
color: var(--primary);
|
|
font-weight: 800;
|
|
font-size: 2.6rem;
|
|
}
|
|
|
|
/* ===== 타임라인 ===== */
|
|
.timeline {
|
|
display: flex;
|
|
justify-content: space-around;
|
|
align-items: center;
|
|
margin: 3rem 0;
|
|
flex-wrap: wrap;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.timeline-item {
|
|
text-align: center;
|
|
flex: 1;
|
|
min-width: 180px;
|
|
}
|
|
|
|
.timeline-icon {
|
|
font-size: 4.5rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.timeline-label {
|
|
font-size: 2rem;
|
|
color: var(--text-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.timeline-value {
|
|
font-size: 3.5rem;
|
|
font-weight: 800;
|
|
color: var(--primary);
|
|
}
|
|
|
|
.timeline-arrow {
|
|
font-size: 4rem;
|
|
color: var(--primary);
|
|
font-weight: 800;
|
|
}
|
|
|
|
/* ===== 코드 블록 ===== */
|
|
.code-block {
|
|
background: var(--bg-dark);
|
|
border-radius: var(--radius-md);
|
|
padding: 2rem;
|
|
margin: 1.5rem 0;
|
|
font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
|
|
font-size: 2rem;
|
|
overflow-x: auto;
|
|
color: var(--text-white);
|
|
}
|
|
|
|
.code-block .command {
|
|
color: #C084FC;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.code-block .comment {
|
|
color: #A0AEC0;
|
|
}
|
|
|
|
.code-block .result {
|
|
color: #68D391;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ===== 테이블 ===== */
|
|
table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
margin: 2rem 0;
|
|
font-size: 2rem;
|
|
background: var(--bg-white);
|
|
border-radius: var(--radius-md);
|
|
overflow: hidden;
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
th, td {
|
|
padding: 1.5rem 2rem;
|
|
text-align: left;
|
|
border-bottom: 1px solid rgba(0,0,0,0.08);
|
|
}
|
|
|
|
th {
|
|
background: var(--bg-purple);
|
|
color: var(--primary-dark);
|
|
font-weight: 800;
|
|
font-size: 2rem;
|
|
}
|
|
|
|
td {
|
|
color: var(--text-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ===== 섹션 번호 ===== */
|
|
.section-number {
|
|
font-size: 4.5rem;
|
|
font-weight: 900;
|
|
color: rgba(124, 58, 237, 0.1);
|
|
position: absolute;
|
|
top: 40px;
|
|
right: 10%;
|
|
}
|
|
|
|
/* ===== 스텝 ===== */
|
|
.steps {
|
|
counter-reset: step;
|
|
}
|
|
|
|
.step {
|
|
position: relative;
|
|
padding-left: 6rem;
|
|
margin-bottom: 2.5rem;
|
|
}
|
|
|
|
.step::before {
|
|
counter-increment: step;
|
|
content: counter(step);
|
|
position: absolute;
|
|
left: 0;
|
|
width: 4rem;
|
|
height: 4rem;
|
|
background: var(--primary-gradient);
|
|
border-radius: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-weight: 800;
|
|
font-size: 2rem;
|
|
color: var(--text-white);
|
|
}
|
|
|
|
/* ===== 플로우 다이어그램 ===== */
|
|
.flow-vertical {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: 1rem;
|
|
font-family: 'JetBrains Mono', monospace;
|
|
font-size: 2rem;
|
|
margin: 2rem 0;
|
|
padding: 2.5rem;
|
|
background: var(--bg-gray);
|
|
border-radius: var(--radius-md);
|
|
}
|
|
|
|
.flow-item {
|
|
padding: 1rem 2rem;
|
|
background: var(--bg-white);
|
|
border-radius: var(--radius-sm);
|
|
border: 2px solid rgba(0,0,0,0.1);
|
|
font-weight: 700;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.flow-arrow {
|
|
color: var(--primary-dark);
|
|
padding-left: 2rem;
|
|
font-weight: 800;
|
|
font-size: 2rem;
|
|
}
|
|
|
|
/* ===== 루프백 박스 ===== */
|
|
.loopback-box {
|
|
background: var(--bg-white);
|
|
border: 4px solid var(--primary);
|
|
border-radius: var(--radius-md);
|
|
padding: 2.5rem;
|
|
margin: 1.5rem 0;
|
|
position: relative;
|
|
}
|
|
|
|
.loopback-box::before {
|
|
content: "🔄";
|
|
position: absolute;
|
|
top: -1.2rem;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background: var(--bg-white);
|
|
padding: 0 1rem;
|
|
font-size: 2.8rem;
|
|
}
|
|
|
|
.loopback-box .loop-item {
|
|
padding: 0.8rem 0;
|
|
font-size: 2rem;
|
|
color: var(--text-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ===== 아이콘 그리드 ===== */
|
|
.icon-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, 1fr);
|
|
gap: 2rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.icon-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.icon-emoji {
|
|
font-size: 3.5rem;
|
|
}
|
|
|
|
.icon-text h4 {
|
|
font-size: 2.2rem;
|
|
color: var(--text-primary);
|
|
margin-bottom: 0.3rem;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.icon-text p {
|
|
font-size: 2rem;
|
|
color: var(--text-secondary);
|
|
margin: 0;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* ===== 숫자 강조 ===== */
|
|
.big-number {
|
|
font-size: 5rem;
|
|
font-weight: 800;
|
|
color: var(--primary);
|
|
line-height: 1;
|
|
}
|
|
|
|
/* ===== CTA 박스 ===== */
|
|
.cta-box {
|
|
background: var(--bg-purple);
|
|
border: 3px solid var(--primary);
|
|
border-radius: var(--radius-md);
|
|
padding: 2.5rem;
|
|
margin: 2rem 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.cta-box a {
|
|
color: var(--primary-dark);
|
|
font-size: 2.5rem;
|
|
text-decoration: none;
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* ===== 반응형 ===== */
|
|
@media (max-width: 768px) {
|
|
.slide {
|
|
padding: 40px 5%;
|
|
}
|
|
h1 { font-size: 2.5rem; }
|
|
h2 { font-size: 1.8rem; }
|
|
h3 { font-size: 1.4rem; }
|
|
p, .list li { font-size: 1.1rem; }
|
|
.section-number { font-size: 3rem; }
|
|
.compare-row { grid-template-columns: 1fr; }
|
|
.card-grid-2 { grid-template-columns: 1fr; }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<!-- SLIDE #1: 타이틀 -->
|
|
<section class="slide slide-title" id="slide-1">
|
|
<h1>빌더가 되자</h1>
|
|
<p class="subtitle">AI로 나만의 도구를 만드는 사람이 되는 법</p>
|
|
<p style="margin-top: 3rem; color: var(--text-secondary); font-size: 2rem;">클로더즈 첫 수업 (30분)</p>
|
|
</section>
|
|
|
|
<!-- SLIDE #2: 세상이 바뀌고 있어 -->
|
|
<section class="slide" id="slide-2">
|
|
<span class="section-number">도입</span>
|
|
<h2>세상이 바뀌고 있어</h2>
|
|
|
|
<p style="font-size: 2.2rem; color: var(--text-secondary); margin-bottom: 2rem;">예전엔 한 회사에서 한 가지 일만 하면 됐어.</p>
|
|
|
|
<ul class="list">
|
|
<li>본업 하면서 사이드잡 하는 사람</li>
|
|
<li>프리랜서로 여러 프로젝트 뛰는 사람</li>
|
|
<li>친구들이랑 모여서 뭔가 만들어보는 사람</li>
|
|
<li>혼자서 서비스 만들어서 창업하는 사람</li>
|
|
</ul>
|
|
|
|
<div class="big-quote" style="margin-top: 2rem;">
|
|
"근데 그거 다 하려면 슈퍼맨이어야 하는 거 아니야?"<br>
|
|
<span class="highlight">이제 AI가 있잖아.</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #3: 실제로 일어나고 있는 일 -->
|
|
<section class="slide slide-alt" id="slide-3">
|
|
<h2>실제로 일어나고 있는 일</h2>
|
|
|
|
<div class="icon-grid">
|
|
<div class="icon-item">
|
|
<span class="icon-emoji">🎨</span>
|
|
<div class="icon-text">
|
|
<h4>디자이너</h4>
|
|
<p>피그마 시안 → AI로 랜딩페이지<br><span class="highlight">일주일 → 하루</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="icon-item">
|
|
<span class="icon-emoji">📋</span>
|
|
<div class="icon-text">
|
|
<h4>기획자/영업</h4>
|
|
<p>제안서 이미지 시안<br><span class="highlight">AI로 바로 생성</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="icon-item">
|
|
<span class="icon-emoji">📢</span>
|
|
<div class="icon-text">
|
|
<h4>마케터</h4>
|
|
<p>블로그 → 인스타/링크드인<br><span class="highlight">한 콘텐츠로 5개 채널</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="icon-item">
|
|
<span class="icon-emoji">💼</span>
|
|
<div class="icon-text">
|
|
<h4>PM</h4>
|
|
<p>회의록 정리<br><span class="highlight">30분 → 3분</span></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="center-quote" style="margin-top: 2rem; font-size: 2.8rem;">
|
|
AI 쓰는 사람 vs 안 쓰는 사람<br>
|
|
<span class="gradient-text">업무 속도 3~5배 차이</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #4: 기회의 시대 -->
|
|
<section class="slide" id="slide-4">
|
|
<h2>기회의 시대</h2>
|
|
|
|
<div class="card-grid-2">
|
|
<div class="card card-warning">
|
|
<p style="color: var(--accent-red); margin-bottom: 0.5rem; font-size: 2rem; font-weight: 700;">위기</p>
|
|
<p style="font-size: 2rem; margin: 0;">2025년 상반기 AI 해고 7만 8천 명</p>
|
|
<p style="font-size: 2rem; margin: 0;">MS 코드의 30%는 AI가 작성</p>
|
|
</div>
|
|
<div class="card card-success">
|
|
<p style="color: var(--accent-green); margin-bottom: 0.5rem; font-size: 2rem; font-weight: 700;">기회</p>
|
|
<p style="font-size: 2rem; margin: 0;">예전엔 개발 몰라서 못 만들었는데</p>
|
|
<p style="font-size: 2rem; margin: 0;">이젠 AI한테 시키면 돼</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="center-quote" style="margin-top: 2rem;">
|
|
<span class="gradient-text">아이디어 있는 사람한테<br>가장 유리한 시대</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #5: ChatGPT 써봤지? -->
|
|
<section class="slide slide-purple" id="slide-5">
|
|
<span class="section-number">Part 1</span>
|
|
<h2>ChatGPT 써봤지?</h2>
|
|
|
|
<p style="font-size: 2.4rem; margin-bottom: 2rem;">
|
|
"이거 뭐야?" 물어보면 답해주고,<br>
|
|
"번역해줘" 하면 번역해주고.
|
|
</p>
|
|
|
|
<div class="center-quote" style="font-size: 3.5rem;">
|
|
신기하긴 한데...<br>
|
|
<span class="highlight">뭔가 아쉽지 않았어?</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #6: 세 가지 문제 -->
|
|
<section class="slide" id="slide-6">
|
|
<h2>세 가지 문제</h2>
|
|
|
|
<div class="steps">
|
|
<div class="step">
|
|
<h3 style="font-size: 2.5rem;">매번 같은 말 반복</h3>
|
|
<div class="code-block" style="font-size: 1.8rem;">
|
|
<span class="comment">"너는 시니어 개발자야. 코드 리뷰해줘."</span><br>
|
|
<span class="comment">"너는 시니어 개발자야. 이 에러 뭐야?"</span><br>
|
|
<span class="comment">"너는 시니어 개발자야. 이거 어떻게 고쳐?"</span>
|
|
</div>
|
|
</div>
|
|
<div class="step">
|
|
<h3 style="font-size: 2.5rem;">대화 길어지면 까먹음</h3>
|
|
<p style="font-size: 2rem; color: var(--text-secondary);">
|
|
"Next.js 쓴다" 했는데 → "React로 만들면..."
|
|
</p>
|
|
</div>
|
|
<div class="step">
|
|
<h3 style="font-size: 2.5rem;">결과물이 내 스타일이 아님</h3>
|
|
<p style="font-size: 2rem; color: var(--text-secondary);">
|
|
너무 딱딱하거나, 너무 가볍거나
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #7: 잘 쓴다 = 나만의 도구로 만든다 -->
|
|
<section class="slide slide-alt" id="slide-7">
|
|
<h2>잘 쓴다 =<br><span class="gradient-text">나만의 도구로 만든다</span></h2>
|
|
|
|
<div class="card-grid-2" style="margin-top: 2rem;">
|
|
<div class="card">
|
|
<p style="font-size: 2.2rem; margin-bottom: 1rem;">매번 이렇게 말해야 한다면?</p>
|
|
<div class="code-block" style="font-size: 1.6rem;">
|
|
"너는 한식 전문 요리사야.<br>
|
|
간은 좀 싱겁게 해줘.<br>
|
|
나 매운 거 못 먹어.<br>
|
|
고수는 빼줘.<br>
|
|
자 이제 김치찌개 만들어줘."
|
|
</div>
|
|
</div>
|
|
<div class="card card-primary">
|
|
<p style="font-size: 2.2rem; margin-bottom: 1rem;">요리사가 나를 알고 있다면?</p>
|
|
<div class="code-block" style="font-size: 1.6rem; background: var(--primary);">
|
|
<span style="color: white;">"김치찌개 만들어줘"</span>
|
|
</div>
|
|
<p style="font-size: 2rem; margin-top: 1rem; color: var(--primary-dark); font-weight: 700;">
|
|
미리 다 적어두는 거야 = <span class="highlight">지침 파일</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #8: 역할 부여 vs 구체적인 지침 -->
|
|
<section class="slide" id="slide-8">
|
|
<h2>역할 부여 vs 구체적인 지침</h2>
|
|
|
|
<div class="compare-table">
|
|
<div class="compare-row">
|
|
<div class="compare-item compare-old">
|
|
<p style="color: var(--text-secondary); margin-bottom: 0.5rem; font-size: 2rem; font-weight: 600;">역할 부여 (별로)</p>
|
|
<div class="code-block" style="font-size: 1.6rem;">
|
|
"너는 10년차 시니어 개발자야"<br>
|
|
"너는 마케팅 전문가야"
|
|
</div>
|
|
<p style="font-size: 1.8rem; margin-top: 1rem; color: var(--text-secondary);">
|
|
→ AI가 어떻게 해석할지는 AI 맘
|
|
</p>
|
|
</div>
|
|
<div class="compare-item compare-new">
|
|
<p style="color: var(--primary); margin-bottom: 0.5rem; font-size: 2rem; font-weight: 600;">구체적 지침 (Good!)</p>
|
|
<div class="code-block" style="font-size: 1.6rem;">
|
|
# 코드 리뷰할 때<br>
|
|
- 성능 이슈 최우선 체크<br>
|
|
- 보안 취약점 반드시 언급<br>
|
|
- 수정 코드는 diff 형식으로
|
|
</div>
|
|
<p style="font-size: 1.8rem; margin-top: 1rem; color: var(--primary-dark); font-weight: 700;">
|
|
→ 해석의 여지 없음
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #9: 오늘 직접 해볼 거야 -->
|
|
<section class="slide slide-purple" id="slide-9">
|
|
<span class="section-number">Part 2</span>
|
|
<h2>오늘 직접 해볼 거야</h2>
|
|
|
|
<div class="timeline" style="margin-top: 3rem;">
|
|
<div class="timeline-item">
|
|
<div class="timeline-icon">📁</div>
|
|
<div class="timeline-label">프로젝트 폴더</div>
|
|
</div>
|
|
<div class="timeline-arrow">→</div>
|
|
<div class="timeline-item">
|
|
<div class="timeline-icon">📝</div>
|
|
<div class="timeline-label">CLAUDE.md</div>
|
|
</div>
|
|
<div class="timeline-arrow">→</div>
|
|
<div class="timeline-item">
|
|
<div class="timeline-icon">✍️</div>
|
|
<div class="timeline-label">블로그 글</div>
|
|
</div>
|
|
<div class="timeline-arrow">→</div>
|
|
<div class="timeline-item">
|
|
<div class="timeline-icon">🚀</div>
|
|
<div class="timeline-label">업로드</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #10: 1단계: 프로젝트 폴더 만들기 -->
|
|
<section class="slide" id="slide-10">
|
|
<h2>1단계: 프로젝트 폴더</h2>
|
|
|
|
<p style="font-size: 2.5rem; margin-bottom: 2rem;">
|
|
프로젝트가 뭐냐면, 그냥 <span class="highlight">폴더</span>야. 별거 없어.
|
|
</p>
|
|
|
|
<div class="code-block">
|
|
<span class="comment"># 바탕화면에 폴더 만들기</span><br>
|
|
<span class="command">바탕화면 우클릭 → 새 폴더 → "my-blog"</span><br><br>
|
|
<span class="comment"># VSCode로 열기</span><br>
|
|
<span class="command">파일 → 폴더 열기 → "my-blog" 선택</span>
|
|
</div>
|
|
|
|
<p style="font-size: 2rem; color: var(--text-secondary); margin-top: 1.5rem;">
|
|
이름은 영어로! 한글 폴더명은 가끔 문제 생겨.
|
|
</p>
|
|
</section>
|
|
|
|
<!-- SLIDE #11: 2단계: CLAUDE.md 만들기 -->
|
|
<section class="slide slide-alt" id="slide-11">
|
|
<h2>2단계: CLAUDE.md 만들기</h2>
|
|
|
|
<p style="font-size: 2.2rem; margin-bottom: 1.5rem;">
|
|
<span class="highlight">CLAUDE.md</span>는 AI한테 주는 지침서야.
|
|
</p>
|
|
|
|
<div class="code-block" style="font-size: 1.8rem;">
|
|
<span class="command"># 블로그 글 작성 지침</span><br><br>
|
|
<span class="result">## 나는</span><br>
|
|
- 개발 입문자<br>
|
|
- 블로그 막 시작함<br>
|
|
- 어려운 말 싫어함<br><br>
|
|
<span class="result">## 글 스타일</span><br>
|
|
- 친근하게 써줘<br>
|
|
- 문장은 짧게<br>
|
|
- 어려운 용어 나오면 바로 설명해줘
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #12: 3단계: 블로그 글 써보기 -->
|
|
<section class="slide" id="slide-12">
|
|
<h2>3단계: 블로그 글 써보기</h2>
|
|
|
|
<div class="code-block">
|
|
<span class="comment"># 터미널 열기 (VSCode에서 Ctrl + `)</span><br><br>
|
|
<span class="command">$ claude</span><br><br>
|
|
<span class="comment"># Claude Code 실행 후</span><br>
|
|
<span class="result">"CLAUDE.md 읽고, 블로그 글 하나 써줘.<br>주제는 'AI 처음 써본 후기'"</span>
|
|
</div>
|
|
|
|
<div class="center-quote" style="margin-top: 2rem; font-size: 3rem;">
|
|
뭔가 쫙 나올 거야 ✨
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #13: 4단계: 휴먼터치 -->
|
|
<section class="slide slide-purple" id="slide-13">
|
|
<h2>4단계: 휴먼터치</h2>
|
|
|
|
<div class="big-quote">
|
|
AI가 뭔가 만들어주면<br>
|
|
<span class="highlight">무조건 확인해야 해</span>
|
|
</div>
|
|
|
|
<ul class="list" style="margin-top: 2rem;">
|
|
<li>문장이 진짜 짧아?</li>
|
|
<li>말투가 친근해?</li>
|
|
<li>어려운 용어 설명해줬어?</li>
|
|
</ul>
|
|
|
|
<div class="card card-primary" style="margin-top: 2rem;">
|
|
<p style="font-size: 2.2rem; margin: 0; text-align: center;">
|
|
AI 결과물은 <span class="highlight">초안</span>이야. 한 50~60%.<br>
|
|
근데 <span class="highlight">0%에서 시작 vs 50%에서 시작</span><br>
|
|
뭐가 더 빨라?
|
|
</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #14: 5단계: 루프백 -->
|
|
<section class="slide" id="slide-14">
|
|
<h2>5단계: 루프백</h2>
|
|
|
|
<p style="font-size: 2.2rem; margin-bottom: 1.5rem;">
|
|
마음에 안 드는 게 있으면? → <span class="highlight">지침 수정 → 다시 시키기</span>
|
|
</p>
|
|
|
|
<div class="loopback-box">
|
|
<div class="loop-item">1. AI한테 시킴</div>
|
|
<div class="loop-item">2. 결과 확인</div>
|
|
<div class="loop-item">3. 마음에 안 듦</div>
|
|
<div class="loop-item">4. 지침 수정</div>
|
|
<div class="loop-item">5. 다시 시킴 (반복)</div>
|
|
</div>
|
|
|
|
<div class="center-quote" style="margin-top: 1.5rem; font-size: 2.8rem;">
|
|
좋은 지침은 한 번에 안 나와.<br>
|
|
<span class="gradient-text">계속 다듬는 거야.</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #15: 6단계: 네이버 업로드 -->
|
|
<section class="slide slide-alt" id="slide-15">
|
|
<h2>6단계: 네이버 블로그 업로드</h2>
|
|
|
|
<div class="code-block" style="font-size: 2rem;">
|
|
<span class="result">".env 파일 읽어서 네이버 블로그에 로그인하고,<br>방금 쓴 글 올려줘"</span>
|
|
</div>
|
|
|
|
<div class="timeline" style="margin-top: 2rem;">
|
|
<div class="timeline-item">
|
|
<div class="timeline-icon">🔑</div>
|
|
<div class="timeline-label">.env 읽기</div>
|
|
</div>
|
|
<div class="timeline-arrow">→</div>
|
|
<div class="timeline-item">
|
|
<div class="timeline-icon">🔐</div>
|
|
<div class="timeline-label">로그인</div>
|
|
</div>
|
|
<div class="timeline-arrow">→</div>
|
|
<div class="timeline-item">
|
|
<div class="timeline-icon">📝</div>
|
|
<div class="timeline-label">글 작성</div>
|
|
</div>
|
|
<div class="timeline-arrow">→</div>
|
|
<div class="timeline-item">
|
|
<div class="timeline-icon">🚀</div>
|
|
<div class="timeline-label">발행!</div>
|
|
</div>
|
|
</div>
|
|
|
|
<p style="font-size: 2rem; text-align: center; margin-top: 2rem; color: var(--primary); font-weight: 700;">
|
|
진짜 올라가.
|
|
</p>
|
|
</section>
|
|
|
|
<!-- SLIDE #16: 폴더 구조 -->
|
|
<section class="slide" id="slide-16">
|
|
<h2>현재 폴더 구조</h2>
|
|
|
|
<div class="code-block" style="font-size: 2.2rem;">
|
|
<span class="command">my-blog/</span><br>
|
|
<span class="result">├── .env</span> <span class="comment">← 네이버 로그인 정보 (비밀!)</span><br>
|
|
<span class="result">├── .gitignore</span> <span class="comment">← .env 보호</span><br>
|
|
<span class="result">└── CLAUDE.md</span> <span class="comment">← AI 지침</span>
|
|
</div>
|
|
|
|
<div class="center-quote" style="margin-top: 2rem; font-size: 3.5rem;">
|
|
파일 3개.<br>
|
|
<span class="gradient-text">이게 끝이야.</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #17: 지침이 쌓이면 -->
|
|
<section class="slide slide-purple" id="slide-17">
|
|
<span class="section-number">Part 3</span>
|
|
<h2>지침 하나가 곧 "도구"야</h2>
|
|
|
|
<div class="card-grid" style="margin-top: 2rem;">
|
|
<div class="card">
|
|
<p style="font-size: 2.2rem; margin: 0;">
|
|
블로그 글 작성 지침<br>
|
|
<span class="highlight">→ 블로그 글쓰기 도구</span>
|
|
</p>
|
|
</div>
|
|
<div class="card">
|
|
<p style="font-size: 2.2rem; margin: 0;">
|
|
코드 리뷰 지침<br>
|
|
<span class="highlight">→ 코드 리뷰 도구</span>
|
|
</p>
|
|
</div>
|
|
<div class="card">
|
|
<p style="font-size: 2.2rem; margin: 0;">
|
|
기획서 검토 지침<br>
|
|
<span class="highlight">→ 기획서 검토 도구</span>
|
|
</p>
|
|
</div>
|
|
<div class="card">
|
|
<p style="font-size: 2.2rem; margin: 0;">
|
|
번역 지침<br>
|
|
<span class="highlight">→ 내 스타일 번역 도구</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #18: 도구가 쌓이면 -->
|
|
<section class="slide" id="slide-18">
|
|
<h2>도구가 쌓이면?</h2>
|
|
|
|
<div class="flow-vertical">
|
|
<div class="flow-item"><strong>본업에서 만든 도구</strong> → 일 빨라짐 → 시간 남음</div>
|
|
<div class="flow-arrow">↓</div>
|
|
<div class="flow-item"><strong>시간 남으니까</strong> → 사이드잡 시작 → 거기서도 도구 만듦</div>
|
|
<div class="flow-arrow">↓</div>
|
|
<div class="flow-item"><strong>도구 많아지니까</strong> → 뭘 해도 빠름 → 여러 프로젝트 가능</div>
|
|
<div class="flow-arrow">↓</div>
|
|
<div class="flow-item" style="background: var(--bg-purple); border-color: var(--primary);"><strong class="highlight">결국 도구를 만드는 사람이 된다</strong></div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #19: 도구를 쓰는 vs 만드는 -->
|
|
<section class="slide slide-alt" id="slide-19">
|
|
<h2>도구를 쓰는 사람 vs 만드는 사람</h2>
|
|
|
|
<div class="compare-table">
|
|
<div class="compare-row">
|
|
<div class="compare-item compare-old">
|
|
<p style="color: var(--text-secondary); margin-bottom: 1rem; font-size: 2.2rem; font-weight: 700;">도구를 쓰는 사람</p>
|
|
<ul class="list" style="font-size: 2rem;">
|
|
<li style="font-size: 2rem;">남이 만든 거 그대로 씀</li>
|
|
<li style="font-size: 2rem;">새 도구 나오면 또 배워야 함</li>
|
|
<li style="font-size: 2rem;">도구가 바뀌면 적응하느라 힘듦</li>
|
|
</ul>
|
|
</div>
|
|
<div class="compare-item compare-new">
|
|
<p style="color: var(--primary); margin-bottom: 1rem; font-size: 2.2rem; font-weight: 700;">빌더 (도구를 만드는 사람)</p>
|
|
<ul class="list" style="font-size: 2rem;">
|
|
<li style="font-size: 2rem;">내가 필요한 걸 직접 만듦</li>
|
|
<li style="font-size: 2rem;">기존 도구를 내 방식대로 커스텀</li>
|
|
<li style="font-size: 2rem;">도구가 바뀌어도 새로 만들면 됨</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="center-quote" style="margin-top: 2rem; font-size: 2.5rem;">
|
|
AI 덕분에 도구 만드는 게 쉬워졌는데<br>
|
|
<span class="highlight">대부분은 여전히 쓰기만 해</span><br>
|
|
<span style="font-size: 2rem; color: var(--text-secondary);">여기서 차이가 벌어지는 거야</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #20: 클로더즈에서 할 것들 -->
|
|
<section class="slide slide-purple" id="slide-20">
|
|
<span class="section-number">결론</span>
|
|
<h2>클로더즈에서 할 것들</h2>
|
|
|
|
<p style="font-size: 2.5rem; margin-bottom: 2rem;">
|
|
우리는 AI를 "쓰는" 사람들이 아니야.<br>
|
|
<span class="gradient-text">AI로 도구를 "만드는" 사람들이야. 빌더.</span>
|
|
</p>
|
|
|
|
<div class="steps" style="margin-top: 2rem;">
|
|
<div class="step">
|
|
<h3 style="font-size: 2.2rem;">각자의 도구를 만들어</h3>
|
|
<p style="font-size: 1.8rem; color: var(--text-secondary);">CLAUDE.md부터 시작해서, 커스텀 커맨드, MCP 서버까지</p>
|
|
</div>
|
|
<div class="step">
|
|
<h3 style="font-size: 2.2rem;">만든 걸 공유해</h3>
|
|
<p style="font-size: 1.8rem; color: var(--text-secondary);">이게 좋더라, 이건 별로더라</p>
|
|
</div>
|
|
<div class="step">
|
|
<h3 style="font-size: 2.2rem;">같이 성장해</h3>
|
|
<p style="font-size: 1.8rem; color: var(--text-secondary);">혼자 삽질하지 말고, 서로 도와주면서</p>
|
|
</div>
|
|
<div class="step">
|
|
<h3 style="font-size: 2.2rem;">뭔가 만들어봐</h3>
|
|
<p style="font-size: 1.8rem; color: var(--text-secondary);">4주 뒤에 실제로 돌아가는 MVP 출시까지</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SLIDE #21: 4주 커리큘럼 -->
|
|
<section class="slide" id="slide-21">
|
|
<h2>4주 커리큘럼</h2>
|
|
|
|
<table>
|
|
<tr>
|
|
<th style="width: 20%;">주차</th>
|
|
<th>내용</th>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="big-number" style="font-size: 3rem;">1</span></td>
|
|
<td>CLAUDE.md 작성법, AI에게 지침 주는 법</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="big-number" style="font-size: 3rem;">2</span></td>
|
|
<td>커스텀 커맨드로 반복 작업 자동화</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="big-number" style="font-size: 3rem;">3</span></td>
|
|
<td>MCP 서버로 외부 서비스 연결</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="big-number" style="font-size: 3rem;">4</span></td>
|
|
<td>실제 MVP 만들어서 출시</td>
|
|
</tr>
|
|
</table>
|
|
</section>
|
|
|
|
<!-- SLIDE #22: 오늘 배운 거 정리 -->
|
|
<section class="slide slide-alt" id="slide-22">
|
|
<h2>오늘 배운 거</h2>
|
|
|
|
<table>
|
|
<tr>
|
|
<th style="width: 30%;">개념</th>
|
|
<th>설명</th>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="highlight">CLAUDE.md</span></td>
|
|
<td>AI한테 주는 지침 파일</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="highlight">휴먼터치</span></td>
|
|
<td>AI 결과물 무조건 확인하기</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="highlight">루프백</span></td>
|
|
<td>지침 → 결과 → 수정 → 반복</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="highlight">빌더</span></td>
|
|
<td>도구를 만드는 사람</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p style="text-align: center; margin-top: 2rem; font-size: 2.5rem; font-weight: 700;">
|
|
이게 AI 활용의 기본이야.
|
|
</p>
|
|
</section>
|
|
|
|
<!-- SLIDE #23: 마지막 한 마디 -->
|
|
<section class="slide slide-title" id="slide-23">
|
|
<h2 style="font-size: 3rem; color: var(--text-secondary); font-weight: 500; margin-bottom: 2rem;">
|
|
앞으로 어떤 세상이 될지 아무도 몰라.<br>
|
|
근데 하나는 확실해.
|
|
</h2>
|
|
|
|
<div class="center-quote" style="font-size: 3.5rem; margin-bottom: 3rem;">
|
|
<span class="gradient-text">도구를 만들 줄 아는 사람은<br>어디서든 가치를 만들 수 있어.</span>
|
|
</div>
|
|
|
|
<p style="font-size: 2.5rem; color: var(--text-secondary); margin-bottom: 2rem;">
|
|
4주 뒤에 너희는<br>
|
|
<span class="highlight">진짜 돌아가는 서비스를 출시한 사람</span>이 돼.
|
|
</p>
|
|
|
|
<h1 style="font-size: 5rem; margin-top: 2rem;">빌더가 되자.</h1>
|
|
|
|
<div class="cta-box" style="margin-top: 3rem;">
|
|
<a href="https://clauders.ai" target="_blank">clauders.ai</a>
|
|
</div>
|
|
</section>
|
|
|
|
<script>
|
|
// ===== 발표자 노트 데이터 =====
|
|
const presenterNotes = {
|
|
1: {
|
|
title: "타이틀",
|
|
notes: `안녕하세요, 클로더즈 첫 수업을 시작합니다.
|
|
|
|
오늘 30분 동안 여러분이 "빌더"가 된다는 게 무슨 의미인지,
|
|
그리고 실제로 첫 번째 도구를 만들어볼 거예요.
|
|
|
|
질문은 언제든 해주세요.
|
|
질문 안 하시면 다 아시는 걸로 알고 빠르게 넘어갈게요.`
|
|
},
|
|
2: {
|
|
title: "세상이 바뀌고 있어",
|
|
notes: `예전엔 한 회사에서 한 가지 일만 하면 됐어.
|
|
10년, 20년 다니면서 그 분야 전문가가 되는 거지.
|
|
|
|
근데 요즘은 다르잖아.
|
|
|
|
(리스트 하나씩 읽으며)
|
|
이런 사람들 점점 많아지고 있어.
|
|
|
|
"근데 그거 다 하려면 슈퍼맨이어야 하는 거 아니야?"
|
|
|
|
맞아, 예전엔 그랬어. 혼자서 다 하는 건 거의 불가능했지.
|
|
|
|
(강조하며)
|
|
근데 이제 AI가 있잖아.`
|
|
},
|
|
3: {
|
|
title: "실제로 일어나고 있는 일",
|
|
notes: `요즘 회사에서 실제로 어떤 일이 벌어지는지 몇 가지 볼게.
|
|
|
|
(디자이너)
|
|
피그마로 시안 뽑으면, AI한테 "이거 랜딩페이지로 만들어줘" 해.
|
|
예전엔 개발자한테 넘기고 일주일 기다렸는데, 이제 하루면 나와.
|
|
|
|
(기획자/영업)
|
|
제안서 만들 때 이미지가 필요하잖아.
|
|
이제는 AI로 딱 맞는 이미지를 바로 생성해.
|
|
|
|
(마케터)
|
|
블로그 글 하나 쓰면, "인스타용으로 바꿔줘, 링크드인용으로도" 해.
|
|
한 콘텐츠로 5개 채널 동시에 돌려.
|
|
|
|
(PM)
|
|
회의 끝나면 녹음 파일 주고 "요약하고 액션 아이템 뽑아줘".
|
|
30분 걸리던 게 3분이면 끝나.
|
|
|
|
(강조)
|
|
AI 쓰는 사람이랑 안 쓰는 사람, 업무 속도가 3~5배 차이 나.`
|
|
},
|
|
4: {
|
|
title: "기회의 시대",
|
|
notes: `물론 반대쪽도 있어.
|
|
|
|
2025년 상반기, AI 때문에 해고된 사람이 7만 8천 명이야.
|
|
MS CEO는 "우리 코드의 30%는 AI가 짜고 있다"고 했어.
|
|
|
|
기업들이 AI로 효율화하고, 남는 인력은 정리하고 있어.
|
|
이건 막을 수 없는 흐름이야.
|
|
|
|
(잠시 멈추고)
|
|
|
|
근데, 이건 위기이자 기회야.
|
|
|
|
예전엔 개발 몰라서 못 만들었는데,
|
|
이젠 AI한테 시키면 돼.
|
|
|
|
(강조)
|
|
아이디어 있는 사람한테 가장 유리한 시대가 온 거야.`
|
|
},
|
|
5: {
|
|
title: "ChatGPT 써봤지?",
|
|
notes: `아마 다들 ChatGPT 써봤을 거야.
|
|
|
|
"이거 뭐야?" 물어보면 답해주고,
|
|
"번역해줘" 하면 번역해주고.
|
|
|
|
(청중에게)
|
|
신기하긴 한데... 뭔가 아쉽지 않았어?
|
|
|
|
다음 슬라이드에서 세 가지 문제점을 볼게.`
|
|
},
|
|
6: {
|
|
title: "세 가지 문제",
|
|
notes: `(첫째)
|
|
매번 "너는 시니어 개발자야"를 붙여야 해.
|
|
안 그러면 초보자한테 설명하듯이 장황하게 얘기하거든.
|
|
|
|
(둘째)
|
|
대화가 50개 넘어가면 앞에 말한 거 까먹어.
|
|
"Next.js 쓴다"고 했는데 "React로 만들면..." 이래.
|
|
|
|
(셋째)
|
|
"블로그 글 써줘" 하면 뭔가 나오긴 하는데...
|
|
내 스타일이 아니야. 너무 딱딱하거나, 너무 가볍거나.
|
|
|
|
이게 AI를 "쓰는" 거야.
|
|
근데 이건 "잘 쓰는" 게 아니거든.`
|
|
},
|
|
7: {
|
|
title: "잘 쓴다 = 나만의 도구로 만든다",
|
|
notes: `AI를 잘 쓴다는 건 뭘까?
|
|
|
|
내가 원하는 대로 동작하는 나만의 도구로 만드는 거야.
|
|
|
|
비유를 하나 해볼게.
|
|
|
|
(왼쪽 카드)
|
|
요리사한테 매번 이렇게 말해야 한다고 생각해봐.
|
|
"너는 한식 전문 요리사야. 간은 싱겁게, 매운 거 못 먹어, 고수는 빼..."
|
|
귀찮잖아.
|
|
|
|
(오른쪽 카드)
|
|
근데 이 요리사가 나를 다 알고 있으면?
|
|
"김치찌개 만들어줘" 이것만 말해도 내 입맛에 맞는 게 나와.
|
|
|
|
AI도 마찬가지야.
|
|
매번 설명하지 말고, 미리 다 적어두는 거야.
|
|
그게 바로 "지침 파일"이야.`
|
|
},
|
|
8: {
|
|
title: "역할 부여 vs 구체적인 지침",
|
|
notes: `여기서 중요한 포인트 하나.
|
|
|
|
많은 사람들이 "너는 10년차 시니어 개발자야" 이렇게 해.
|
|
이게 "역할 부여"야. 나쁘진 않은데... 별로 효과적이지 않아.
|
|
|
|
왜냐면 AI가 "시니어 개발자"를 어떻게 해석할지는 AI 맘이거든.
|
|
|
|
(오른쪽 보며)
|
|
구체적인 지침이 훨씬 효과적이야.
|
|
|
|
"성능 이슈 최우선 체크, 보안 취약점 반드시 언급..."
|
|
이렇게 적으면 AI가 정확히 뭘 해야 하는지 알아.
|
|
|
|
역할 부여 = "알아서 잘 해줘"
|
|
구체적 지침 = "이렇게 해줘"
|
|
|
|
어떤 게 더 확실하겠어?`
|
|
},
|
|
9: {
|
|
title: "오늘 직접 해볼 거야",
|
|
notes: `자, 이론은 여기까지.
|
|
|
|
이제 직접 해보자.
|
|
|
|
오늘 할 거:
|
|
1. 프로젝트 폴더 만들기
|
|
2. CLAUDE.md 작성
|
|
3. 블로그 글 써보기
|
|
4. 네이버 블로그에 업로드
|
|
|
|
VSCode 처음 써봐? 괜찮아. 같이 해보자.`
|
|
},
|
|
10: {
|
|
title: "1단계: 프로젝트 폴더",
|
|
notes: `프로젝트가 뭐냐면, 그냥 폴더야. 별거 없어.
|
|
|
|
바탕화면에 폴더 하나 만들어.
|
|
이름은 "my-blog" - 영어로 하는 게 좋아.
|
|
한글 폴더명은 가끔 문제 생기거든.
|
|
|
|
VSCode로 열어.
|
|
파일 → 폴더 열기 → 방금 만든 폴더 선택.
|
|
|
|
왼쪽에 폴더 이름이 보이면 성공이야.`
|
|
},
|
|
11: {
|
|
title: "2단계: CLAUDE.md 만들기",
|
|
notes: `CLAUDE.md는 AI한테 주는 지침서야.
|
|
"나는 이런 사람이고, 이렇게 해줘"를 적어두는 파일.
|
|
|
|
새 파일 만들어. 파일 이름: CLAUDE.md
|
|
대문자로 써야 해. 이게 규칙이야.
|
|
|
|
(코드 블록 보며)
|
|
처음이니까 간단하게 시작해.
|
|
|
|
- 나는 개발 입문자
|
|
- 블로그 막 시작함
|
|
- 어려운 말 싫어함
|
|
|
|
글 스타일은:
|
|
- 친근하게
|
|
- 문장은 짧게
|
|
- 어려운 용어 나오면 바로 설명
|
|
|
|
저장해.`
|
|
},
|
|
12: {
|
|
title: "3단계: 블로그 글 써보기",
|
|
notes: `자, 이제 Claude Code한테 시켜보자.
|
|
|
|
터미널 열어. VSCode 안에서 Ctrl + 백틱 누르면 열려.
|
|
|
|
"claude" 입력하고 엔터.
|
|
|
|
Claude Code가 켜지면:
|
|
"CLAUDE.md 읽고, 블로그 글 하나 써줘. 주제는 'AI 처음 써본 후기'"
|
|
|
|
(잠시 기다리며)
|
|
뭔가 쫙 나올 거야.`
|
|
},
|
|
13: {
|
|
title: "4단계: 휴먼터치",
|
|
notes: `여기가 제일 중요해.
|
|
|
|
AI가 뭔가 만들어주면 무조건 확인해야 해.
|
|
이걸 "휴먼터치"라고 해.
|
|
|
|
읽어보고 체크해:
|
|
- 문장이 진짜 짧아?
|
|
- 말투가 친근해?
|
|
- 어려운 용어 설명해줬어?
|
|
|
|
(강조)
|
|
AI 결과물은 초안이야. 한 50~60% 정도라고 보면 돼.
|
|
|
|
근데 0에서 시작하는 거랑 50%에서 시작하는 거랑
|
|
뭐가 더 빨라?`
|
|
},
|
|
14: {
|
|
title: "5단계: 루프백",
|
|
notes: `마음에 안 드는 게 있으면?
|
|
|
|
예를 들어, "문장이 생각보다 길다"면:
|
|
CLAUDE.md 열어서 수정해.
|
|
"문장은 짧게" → "한 문장 20자 이내로"
|
|
|
|
그리고 다시 시켜봐.
|
|
"방금 쓴 글, 다시 써줘"
|
|
|
|
이 사이클을 루프백이라고 해.
|
|
|
|
(다이어그램 보며)
|
|
AI한테 시킴 → 결과 확인 → 마음에 안 듦 → 지침 수정 → 다시 시킴
|
|
|
|
처음엔 지침이 별로 없어.
|
|
근데 이 사이클 돌다 보면 지침이 점점 정교해져.
|
|
|
|
좋은 지침은 한 번에 안 나와. 계속 다듬는 거야.`
|
|
},
|
|
15: {
|
|
title: "6단계: 네이버 블로그 업로드",
|
|
notes: `글 마음에 들어? 이제 진짜 블로그에 올려보자.
|
|
|
|
".env 파일 읽어서 네이버 블로그에 로그인하고, 방금 쓴 글 올려줘"
|
|
|
|
Claude Code가 알아서:
|
|
1. .env에서 아이디/비번 읽고
|
|
2. 네이버 블로그 열고
|
|
3. 로그인하고
|
|
4. 글 작성 페이지 가서
|
|
5. 제목이랑 내용 붙여넣고
|
|
6. 발행까지
|
|
|
|
(강조)
|
|
진짜 올라가.
|
|
|
|
처음엔 "임시저장만 해줘" 이렇게 해봐.
|
|
바로 발행하기 무서우면.`
|
|
},
|
|
16: {
|
|
title: "현재 폴더 구조",
|
|
notes: `지금 네 폴더는 이렇게 생겼어야 해:
|
|
|
|
my-blog/
|
|
├── .env (네이버 로그인 정보)
|
|
├── .gitignore (.env 보호)
|
|
└── CLAUDE.md (AI 지침)
|
|
|
|
파일 3개. 이게 끝이야.
|
|
|
|
근데 이 3개 파일로 블로그 글 쓰고 업로드까지 했잖아.
|
|
이게 AI 활용의 기본이야.`
|
|
},
|
|
17: {
|
|
title: "지침이 쌓이면",
|
|
notes: `자, 여기서 생각을 좀 넓혀보자.
|
|
|
|
지침 파일 하나를 잘 만들어두면, 그게 곧 도구가 돼.
|
|
|
|
- 블로그 글 작성 지침 → 블로그 글쓰기 도구
|
|
- 코드 리뷰 지침 → 코드 리뷰 도구
|
|
- 기획서 검토 지침 → 기획서 검토 도구
|
|
- 번역 지침 → 내 스타일 번역 도구
|
|
|
|
이 도구들이 쌓이면 어떻게 될까?`
|
|
},
|
|
18: {
|
|
title: "도구가 쌓이면?",
|
|
notes: `(플로우 따라가며)
|
|
|
|
본업에서 만든 도구 → 일 빨라짐 → 시간 남음
|
|
|
|
시간 남으니까 → 사이드잡 시작 → 거기서도 도구 만듦
|
|
|
|
도구 많아지니까 → 뭘 해도 빠름 → 여러 프로젝트 가능
|
|
|
|
(강조)
|
|
결국 도구를 만드는 사람이 되는 거야.`
|
|
},
|
|
19: {
|
|
title: "도구를 쓰는 vs 만드는",
|
|
notes: `세상에는 두 부류가 있어.
|
|
|
|
(왼쪽)
|
|
도구를 쓰는 사람
|
|
- 남이 만든 거 그대로 씀
|
|
- 새로운 도구 나오면 또 배워야 함
|
|
- 도구가 바뀌면 적응하느라 힘듦
|
|
|
|
(오른쪽)
|
|
도구를 만드는 사람, 빌더
|
|
- 내가 필요한 걸 직접 만듦
|
|
- 기존 도구를 내 방식대로 커스텀함
|
|
- 도구가 바뀌어도 새로 만들면 됨
|
|
|
|
AI 시대에는 이 차이가 엄청 커져.
|
|
|
|
왜냐하면 AI 덕분에 도구 만드는 게 쉬워졌거든.
|
|
예전엔 개발 몰라서 못 만들었는데, 이젠 AI한테 시키면 돼.
|
|
|
|
근데 아이러니하게도, 도구 만드는 게 쉬워졌는데
|
|
대부분은 여전히 쓰기만 해.
|
|
ChatGPT 켜서 질문하고, 답 받고, 끝.
|
|
|
|
여기서 차이가 벌어지는 거야.`
|
|
},
|
|
20: {
|
|
title: "클로더즈에서 할 것들",
|
|
notes: `우리는 AI를 "쓰는" 사람들이 아니야.
|
|
AI로 도구를 "만드는" 사람들이야. 빌더.
|
|
|
|
클로더즈에서 하려는 게 뭐냐면:
|
|
|
|
(스텝 하나씩)
|
|
1. 각자의 도구를 만들어 - CLAUDE.md부터 시작해서
|
|
2. 만든 걸 공유해 - 이게 좋더라, 이건 별로더라
|
|
3. 같이 성장해 - 혼자 삽질하지 말고
|
|
4. 뭔가 만들어봐 - 4주 뒤에 실제로 돌아가는 MVP 출시까지
|
|
|
|
프로젝트 단위로 모여서 뭔가 만들어볼 수도 있어.
|
|
각자 도구가 있으니까 빠르잖아.`
|
|
},
|
|
21: {
|
|
title: "4주 커리큘럼",
|
|
notes: `4주 동안 이런 걸 배울 거야:
|
|
|
|
1주차: CLAUDE.md 작성법, AI에게 지침 주는 법
|
|
2주차: 커스텀 커맨드로 반복 작업 자동화
|
|
3주차: MCP 서버로 외부 서비스 연결
|
|
4주차: 실제 MVP 만들어서 출시
|
|
|
|
어렵게 느껴질 수도 있어. 근데 걱정 마.
|
|
하나씩 따라하다 보면 어느새 빌더가 돼있을 거야.
|
|
|
|
막히면 슬랙에 물어봐. 다 같이 하는 거니까.`
|
|
},
|
|
22: {
|
|
title: "오늘 배운 거",
|
|
notes: `오늘 배운 거 정리하면:
|
|
|
|
CLAUDE.md - AI한테 주는 지침 파일
|
|
휴먼터치 - AI 결과물 무조건 확인하기
|
|
루프백 - 지침 → 결과 → 수정 → 반복
|
|
빌더 - 도구를 만드는 사람
|
|
|
|
이게 AI 활용의 기본이야.
|
|
|
|
다음 시간부터는 이걸 더 발전시켜서
|
|
커스텀 커맨드, MCP 서버까지 가볼 거야.`
|
|
},
|
|
23: {
|
|
title: "마지막 한 마디",
|
|
notes: `앞으로 어떤 세상이 될지 아무도 몰라.
|
|
|
|
근데 하나는 확실해.
|
|
|
|
(천천히, 강조하며)
|
|
도구를 만들 줄 아는 사람은 어디서든 가치를 만들 수 있어.
|
|
|
|
4주 뒤에 너희는
|
|
진짜 돌아가는 서비스를 출시한 사람이 돼.
|
|
|
|
그게 오늘 시작이야.
|
|
|
|
(마무리)
|
|
빌더가 되자.
|
|
|
|
감사합니다. 질문 있으면 해주세요.`
|
|
}
|
|
};
|
|
|
|
// ===== 슬라이드 수 =====
|
|
const slides = document.querySelectorAll('.slide');
|
|
let currentSlide = 0;
|
|
|
|
// 현재 보이는 슬라이드 찾기
|
|
function getCurrentVisibleSlide() {
|
|
const scrollPos = window.scrollY + window.innerHeight / 3;
|
|
for (let i = slides.length - 1; i >= 0; i--) {
|
|
if (slides[i].offsetTop <= scrollPos) {
|
|
return i;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// 슬라이드로 이동
|
|
function goToSlide(index) {
|
|
if (index >= 0 && index < slides.length) {
|
|
currentSlide = index;
|
|
slides[index].scrollIntoView({ behavior: 'smooth' });
|
|
}
|
|
}
|
|
|
|
// 키보드 이벤트
|
|
document.addEventListener('keydown', (e) => {
|
|
currentSlide = getCurrentVisibleSlide();
|
|
|
|
if (e.key === 'ArrowRight' || e.key === 'ArrowDown' || e.key === ' ') {
|
|
e.preventDefault();
|
|
goToSlide(currentSlide + 1);
|
|
} else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {
|
|
e.preventDefault();
|
|
goToSlide(currentSlide - 1);
|
|
} else if (e.key === 'Home') {
|
|
e.preventDefault();
|
|
goToSlide(0);
|
|
} else if (e.key === 'End') {
|
|
e.preventDefault();
|
|
goToSlide(slides.length - 1);
|
|
}
|
|
});
|
|
|
|
// 현재 슬라이드 인디케이터
|
|
const indicator = document.createElement('div');
|
|
indicator.style.cssText = 'position: fixed; bottom: 20px; right: 20px; background: var(--bg-white); padding: 0.5rem 1rem; border-radius: 8px; border: 1px solid rgba(0,0,0,0.08); box-shadow: 0 4px 12px rgba(124,58,237,0.1); color: var(--primary); font-size: 0.9rem; font-weight: 600; z-index: 100;';
|
|
document.body.appendChild(indicator);
|
|
|
|
function updateIndicator() {
|
|
currentSlide = getCurrentVisibleSlide();
|
|
indicator.textContent = (currentSlide + 1) + ' / ' + slides.length;
|
|
}
|
|
|
|
window.addEventListener('scroll', updateIndicator);
|
|
updateIndicator();
|
|
|
|
// ===== 발표자 노트 창으로 전송 =====
|
|
let presenterWindow = null;
|
|
|
|
function broadcastSlideChange(slideNum) {
|
|
if (presenterWindow && !presenterWindow.closed) {
|
|
presenterWindow.postMessage({
|
|
type: 'slideChange',
|
|
slide: slideNum,
|
|
notes: presenterNotes[slideNum] || { title: '슬라이드 ' + slideNum, notes: '' }
|
|
}, '*');
|
|
}
|
|
}
|
|
|
|
// 스크롤 시 슬라이드 변경 감지
|
|
let lastBroadcastedSlide = -1;
|
|
window.addEventListener('scroll', () => {
|
|
const current = getCurrentVisibleSlide() + 1;
|
|
if (current !== lastBroadcastedSlide) {
|
|
lastBroadcastedSlide = current;
|
|
broadcastSlideChange(current);
|
|
}
|
|
});
|
|
|
|
// 키보드로 슬라이드 넘길 때도 broadcast
|
|
document.addEventListener('keydown', (e) => {
|
|
setTimeout(() => {
|
|
const current = getCurrentVisibleSlide() + 1;
|
|
if (current !== lastBroadcastedSlide) {
|
|
lastBroadcastedSlide = current;
|
|
broadcastSlideChange(current);
|
|
}
|
|
}, 100);
|
|
});
|
|
|
|
// ===== 발표자 노트 창 열기 (P키) =====
|
|
function openPresenterNotes() {
|
|
if (presenterWindow && !presenterWindow.closed) {
|
|
presenterWindow.focus();
|
|
return;
|
|
}
|
|
|
|
presenterWindow = window.open('', 'presenter-notes', 'width=900,height=700');
|
|
const initialSlide = getCurrentVisibleSlide() + 1;
|
|
const initialNotes = presenterNotes[initialSlide] || { title: '', notes: '' };
|
|
|
|
const presenterHTML = '<!DOCTYPE html>' +
|
|
'<html lang="ko">' +
|
|
'<head>' +
|
|
' <meta charset="UTF-8">' +
|
|
' <title>발표자 노트 - 클로더즈</title>' +
|
|
' <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap" rel="stylesheet">' +
|
|
' <style>' +
|
|
' * { margin: 0; padding: 0; box-sizing: border-box; }' +
|
|
' body { font-family: "Noto Sans KR", sans-serif; background: #0a0a0a; color: #fff; padding: 2rem; height: 100vh; display: flex; flex-direction: column; }' +
|
|
' .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding-bottom: 1rem; border-bottom: 3px solid #7C3AED; }' +
|
|
' .slide-num { font-size: 3rem; font-weight: 800; color: #7C3AED; }' +
|
|
' .slide-title { font-size: 1.3rem; font-weight: 600; color: #fff; margin-left: 1rem; }' +
|
|
' .meta { text-align: right; }' +
|
|
' .total { font-size: 1rem; color: #666; }' +
|
|
' .timer { background: #7C3AED; color: white; padding: 0.4rem 0.8rem; border-radius: 6px; font-size: 1.5rem; font-weight: 800; margin-top: 0.3rem; display: inline-block; }' +
|
|
' .notes { flex: 1; background: #1a1a1a; border-radius: 12px; padding: 2rem; overflow-y: auto; margin-top: 1rem; }' +
|
|
' .notes-content { font-size: 1.4rem; line-height: 1.9; white-space: pre-wrap; color: #eee; }' +
|
|
' .tip { margin-top: 1rem; font-size: 0.85rem; color: #555; text-align: center; }' +
|
|
' .tip span { color: #7C3AED; }' +
|
|
' </style>' +
|
|
'</head>' +
|
|
'<body>' +
|
|
' <div class="header">' +
|
|
' <div style="display:flex;align-items:baseline;">' +
|
|
' <div class="slide-num" id="slideNum">' + initialSlide + '</div>' +
|
|
' <div class="slide-title" id="slideTitle">' + initialNotes.title + '</div>' +
|
|
' </div>' +
|
|
' <div class="meta">' +
|
|
' <div class="total">/ ' + slides.length + '</div>' +
|
|
' <div class="timer" id="timer">00:00</div>' +
|
|
' </div>' +
|
|
' </div>' +
|
|
' <div class="notes">' +
|
|
' <div class="notes-content" id="notesContent">' + initialNotes.notes + '</div>' +
|
|
' </div>' +
|
|
' <div class="tip">메인 창에서 <span>← →</span> 또는 <span>스페이스바</span>로 넘기기 | <span>P</span> 키로 이 창 열기</div>' +
|
|
' <script>' +
|
|
' var startTime = Date.now();' +
|
|
' setInterval(function() {' +
|
|
' var elapsed = Math.floor((Date.now() - startTime) / 1000);' +
|
|
' var mins = Math.floor(elapsed / 60).toString().padStart(2, "0");' +
|
|
' var secs = (elapsed % 60).toString().padStart(2, "0");' +
|
|
' document.getElementById("timer").textContent = mins + ":" + secs;' +
|
|
' }, 1000);' +
|
|
' window.addEventListener("message", function(e) {' +
|
|
' if (e.data && e.data.type === "slideChange") {' +
|
|
' document.getElementById("slideNum").textContent = e.data.slide;' +
|
|
' document.getElementById("slideTitle").textContent = e.data.notes.title;' +
|
|
' document.getElementById("notesContent").textContent = e.data.notes.notes;' +
|
|
' }' +
|
|
' });' +
|
|
' <\/script>' +
|
|
'</body>' +
|
|
'</html>';
|
|
|
|
presenterWindow.document.write(presenterHTML);
|
|
presenterWindow.document.close();
|
|
|
|
// 초기 슬라이드 정보 전송
|
|
setTimeout(() => {
|
|
const current = getCurrentVisibleSlide() + 1;
|
|
broadcastSlideChange(current);
|
|
}, 300);
|
|
}
|
|
|
|
// P키로 발표자 노트 창 열기
|
|
document.addEventListener('keydown', (e) => {
|
|
if (e.key === 'p' || e.key === 'P') {
|
|
e.preventDefault();
|
|
openPresenterNotes();
|
|
}
|
|
});
|
|
|
|
// 발표자 노트 버튼
|
|
const presenterBtn = document.createElement('button');
|
|
presenterBtn.innerHTML = 'P';
|
|
presenterBtn.title = '발표자 노트 열기 (P)';
|
|
presenterBtn.style.cssText = 'position: fixed; bottom: 10px; left: 10px; background: rgba(100,100,100,0.3); color: rgba(255,255,255,0.5); border: none; width: 32px; height: 32px; border-radius: 50%; font-size: 0.8rem; font-weight: 600; cursor: pointer; z-index: 100; font-family: "Noto Sans KR", sans-serif; transition: all 0.2s ease; opacity: 0.4;';
|
|
presenterBtn.addEventListener('mouseenter', () => {
|
|
presenterBtn.style.opacity = '1';
|
|
presenterBtn.style.background = 'var(--primary)';
|
|
presenterBtn.style.color = 'white';
|
|
});
|
|
presenterBtn.addEventListener('mouseleave', () => {
|
|
presenterBtn.style.opacity = '0.4';
|
|
presenterBtn.style.background = 'rgba(100,100,100,0.3)';
|
|
presenterBtn.style.color = 'rgba(255,255,255,0.5)';
|
|
});
|
|
presenterBtn.addEventListener('click', openPresenterNotes);
|
|
document.body.appendChild(presenterBtn);
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|