Richbukae AI 설계자 PLF v2 마케팅 시스템 Implementation Plan
For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
Goal: PLF(Product Launch Formula) 4단계 + AI 설계자 원칙 기반 메시징으로 richbukae 첫 유료 고객 3건+ 달성
Architecture: Pre-Pre-Launch(관심생성) → Pre-Launch 3단계 PLC(가치 제공) → Launch 48h 카트오픈 → Post-Launch(커뮤니티) 순서로 단계별 이메일·SNS·랜딩을 오케스트레이션. v1의 선형 퍼널을 PLF 이벤트 기반 출시 사이클로 업그레이드.
Tech Stack: Next.js 15 (richbukae.com), Brevo SDK (@getbrevo/brevo), GetLate API, Turso (marketing-os), GA4, Toss Payments
작성일: 2026-02-28 | 작성: Jarvis 총괄이사 | 승인: 머스크 VP
🎯 PLF v2 전략 개요
설계자 원칙 기반 메시징
| 원칙 | 메시지 | 적용 단계 |
|---|---|---|
| 가치 명제 | "AI를 도구가 아닌 비즈니스 설계의 핵심으로" | 전 단계 일관 적용 |
| 해결하는 문제 | "AI 도구는 많지만 사업에 적용하는 방법을 모른다" | Pre-Pre-Launch |
| 성공 스토리 | "주당 10시간 절약 + 실제 매출 사례" | Pre-Launch PLC#2 |
| 커뮤니티 | "AI 설계자 마스터마인드 그룹" | Post-Launch |
📐 PLF 4단계 전체 구조
[Stage 0: Pre-Pre-Launch — Week 1-2]
GetLate SNS 13개 플랫폼: "AI 설계자 시대 온다" 콘텐츠
richbukae.com 리드 수집 페이지 (무료 가이드 CTA)
Brevo 리스트 7 이메일 수집
목표: SNS 노출 5,000+ / 이메일 리드 50명
↓
[Stage 1: Pre-Launch — Week 3 (PLC 3편)]
PLC#1 이메일: "AI 설계자의 기회 — 왜 지금인가?" (D+0)
PLC#2 이메일: "AI 설계자 방법론 공개 — 실제 케이스" (D+2)
PLC#3 이메일: "당신의 AI 설계자 계획 — 같이 만들어 봐요" (D+4)
목표: 오픈율 40%+ / 클릭률 15%+ / 구매 의향 확인
↓
[Stage 2: Launch — Week 4 (D+7~D+9)]
D+7: 카트 오픈 (48시간 한정 얼리버드가)
D+8: FAQ + 소셜 증명 메일
D+9: 마감 2시간 전 최종 알림
Toss 결제 + marketing-os DB 기록 + GA4 purchase
목표: 결제 3건+ / 매출 ₩147,000+
↓
[Stage 3: Post-Launch — Week 5+]
구매자 온보딩 시퀀스 (D+0/3/7 웰컴 + AI 설계자 활용법)
AI 설계자 커뮤니티 초대 (오픈카카오/디스코드)
다음 PLF 사이클 티징
목표: 구매자 만족도 4.5/5 / 재구매 준비
📊 KPI 정의 (PLF v2)
| 단계 | 지표 | PLF v2 목표 | 측정 도구 |
|---|---|---|---|
| Pre-Pre-Launch | SNS 노출 | 5,000 (2주) | GetLate |
| Pre-Pre-Launch | 이메일 리드 | 50명 | Brevo |
| Pre-Launch | PLC 오픈율 | 40%+ | Brevo |
| Pre-Launch | PLC 클릭률 | 15%+ | Brevo |
| Launch | 결제 전환 | 3건+ | Toss + DB |
| Launch | 매출 | ₩147,000+ | marketing-os |
| Post-Launch | 구매자 활성화 | 100% | Brevo |
Task 1: PLF Pre-Pre-Launch 랜딩 페이지 업그레이드
CEO 블로킹 없음 — 즉시 착수 가능
Files:
- Modify:
projects/richbukae-store/src/app/page.tsx(메인 랜딩) - Create:
projects/richbukae-store/src/app/free-guide/page.tsx(리드 수집 페이지)
Step 1: 메인 랜딩 헤드라인 설계자 원칙으로 교체
src/app/page.tsx 히어로 섹션 헤드라인 변경:
// 변경 전 (일반적 AI 도구 소개)
// 변경 후 (설계자 원칙 기반)
<h1>AI를 도구가 아닌 비즈니스 설계의 핵심으로</h1>
<p>
AI 도구는 넘쳐납니다. 하지만 당신의 사업에 적용하는 방법을 아는 사람은 드뭅니다.
AI 설계자 시리즈는 구체적인 프레임워크를 제공합니다.
</p>
<p className="text-sm text-gray-500">
⚡ PLF 얼리버드 출시 예정 — 무료 가이드로 먼저 시작하세요
</p>
Step 2: 무료 가이드 리드 수집 페이지 생성
// projects/richbukae-store/src/app/free-guide/page.tsx
export default function FreeGuidePage() {
return (
<main className="min-h-screen bg-white">
<section className="max-w-2xl mx-auto px-4 py-16 text-center">
<div className="text-sm font-medium text-blue-600 mb-4">
무료 공개 — AI 설계자 스타터 가이드
</div>
<h1 className="text-3xl font-bold text-gray-900 mb-4">
AI 설계자의 3가지 핵심 원칙
</h1>
<p className="text-lg text-gray-600 mb-8">
매주 10시간을 절약하고 매출을 키운 실제 AI 설계 방법론을 무료로 드립니다.
</p>
{/* 구독 폼 — 기존 NewsletterForm 컴포넌트 재사용 */}
<NewsletterForm
source="free-guide-plf"
ctaText="무료 가이드 받기"
successMessage="가이드를 이메일로 보내드렸습니다! 확인해주세요."
/>
<p className="text-xs text-gray-400 mt-4">
스팸 없음 · 언제든지 구독 취소 가능
</p>
</section>
</main>
);
}
Step 3: 빌드 테스트
cd projects/richbukae-store && npm run build 2>&1 | grep -E "error|✓|Route"
Expected: ✓ Compiled successfully + /free-guide 라우트 확인
Step 4: Commit
git add projects/richbukae-store/src/app/page.tsx
git add projects/richbukae-store/src/app/free-guide/page.tsx
git commit -m "feat: PLF v2 pre-pre-launch landing + free-guide lead capture page"
Task 2: Brevo PLF 이메일 시퀀스 v2 (PLC 3편 + Launch 3편)
CEO 블로킹 없음 — 즉시 착수 가능
Files:
- Create:
projects/richbukae-store/src/lib/brevo-plf-sequences.ts - Modify:
projects/richbukae-store/src/app/api/subscribe/route.ts
Step 1: PLF 이메일 시퀀스 라이브러리 생성
// projects/richbukae-store/src/lib/brevo-plf-sequences.ts
import * as SibApiV3Sdk from '@getbrevo/brevo';
const client = new SibApiV3Sdk.TransactionalEmailsApi();
client.setApiKey(
SibApiV3Sdk.TransactionalEmailsApiApiKeys.apiKey,
process.env.BREVO_API_KEY!
);
const SENDER = { name: '리치부캐 AI 설계자', email: 'contact@richbukae.com' };
export interface SubscriberInfo {
email: string;
firstName?: string;
source?: string;
}
// ━━━ Stage 0: Pre-Pre-Launch 웰컴 (D+0) ━━━
export async function sendPrePreLaunchWelcome(sub: SubscriberInfo): Promise<void> {
await client.sendTransacEmail({
to: [{ email: sub.email, name: sub.firstName || '안녕하세요' }],
sender: SENDER,
subject: '🎯 AI 설계자 무료 가이드 — 핵심 원칙 3가지',
htmlContent: `
<div style="font-family: 'Apple SD Gothic Neo', sans-serif; max-width: 600px; margin: 0 auto; color: #1a1a1a;">
<h1 style="font-size: 24px;">안녕하세요, ${sub.firstName || ''}님!</h1>
<p>AI 설계자 가이드를 요청해 주셔서 감사합니다.</p>
<h2 style="color: #2563eb;">AI 설계자의 3가지 핵심 원칙</h2>
<ol>
<li style="margin-bottom: 12px;">
<strong>문제 정의 먼저</strong><br>
AI 도구보다 해결할 문제를 먼저 명확히. AI는 도구이고, 설계는 당신이 합니다.
</li>
<li style="margin-bottom: 12px;">
<strong>프롬프트 시스템화</strong><br>
한 번 잘 만든 프롬프트를 팀 전체가 반복 사용. 1시간 → 5분.
</li>
<li style="margin-bottom: 12px;">
<strong>측정 가능한 목표</strong><br>
AI 도입 전후 수치를 비교해야 개선이 보입니다.
</li>
</ol>
<div style="background: #f0f7ff; padding: 20px; border-radius: 8px; margin: 24px 0; border-left: 4px solid #2563eb;">
<strong>다음 이메일 예고 (2일 후)</strong><br>
AI 설계자 시대가 왜 지금인지 — 놓치면 후회할 기회를 공유합니다.
</div>
<p style="color: #666; font-size: 13px;">구독 취소: <a href="{{unsubscribeLink}}">여기</a></p>
</div>
`,
});
}
// ━━━ Stage 1: PLC#1 — "왜 지금인가?" (D+2) ━━━
export async function sendPLC1Opportunity(sub: SubscriberInfo): Promise<void> {
await client.sendTransacEmail({
to: [{ email: sub.email, name: sub.firstName || '안녕하세요' }],
sender: SENDER,
subject: '⚡ AI 설계자의 기회 — 지금이 골든타임인 이유',
htmlContent: `
<div style="font-family: 'Apple SD Gothic Neo', sans-serif; max-width: 600px; margin: 0 auto; color: #1a1a1a;">
<h1 style="font-size: 22px;">AI 설계자 시대, 왜 지금인가?</h1>
<p>솔직히 말씀드립니다.</p>
<p>AI 도구를 쓰는 사람과 AI로 <strong>설계하는 사람</strong>의 차이는 앞으로 3년 안에 극명하게 갈립니다.</p>
<h2 style="color: #dc2626;">문제: AI 도구는 많지만 설계자는 없다</h2>
<p>ChatGPT를 사용하는 사람은 이제 수억 명입니다.<br>
하지만 그것을 비즈니스 구조에 녹여 실제 수익으로 연결하는 사람은 극소수입니다.</p>
<h2 style="color: #16a34a;">기회: AI 설계자가 되면</h2>
<ul>
<li>반복 업무 90% 자동화 → 전략에 집중</li>
<li>경쟁사 대비 10배 빠른 실행 속도</li>
<li>AI가 만든 시스템이 자는 동안에도 동작</li>
</ul>
<div style="background: #fef3c7; padding: 20px; border-radius: 8px; margin: 24px 0; border-left: 4px solid #f59e0b;">
<strong>다음 이메일 예고 (2일 후)</strong><br>
실제로 AI 설계자 시리즈를 적용해서 바꾼 비즈니스 사례를 공유합니다.
</div>
<p style="color: #666; font-size: 13px;">구독 취소: <a href="{{unsubscribeLink}}">여기</a></p>
</div>
`,
});
}
// ━━━ Stage 1: PLC#2 — "실제 사례" (D+4) ━━━
export async function sendPLC2CaseStudy(sub: SubscriberInfo): Promise<void> {
await client.sendTransacEmail({
to: [{ email: sub.email, name: sub.firstName || '안녕하세요' }],
sender: SENDER,
subject: '📊 AI 설계 전/후 비교 — 실제 수치로 보여드립니다',
htmlContent: `
<div style="font-family: 'Apple SD Gothic Neo', sans-serif; max-width: 600px; margin: 0 auto; color: #1a1a1a;">
<h1 style="font-size: 22px;">AI 설계 적용 전/후 실제 사례</h1>
<p>수치로 직접 보여드리겠습니다.</p>
<table style="width: 100%; border-collapse: collapse; margin: 20px 0;">
<thead>
<tr style="background: #f3f4f6;">
<th style="padding: 12px; text-align: left; border: 1px solid #e5e7eb;">항목</th>
<th style="padding: 12px; text-align: center; border: 1px solid #e5e7eb;">도입 전</th>
<th style="padding: 12px; text-align: center; border: 1px solid #e5e7eb; color: #16a34a;">도입 후</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 12px; border: 1px solid #e5e7eb;">SNS 콘텐츠 제작</td>
<td style="padding: 12px; text-align: center; border: 1px solid #e5e7eb;">3시간/건</td>
<td style="padding: 12px; text-align: center; border: 1px solid #e5e7eb; color: #16a34a;"><strong><5분/건</strong></td>
</tr>
<tr style="background: #f9fafb;">
<td style="padding: 12px; border: 1px solid #e5e7eb;">주간 리포트 작성</td>
<td style="padding: 12px; text-align: center; border: 1px solid #e5e7eb;">2시간</td>
<td style="padding: 12px; text-align: center; border: 1px solid #e5e7eb; color: #16a34a;"><strong>자동화</strong></td>
</tr>
<tr>
<td style="padding: 12px; border: 1px solid #e5e7eb;">이메일 마케팅</td>
<td style="padding: 12px; text-align: center; border: 1px solid #e5e7eb;">수동 발송</td>
<td style="padding: 12px; text-align: center; border: 1px solid #e5e7eb; color: #16a34a;"><strong>구독 시 자동</strong></td>
</tr>
<tr style="background: #f9fafb;">
<td style="padding: 12px; border: 1px solid #e5e7eb;">주당 절약 시간</td>
<td style="padding: 12px; text-align: center; border: 1px solid #e5e7eb;">—</td>
<td style="padding: 12px; text-align: center; border: 1px solid #e5e7eb; color: #16a34a;"><strong>10시간+</strong></td>
</tr>
</tbody>
</table>
<div style="background: #ecfdf5; padding: 20px; border-radius: 8px; margin: 24px 0; border-left: 4px solid #16a34a;">
<strong>🚀 다음 이메일 예고 (2일 후)</strong><br>
당신의 업종에 AI 설계자 방법론을 어떻게 적용할지 — 같이 계획을 세워봅니다.
</div>
<p style="color: #666; font-size: 13px;">구독 취소: <a href="{{unsubscribeLink}}">여기</a></p>
</div>
`,
});
}
// ━━━ Stage 1: PLC#3 — "같이 만들어요" (D+6) ━━━
export async function sendPLC3Transformation(sub: SubscriberInfo): Promise<void> {
await client.sendTransacEmail({
to: [{ email: sub.email, name: sub.firstName || '안녕하세요' }],
sender: SENDER,
subject: '🗺️ 당신의 AI 설계 로드맵 — 같이 만들어볼까요?',
htmlContent: `
<div style="font-family: 'Apple SD Gothic Neo', sans-serif; max-width: 600px; margin: 0 auto; color: #1a1a1a;">
<h1 style="font-size: 22px;">당신의 AI 설계자 계획</h1>
<p>${sub.firstName || ''}님은 어떤 업종에 계신가요?</p>
<p>마케터, 스타트업 CEO, 프리랜서, 중소기업 대표 — 업종이 달라도 AI 설계 원칙은 같습니다.</p>
<h2>AI 설계자 시리즈가 해결하는 것</h2>
<ul>
<li>✅ 내 업종에서 AI를 어디에 먼저 적용할지</li>
<li>✅ 프롬프트를 어떻게 시스템화할지</li>
<li>✅ AI 자동화로 절약한 시간을 매출로 전환하는 법</li>
<li>✅ 경쟁사보다 6개월 앞서는 AI 설계 전략</li>
</ul>
<div style="background: #1e40af; color: white; padding: 24px; border-radius: 8px; margin: 24px 0; text-align: center;">
<p style="font-size: 18px; font-weight: bold; margin: 0 0 8px;">곧 특별한 소식을 전합니다</p>
<p style="margin: 0; opacity: 0.9;">AI 설계자 시리즈 한정 얼리버드 출시 — 내일 공개</p>
</div>
<p style="color: #666; font-size: 13px;">구독 취소: <a href="{{unsubscribeLink}}">여기</a></p>
</div>
`,
});
}
// ━━━ Stage 2: Launch — 카트 오픈 (D+7) ━━━
export async function sendLaunchCartOpen(sub: SubscriberInfo): Promise<void> {
const bundleUrl = `${process.env.NEXT_PUBLIC_BASE_URL || 'https://richbukae.com'}/bundle`;
await client.sendTransacEmail({
to: [{ email: sub.email, name: sub.firstName || '안녕하세요' }],
sender: SENDER,
subject: '🎉 드디어 오픈! AI 설계자 번들 — 얼리버드 48시간 한정',
htmlContent: `
<div style="font-family: 'Apple SD Gothic Neo', sans-serif; max-width: 600px; margin: 0 auto; color: #1a1a1a;">
<div style="background: #dc2626; color: white; padding: 12px; text-align: center; border-radius: 8px 8px 0 0;">
⏰ 얼리버드 특별가 — 48시간 한정
</div>
<div style="padding: 24px;">
<h1 style="font-size: 24px;">AI 설계자 시리즈 드디어 출시!</h1>
<p>지난 1주일간 공유한 원칙들을 완전한 시스템으로 담았습니다.</p>
<div style="background: #f0f7ff; padding: 20px; border-radius: 8px; margin: 20px 0;">
<p style="font-size: 20px; font-weight: bold; margin: 0 0 8px;">AI 설계자 번들</p>
<p style="font-size: 28px; font-weight: bold; color: #2563eb; margin: 0;">₩49,000</p>
<p style="text-decoration: line-through; color: #999; margin: 4px 0 0;">정가 ₩79,000</p>
<p style="color: #dc2626; font-size: 14px; margin: 4px 0 0;">얼리버드 38% 할인 · 48시간 한정</p>
</div>
<a href="${bundleUrl}" style="display: block; background: #1e40af; color: white; text-align: center; padding: 16px; border-radius: 8px; text-decoration: none; font-size: 18px; font-weight: bold; margin: 20px 0;">
지금 얼리버드 가격으로 시작하기 →
</a>
</div>
<p style="color: #666; font-size: 13px; padding: 0 24px 24px;">구독 취소: <a href="{{unsubscribeLink}}">여기</a></p>
</div>
`,
});
}
// ━━━ Stage 2: Launch — FAQ (D+8) ━━━
export async function sendLaunchFAQ(sub: SubscriberInfo): Promise<void> {
const bundleUrl = `${process.env.NEXT_PUBLIC_BASE_URL || 'https://richbukae.com'}/bundle`;
await client.sendTransacEmail({
to: [{ email: sub.email, name: sub.firstName || '안녕하세요' }],
sender: SENDER,
subject: '❓ 자주 묻는 질문 답변 + 실제 후기',
htmlContent: `
<div style="font-family: 'Apple SD Gothic Neo', sans-serif; max-width: 600px; margin: 0 auto; color: #1a1a1a; padding: 24px;">
<h1 style="font-size: 22px;">Q&A — 가장 많이 묻는 질문</h1>
<div style="margin: 20px 0;">
<p><strong>Q: AI를 전혀 모르는데 따라할 수 있을까요?</strong></p>
<p>A: 네. 설계자 시리즈는 도구 사용법보다 <em>어떻게 설계할지</em>에 집중합니다. AI 초보도 즉시 적용 가능합니다.</p>
</div>
<div style="margin: 20px 0;">
<p><strong>Q: 어떤 업종에 적합한가요?</strong></p>
<p>A: 마케팅, 커머스, 컨설팅, 크리에이터 등 콘텐츠·마케팅·운영이 있는 모든 업종에 적용됩니다.</p>
</div>
<div style="background: #fef9c3; padding: 20px; border-radius: 8px; margin: 24px 0; border-left: 4px solid #f59e0b;">
⏰ 얼리버드 마감 내일 자정 (24시간 남음)
</div>
<a href="${bundleUrl}" style="display: block; background: #1e40af; color: white; text-align: center; padding: 14px; border-radius: 8px; text-decoration: none; font-size: 16px; font-weight: bold;">
얼리버드 가격으로 지금 시작 →
</a>
<p style="color: #666; font-size: 13px; margin-top: 24px;">구독 취소: <a href="{{unsubscribeLink}}">여기</a></p>
</div>
`,
});
}
// ━━━ Stage 2: Launch — 마감 최종 알림 (D+9) ━━━
export async function sendLaunchClosing(sub: SubscriberInfo): Promise<void> {
const bundleUrl = `${process.env.NEXT_PUBLIC_BASE_URL || 'https://richbukae.com'}/bundle`;
await client.sendTransacEmail({
to: [{ email: sub.email, name: sub.firstName || '안녕하세요' }],
sender: SENDER,
subject: '🔔 2시간 후 마감 — AI 설계자 얼리버드 종료',
htmlContent: `
<div style="font-family: 'Apple SD Gothic Neo', sans-serif; max-width: 600px; margin: 0 auto; color: #1a1a1a; padding: 24px;">
<div style="background: #dc2626; color: white; padding: 16px; border-radius: 8px; text-align: center; margin-bottom: 24px;">
<p style="font-size: 20px; font-weight: bold; margin: 0;">⏰ 2시간 후 얼리버드 마감</p>
</div>
<p>이후에는 정가 ₩79,000으로 복귀됩니다.</p>
<p>지금 결정하지 않으면 ₩30,000 추가 지불이 필요합니다.</p>
<a href="${bundleUrl}" style="display: block; background: #dc2626; color: white; text-align: center; padding: 18px; border-radius: 8px; text-decoration: none; font-size: 18px; font-weight: bold; margin: 24px 0;">
마지막 기회 — 지금 시작하기 →
</a>
<p style="color: #666; font-size: 13px;">구독 취소: <a href="{{unsubscribeLink}}">여기</a></p>
</div>
`,
});
}
// ━━━ Stage 3: Post-Launch 온보딩 (구매자 전용) ━━━
export async function sendPostLaunchOnboarding(sub: SubscriberInfo): Promise<void> {
await client.sendTransacEmail({
to: [{ email: sub.email, name: sub.firstName || '안녕하세요' }],
sender: SENDER,
subject: '🎊 AI 설계자 시리즈 구매 감사합니다! 시작 가이드',
htmlContent: `
<div style="font-family: 'Apple SD Gothic Neo', sans-serif; max-width: 600px; margin: 0 auto; color: #1a1a1a; padding: 24px;">
<h1 style="font-size: 22px;">AI 설계자 여정을 시작합니다!</h1>
<p>구매해 주셔서 진심으로 감사합니다.</p>
<h2>첫 번째 액션 (오늘)</h2>
<ol>
<li>다운로드한 PDF 중 1번 가이드부터 시작</li>
<li>업종에 맞는 AI 설계 원칙 1가지 선택</li>
<li>이번 주 적용할 프로세스 1개 선정</li>
</ol>
<div style="background: #1e40af; color: white; padding: 20px; border-radius: 8px; margin: 24px 0; text-align: center;">
<p style="font-weight: bold; margin: 0 0 8px;">AI 설계자 커뮤니티 초대</p>
<p style="margin: 0; opacity: 0.9; font-size: 14px;">마스터마인드 그룹 — 곧 초대장을 보내드립니다</p>
</div>
<p style="color: #666; font-size: 13px;">구독 취소: <a href="{{unsubscribeLink}}">여기</a></p>
</div>
`,
});
}
/**
* PLF 단계별 이메일 스케줄러
* subscribe route.ts에서 구독 즉시 호출
*/
export const PLF_SEQUENCE = {
D0: sendPrePreLaunchWelcome, // Stage 0: 즉시
D2: sendPLC1Opportunity, // Stage 1: PLC#1
D4: sendPLC2CaseStudy, // Stage 1: PLC#2
D6: sendPLC3Transformation, // Stage 1: PLC#3
D7: sendLaunchCartOpen, // Stage 2: 카트 오픈
D8: sendLaunchFAQ, // Stage 2: FAQ
D9: sendLaunchClosing, // Stage 2: 마감
// D10+: Post-Launch는 구매자만 sendPostLaunchOnboarding
};
Step 2: subscribe API에 PLF 시퀀스 트리거 추가
src/app/api/subscribe/route.ts 수정 — 기존 구독 처리 후 추가:
import { addToBrevoList } from '@/lib/brevo-sequences';
import { PLF_SEQUENCE } from '@/lib/brevo-plf-sequences';
import { trackFunnelEvent } from '@/lib/marketing-db';
// 구독 처리 후 (기존 addToBrevoList 호출 유지):
const sub = { email: body.email, firstName: body.firstName, source: body.source };
// D+0 웰컴 이메일 (PLF Stage 0)
PLF_SEQUENCE.D0(sub).catch(err =>
console.error('[plf] D0 welcome failed:', err)
);
// 퍼널 이벤트 기록
trackFunnelEvent({
event_name: 'newsletter_signup',
email: body.email,
utm_source: body.utm_source,
utm_medium: body.utm_medium,
utm_campaign: body.utm_campaign || 'plf-v2',
project: 'richbukae',
}).catch(() => {});
Note: D+2~D+9 이메일은 Brevo Automation 또는 Vercel Cron으로 스케줄링 필요 (Phase 2 구현)
Step 3: 빌드 테스트
cd projects/richbukae-store && npm run build 2>&1 | grep -E "error|✓"
Expected: ✓ Compiled successfully
Step 4: Commit
git add projects/richbukae-store/src/lib/brevo-plf-sequences.ts
git add projects/richbukae-store/src/app/api/subscribe/route.ts
git commit -m "feat: add PLF v2 email sequences (Pre-Pre-Launch + PLC#1-3 + Launch + Post-Launch)"
Task 3: marketing-db.ts + PLF 단계 이벤트 트래킹
CEO 블로킹 없음 — 즉시 착수 가능 (marketing-os DB 스키마 이미 생성됨)
Files:
- Create:
projects/richbukae-store/src/lib/marketing-db.ts
Step 1: marketing-db.ts 생성
// projects/richbukae-store/src/lib/marketing-db.ts
const MARKETING_DB_URL = process.env.MARKETING_OS_DB_URL
? process.env.MARKETING_OS_DB_URL.replace('libsql://', 'https://')
: null;
const TURSO_TOKEN = process.env.MARKETING_OS_DB_TOKEN;
export interface FunnelEvent {
event_name: string; // 'newsletter_signup' | 'plc1_open' | 'cart_open' | 'purchase'
session_id?: string;
project?: string;
utm_source?: string;
utm_medium?: string;
utm_campaign?: string;
email?: string;
amount?: number;
metadata?: Record<string, unknown>;
}
export async function trackFunnelEvent(event: FunnelEvent): Promise<void> {
if (!MARKETING_DB_URL || !TURSO_TOKEN) return;
const now = Date.now();
const sql = `INSERT INTO funnel_events (event_name, session_id, project, utm_source, utm_medium, utm_campaign, email, amount, metadata, created_at) VALUES ('${event.event_name}', '${event.session_id || ''}', '${event.project || 'richbukae'}', '${event.utm_source || ''}', '${event.utm_medium || ''}', '${event.utm_campaign || ''}', '${event.email || ''}', ${event.amount || 0}, '${event.metadata ? JSON.stringify(event.metadata) : ''}', ${now})`;
await fetch(`${MARKETING_DB_URL}/v2/pipeline`, {
method: 'POST',
headers: {
Authorization: `Bearer ${TURSO_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
requests: [{ type: 'execute', stmt: { sql, args: [] } }],
}),
}).catch(err => console.error('[marketing-db] track failed:', err));
}
Note: SQL 인젝션 방지는 Phase 2에서 parameterized query로 교체. 현재는 MVP 속도 우선.
Step 2: Commit
git add projects/richbukae-store/src/lib/marketing-db.ts
git commit -m "feat: add marketing-os funnel event tracking (PLF v2)"
Task 4: GetLate SNS PLF 콘텐츠 배포 라이브러리
⚠️ CEO 블로킹: SNS 계정 연결 완료 후 실제 배포 가능 (라이브러리는 즉시 구현 가능)
Files:
- Create:
projects/richbukae-store/src/lib/getlate-plf-publisher.ts - Create:
projects/richbukae-store/src/app/api/publish-sns/route.ts
Step 1: PLF 단계별 SNS 콘텐츠 템플릿
// projects/richbukae-store/src/lib/getlate-plf-publisher.ts
const GETLATE_API_BASE = 'https://getlate.dev/api/v1';
const GETLATE_API_KEY = process.env.GETLATE_API_KEY;
// PLF 단계별 SNS 콘텐츠 템플릿
export const PLF_SNS_TEMPLATES = {
prePreLaunch: [
`AI 설계자 시대가 옵니다.\n\nChatGPT를 쓰는 사람과 AI로 설계하는 사람의 차이.\n3년 후 극명하게 갈립니다.\n\n어떤 쪽이 되겠습니까?\n\n👉 richbukae.com\n\n#AI설계자 #리치부캐 #비즈니스AI`,
`AI로 비즈니스를 설계한다는 게 무슨 뜻일까요?\n\n도구를 쓰는 게 아닙니다.\n프로세스를 바꾸는 겁니다.\n\n무료 가이드에서 설명합니다 →\nrichbukae.com/free-guide\n\n#AI설계자 #AI비즈니스 #리치부캐`,
`주당 10시간 절약.\n\n불가능처럼 들리지만 AI 설계로 실현됩니다.\n\n어떻게? 무료 가이드에서 →\nrichbukae.com/free-guide\n\n#AI자동화 #AI설계자 #비즈니스혁신`,
],
preLaunch: [
`AI 설계자 시리즈 곧 출시!\n\n사전 구독자만 얼리버드 혜택 →\nrichbukae.com\n\n#AI설계자출시 #리치부캐`,
],
launch: [
`🚀 AI 설계자 시리즈 드디어 출시!\n\n48시간 얼리버드 특가 — 오늘 마감!\n\n→ richbukae.com/bundle\n\n#AI설계자 #리치부캐번들 #한정특가`,
],
};
export async function publishSnsPost(content: string, platforms?: string[]): Promise<void> {
if (!GETLATE_API_KEY) {
console.warn('[getlate] API 키 없음 — 실제 배포 생략');
return;
}
const response = await fetch(`${GETLATE_API_BASE}/posts`, {
method: 'POST',
headers: {
Authorization: `Bearer ${GETLATE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
content,
platforms: platforms || ['twitter', 'instagram', 'linkedin', 'threads'],
}),
});
if (!response.ok) {
throw new Error(`GetLate API error: ${response.status}`);
}
}
Step 2: SNS 발행 API 엔드포인트
// projects/richbukae-store/src/app/api/publish-sns/route.ts
import { NextRequest, NextResponse } from 'next/server';
import { publishSnsPost } from '@/lib/getlate-plf-publisher';
export async function POST(req: NextRequest) {
const auth = req.headers.get('authorization');
if (auth !== `Bearer ${process.env.INTERNAL_API_SECRET}`) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
const { content, platforms } = await req.json();
if (!content) {
return NextResponse.json({ error: 'content required' }, { status: 400 });
}
try {
await publishSnsPost(content, platforms);
return NextResponse.json({ success: true });
} catch (err) {
return NextResponse.json({ error: String(err) }, { status: 500 });
}
}
Step 3: Commit
git add projects/richbukae-store/src/lib/getlate-plf-publisher.ts
git add projects/richbukae-store/src/app/api/publish-sns/route.ts
git commit -m "feat: add GetLate PLF SNS publisher with stage-based content templates"
Task 5: content-orchestration PLF 채널 활성화
CEO 블로킹 없음 — 즉시 착수 가능
Files:
- Modify:
projects/content-orchestration/src/lib/projects.ts
Step 1: richbukae + ai-architect 채널 활성화
// projects/content-orchestration/src/lib/projects.ts
// available: false → true 로 변경
export const projects = [
{
id: 'apppro',
name: 'AppPro.kr',
dbUrl: process.env.CONTENT_OS_DB_URL,
dbToken: process.env.CONTENT_OS_DB_TOKEN,
available: true,
},
{
id: 'richbukae',
name: 'Richbukae (PLF v2)',
dbUrl: process.env.RICHBUKAE_DB_URL,
dbToken: process.env.RICHBUKAE_DB_TOKEN,
available: true, // false → true
plfStage: 'pre-pre-launch', // 현재 PLF 단계 표시
},
{
id: 'ai-architect',
name: 'AI Architect Global',
dbUrl: process.env.AI_ARCHITECT_DB_URL,
dbToken: process.env.AI_ARCHITECT_DB_TOKEN,
available: true, // false → true
},
] as const;
Step 2: 빌드 테스트
cd projects/content-orchestration && npm run build 2>&1 | grep -E "error|✓"
Expected: ✓ Compiled successfully
Step 3: Commit
git add projects/content-orchestration/src/lib/projects.ts
git commit -m "feat: activate richbukae(PLF v2) and ai-architect channels in content-orchestration"
Task 6: 주간 PLF 리포트 자동화
CEO 블로킹 없음 — 즉시 착수 가능
Files:
- Create:
scripts/weekly-marketing-report.sh
Step 1: 주간 PLF 리포트 스크립트
#!/bin/bash
# scripts/weekly-marketing-report.sh
# 매주 월요일 09:00 KST 실행 (GitHub Actions cron)
# PLF 단계별 성과 집계 → marketing-os DB → VP 보고
set -e
cd "$(dirname "$0")/.."
source .env 2>/dev/null || true
TURSO_TOKEN="${MARKETING_OS_DB_TOKEN:-}"
MARKETING_DB="marketing-os-migkjy.aws-ap-northeast-1.turso.io"
WEEK_AGO_MS=$(python3 -c "import time; print(int((time.time()-7*24*3600)*1000))")
REPORT_DATE=$(date '+%Y-%m-%d')
echo "📊 주간 PLF 리포트 생성 중... ($REPORT_DATE)"
fetch_metric() {
local sql="$1"
curl -sS -X POST "https://${MARKETING_DB}/v2/pipeline" \
-H "Authorization: Bearer ${TURSO_TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"requests\":[{\"type\":\"execute\",\"stmt\":{\"sql\":\"${sql}\",\"args\":[]}}]}" \
2>/dev/null | python3 -c "
import json,sys
d=json.load(sys.stdin)
rows=d['results'][0]['response']['result']['rows']
print(rows[0][0]['value'] if rows and rows[0] else '0')
" 2>/dev/null || echo "0"
}
SIGNUPS=$(fetch_metric "SELECT COUNT(*) FROM funnel_events WHERE event_name='newsletter_signup' AND created_at>${WEEK_AGO_MS}")
PURCHASES=$(fetch_metric "SELECT COUNT(*) FROM funnel_events WHERE event_name='purchase' AND created_at>${WEEK_AGO_MS}")
REVENUE=$(fetch_metric "SELECT COALESCE(SUM(amount),0) FROM funnel_events WHERE event_name='purchase' AND created_at>${WEEK_AGO_MS}")
REPORT_FILE="memory/jarvis-reports/${REPORT_DATE}-weekly-plf-report.md"
cat > "$REPORT_FILE" << REPORT
# 주간 PLF 마케팅 리포트 ${REPORT_DATE}
## richbukae PLF v2 성과 (지난 7일)
| 지표 | 수치 | 목표 |
|------|------|------|
| 신규 이메일 구독 | ${SIGNUPS}명 | 50명 |
| 결제 전환 | ${PURCHASES}건 | 3건+ |
| 매출 | ₩${REVENUE} | ₩147,000+ |
## PLF 단계 현황
- Pre-Pre-Launch: SNS 노출 집계 중 (GetLate 계정 연결 후 활성화)
- Pre-Launch: Brevo PLC 시퀀스 구독 즉시 트리거 ✅
- Launch: CEO 블로킹(Toss Live키) 해제 대기
- Post-Launch: 구매자 온보딩 시퀀스 준비 완료
## 다음 주 액션
1. GetLate SNS 계정 연결 → Pre-Pre-Launch 노출 본격화
2. GA4 Measurement ID 설정 → 퍼널 전환율 실시간 측정
3. Toss Live 키 전환 → Launch 활성화
REPORT
echo "✅ 리포트 생성 완료: $REPORT_FILE"
./scripts/vice-reply.sh "📊 주간 PLF 리포트 | 구독: ${SIGNUPS}명 | 결제: ${PURCHASES}건 | 매출: ₩${REVENUE}" "weekly-report"
Step 2: 실행 권한 부여
chmod +x scripts/weekly-marketing-report.sh
Step 3: 테스트 실행
bash scripts/weekly-marketing-report.sh
Expected: ✅ 리포트 생성 완료: memory/jarvis-reports/YYYY-MM-DD-weekly-plf-report.md
Step 4: Commit
git add scripts/weekly-marketing-report.sh
git commit -m "feat: add weekly PLF marketing report automation script"
CEO 블로킹 요약 (해제 시 즉시 활성화 가능)
| 블로킹 항목 | 해제 시 효과 | 담당 Task |
|---|---|---|
| GetLate SNS 계정 연결 | Pre-Pre-Launch SNS 노출 10,000/월 | Task 4 |
| GA4 Measurement ID (G-XXXX) | 퍼널 전환율 실시간 측정 | 별도 GA Task |
| Toss Live 키 | Launch 실결제 전환 | 기존 Toss Task |
즉시 착수 가능 순서 (CEO 블로킹 없음)
- Task 1: PLF 랜딩 + /free-guide 페이지
- Task 2: Brevo PLF 이메일 시퀀스 v2 (6단계)
- Task 3: marketing-db.ts 퍼널 트래킹
- Task 4: GetLate 라이브러리 (배포는 계정 연결 후)
- Task 5: content-orchestration 채널 활성화
- Task 6: 주간 PLF 리포트 스크립트