Initial commit

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-21 07:07:35 +09:00
commit f4b14fddf5
21 changed files with 8763 additions and 0 deletions

View File

@@ -0,0 +1,560 @@
# AppKit Framework
**아이디어를 고객 가치로 변환하는 논리적 사고 프레임워크**
---
## 🎯 Overview
AppKit은 막연한 아이디어를 고객 중심으로 구체화하여 MVP부터 세일즈까지 설계하는 프레임워크입니다.
**핵심 철학**:
1. 고객 가치 우선 → 기능이 아닌 고객의 문제 해결 중심
2. 논리적 사고 연습 → 큰 작업을 작은 단계로 쪼개기
3. 스토리텔링 기반 → 고객의 하루와 고민을 이해하고 설득
4. MVP 중심 실행 → 최소한의 범위로 최대한의 검증
---
## 📋 Complete Workflow (논리적 사고 7단계)
```
아이디어 구체화 7단계:
1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?)
2. /appkit.spec → 기능 구체화 (뭐가 필요할까? 누가 쓸까?)
3. /appkit.customer → 고객 스토리 (고객의 하루, 고민, 해결)
4. /appkit.sales → 세일즈 랜딩 구성 (어떻게 설득할까?)
5. /appkit.mvp → MVP 범위 정하기 (최소한으로 검증하려면?)
6. /appkit.merge → 기획 정돈 (흩어진 기획 통합)
7. /appkit.design → 개발 준비 (API, ERD, 기술 스펙)
```
---
## 🔧 Commands
### 1. `/appkit.new` - 아이디어 스케치
**Purpose**: 막연한 아이디어를 서비스 컨셉으로 구체화
**Input**:
```
/appkit.new Tennis court booking app with coupons and promotions
```
**Output**:
- `docs/appkit/overview.md` - 서비스 컨셉 & 핵심 가치
- `docs/appkit/specs/001-user/spec.md` - 빈 템플릿
- `docs/appkit/specs/002-venue/spec.md` - 빈 템플릿
- `docs/appkit/specs/003-booking/spec.md` - 빈 템플릿
- ...
**Key Features**:
- 서비스 본질 파악 (무슨 문제를 해결하나?)
- 예상 고객군 추론 (누가 쓸까?)
- 핵심 가치 제안 (왜 써야 할까?)
- 경쟁 차별점 식별 (다른 서비스와 뭐가 다른가?)
---
### 2. `/appkit.spec` - 기능 구체화
**Purpose**: 필요한 기능을 도출하고 사용자 관점에서 구체화
**Input**:
```
/appkit.spec 003-booking "search courts from main screen"
/appkit.spec 003-booking "time deal 30% discount within 2 days"
/appkit.spec 003-booking "cancel 24h+ before for 100% refund"
```
**Output**:
- `docs/appkit/specs/003-booking/spec.md` 업데이트 (증분식 누적)
**Key Questions for Each Feature**:
- **뭐가 필요할까?** → 필요한 기능들 도출
- **누가 쓸까?** → 타겟 사용자 프로파일
- **언제 쓸까?** → 사용 시나리오와 상황
- **왜 쓸까?** → 해결하려는 문제나 욕구
- **어떻게 쓸까?** → 구체적인 사용 플로우
- **가치는?** → 사용자가 얻는 이익
**중요**: 기술 구현보다 사용자 가치에 집중!
---
### 3. `/appkit.customer` - 고객 스토리
**Purpose**: 타겟 고객을 명확히 하고 그들의 하루와 고민을 스토리로 구성
**Input**:
```
/appkit.customer
/appkit.customer "30대 직장인 주말 운동"
```
**Output**:
- `docs/appkit/customer-persona.md` - 고객 페르소나
- `docs/appkit/customer-journey.md` - 고객 여정 지도
**What it does**:
1. **페르소나 구성**:
- Demographics: 나이, 직업, 소득, 거주지
- Psychographics: 라이프스타일, 가치관, 관심사
- Pain Points: 현재 겪는 문제와 불편함
- Goals: 달성하고 싶은 목표
2. **고객의 하루 스토리텔링**:
```
07:00 - 출근 준비하며 "오늘도 운동 못하겠네..."
09:00 - 회사 도착 "주말엔 꼭 테니스 쳐야지"
12:00 - 점심시간 "코트 예약하려니 전화해야 하네..."
18:00 - 퇴근 "주말 코트 풀부킹이라니..."
21:00 - 집 도착 "내일 아침 일찍 전화해야겠다"
```
3. **문제 해결 시나리오**:
- Before: 복잡한 예약 과정, 불확실한 가능 시간
- After: 앱으로 간편 예약, 실시간 확인, 할인까지
**중요**: 고객 중심 사고의 핵심 - 기능이 아닌 고객의 삶을 이해!
---
### 4. `/appkit.sales` - 세일즈 랜딩 구성
**Purpose**: 고객을 설득하는 세일즈 메시지 구성
**Input**:
```
/appkit.sales
/appkit.sales "time-saving for busy professionals"
```
**Output**:
- `docs/appkit/sales-landing.md` - 세일즈 랜딩 구조
- `docs/appkit/value-proposition.md` - 가치 제안
**Landing Structure**:
1. **Hook (문제 공감)**:
- "매번 전화로 테니스 코트 예약하느라 지치셨나요?"
2. **Problem Agitation (문제 심화)**:
- 전화 대기 시간 평균 15분
- 원하는 시간대 이미 만석
- 가격 비교 불가능
3. **Solution (해결책 제시)**:
- 3초 만에 실시간 예약
- 모든 코트 가격 한눈에 비교
- 자동 할인 적용
4. **Social Proof (사회적 증명)**:
- "이미 5,000명의 테니스 동호인이 사용 중"
- 사용자 후기와 평점
5. **CTA (행동 유도)**:
- 첫 예약 30% 할인
- 지금 가입하고 혜택받기
**중요**: 기능 나열이 아닌, 고객 문제 해결 스토리!
---
### 5. `/appkit.mvp` - MVP 범위 정의
**Purpose**: 최소한의 기능으로 최대한의 검증
**Input**:
```
/appkit.mvp
/appkit.mvp "2-week validation"
```
**Output**:
- `docs/appkit/mvp-scope.md` - MVP 범위 정의
- `docs/appkit/mvp-metrics.md` - 검증 지표
**MVP Scoping Process**:
1. **핵심 가치 파악**:
- 고객이 가장 원하는 ONE thing은?
- 없으면 서비스 의미가 없는 기능은?
2. **Phase 분류**:
```
Phase 0 (MVP - 2주):
- 코트 검색/예약 (핵심)
- 간단한 결제
Phase 1 (MVP+ - 1개월):
- 사용자 리뷰
- 할인 쿠폰
Phase 2 (확장 - 3개월):
- 커뮤니티 기능
- 코칭 매칭
```
3. **검증 지표 설정**:
- Success Metrics: 주간 예약 10건
- Learning Metrics: 이탈 구간, 불만 사항
- Next Decision: Phase 1 진행 여부
**MVP 원칙**:
- ❌ "있으면 좋을" 기능 제외
- ✅ "없으면 안되는" 기능만 포함
- 목표: 빠른 시장 검증, not 완벽한 제품
---
## 🌊 Workflow Example (고객 중심 논리적 사고)
### Example: Tennis Court Booking App
```bash
# Step 1: 아이디어 스케치 - "어떤 서비스인지?"
$ /appkit.new Tennis court booking with coupons and time deals
Claude:
📋 서비스 컨셉:
- 문제: 테니스 코트 예약이 번거롭고 비싸다
- 해결: 모바일로 간편 예약 + 자동 할인
- 타겟: 주말 운동을 원하는 30-40대 직장인
- 가치: 시간 절약, 비용 절감
주요 기능 분류:
- 001-user: 사용자 인증
- 002-venue: 코트 관리
- 003-booking: 예약/결제
- 004-promotion: 할인/쿠폰
- 005-review: 리뷰
✅ Created service concept & 5 feature specs
# Step 2: 기능 구체화 - "뭐가 필요할까? 누가 쓸까?"
$ /appkit.spec 003-booking "search courts from main screen"
💡 사용자 가치 분석:
- 뭐가 필요? → 실시간 코트 검색 기능
- 누가? → 퇴근 후 피곤한 직장인
- 언제? → 지하철/버스에서 이동 중
- 왜? → 빠르게 주말 운동 계획 세우기
- 어떻게? → 원터치로 가까운 코트 찾기
- 가치? → 5초 만에 예약 가능 확인
✅ User value added to spec
$ /appkit.spec 003-booking "time deal 30% within 2 days"
💡 사용자 가치 분석:
- 뭐가 필요? → 시간 기반 자동 할인 시스템
- 누가? → 유연한 시간대 가능한 프리랜서
- 언제? → 갑자기 시간이 생겼을 때
- 왜? → 저렴하게 운동하고 싶어서
- 가치? → 정가의 70%로 즉시 예약
✅ Features defined with user value
# Step 3: 고객 스토리 - "고객의 하루, 고민, 해결"
$ /appkit.customer
🎯 Primary Persona: 김대리 (35세, IT 기업)
하루 스토리:
07:00 - "오늘도 운동 못하겠네..." (죄책감)
12:00 - "주말엔 테니스 쳐야지" (결심)
18:00 - "코트 예약 전화... 귀찮다" (좌절)
19:00 - [앱 발견] "3초 만에 예약?" (희망)
19:02 - "토요일 오전 예약 완료!" (만족)
토요일 - "운동 후 상쾌한 주말" (성취)
✅ Customer persona & journey mapped
# Step 4: 세일즈 랜딩 구성 - "어떻게 설득할까?"
$ /appkit.sales
📢 Landing Message:
[Hook]
"매주 테니스 치고 싶은데, 예약이 너무 번거로우신가요?"
[Problem]
- 전화 대기 15분
- 원하는 시간 항상 만석
- 비싼 정가
[Solution]
"3초 예약, 자동 할인, 실시간 공석 확인"
[Proof]
"이미 5,000명이 매주 사용 중"
[CTA]
"지금 가입하고 첫 예약 30% 할인받기"
✅ Sales landing created
# Step 5: MVP 범위 - "최소한으로 검증하려면?"
$ /appkit.mvp
🎯 MVP Scope (2주 검증):
Phase 0 (핵심만):
- 코트 검색/예약
- 간단 결제
목표: 주 10건 예약
Phase 1 (1개월):
- 할인 쿠폰
- 사용자 리뷰
목표: 재방문율 30%
Phase 2 (3개월):
- 커뮤니티
- 코칭 매칭
✅ MVP phases defined
# Step 6: 기획 정돈 - "기획이 일관적인가?"
$ /appkit.merge
🔄 Planning Consolidation:
용어 통일성 확인:
- "예약" vs "부킹" → "예약"으로 통일
- "사용자" vs "유저" → "사용자"로 통일
기능 중복 제거:
- spec 3개소에서 발견된 "실시간 알림" → 하나로 통합
- customer journey와 sales의 메시지 일관성 확보
고객 여정 - 기능 매핑:
✅ "주말 운동 계획" → 검색 기능
✅ "간편한 예약" → 원터치 예약
✅ "비용 절감" → 자동 할인
✅ Planning consolidated
# Step 7: 개발 준비 - "어떻게 만들까?"
$ /appkit.design
🏗️ Technical Design:
ERD 설계:
- User, Venue, Booking, Payment 엔티티
- 관계 정의 및 제약조건
API 엔드포인트:
- POST /bookings (예약 생성)
- GET /venues?location=... (코트 검색)
- POST /payments (결제 처리)
기술 정책:
- Rate Limiting: 시간당 100회
- Error Handling: 재시도 3회
- Content Safety: 필터 규칙
✅ 아이디어 구체화 완료!
이제 개발을 시작할 수 있습니다.
```
---
### 6. `/appkit.merge` - 기획 정돈
**Purpose**: 흩어진 기획 문서들을 통합하고 일관성 확보
**Input**:
```
/appkit.merge
/appkit.merge "용어 통일 중점"
```
**Output**:
- `docs/appkit/merge/concept-map.md` - 통합 컨셉 맵
- `docs/appkit/merge/journey-feature-map.md` - 고객 여정 - 기능 매핑
- `docs/appkit/merge/terminology.md` - 표준 용어 사전
- `docs/appkit/merge/consolidated-specs.md` - 통합된 기능 명세
**What it does**:
1. **용어 통일성 확인**:
- spec, customer, mvp의 용어 비교
- 표준 용어 사전 생성
2. **기능 중복 제거**:
- 여러 문서에 흩어진 동일 기능 통합
- 기획 레벨에서 중복 해소
3. **고객 가치 일관성**:
- customer journey와 sales 메시지 일관성
- 핵심 가치 제안 명확화
**중요**: MVP 범위 정의 후, 개발 준비 전에 실행!
---
### 7. `/appkit.design` - 개발 준비
**Purpose**: 개발에 필요한 기술 스펙 생성 (ERD, API, 정책)
**Input**:
```
/appkit.design
/appkit.design "RESTful API 중점"
```
**Output**:
- `docs/appkit/design/entities.md` - ERD 및 데이터 모델
- `docs/appkit/design/apis.md` - API 엔드포인트 설계
- `docs/appkit/design/tech-policies.md` - 기술 정책
- `docs/appkit/design/screen-api-map.md` - 화면-API 매핑
**What it does**:
1. **ERD 설계**:
- 엔티티 및 관계 정의
- Mermaid 다이어그램 생성
2. **API 엔드포인트 설계**:
- RESTful API 명세
- Request/Response 예시
3. **기술 정책 정의**:
- Rate Limiting
- Error Handling
- Content Safety
- Data Management
**중요**: merge 완료 후 개발 직전에 실행!
---
---
## 🎓 논리적 사고 7단계와 명령어
| 단계 | 질문 | 명령어 |
|------|------|--------|
| 1. 아이디어 스케치 | 어떤 서비스인가? | `/appkit.new` |
| 2. 기능 구체화 | 뭐가 필요할까? 누가/어떻게 쓸까? | `/appkit.spec` |
| 3. 고객 스토리 | 고객의 하루, 고민, 해결은? | `/appkit.customer` |
| 4. 세일즈 구성 | 어떻게 설득할까? | `/appkit.sales` |
| 5. MVP 범위 | 최소한으로 검증하려면? | `/appkit.mvp` |
| 6. 기획 정돈 | 기획이 일관적인가? | `/appkit.merge` |
| 7. 개발 준비 | 어떻게 만들까? | `/appkit.design` |
---
## 💡 Best Practices (논리적 사고 연습)
### 1. 고객부터 시작하기
- 기능이 아닌 고객의 문제부터 생각하세요
- "누가 쓸까?" 질문을 계속하세요
### 2. 작은 단계로 쪼개기
- 큰 작업을 7-10개 작은 단계로 나누세요
- 각 단계가 명확한 결과물을 갖도록 하세요
### 3. 스토리텔링으로 검증
- 고객의 하루를 그려보세요
- Before/After 시나리오를 구성하세요
### 4. MVP 먼저, 완벽은 나중에
- "없으면 안되는" 기능만 Phase 0에
- "있으면 좋은" 기능은 Phase 1+로
### 5. 세일즈 관점 유지
- 기능 설명이 아닌 가치 설명
- 고객이 얻는 이익 중심으로
### 6. 빠른 검증, 빠른 피벗
- 2주 안에 MVP 검증
- 실패해도 빠르게 방향 전환
### 7. 측정 가능한 목표
- 모든 Phase에 구체적 지표 설정
- 정성적 + 정량적 지표 균형
---
## 📂 Generated File Structure
```
docs/appkit/
├── overview.md # 1. 서비스 컨셉 (/appkit.new)
├── specs/
│ ├── 001-search/
│ │ └── spec.md # 2. 기능 구체화 (/appkit.spec)
│ ├── 002-booking/
│ │ └── spec.md
│ └── ...
├── customer-persona.md # 3. 타겟 고객 (/appkit.customer)
├── customer-journey.md # 3. 고객 스토리 (/appkit.customer)
├── sales-landing.md # 4. 세일즈 메시지 (/appkit.sales)
├── value-proposition.md # 4. 가치 제안 (/appkit.sales)
├── mvp-scope.md # 5. MVP 범위 (/appkit.mvp)
├── mvp-metrics.md # 5. 검증 지표 (/appkit.mvp)
├── merge/ # 6. 기획 정돈 (/appkit.merge)
│ ├── concept-map.md # 통합 컨셉 맵
│ ├── journey-feature-map.md # 고객 여정 - 기능 매핑
│ ├── terminology.md # 표준 용어 사전
│ └── consolidated-specs.md # 통합된 기능 명세
└── design/ # 7. 개발 준비 (/appkit.design)
├── entities.md # ERD 및 데이터 모델
├── apis.md # API 엔드포인트 설계
├── tech-policies.md # 기술 정책
└── screen-api-map.md # 화면-API 매핑
```
---
## 🚀 Quick Start
```bash
# 1. 아이디어 스케치
/appkit.new "당근마켓처럼 중고거래 앱"
# 2. 기능 구체화
/appkit.spec 001-search "위치 기반 상품 검색"
/appkit.spec 002-chat "구매자와 판매자 채팅"
# 3. 고객 스토리
/appkit.customer "20-30대 중고거래 선호"
# 4. 세일즈 메시지 구성
/appkit.sales "편리함과 신뢰 강조"
# 5. MVP 범위 정의
/appkit.mvp "2주 내 출시 목표"
# 6. 기획 정돈
/appkit.merge
# 7. 개발 준비
/appkit.design
```
---
## 📖 Philosophy (논리적 사고 철학)
> "아이디어는 고객의 문제에서 시작되고, 논리적 단계로 구체화된다."
AppKit은 다음을 믿습니다:
1. **고객 문제 우선**: 기능보다 고객의 Pain Point 해결
2. **논리적 분해**: 큰 작업을 작은 단계로 쪼개기
3. **스토리텔링**: 고객의 하루를 이해하고 공감
4. **빠른 검증**: MVP로 시장 반응 먼저 확인
5. **가치 중심**: 기술이 아닌 고객 가치로 설득
6. **측정과 학습**: 모든 단계에서 배우고 개선
---
**Built with ❤️ for Product Managers, Designers, and Developers**
**Version**: 5.0.0 (7-Step Logical Thinking)
**Last Updated**: 2025-11-20
**Key Update**: 논리적 사고 7단계로 재구성, merge(기획 정돈)와 design(개발 준비) 분리

View File

@@ -0,0 +1,279 @@
# appkit.customer
**타겟 고객을 명확히 하고 그들의 스토리를 구성하는 명령어**
---
## Overview
**This is Step 3 of the logical thinking 7-step workflow**:
```
논리적 사고 7단계:
1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?)
2. /appkit.spec → 기능 구체화 (뭐가 필요할까? 누가 쓸까?)
3. /appkit.customer → 고객 스토리 (고객의 하루, 고민, 해결) ← YOU ARE HERE
4. /appkit.sales → 세일즈 랜딩 구성 (어떻게 설득할까?)
5. /appkit.mvp → MVP 범위 정하기 (최소한으로 검증하려면?)
6. /appkit.merge → 기획 정돈 (흩어진 기획 통합)
7. /appkit.design → 개발 준비 (API, ERD, 기술 스펙)
```
## Purpose
타겟 고객을 구체화하고 그들의 일상과 문제를 스토리텔링으로 풀어내어,
서비스가 어떤 가치를 제공하는지 명확히 합니다.
**핵심 질문**: "누가, 왜 이 서비스를 쓸까?"
---
## When to Use
- `/appkit.spec`으로 기능들을 구체화한 후 (Step 2 완료 후)
- 타겟 고객이 여전히 모호할 때
- 고객의 구체적인 사용 시나리오가 필요할 때
- 세일즈 메시지 작성 전 고객 이해가 필요할 때
---
## Usage
```bash
/appkit.customer
/appkit.customer "30대 직장인 주말 운동"
/appkit.customer "persona: busy professional"
/appkit.customer "journey: from problem to solution"
```
---
## What I'll Do
### 1. 고객 페르소나 구성 (Customer Persona)
**Primary Persona** (주요 고객):
```markdown
## Primary Persona: [이름] ([나이], [직업])
### Demographics (인구통계)
- 나이: 30-40대
- 직업: IT 기업 직장인
- 소득: 연 5000-8000만원
- 거주지: 서울/경기 아파트
- 가족: 기혼, 자녀 1-2명
### Psychographics (심리/행동)
- 라이프스타일: 워라밸 추구, 건강 관심 증가
- 가치관: 시간 효율성, 편의성 중시
- 관심사: 주말 운동, 가족과 시간
- 기술 친숙도: 높음, 모바일 앱 일상화
### Pain Points (현재 고민)
1. 운동하고 싶은데 시간이 없다
2. 코트 예약이 너무 번거롭다
3. 원하는 시간대는 항상 만석
4. 가격 비교가 어렵다
### Goals (달성하고 싶은 것)
- 규칙적인 주말 운동
- 스트레스 없는 예약 과정
- 합리적인 가격으로 운동
- 가족/친구와 함께하는 시간
```
**Secondary Personas** (보조 고객):
- 프리랜서 (시간 유연, 가격 민감)
- 대학생 (저렴한 가격 선호)
- 주부 (평일 낮 시간 활용)
### 2. 고객 여정 맵 (Customer Journey Map)
**하루의 스토리텔링**:
```markdown
## 김대리의 하루 (현재 - Problem State)
### 평일
07:00 😴 "오늘도 운동 못하겠네..." (죄책감)
08:30 🚇 지하철에서 "주말엔 꼭 테니스 쳐야지" (다짐)
12:00 🍽️ 점심시간 "코트 예약하려니... 전화해야 하나?" (귀찮음)
15:00 ☎️ "예약 전화... 통화중이네" (짜증)
18:00 😔 "주말 코트 다 찼대..." (실망)
21:00 🏠 "내일 아침 일찍 전화해볼까?" (미룸)
### 주말
토요일 오전 - 결국 운동 못함
일요일 - 가족과 시간 보내느라 포기
---
## 김대리의 하루 (미래 - Solution State)
### 평일
07:00 📱 침대에서 앱 열기 (3초)
07:01 ✅ "토요일 오전 10시 예약 완료!" (만족)
12:00 💰 "타임딜 30% 할인 알림" (기쁨)
18:00 👥 "동료들도 같이 예약할까?" (공유)
### 주말
토요일 10:00 - 테니스 코트에서 운동 중
토요일 12:00 - "운동 후 상쾌해!" (성취감)
일요일 - 가족과 여유롭게 시간 보내기
```
### 3. 문제-해결 시나리오
**Before (현재 상황)**:
```
1. 예약하려면 → 전화해야 함 (15분 대기)
2. 가격 확인 → 일일이 물어봐야 함
3. 시간대 확인 → 전화로만 가능
4. 취소/변경 → 또 전화
5. 결과 → 포기하거나 비싼 값 지불
```
**After (서비스 사용 후)**:
```
1. 예약 → 앱에서 3초 (실시간)
2. 가격 → 한눈에 비교 (투명)
3. 시간대 → 달력으로 확인 (직관적)
4. 취소/변경 → 클릭 한 번 (간편)
5. 결과 → 규칙적 운동 + 30% 절약
```
### 4. 감정 곡선 (Emotional Journey)
```
현재 경험:
기대 → 검색 → 좌절 → 포기
😊 → 😐 → 😤 → 😔
서비스 경험:
발견 → 시도 → 성공 → 만족 → 추천
😐 → 😊 → 😃 → 😍 → 🎉
```
### 5. 고객 인사이트 도출
**핵심 인사이트**:
1. **시간이 돈보다 중요**: 15분 기다리느니 조금 더 내고 앱 사용
2. **즉시성 중요**: "지금 당장" 예약 확정 받고 싶음
3. **투명성 요구**: 가격, 시간, 위치 한번에 보고 싶음
4. **Social Proof**: 다른 사람들도 쓰는지 궁금
5. **습관 형성**: 규칙적 운동을 원하지만 예약이 방해물
---
## Output Files
### 생성될 파일들:
1. **`docs/appkit/customer-persona.md`**
- Primary & Secondary 페르소나
- Demographics & Psychographics
- Pain Points & Goals
2. **`docs/appkit/customer-journey.md`**
- 현재 vs 미래 하루 스토리
- 감정 곡선
- 터치포인트 분석
- 기회 영역 식별
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/appkit.spec`**: 기능별 사용자 프로파일 수집
- **To `/appkit.sales`**: 페르소나별 메시지 구성
- **To `/appkit.mvp`**: 핵심 고객의 핵심 문제 우선 해결
- **To `/appkit.design`**: 사용자 플로우 설계 기초
---
## Examples
### Example 1: 테니스 예약 앱
```bash
$ /appkit.customer
🎯 Target Customer Analysis
Primary: 30-40대 직장인
- Pain: 전화 예약 번거로움
- Want: 빠른 예약, 주말 운동
- Value: 시간 절약 > 비용 절약
Journey Highlights:
- Morning: 운동 계획 (의지)
- Lunch: 예약 시도 (좌절)
- Evening: 포기 (실망)
- Weekend: 운동 못함 (죄책감)
Key Insight:
"예약 friction이 운동 의지를 꺾는다"
✅ Generated customer-persona.md
✅ Generated customer-journey.md
```
### Example 2: 추가 페르소나 정의
```bash
$ /appkit.customer "freelancer flexible schedule"
🎯 Secondary Persona Added
프리랜서 (28세):
- Pain: 비싼 prime time 가격
- Want: 평일 낮 할인
- Value: 가격 > 시간대
Opportunity:
"평일 낮 유휴 시간 + 가격 민감 고객 매칭"
✅ Updated customer-persona.md
```
---
## Key Principles
### 고객 이해의 원칙:
1. **공감 먼저, 기능 나중**: 고객의 감정을 이해하라
2. **구체적 스토리**: "30대 직장인"이 아닌 "김대리의 하루"
3. **Before/After 대비**: 변화를 명확히 보여주기
4. **감정 추적**: 각 단계에서 고객이 느끼는 감정
5. **인사이트 도출**: 데이터가 아닌 행동 패턴 발견
---
## Tips
### 효과적인 페르소나 작성:
1. **이름을 붙여라**: "User A"가 아닌 "김대리"
2. **하루를 그려라**: 아침부터 저녁까지 구체적으로
3. **감정을 표현하라**: 😊😔😤 이모지 활용
4. **대화체 사용**: "아, 또 만석이네..." 실제 혼잣말
5. **숫자로 구체화**: "많이"가 아닌 "15분 대기"
---
## Next Steps
### 이 명령어 실행 후:
**📍 다음 단계: Step 4 - `/appkit.sales`** (세일즈 랜딩 구성)
- 고객 페르소나와 스토리를 기반으로 설득 메시지 작성
- 고객의 문제와 해결책을 중심으로 구성
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-11-19
- **Philosophy**: "기능이 아닌 고객의 삶을 디자인하라"

View File

@@ -0,0 +1,785 @@
# appkit.design
**개발 준비 - API, ERD, 기술 스펙 설계**
---
## Overview
**This is Step 7 of the logical thinking 7-step workflow**:
```
논리적 사고 7단계:
1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?)
2. /appkit.spec → 기능 구체화 (뭐가 필요할까? 누가 쓸까?)
3. /appkit.customer → 고객 스토리 (고객의 하루, 고민, 해결)
4. /appkit.sales → 세일즈 랜딩 구성 (어떻게 설득할까?)
5. /appkit.mvp → MVP 범위 정하기 (최소한으로 검증하려면?)
6. /appkit.merge → 기획 정돈 (흩어진 기획 통합)
7. /appkit.design → 개발 준비 (API, ERD, 기술 스펙) ← YOU ARE HERE
```
## Purpose
merge에서 정돈된 기획을 기반으로, 실제 개발에 필요한 **기술 스펙**을 생성합니다.
기획 레벨(merge)과 구현 레벨(개발) 사이의 다리 역할을 합니다.
**핵심 질문**: "개발자에게 뭘 전달해야 하나? 어떻게 만들까?"
---
## When to Use
- `/appkit.merge`로 기획을 정돈한 후 (Step 6 완료 후)
- 개발 시작 직전
- 기술 스펙이 필요할 때
- ERD, API 설계가 필요할 때
---
## Usage
```bash
/appkit.design
/appkit.design "persona 도메인 집중"
/appkit.design "API 우선"
```
---
## What I'll Do
### 1. 소스 문서 읽기
**읽을 파일들**:
- `docs/appkit/merge/concept-map.md` (통합 컨셉)
- `docs/appkit/merge/consolidated-specs.md` (통합 스펙)
- `docs/appkit/merge/journey-feature-map.md` (기능 매핑)
- `docs/appkit/mvp-scope.md` (MVP 범위)
### 2. 데이터 엔티티 설계 (ERD)
**Output**: `docs/appkit/design/entities.md`
```markdown
# Data Entity Design (ERD)
*생성 기준: concept-map.md, consolidated-specs.md*
*생성일: 2025-11-20*
---
## Entity Relationship Diagram
```mermaid
erDiagram
Persona ||--o{ Content : generates
Content ||--|| Post : becomes
Schedule ||--o{ Post : manages
Persona {
int id PK
string name
int age
string personality
string tone
string language
json style_rules
datetime created_at
}
Content {
int id PK
int persona_id FK
string topic
string image_url
text caption
json hashtags
enum status
datetime generated_at
}
Post {
int id PK
int content_id FK
string platform
datetime scheduled_at
datetime posted_at
enum status
}
Schedule {
int id PK
time execution_time
bool is_active
json target_personas
}
```
```
---
## Entity Details
### Entity: Persona
**Purpose**: 캐릭터별 페르소나 정보 저장
**Table Name**: `personas`
**Fields**:
| Field | Type | Constraints | Description |
|-------|------|-------------|-------------|
| id | INT | PK, AUTO_INCREMENT | 페르소나 고유 ID |
| name | VARCHAR(100) | NOT NULL | 캐릭터 이름 |
| age | INT | NOT NULL | 캐릭터 나이 |
| personality | TEXT | NOT NULL | 성격 설명 |
| tone | VARCHAR(50) | NOT NULL | 말투 (밝은/전문가/친근한) |
| language | VARCHAR(10) | NOT NULL | 언어 (ko/en/ja) |
| style_rules | JSON | NULL | 스타일 규칙 (이모티콘, 반말/존댓말) |
| created_at | DATETIME | NOT NULL, DEFAULT NOW() | 생성 시간 |
**Relationships**:
- `Persona.id` → `Content.persona_id` (1:N)
**Business Rules**:
- 한 페르소나는 여러 콘텐츠 생성 가능
- 페르소나 삭제 시 생성된 콘텐츠는 보존 (FK: RESTRICT)
**Sample Data**:
```json
{
"id": 1,
"name": "밝은 20대 여성",
"age": 25,
"personality": "긍정적이고 친근한 성격",
"tone": "밝은",
"language": "ko",
"style_rules": {
"emoji_frequency": "high",
"formality": "casual",
"hashtag_style": "trendy"
},
"created_at": "2025-01-01T10:00:00Z"
}
```
---
### Entity: Content
**Purpose**: AI가 생성한 콘텐츠 저장
**Table Name**: `contents`
**Fields**:
| Field | Type | Constraints | Description |
|-------|------|-------------|-------------|
| id | INT | PK, AUTO_INCREMENT | 콘텐츠 고유 ID |
| persona_id | INT | FK → personas.id, NOT NULL | 생성한 페르소나 |
| topic | VARCHAR(200) | NOT NULL | 주제 |
| image_url | VARCHAR(500) | NOT NULL | 이미지 URL (Midjourney) |
| caption | TEXT | NOT NULL | 캡션 (GPT 생성) |
| hashtags | JSON | NULL | 해시태그 배열 |
| status | ENUM | NOT NULL | draft, approved, posted |
| generated_at | DATETIME | NOT NULL, DEFAULT NOW() | 생성 시간 |
**Enums**:
- `status`: `draft` (생성됨), `approved` (검토 완료), `posted` (포스팅됨)
**Relationships**:
- `Content.persona_id``Persona.id` (N:1)
- `Content.id``Post.content_id` (1:1)
**Business Rules**:
- 하나의 콘텐츠는 하나의 포스트로 변환
- 캡션 길이: 최소 50자, 최대 2200자 (Instagram 제한)
---
### Entity: Post
**Purpose**: 실제 포스팅 기록
**Table Name**: `posts`
**Fields**:
| Field | Type | Constraints | Description |
|-------|------|-------------|-------------|
| id | INT | PK, AUTO_INCREMENT | 포스트 고유 ID |
| content_id | INT | FK → contents.id, UK, NOT NULL | 연결된 콘텐츠 |
| platform | VARCHAR(50) | NOT NULL | instagram, twitter, etc |
| scheduled_at | DATETIME | NOT NULL | 예약 시간 |
| posted_at | DATETIME | NULL | 실제 포스팅 시간 |
| status | ENUM | NOT NULL | pending, posted, failed |
**Enums**:
- `status`: `pending` (대기), `posted` (완료), `failed` (실패)
**Relationships**:
- `Post.content_id``Content.id` (1:1)
**Business Rules**:
- 하나의 콘텐츠는 하나의 포스트
- 포스팅 실패 시 재시도 로직 필요
---
## Summary
- **Total Entities**: 4 (Persona, Content, Post, Schedule)
- **Total Relationships**: 3 (1:N, 1:1)
- **Foreign Keys**: 3
**Entity Dependencies** (구현 순서):
1. **No dependencies**: Persona, Schedule (먼저 구현)
2. **Depends on 1**: Content (needs Persona)
3. **Depends on 2**: Post (needs Content)
```
### 3. API 엔드포인트 설계
**Output**: `docs/appkit/design/apis.md`
```markdown
# API Endpoint Design
*생성 기준: entities.md, consolidated-specs.md*
*API Style: RESTful*
*Base URL: `/api/v1`*
---
## 1. Persona APIs
### 1.1 Create Persona
**Endpoint**: `POST /personas`
**Description**: 새로운 페르소나 생성
**Request Body**:
```json
{
"name": "밝은 20대 여성",
"age": 25,
"personality": "긍정적이고 친근한 성격",
"tone": "밝은",
"language": "ko",
"style_rules": {
"emoji_frequency": "high",
"formality": "casual"
}
}
```
**Success Response** (201 Created):
```json
{
"persona": {
"id": 1,
"name": "밝은 20대 여성",
"age": 25,
"tone": "밝은",
"created_at": "2025-01-01T10:00:00Z"
}
}
```
**Error Responses**:
- 400 Bad Request: Validation failed
**Related Spec**: 001-persona/spec.md
**Related Entity**: Persona
---
### 1.2 List Personas
**Endpoint**: `GET /personas`
**Description**: 모든 페르소나 조회
**Success Response** (200 OK):
```json
{
"personas": [
{
"id": 1,
"name": "밝은 20대 여성",
"age": 25,
"tone": "밝은"
},
{
"id": 2,
"name": "전문가 30대 남성",
"age": 32,
"tone": "전문가"
}
],
"total": 2
}
```
---
## 2. Content APIs
### 2.1 Generate Content
**Endpoint**: `POST /contents/generate`
**Description**: AI로 콘텐츠 자동 생성
**Request Body**:
```json
{
"persona_id": 1,
"topic": "오늘의 운동 루틴",
"auto_post": false
}
```
**Success Response** (201 Created):
```json
{
"content": {
"id": 101,
"persona_id": 1,
"topic": "오늘의 운동 루틴",
"image_url": "https://midjourney.com/...",
"caption": "오늘도 열심히 운동했어요! 💪...",
"hashtags": ["운동", "헬스", "루틴"],
"status": "draft",
"generated_at": "2025-01-01T07:00:00Z"
}
}
```
**Business Logic**:
1. persona_id로 페르소나 정보 조회
2. Midjourney API 호출 (이미지 생성)
3. GPT API 호출 (캡션 생성, 페르소나 톤 반영)
4. 생성된 콘텐츠 DB 저장 (status: draft)
5. auto_post = true면 자동 포스팅 예약
**Error Responses**:
- 404 Not Found: Persona not found
- 502 Bad Gateway: Midjourney/GPT API 실패
- 503 Service Unavailable: API rate limit 초과
**Related Spec**: 002-content/spec.md
**Related Entity**: Content, Persona
---
### 2.2 List Contents
**Endpoint**: `GET /contents`
**Query Parameters**:
```
?persona_id=1 // Filter by persona
&status=draft // Filter by status
&date=2025-01-01 // Filter by generation date
&limit=20
&page=1
```
**Success Response** (200 OK):
```json
{
"contents": [
{
"id": 101,
"persona_id": 1,
"topic": "오늘의 운동 루틴",
"image_url": "https://...",
"status": "draft",
"generated_at": "2025-01-01T07:00:00Z"
}
],
"pagination": {
"total": 45,
"page": 1,
"limit": 20
}
}
```
---
## 3. Schedule APIs
### 3.1 Create Schedule
**Endpoint**: `POST /schedules`
**Description**: 자동 생성 스케줄 등록
**Request Body**:
```json
{
"execution_time": "07:00",
"target_personas": [1, 2, 3],
"is_active": true
}
```
**Success Response** (201 Created):
```json
{
"schedule": {
"id": 1,
"execution_time": "07:00",
"target_personas": [1, 2, 3],
"is_active": true
}
}
```
**Business Logic**:
- Cron job 생성 (매일 07:00 실행)
- 실행 시 target_personas의 각 페르소나로 콘텐츠 생성
- 생성 후 자동 포스팅
**Related Spec**: 003-schedule/spec.md
**Related Entity**: Schedule
---
## 4. Post APIs
### 4.1 Create Post
**Endpoint**: `POST /posts`
**Description**: 콘텐츠를 포스팅으로 예약
**Request Body**:
```json
{
"content_id": 101,
"platform": "instagram",
"scheduled_at": "2025-01-01T12:00:00Z"
}
```
**Success Response** (201 Created):
```json
{
"post": {
"id": 201,
"content_id": 101,
"platform": "instagram",
"scheduled_at": "2025-01-01T12:00:00Z",
"status": "pending"
}
}
```
**Business Logic**:
1. content_id로 콘텐츠 조회
2. 포스트 생성 (status: pending)
3. scheduled_at 시간에 Instagram API 호출
4. 성공 시 status = posted, 실패 시 status = failed
**Related Spec**: 003-schedule/spec.md (포스팅)
**Related Entity**: Post, Content
---
## API Summary
| Domain | Endpoints | Description |
|--------|-----------|-------------|
| Persona | 3 (create, list, update) | 페르소나 관리 |
| Content | 2 (generate, list) | 콘텐츠 생성 |
| Schedule | 2 (create, list) | 스케줄 관리 |
| Post | 2 (create, list) | 포스팅 관리 |
**Total Endpoints**: 9
---
## Error Response Format
**Standard Error Response**:
```json
{
"error": {
"code": "API_RATE_LIMIT",
"message": "Midjourney API rate limit exceeded",
"details": {
"limit": 50,
"current": 51,
"reset_at": "2025-01-01T08:00:00Z"
}
}
}
```
**Error Codes**:
- `VALIDATION_ERROR`: 입력 검증 실패
- `API_RATE_LIMIT`: API 제한 초과
- `GENERATION_FAILED`: 콘텐츠 생성 실패
- `NOT_FOUND`: 리소스 없음
```
### 4. 기술 정책 정의
**Output**: `docs/appkit/design/tech-policies.md`
```markdown
# Technical Policies
*기술 구현 관련 정책*
---
## API Rate Limiting
### Midjourney API
- **Limit**: 시간당 50회
- **동시 처리**: 최대 3개
- **초과 시**: 429 에러, 다음 시간까지 대기
- **Queue**: FIFO 방식
### OpenAI GPT-4 API
- **Limit**: 분당 60회
- **토큰**: 일 500,000 제한
- **초과 시**: 429 에러
- **Retry**: Exponential backoff (1s, 2s, 4s)
### Instagram Graph API
- **Limit**: 하루 200개 포스트
- **시간당**: 25회
- **초과 시**: 403 에러
**구현 방안**:
- Rate Limiter 모듈 구현
- 우선순위 큐 시스템
- API 호출 로그 기록
---
## Error Handling
### 재시도 정책
**API 실패**:
- 재시도 횟수: 3회
- 방식: Exponential backoff
- 대기 시간: 1s, 2s, 4s
**생성 실패**:
- 재시도 횟수: 2회
- 방식: 즉시 재시도
- 실패 시: 에러 로그 기록, 알림
**품질 불량**:
- 판단 기준: 이미지 해상도 < 1080x1080
- 처리: 자동 재생성 (1회)
### 로깅
**로그 종류**:
- `error.log`: 모든 에러
- `api-calls.log`: API 호출 기록
- `generation.log`: 콘텐츠 생성 기록
**로그 레벨**:
- ERROR: 시스템 오류
- WARN: API 제한 근접
- INFO: 정상 실행
---
## Content Safety
### 브랜드 안전성
- 성인 콘텐츠: GPT moderation API로 자동 차단
- 폭력/혐오: 필터 적용
- 저작권: 학습 데이터 외 참조 금지
### 품질 검증
- 이미지: 최소 1080x1080
- 캡션: 최소 50자, 최대 2200자
- 해시태그: 5-30개
---
## Data Management
### 저장 위치
- 페르소나: Database (personas table)
- 콘텐츠: Database (contents table)
- 이미지: S3 (Midjourney URL 저장)
- 로그: `logs/` directory
### 백업
- DB 백업: 일 1회 (자정)
- S3 백업: 자동 (versioning)
- 로그 보존: 90일
```
### 5. 화면-API 매핑
**Output**: `docs/appkit/design/screen-api-map.md`
```markdown
# Screen to API Mapping
*UI 화면과 API 호출 매핑*
---
## Flow: 콘텐츠 자동 생성
### Screen 1: 페르소나 설정
**User Actions**:
- 페르소나 목록 조회
- 새 페르소나 생성
**API Calls**:
```
1. GET /personas
→ Returns: 페르소나 리스트
2. (On create) POST /personas
→ Returns: 생성된 페르소나
```
---
### Screen 2: 스케줄 설정
**User Actions**:
- 스케줄 등록
- 실행 시간 설정
- 대상 페르소나 선택
**API Calls**:
```
1. GET /personas
→ Returns: 선택 가능한 페르소나
2. (On save) POST /schedules
→ Returns: 생성된 스케줄
```
---
### Screen 3: 콘텐츠 확인
**User Actions**:
- 생성된 콘텐츠 조회
- 승인/거부
**API Calls**:
```
1. GET /contents?status=draft
→ Returns: Draft 콘텐츠 목록
2. (On approve) PATCH /contents/{id}
→ Body: { "status": "approved" }
→ Returns: 업데이트된 콘텐츠
```
---
## Complete Sequence Diagram
```mermaid
sequenceDiagram
actor User
participant UI
participant API
participant Midjourney
participant GPT
participant Instagram
User->>UI: 스케줄 등록
UI->>API: POST /schedules
API-->>UI: Schedule created
Note over API: 매일 07:00 Cron 실행
API->>API: GET /personas (target)
loop Each Persona
API->>Midjourney: Generate Image
Midjourney-->>API: Image URL
API->>GPT: Generate Caption
GPT-->>API: Caption Text
API->>API: Save Content (draft)
end
User->>UI: 콘텐츠 확인
UI->>API: GET /contents?status=draft
API-->>UI: Content List
User->>UI: 승인
UI->>API: PATCH /contents/{id}
API->>Instagram: Post Content
Instagram-->>API: Success
API-->>UI: Posted
```
```
---
## Output Files
### 생성될 파일들:
```
docs/appkit/design/
├── entities.md # ERD 및 데이터 모델
├── apis.md # API 엔드포인트 설계
├── tech-policies.md # 기술 정책
└── screen-api-map.md # 화면-API 매핑
```
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/appkit.merge`**: concept-map.md 사용
- **To 개발팀**: 설계 문서 전달
- **To `/appkit.verify`**: 설계 완성도 체크 (향후)
---
## Key Principles
### 설계 원칙:
1. **Planning only, no code**: 설계 문서만 생성, 코드 작성 안 함
2. **Entity-first approach**: 데이터 모델부터 설계
3. **API follows entity**: API는 엔티티 관계에서 도출
4. **Traceability**: 모든 설계는 spec과 연결
---
## Next Steps
### 이 명령어 실행 후:
**📍 7단계 완료!**
- 기획부터 설계까지 모든 문서 완성
- 개발팀에게 전달 가능
- MVP Phase 0 개발 시작
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-11-20
- **Philosophy**: "설계는 기획과 구현 사이의 다리"

View File

@@ -0,0 +1,506 @@
# appkit.merge
**기획 정돈 - 흩어진 기획 문서를 일관되게 통합**
---
## Overview
**This is Step 6 of the logical thinking 7-step workflow**:
```
논리적 사고 7단계:
1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?)
2. /appkit.spec → 기능 구체화 (뭐가 필요할까? 누가 쓸까?)
3. /appkit.customer → 고객 스토리 (고객의 하루, 고민, 해결)
4. /appkit.sales → 세일즈 랜딩 구성 (어떻게 설득할까?)
5. /appkit.mvp → MVP 범위 정하기 (최소한으로 검증하려면?)
6. /appkit.merge → 기획 정돈 (흩어진 기획 통합) ← YOU ARE HERE
7. /appkit.design → 개발 준비 (API, ERD, 기술 스펙)
```
## Purpose
MVP 범위가 정해지면, 이제 지금까지 만든 기획 문서들을 정리할 차례입니다.
spec, customer, mvp를 각각 만들다 보면 AI가 맥락을 놓치고 일관성 없이 생성합니다.
**기획 레벨**에서 흩어진 내용을 통합하고, 중복과 충돌을 해소합니다.
**핵심 질문**: "기획이 일관적인가? 중복은? 용어가 통일됐나?"
---
## When to Use
- `/appkit.mvp`로 MVP 범위를 정한 후 (Step 5 완료 후)
- spec, customer, mvp 결과물이 준비되었을 때
- 기획 문서 간 중복이나 충돌이 보일 때
- 용어와 컨셉을 통일해야 할 때
- 개발 준비(design) 전 기획을 정돈하고 싶을 때
---
## Usage
```bash
/appkit.merge
/appkit.merge "특히 spec과 customer 용어 통일"
/appkit.merge "MVP 범위 기반으로 우선순위 재조정"
```
---
## What I'll Do
### 1. 소스 문서 수집
**읽을 파일들**:
- `docs/appkit/specs/*/spec.md` (모든 기능 스펙)
- `docs/appkit/customer-persona.md` (타겟 고객)
- `docs/appkit/customer-journey.md` (고객 여정)
- `docs/appkit/mvp-scope.md` (MVP 범위)
- `docs/appkit/mvp-metrics.md` (검증 지표)
### 2. 기획 일관성 분석
**분석 항목**:
#### A. 용어 통일성
```markdown
## 용어 충돌 발견
**Spec에서**: "페르소나 설정"
**Customer에서**: "캐릭터 프로필"
**MVP에서**: "인물 정보"
**통일 제안**:
→ 표준 용어: "페르소나"
→ 모든 문서에 일관되게 적용
```
#### B. 기능 중복 확인
```markdown
## 중복 기능 발견
**001-persona/spec.md**:
- 이미지 생성 기능 언급
**002-content/spec.md**:
- 이미지 생성 기능 중복 설명
**통합 제안**:
→ 002-content에서 통합 관리
→ 001-persona는 002-content 참조
```
#### C. 고객 가치 일관성
```markdown
## 가치 제안 충돌
**Spec**: "100명 자동 관리"
**Customer**: "15시간 → 1시간 시간 절약"
**Sales**: "월 1억 수익"
**핵심 가치 통일**:
→ Primary Value: "시간 절약 (15시간 → 1시간)"
→ Secondary Value: "확장성 (100명 관리)"
→ Ultimate Goal: "월 1억 수익 달성"
```
### 3. MVP 범위 기반 우선순위 조정
```markdown
## MVP 범위 재확인
**Phase 0 (MVP - 2주)**:
✅ 페르소나 관리 (001-persona)
✅ 콘텐츠 자동 생성 (002-content)
✅ 스케줄링 (003-schedule)
❌ 성과 분석 (004-analytics) → Phase 1로 이동
❌ 수익화 관리 (005-monetize) → Phase 2로 이동
**우선순위 조정**:
1. **Must Have** (없으면 MVP 불가):
- 001-persona, 002-content, 003-schedule
2. **Should Have** (있으면 좋음):
- 004-analytics (Phase 1)
3. **Nice to Have** (나중에):
- 005-monetize (Phase 2)
→ Spec 문서에서 Phase 0 외 기능은 "Future" 섹션으로 이동
```
### 4. 컨셉 맵 생성
**Output**: `docs/appkit/merge/concept-map.md`
```markdown
# Concept Map (통합 컨셉 맵)
*생성 기준: spec, customer, mvp 통합*
*생성일: 2025-11-20*
---
## 핵심 컨셉 정의
### 서비스 컨셉
"AI 인플루언서 100명을 자동으로 운영하는 시스템"
### 핵심 가치 (통일)
1. **Primary**: 시간 절약 (15시간 → 1시간)
2. **Secondary**: 확장성 (100명 자동 관리)
3. **Ultimate Goal**: 월 1억 수익
### 타겟 사용자
- **Primary**: 본인 (AI 인플루언서 운영자)
- **Pain Point**: 수동 작업 불가능
- **Goal**: 완전 자동화
---
## 기능 통합 맵
### Phase 0 (MVP - 2주)
**001-persona** (페르소나 관리)
- 정의: 캐릭터별 성격, 톤앤매너 설정
- 입력: 캐릭터 정보 (이름, 나이, 성격)
- 출력: 페르소나 DB 저장
- 의존성: 없음
**002-content** (콘텐츠 자동 생성)
- 정의: 페르소나 기반 이미지 + 캡션 자동 생성
- 입력: 페르소나 ID, 주제
- 출력: 이미지 (Midjourney), 캡션 (GPT)
- 의존성: 001-persona (필수)
**003-schedule** (스케줄링)
- 정의: 매일 아침 7시 자동 생성 실행
- 입력: 스케줄 설정
- 출력: Cron job 실행
- 의존성: 002-content (필수)
---
## 용어 사전 (통일된 표현)
| 개념 | 표준 용어 | 금지 용어 |
|------|-----------|-----------|
| 캐릭터 정보 | 페르소나 | 캐릭터 프로필, 인물 정보 |
| 자동 생성 | 콘텐츠 생성 | 포스트 제작, 글쓰기 |
| 예약 실행 | 스케줄링 | 타이머, 자동 실행 |
| 성과 추적 | 분석 | 통계, 모니터링 |
---
## 데이터 흐름
```
[페르소나 DB] → [콘텐츠 생성] → [Instagram API]
↑ ↑ ↑
001-persona 002-content 003-schedule
```
**데이터 엔티티** (기획 레벨):
1. Persona (페르소나 정보)
2. Content (생성된 콘텐츠)
3. Schedule (스케줄 설정)
4. Post (포스팅 기록)
*상세 데이터 모델은 /appkit.design에서 생성*
```
### 5. 고객 여정과 기능 매핑
**Output**: `docs/appkit/merge/journey-feature-map.md`
```markdown
# 고객 여정 - 기능 매핑
*Customer Journey → Feature Mapping*
---
## 현재 상황 (Before)
**새벽 6시**: "100개 콘텐츠 어떻게 만들지..." (막막)
**해결 기능**: 없음 (수동 작업)
**오전 9시**: 20개째 이미지 생성 중 (지침)
**해결 기능**: 002-content (자동 생성)
**오후 3시**: 50개째 캡션 작성 중 (번아웃)
**해결 기능**: 002-content (자동 생성)
**저녁 9시**: 결국 20개 못 올림 (좌절)
**해결 기능**: 003-schedule (자동 포스팅)
---
## 미래 상황 (After - MVP 적용)
**전날 밤 11시**: 내일 주제만 설정 (5분)
**사용 기능**: 001-persona (주제 입력)
**아침 7시**: 시스템이 100개 자동 생성 (무인)
**사용 기능**: 003-schedule → 002-content
**아침 8시**: 커피 마시며 퀄리티 체크 (30분)
**사용 기능**: 004-analytics (Phase 1)
---
## 기능별 고객 가치
**001-persona**:
- Pain 해소: "매번 캐릭터 설정 반복" → "한번 설정, 계속 사용"
- 시간 절약: 10분/캐릭터 → 1분 (첫 설정)
**002-content**:
- Pain 해소: "100개 수동 생성 불가능" → "100개 자동 생성"
- 시간 절약: 10시간 → 0시간
**003-schedule**:
- Pain 해소: "아침마다 실행 필요" → "자동 실행"
- 시간 절약: 5분/일 → 0분
```
### 6. 통합 후 구조 재정의
**Before (분산)**:
```
docs/appkit/
├── specs/
│ ├── 001-persona/spec.md (용어 불일치)
│ ├── 002-content/spec.md (중복 설명)
│ └── 003-schedule/spec.md
├── customer-persona.md (용어 다름)
├── customer-journey.md
├── mvp-scope.md (우선순위 모호)
└── mvp-metrics.md
```
**After (통합)**:
```
docs/appkit/merge/
├── concept-map.md # 핵심: 통합 컨셉 맵
├── journey-feature-map.md # 고객 여정 - 기능 매핑
├── terminology.md # 표준 용어 사전
├── consolidated-specs.md # 통합된 기능 명세
└── mvp-priority.md # 재조정된 우선순위
```
**구조 설명**:
- `concept-map.md`: 모든 문서의 컨셉을 하나로 통합
- `journey-feature-map.md`: 고객 여정과 기능 매핑
- `terminology.md`: 통일된 용어 사전
- `consolidated-specs.md`: 중복 제거된 기능 명세
- `mvp-priority.md`: MVP 기반 우선순위
### 7. 충돌 해결
**충돌 패턴 식별**:
```markdown
## Conflicts Detected
⚠️ **Conflict #1**: 이미지 생성 해상도
- 001-persona: 512x512
- 002-content: 1080x1080
**해결**: content-safety.md에 용도별 최소 해상도 정의
⚠️ **Conflict #2**: API 호출 우선순위
- 001: persona 우선
- 002: content 우선
**해결**: rate-limiter.md에 우선순위 큐 정의
⚠️ **Conflict #3**: 에러 시 재시도 횟수
- 001: 5회
- 002: 3회
**해결**: error-handling.md에 통일 (3회)
```
---
## Output Files
### 생성될 파일 구조:
```
docs/appkit/merge/
├── specs/ (통합된 개별 기능)
│ ├── 001-persona/
│ ├── 002-content/
│ ├── 003-schedule/
│ └── 004-posting/
├── common/ (공통 모듈 & 정책)
│ ├── 001-image-generation/
│ ├── 002-rate-limiter/
│ ├── 003-error-handler/
│ ├── 004-content-safety/
│ ├── 005-api-limits/
│ └── 006-data-management/
├── overview.md (전체 통합 요약)
└── dependencies.md (의존성 그래프)
```
### 파일별 상세:
1. **`merge/specs/00X-*/spec.md`**
- 원본 specs에서 중복 제거
- common 모듈 참조 추가
- 의존성 명시
2. **`merge/common/001-image-generation/module.md`**
- Midjourney API 통합 로직
- 이미지 생성 공통 인터페이스
- 사용 예시
3. **`merge/common/002-rate-limiter/module.md`**
- API별 제한 정책
- 우선순위 큐 시스템
- 재시도 로직
4. **`merge/common/003-error-handler/module.md`**
- 통일된 에러 처리
- 로깅 정책
- 알림 규칙
5. **`merge/common/004-content-safety/policy.md`**
- 브랜드 안전성 필터
- 콘텐츠 검증 규칙
- 언어/문화 가이드
6. **`merge/common/005-api-limits/policy.md`**
- Midjourney: 시간당 50회
- OpenAI: 분당 60회
- Instagram: 일 200개
7. **`merge/common/006-data-management/policy.md`**
- 저장 위치 및 구조
- 보존 기간
- 백업 정책
8. **`merge/overview.md`**
- 중복 제거 요약
- 통합된 기능 목록
- common 모듈 목록
9. **`merge/dependencies.md`**
- 기능 간 의존성 그래프
- 실행 순서
- 순환 의존성 체크
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/appkit.mvp`**: MVP Phase 0에 포함될 기능들
- **From `/appkit.spec`**: 각 기능별 스펙 파일
- **To 개발팀**: 정리된 스펙과 공통 모듈로 구현 시작
---
## Examples
### Example 1: 기본 통합
```bash
$ /appkit.merge
🔄 Spec Consolidation Analysis
**중복 기능 발견**: 2개
✅ image-generation 모듈로 통합
**공통 정책 추출**: 6개
✅ 001-image-generation (모듈)
✅ 002-rate-limiter (모듈)
✅ 003-error-handler (모듈)
✅ 004-content-safety (정책)
✅ 005-api-limits (정책)
✅ 006-data-management (정책)
**의존성 정리**: ✅ 순환 없음
**충돌 해결**: 3개
✅ 이미지 해상도 통일
✅ API 우선순위 정의
✅ 재시도 횟수 통일
✅ Created docs/appkit/merge/
✅ Generated merge/specs/ (4개)
✅ Generated merge/common/ (6개)
✅ Generated merge/overview.md
✅ Generated merge/dependencies.md
```
### Example 2: 특정 영역 집중
```bash
$ /appkit.merge "API 통합 중점"
🔄 API Integration Focus
**API 통합 분석**:
- Midjourney: 2곳에서 호출 → 통합
- OpenAI: 3곳에서 호출 → 통합
- Instagram: 1곳 (통합 불필요)
**Rate Limiting 정책**:
✅ common/005-api-limits/policy.md 생성
- Midjourney: 시간당 50회
- OpenAI: 분당 60회
- 우선순위 큐 필요
✅ Generated merge/common/001-image-generation/
✅ Generated merge/common/002-rate-limiter/
✅ Updated merge/specs/ (중복 제거)
```
---
## Key Principles
### Merge 원칙:
1. **DRY (Don't Repeat Yourself)**: 중복 코드/정책 제거
2. **Single Source of Truth**: 하나의 정의, 여러 참조
3. **Explicit Dependencies**: 암묵적 의존성 명시화
4. **Policy Centralization**: 정책은 한 곳에서 관리
5. **Conflict Resolution**: 충돌은 즉시 해결
---
## Tips
### 효과적인 통합을 위해:
1. **작은 단위로 시작**: 2-3개 기능부터 통합
2. **정책 우선**: 공통 규칙부터 정리
3. **의존성 체크**: 순환 의존성 방지
4. **문서화**: 통합 이유와 결정사항 기록
5. **점진적 리팩토링**: 한번에 다 바꾸지 말기
---
## Next Steps
### 이 명령어 실행 후:
**📍 다음 단계: Step 7 - `/appkit.design`** (개발 준비)
- 기획이 정돈되었으니 이제 개발 준비 단계로
- ERD, API 엔드포인트 설계
- 기술 정책 정의
- 개발팀에게 전달할 최종 기술 스펙 완성
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-01-20
- **Philosophy**: "AI는 맥락을 놓친다. 사람이 통합하라."

View File

@@ -0,0 +1,404 @@
# appkit.mvp
**최소한의 기능으로 최대한의 검증을 하는 MVP 범위 정의 명령어**
---
## Overview
**This is Step 5 of the logical thinking 7-step workflow**:
```
논리적 사고 7단계:
1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?)
2. /appkit.spec → 기능 구체화 (뭐가 필요할까? 누가 쓸까?)
3. /appkit.customer → 고객 스토리 (고객의 하루, 고민, 해결)
4. /appkit.sales → 세일즈 랜딩 구성 (어떻게 설득할까?)
5. /appkit.mvp → MVP 범위 정하기 (최소한으로 검증하려면?) ← YOU ARE HERE
6. /appkit.merge → 기획 정돈 (흩어진 기획 통합)
7. /appkit.design → 개발 준비 (API, ERD, 기술 스펙)
```
## Purpose
핵심 가치만 구현하여 빠르게 시장 검증을 하기 위한 MVP 범위를 정의합니다.
"있으면 좋은" 기능을 제외하고 "없으면 안되는" 기능만 선별합니다.
**핵심 질문**: "최소한으로 검증하려면 뭐가 필요할까?"
---
## When to Use
- `/appkit.sales`로 가치 제안을 정의한 후 (Step 4 완료 후)
- 개발 시작 전 범위를 정해야 할 때
- 리소스가 제한적일 때
- 빠른 시장 검증이 필요할 때
---
## Usage
```bash
/appkit.mvp
/appkit.mvp "2-week validation"
/appkit.mvp "budget: 500만원"
/appkit.mvp "target: early adopters only"
```
---
## What I'll Do
### 1. MVP 정의 프레임워크
```markdown
## MVP Definition Framework
### The ONE Thing Test
"만약 딱 하나의 기능만 만들 수 있다면?"
→ 그것이 진짜 핵심 가치
### Concierge MVP vs Product MVP
- Concierge: 수동으로 서비스 제공 (검증용)
- Product: 자동화된 제품 (확장용)
### MLP (Minimum Lovable Product)
- Minimum: 최소 기능
- Viable: 사용 가능
- Lovable: 사랑받을 만한
→ MVP도 완성도는 있어야 함
```
### 2. Phase별 기능 분류
```markdown
## MVP Phases
### Phase 0: Core MVP (2주)
"없으면 서비스가 성립 안 되는 기능"
#### Must Have (핵심)
✅ 코트 검색/조회
✅ 실시간 예약
✅ 간단 결제
✅ 예약 확인
#### 구현 수준
- UI: 기본 모바일 웹 (앱 개발 X)
- 백엔드: 최소 API (5-7개)
- 결제: 간편결제 1종 (카드)
- 인증: 소셜 로그인 1종 (카카오)
#### 제외할 것
❌ 회원 등급 시스템
❌ 리뷰/평점
❌ 쿠폰/포인트
❌ 푸시 알림
❌ 커뮤니티
#### 검증 목표
- 주간 예약 10건 달성
- 사용자 10명 확보
- 핵심 플로우 검증
### Phase 1: Enhanced MVP (1개월)
"사용자 만족도를 높이는 기능"
#### Should Have (개선)
✅ 할인/쿠폰 시스템
✅ 사용자 리뷰
✅ 예약 변경/취소
✅ 다중 결제 수단
#### 검증 목표
- 재방문율 30%
- 주간 예약 50건
- NPS 40 이상
### Phase 2: Growth (3개월)
"성장과 확장을 위한 기능"
#### Nice to Have (확장)
✅ 커뮤니티 기능
✅ 코칭 매칭
✅ 토너먼트 개최
✅ 장비 대여
#### 검증 목표
- MAU 1,000명
- 월 매출 1,000만원
- 바이럴 계수 1.2
```
### 3. MVP 검증 지표 설정
```markdown
## MVP Metrics
### 1⃣ Success Metrics (성공 지표)
"목표 달성 여부"
#### Quantitative (정량)
- 주간 활성 사용자 (WAU): 10명
- 주간 예약 건수: 10건
- 전환율: 방문자의 10% 예약
- 결제 성공률: 90%
#### Qualitative (정성)
- "편리하다" 피드백 70%
- "다시 쓸 것" 응답 80%
- 추천 의향 (NPS): 30+
### 2⃣ Learning Metrics (학습 지표)
"무엇을 배울 것인가"
#### User Behavior
- 이탈 구간: 어디서 포기하나?
- 사용 시간대: 언제 가장 활발한가?
- 검색 패턴: 뭘 찾고 있나?
- 실패 케이스: 왜 예약 안 하나?
#### Product-Market Fit Signals
- Organic Growth: 자연 유입 있나?
- Retention: 다시 오나?
- Referral: 추천하나?
- Payment: 돈을 내나?
### 3⃣ Pivot Indicators (피벗 신호)
"방향 전환이 필요한 시점"
🚨 Danger Signals
- 2주 후 WAU < 5명
- 전환율 < 3%
- NPS < 0
- 일일 사용 시간 < 1분
→ Action: 가치 제안 재검토
```
### 4. MVP 개발 우선순위 매트릭스
```markdown
## Priority Matrix
High Impact ↑
[P0: 코트 예약] | [P1: 할인 시스템]
Must Do Now | Do Next
__________________|__________________
|
[P3: 푸시 알림] | [P2: 리뷰 시스템]
Don't Do | Do Later
|
→ High Effort
### Priority Scoring
Impact (영향도) x Confidence (확신도) / Effort (노력)
예시:
- 코트 예약: 10 x 10 / 3 = 33.3 (P0)
- 커뮤니티: 5 x 3 / 8 = 1.9 (P3)
```
### 5. MVP 실행 로드맵
```markdown
## Execution Roadmap
### Week 1-2: Build Phase 0
Day 1-3: 기본 UI/UX
- 검색 화면
- 예약 화면
- 확인 화면
Day 4-7: 핵심 백엔드
- 예약 API
- 결제 연동
- 알림 발송
Day 8-10: 통합 테스트
- End-to-end 테스트
- 결제 테스트
- 부하 테스트
Day 11-14: Soft Launch
- 베타 사용자 10명
- 피드백 수집
- 긴급 수정
### Week 3-4: Validate & Iterate
- 지표 측정
- 사용자 인터뷰
- 개선사항 반영
- Phase 1 결정
### Week 5-8: Build Phase 1
(If Phase 0 validated)
- 할인 시스템
- 리뷰 기능
- UX 개선
```
### 6. MVP 체크리스트
```markdown
## MVP Checklist
### Before Launch
□ 핵심 가치 명확한가?
□ 타겟 사용자 명확한가?
□ 성공 지표 정의했나?
□ 실패 기준 정의했나?
□ 2주 안에 가능한가?
### During Development
□ Scope creep 발생하지 않았나?
□ "하나 더" 유혹 거부했나?
□ 핵심 플로우만 집중했나?
### After Launch
□ 정량 지표 달성했나?
□ 정성 피드백 긍정적인가?
□ 다음 단계 명확한가?
```
---
## Output Files
### 생성될 파일들:
1. **`docs/appkit/mvp-scope.md`**
- Phase별 기능 목록
- 포함/제외 기능
- 우선순위 매트릭스
2. **`docs/appkit/mvp-metrics.md`**
- 성공 지표
- 학습 지표
- 피벗 기준
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/appkit.customer`**: Primary 페르소나의 핵심 문제
- **From `/appkit.sales`**: 검증할 핵심 가치
- **To `/appkit.merge`**: MVP Phase 0 기능의 구현 준비
---
## Examples
### Example 1: 2주 검증 MVP
```bash
$ /appkit.mvp "2-week validation"
🎯 MVP Scope Defined
Phase 0 (2 weeks):
✅ Search (location-based)
✅ Booking (real-time)
✅ Payment (simple)
✅ Confirmation (email)
Excluded:
❌ Reviews (Phase 1)
❌ Discounts (Phase 1)
❌ Community (Phase 2)
Success Criteria:
- 10 bookings/week
- 10 active users
- NPS > 30
✅ Generated mvp-scope.md
✅ Generated mvp-metrics.md
```
### Example 2: 예산 제약 MVP
```bash
$ /appkit.mvp "budget: 500만원"
💰 Budget-Constrained MVP
Concierge MVP Approach:
- Manual booking process
- WhatsApp/Kakao for communication
- Google Forms for payment
- Spreadsheet for management
Tech Investment: Phase 1
- After validation
- 500만원 = 2 developer weeks
✅ Updated mvp-scope.md
```
---
## Key Principles
### MVP 원칙:
1. **Maximize Learning**: 최소 투자로 최대 학습
2. **Ship Fast**: 완벽보다 속도
3. **Core Value Only**: 핵심 가치만 구현
4. **Real Users**: 실제 사용자로 검증
5. **Metrics-Driven**: 감이 아닌 데이터로 결정
### MVP Anti-Patterns:
**Feature Creep**: "이것도 있으면 좋겠는데..."
**Perfectionism**: "조금만 더 다듬고..."
**Assumption**: "사용자는 당연히..."
**Vanity Metrics**: 의미 없는 지표 추적
**Premature Scaling**: 검증 전 확장
---
## Tips
### 성공적인 MVP를 위해:
1. **Time Box**: 2주를 넘기지 마라
2. **User Cap**: 10-100명으로 시작
3. **Manual First**: 자동화는 나중에
4. **Talk to Users**: 매일 사용자와 대화
5. **Kill Features**: 과감하게 빼라
### MVP 실패 신호:
- 2주 지나도 출시 못함
- 기능이 계속 추가됨
- 사용자 피드백 없음
- 지표 측정 안 함
- "좀 더 완벽하게" 반복
---
## Next Steps
### 이 명령어 실행 후:
**📍 다음 단계: Step 6 - `/appkit.merge`** (기획 정돈)
- MVP 범위가 정해졌으니 이제 기획 정돈 단계로
- 용어 통일, 기능 중복 제거
- 고객 가치 일관성 확보
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-11-19
- **Philosophy**: "If you're not embarrassed by v1, you launched too late"

View File

@@ -0,0 +1,480 @@
---
description: 아이디어 스케치 - 막연한 아이디어를 서비스 컨셉으로 구체화
---
## User Input
```text
$ARGUMENTS
```
User input **must** be considered (if not empty).
## Overview
The text following `/appkit.new` is the app description. Assume `$ARGUMENTS` is always available in this conversation even if shown as-is. Don't ask again unless the user provides an empty command.
**This is Step 1 of the logical thinking 7-step workflow**:
```
논리적 사고 7단계:
1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?) ← YOU ARE HERE
2. /appkit.spec → 기능 구체화 (뭐가 필요할까? 누가 쓸까?)
3. /appkit.customer → 고객 스토리 (고객의 하루, 고민, 해결)
4. /appkit.sales → 세일즈 랜딩 구성 (어떻게 설득할까?)
5. /appkit.mvp → MVP 범위 정하기 (최소한으로 검증하려면?)
6. /appkit.merge → 기획 정돈 (흩어진 기획 통합)
7. /appkit.design → 개발 준비 (API, ERD, 기술 스펙)
```
Based on the app description, perform the following:
## Execution Flow
### 1. 아이디어 스케치 (고객 중심 대화)
**Input**: User's natural language app description (e.g., "Tennis court booking app with promotions and coupons")
**Step 1: 고객 문제 파악**
1. **무슨 문제를 해결하나?**:
- 현재 고객이 겪는 불편함
- 기존 솔루션의 한계
- 해결되지 않은 니즈
2. **누가 이 문제를 겪나?**:
- 주요 타겟 고객군
- 그들의 특성과 행동 패턴
- 문제의 심각도
**Step 2: 서비스 컨셉 제시**
Present customer-centric summary in this format:
```markdown
## 📋 서비스 컨셉
**서비스명**: [추론한 이름 또는 사용자 입력]
### 🎯 핵심 문제와 해결책
**고객이 겪는 문제**:
- "테니스 치고 싶은데 코트 예약이 너무 번거로워요"
- "전화로 일일이 확인해야 하고, 대기 시간도 길어요"
- "가격도 제각각이라 비교가 어려워요"
**우리의 해결책**:
- 3초 만에 실시간 예약
- 모든 코트 가격 한눈에 비교
- 자동 할인으로 30% 저렴하게
### 👥 타겟 고객
**Primary (핵심 고객)**:
- 30-40대 직장인
- 주말 운동을 원하지만 시간이 없는 사람
- 편의성과 시간 절약을 중시
**Secondary (보조 고객)**:
- 프리랜서 (시간 유연, 가격 민감)
- 대학생 (저렴한 가격 선호)
### 💎 핵심 가치 (왜 써야 하나?)
1. **시간 절약**: 15분 대기 → 3초 예약
2. **비용 절감**: 자동 할인으로 평균 30% 저렴
3. **확실한 예약**: 실시간 확인, 즉시 확정
### 🚀 차별점 (경쟁사와 뭐가 다른가?)
- 기존: 전화 예약, 불확실, 정가
- 우리: 앱 예약, 실시간, 자동 할인
### 📦 주요 기능 (고객 가치 중심)
1. **001-search**: 빠른 코트 검색
- 위치 기반 자동 추천
- 실시간 예약 가능 확인
2. **002-booking**: 간편 예약/결제
- 3초 예약 완료
- 원터치 결제
3. **003-discount**: 스마트 할인
- 타임딜 자동 적용
- 쿠폰 자동 추천
4. **004-manage**: 예약 관리
- 예약 변경/취소
- 알림 설정
5. **005-social**: 커뮤니티
- 파트너 찾기
- 리뷰/평점
### 💰 수익 모델
- 예약 수수료 (5-10%)
- 프리미엄 멤버십 (우선 예약권)
- 제휴 광고 (장비, 레슨)
---
이렇게 이해한 것이 맞나요? 수정하거나 추가하고 싶은 내용이 있나요?
특히:
- 핵심 고객이 맞나요?
- 해결하려는 문제가 정확한가요?
- 더 중요한 기능이 있나요?
```
**Step 3: Receive User Feedback**
Wait for user response:
- "Good", "Yes", "Proceed" → Move to Step 4
- Modification request → Update content and return to Step 2
- Additional features → Add to feature list and return to Step 2
**Example Dialog**:
```
User: "Lesson booking is important too. And we need instructor rating feature"
Claude:
Got it! I'll update as follows:
**Major Feature Specs (Updated)**:
1. 001-user: User authentication and profile management
2. 002-venue: Court information management
3. 003-lesson: Lesson information and instructor management (newly added)
4. 004-booking: Booking and payment system (courts + lessons)
5. 005-promotion: Coupons and promotions
6. 006-review: Facility and instructor reviews/ratings (instructor rating added)
Shall we proceed with this?
```
**Step 4: Final Confirmation**
When user confirms with "Good", "Proceed", etc.:
```
✅ App structure confirmed!
Creating files now...
```
### 2. Script Execution (After User Confirmation)
Execute only after user confirmation:
**Script**: `.app/scripts/init-app.sh --json --app-name "tymatch"`
**Script Actions**:
- Create `docs/appkit/` directory
- Create `docs/appkit/specs/` directory
- Create subdirectories for each confirmed spec (`001-user/`, `002-venue/`, ...)
- JSON output:
```json
{
"SPECS_DIR": "docs/appkit/specs",
"APP_OVERVIEW": "docs/appkit/overview.md"
}
```
**Important**:
- **No file creation before user confirmation**
- Script only handles directory creation and path output
- Natural language analysis and dialogue handled by Claude
### 3. Service Overview Document Creation
**File**: `docs/appkit/overview.md`
**Content**: Use **user-confirmed content** with customer focus
```markdown
# [Service Name] Service Concept
## 🎯 서비스 본질
[한 문장으로 서비스 정의]
예: "직장인의 주말 운동을 쉽게 만드는 테니스 코트 예약 서비스"
## 🔥 해결하는 문제
[User-confirmed problems]
- 번거로운 전화 예약 (15분 대기)
- 불투명한 가격 정보
- 원하는 시간대 확인 어려움
## 👥 타겟 고객
[User-confirmed target customers]
### Primary Persona
- 김대리 (35세, IT기업)
- Pain: "주말 운동하고 싶은데 예약이 너무 번거로워"
- Want: 빠른 예약, 확실한 시간 확보
### Secondary Personas
- 프리랜서: 평일 낮 저렴한 시간대 활용
- 대학생: 그룹 예약으로 할인 받기
## 💎 핵심 가치 제안
[User-confirmed value propositions]
1. **시간 절약**: 15분 → 3초
2. **비용 절감**: 자동 할인 30%
3. **확실성**: 실시간 확인 & 즉시 확정
## 📦 주요 기능 (고객 가치 중심)
[User-confirmed features with customer value]
- **001-search**: 3초 만에 찾는 완벽한 코트
- **002-booking**: 클릭 한 번으로 예약 완료
- **003-discount**: 자동으로 적용되는 최저가
- **004-manage**: 언제든 변경 가능한 유연함
- **005-social**: 함께 운동할 파트너 찾기
## 🚀 MVP 로드맵
Phase 0 (2주): 핵심 예약 기능
Phase 1 (1개월): 할인 & 리뷰
Phase 2 (3개월): 커뮤니티 & 확장
## 💰 비즈니스 모델
[User-confirmed business model]
- 예약 수수료 (5-10%)
- 프리미엄 멤버십
- 제휴 마케팅
## 📊 성공 지표
- Week 1: 10명 사용자 확보
- Week 2: 10건 예약 달성
- Month 1: NPS 30+ 달성
```
**Important**: Use content presented in Step 2 and confirmed by user **as-is**
### 4. Individual Spec Draft Creation (Based on Overview.md)
Create **initial draft** `spec.md` file in each spec directory based on overview.md content:
**Important**: This creates **first draft**, not empty templates. Extract relevant information from overview.md for each feature.
**Approach**:
1. Read the feature description from overview.md (주요 기능 section)
2. Extract customer value, target user, and workflow hints
3. Create initial draft with inferred content
4. Mark sections that need `/appkit.spec` for further detailing
**File**: `docs/appkit/specs/001-persona/spec.md`
**Content**: Draft with overview-based initial content
```markdown
# Spec: 001-persona
## Feature Name
페르소나 생성 및 관리
## User Value (고객 가치)
[Extract from overview.md's feature description]
- 100가지 다양한 스타일로 브랜드 노출 확대
- 카테고리별 최적화된 인플루언서 확보
## Target User (누가 쓸까?)
[Infer from overview.md's 타겟 고객 section]
- Primary: 서비스 관리자
- Use case: 초기 셋업 시 다양한 페르소나 생성
## User Journey & Screen Flow
[Extract workflow from overview.md's 핵심 워크플로우]
### 1. 페르소나 생성 화면
- **UI Elements**: 카테고리 선택, 개수 설정, 생성 버튼
- **CTA**: "100명 자동 생성" 버튼
- **Next**: 페르소나 목록 화면
### 2. 페르소나 목록 화면
- **UI Elements**: 페르소나 카드 그리드 (이름, 카테고리, 상태)
- **CTA**: 미드저니 프롬프트 export, 프로필 이미지 업로드
- **Next**: 개별 페르소나 상세
## Business Rules
[Extract from overview.md's feature description]
- 카테고리별 페르소나 자동 생성 (Beauty 25명, Fashion 25명, etc.)
- 미드저니용 프롬프트 export 기능
- 프로필 이미지 업로드 시스템
## Edge Cases
[Initial inference - needs /appkit.spec for details]
- 페르소나 생성 실패 시 재시도 로직
- 중복 페르소나 체크
## Dependencies
[Infer from overview.md workflow]
- None (initial setup feature)
---
💡 **더 구체화하려면**:
```
/appkit.spec 001-persona "카테고리별 비율 조정 기능"
/appkit.spec 001-persona "페르소나별 톤앤매너 설정"
```
```
**Content Generation Strategy**:
For each spec (001-010), extract from overview.md:
1. **Feature Name**: Use Korean name from 주요 기능 section
2. **User Value**: Extract from 핵심 가치 제안 or feature description
3. **Target User**: Infer from 타겟 고객 (관리자 vs 광고주)
4. **User Journey**: Extract from 핵심 워크플로우 section
5. **Business Rules**: Extract explicit rules from feature description
6. **Edge Cases**: Basic inference (mark as "needs detailing")
7. **Dependencies**: Infer from workflow order
**Example Mapping** (from AI Influencer Network overview.md):
```
001-persona →
- Extract: "100명의 다양한 인플루언서 생성"
- User Value: 카테고리별 최적화된 인플루언서 풀 확보
- Journey: 카테고리 선택 → 자동 생성 → 미드저니 export
003-content-composer →
- Extract: "크롤링 요소 조합으로 빠른 제작"
- User Value: 검증된 요소 조합으로 시행착오 최소화
- Journey: 크롤링 갤러리 → 요소 선택 → 나노바나나 생성
006-brand-site →
- Extract: "광고주가 쉽게 의뢰"
- User Value: 빠른 캠페인 실행, 다양한 타겟층 공략
- Journey: 브랜드 등록 → 카테고리 선택 → 캐릭터 추천
```
**Files to Create** (with overview-based drafts):
- `docs/appkit/specs/001-persona/spec.md`
- `docs/appkit/specs/002-reference-crawl/spec.md`
- `docs/appkit/specs/003-content-composer/spec.md`
- `docs/appkit/specs/004-caption-generator/spec.md`
- `docs/appkit/specs/005-approval/spec.md`
- `docs/appkit/specs/006-brand-site/spec.md`
- `docs/appkit/specs/007-ad-content/spec.md`
- `docs/appkit/specs/008-posting/spec.md`
- `docs/appkit/specs/009-engagement/spec.md`
- `docs/appkit/specs/010-analytics/spec.md`
### 5. Completion Report
Report to user:
```
✅ 서비스 컨셉 정의 & 기능 초안 생성 완료!
📁 생성된 파일:
- docs/appkit/overview.md (서비스 컨셉)
- docs/appkit/specs/001-search/spec.md (검색 - 초안 생성됨 ✨)
- docs/appkit/specs/002-booking/spec.md (예약 - 초안 생성됨 ✨)
- docs/appkit/specs/003-discount/spec.md (할인 - 초안 생성됨 ✨)
- docs/appkit/specs/004-manage/spec.md (관리 - 초안 생성됨 ✨)
- docs/appkit/specs/005-social/spec.md (커뮤니티 - 초안 생성됨 ✨)
✨ 변경사항: 빈 템플릿이 아닌 overview.md 기반 **초안**이 생성되었습니다!
각 spec에는 이미 다음 내용이 포함되어 있습니다:
- User Value (고객 가치)
- Target User (타겟 고객)
- User Journey (기본 화면 흐름)
- Business Rules (핵심 규칙)
- Dependencies (의존성)
🎯 핵심 가치:
- 시간 절약: 15분 → 3초
- 비용 절감: 30% 자동 할인
- 확실한 예약: 실시간 확정
👥 타겟 고객:
- Primary: 30-40대 직장인
- Secondary: 프리랜서, 대학생
📝 다음 단계 (논리적 사고 흐름):
**Step 2 - 기능 구체화 (/appkit.spec)**
이미 초안이 있으니, 더 구체적인 시나리오를 추가하세요:
/appkit.spec 001-search "위치 기반으로 가까운 코트 찾기, 거리순 정렬"
/appkit.spec 002-booking "퇴근길 지하철에서 3초 예약, 원터치 결제"
/appkit.spec 003-discount "타임딜 자동 적용, 중복 쿠폰 불가"
**Step 3 - 고객 스토리 (/appkit.customer)**
타겟 페르소나의 하루와 문제 해결 스토리:
/appkit.customer
**Step 4 - 세일즈 랜딩 (/appkit.sales)**
광고주를 설득하는 랜딩 페이지:
/appkit.sales
📍 현재 위치: Step 1/7 완료 (아이디어 스케치 + 초안 생성)
📍 다음 단계: Step 2 - /appkit.spec (기능 구체화)
💡 Tip: 각 spec 파일을 열어보세요. 이미 기본 구조가 채워져 있어서
`/appkit.spec`으로 추가 디테일만 넣으면 됩니다!
```
## Important Notes
### 🔴 Mandatory Requirements
1. **Interactive process required**:
- **Never create files immediately**
- Always present summary in Step 2
- Create files only after user confirmation
2. **Handle user feedback**:
- "Good", "Yes", "Proceed" → Proceed with file creation
- Modification request → Update and re-present
- Additional features → Update list and re-present
- If uncertain, ask additional questions
3. **Iterate before confirmation**:
- Repeat Steps 2-3 until user is satisfied
- Don't rush, have thorough dialogue
### 🟡 Analysis Guidelines
1. **Natural language analysis**:
- Carefully analyze user input
- Infer domain and business model
- Derive reasonable major features (5-8)
- Fill gaps with questions
2. **Numbering system**:
- Use 3-digit numbers (001, 002, 003, ...)
- Sort in logical order (auth → core features → supplementary features)
3. **Feature names**:
- Short and clear (user, venue, booking, promotion)
- Use lowercase English with hyphens
### 🟢 Technical Details
1. **Script execution**:
- Execute only after user confirmation
- If script doesn't exist, create directories manually
- Parse JSON output to confirm paths
2. **Incremental detailing**:
- This stage creates **structure only**
- Details added with `/appkit.spec` command
## Example Flow
```
User: /appkit.new Tennis court booking app
Claude: [Presents Step 2 summary]
User: Add lesson booking too
Claude: [Presents updated summary]
User: Good!
Claude: ✅ Confirmed! Creating files...
[Executes file creation]
```

View File

@@ -0,0 +1,370 @@
# appkit.sales
**고객을 설득하는 세일즈 랜딩 메시지를 구성하는 명령어**
---
## Overview
**This is Step 4 of the logical thinking 7-step workflow**:
```
논리적 사고 7단계:
1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?)
2. /appkit.spec → 기능 구체화 (뭐가 필요할까? 누가 쓸까?)
3. /appkit.customer → 고객 스토리 (고객의 하루, 고민, 해결)
4. /appkit.sales → 세일즈 랜딩 구성 (어떻게 설득할까?) ← YOU ARE HERE
5. /appkit.mvp → MVP 범위 정하기 (최소한으로 검증하려면?)
6. /appkit.merge → 기획 정돈 (흩어진 기획 통합)
7. /appkit.design → 개발 준비 (API, ERD, 기술 스펙)
```
## Purpose
타겟 고객의 문제와 욕구를 기반으로 설득력 있는 세일즈 메시지를 구성합니다.
기능 나열이 아닌, 고객 가치와 변화 스토리로 설득합니다.
**핵심 질문**: "어떻게 고객을 설득할까?"
---
## When to Use
- `/appkit.customer`로 타겟 고객을 정의한 후 (Step 3 완료 후)
- 랜딩 페이지나 마케팅 메시지가 필요할 때
- 투자자나 팀에게 가치 제안을 설명할 때
- MVP 출시 전 메시지 테스트가 필요할 때
---
## Usage
```bash
/appkit.sales
/appkit.sales "time-saving for busy professionals"
/appkit.sales "price-sensitive students"
/appkit.sales "landing: premium positioning"
```
---
## What I'll Do
### 1. 세일즈 프레임워크 선택
**상황별 최적 프레임워크**:
```markdown
## Framework Selection
### PAS (Problem-Agitate-Solution)
✅ Best for: 명확한 문제가 있는 경우
- Problem: 고객이 겪는 문제 공감
- Agitate: 문제를 더 심각하게 느끼게
- Solution: 우리 서비스가 해결책
### AIDA (Attention-Interest-Desire-Action)
✅ Best for: 새로운 카테고리 창출
- Attention: 놀라운 통계나 질문
- Interest: 흥미로운 가능성 제시
- Desire: 갖고 싶게 만들기
- Action: 지금 행동하게 만들기
### StoryBrand
✅ Best for: 복잡한 서비스 설명
- Character: 고객이 주인공
- Problem: 겪고 있는 문제
- Guide: 우리가 안내자
- Plan: 명확한 해결 단계
- Success: 성공 스토리
```
### 2. 랜딩 페이지 구조 (PAS 기준)
```markdown
## Landing Page Structure
### 1⃣ Hero Section (Hook - 3초 승부)
---
[Headline - 핵심 가치]
"테니스 코트 예약, 이제 3초면 충분합니다"
[Subheadline - 구체적 혜택]
"전화 대기 없이, 실시간 예약, 자동 할인까지"
[CTA Button]
"지금 시작하기 →"
[Hero Image]
스마트폰으로 예약하는 모습
### 2⃣ Problem Section (공감대 형성)
---
"이런 경험, 해보셨나요?"
❌ 전화 예약하려다 15분 대기
❌ 원하는 시간대는 항상 만석
❌ 가격 비교는 불가능
❌ 취소하려면 또 전화
"매주 테니스 치고 싶은데,
예약이 너무 번거로워 포기하신 적 있으시죠?"
### 3⃣ Agitation Section (문제 심화)
---
[통계로 문제 심화]
"직장인 73%가 운동 부족"
"운동 포기 이유 1위: 번거로운 예약(42%)"
[감정 자극]
"주말마다 '이번엔 꼭 운동해야지' 다짐하지만,
복잡한 예약 과정에 지쳐 결국 포기하고 있지 않나요?"
### 4⃣ Solution Section (해결책 제시)
---
"3초 예약 시스템"
[Step 1] 📍 위치 선택
가까운 코트 자동 추천
[Step 2] 📅 시간 선택
실시간 예약 가능 시간 확인
[Step 3] 💳 결제 완료
원터치 결제, 자동 할인 적용
"복잡한 과정은 우리가 해결했습니다"
### 5⃣ Benefits Section (구체적 혜택)
---
[시간 절약]
⏰ 평균 15분 → 3초
"매주 1시간 절약"
[비용 절감]
💰 자동 할인 적용
"평균 30% 저렴"
[편의성]
📱 언제 어디서나
"지하철에서도 예약 가능"
### 6⃣ Social Proof Section (신뢰 구축)
---
[숫자로 증명]
"5,000명이 매주 사용 중"
"월 10,000건 예약 처리"
"평균 평점 4.8/5.0"
[고객 후기]
"김OO (37세, 직장인)"
"퇴근길 지하철에서 예약 완료!
주말 운동이 규칙적으로 바뀌었어요"
"박OO (29세, 프리랜서)"
"평일 낮 할인으로 30% 절약!
시간도 자유롭고 가격도 저렴해요"
### 7⃣ CTA Section (행동 유도)
---
[긴급성 생성]
"🎁 지금 가입하면 첫 예약 30% 할인"
"⏰ 이번 주말 예약 마감 임박"
[3단계 CTA]
1. "무료로 시작하기" (부담 제거)
2. "1분 만에 가입" (간편함 강조)
3. "첫 예약 30% 할인" (즉각 혜택)
[보증]
"예약 수수료 없음"
"언제든 취소 가능"
```
### 3. 가치 제안 캔버스 (Value Proposition Canvas)
```markdown
## Value Proposition
### Customer Jobs (고객이 해결하려는 일)
- 주말 운동 계획
- 건강 관리
- 스트레스 해소
- 사회적 교류
### Pain Relievers (고통 해결)
- 전화 대기 → 즉시 예약
- 불확실성 → 실시간 확인
- 비싼 가격 → 자동 할인
- 복잡한 과정 → 3단계 간소화
### Gain Creators (이익 창출)
- 시간 절약 (주당 1시간)
- 비용 절감 (30% 할인)
- 규칙적 운동 습관
- 운동 仲間 찾기
```
### 4. 메시지 A/B 테스트 제안
```markdown
## A/B Testing Suggestions
### Headline Variations
A: "테니스 코트 예약, 이제 3초면 충분합니다"
B: "매주 테니스 치고 싶다면? 앱으로 3초 예약"
C: "전화 대기는 그만, 실시간 코트 예약"
### CTA Variations
A: "지금 시작하기"
B: "무료로 예약하기"
C: "30% 할인받기"
### Value Prop Variations
A: "시간 절약" 중심
B: "비용 절감" 중심
C: "편의성" 중심
```
### 5. 채널별 메시지 최적화
```markdown
## Channel-Specific Messages
### Instagram Ad (비주얼 중심)
[Image: 테니스 치는 행복한 모습]
"주말 테니스, 3초 예약 ✨"
#테니스 #주말운동 #코트예약
### Google Ads (검색 의도 명확)
"테니스 코트 예약 | 실시간 예약 | 30% 할인"
"전화 대기 없이 바로 예약. 지금 시작하기"
### Email (스토리텔링)
Subject: "김대리님, 이번 주말 테니스 어떠세요?"
"매번 예약 때문에 포기하셨다면..."
[Full story + CTA]
### 카톡 채널 (친근한 톤)
"테니스 예약 때문에 스트레스 받으셨죠? 😅
이제 카톡하듯 쉽게 예약하세요!"
```
---
## Output Files
### 생성될 파일들:
1. **`docs/appkit/sales-landing.md`**
- 전체 랜딩 페이지 구조
- 섹션별 메시지
- CTA 전략
2. **`docs/appkit/value-proposition.md`**
- 핵심 가치 제안
- Pain-Gain 매트릭스
- 차별화 포인트
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/appkit.customer`**: 페르소나별 Pain Points
- **From `/appkit.spec`**: 핵심 기능과 혜택
- **To `/appkit.mvp`**: 검증할 핵심 가치
- **To `/appkit.design`**: 사용자 온보딩 플로우
---
## Examples
### Example 1: B2C 서비스
```bash
$ /appkit.sales
📢 Sales Landing Generated
Framework: PAS (Problem-Agitate-Solution)
Hero: "3초 예약 혁명"
Problem: 복잡한 예약 과정
Agitate: 73% 운동 포기
Solution: 원터치 시스템
Proof: 5,000명 사용 중
CTA: "지금 30% 할인"
✅ Generated sales-landing.md
✅ Generated value-proposition.md
```
### Example 2: 특정 페르소나 타겟
```bash
$ /appkit.sales "price-sensitive students"
📢 Student-Focused Message
Hero: "학생 90% 할인"
Problem: 비싼 코트 가격
Solution: 그룹 예약 할인
Proof: "서울대 테니스 동아리 공식 앱"
CTA: "학생증 인증하고 90% 할인"
✅ Updated sales-landing.md
```
---
## Key Principles
### 세일즈 메시지 원칙:
1. **Features ❌ Benefits ✅**: "실시간 예약"이 아닌 "대기 시간 제로"
2. **You, not We**: "당신은" 중심, "우리는" 최소화
3. **Specific Numbers**: "많이"가 아닌 "73%"
4. **Emotional + Rational**: 감정 자극 + 논리적 근거
5. **Clear Next Step**: 모호한 CTA는 전환율 킬러
---
## Tips
### 고전환율 랜딩 페이지:
1. **Above the Fold**: 스크롤 없이 핵심 가치 전달
2. **One Message**: 한 페이지, 하나의 메시지
3. **Social Proof**: 숫자 > 로고 > 후기 순으로 배치
4. **Urgency**: "지금" 행동해야 할 이유
5. **Risk Reversal**: 무료 체험, 환불 보장
### 카피라이팅 공식:
- **Headline**: 혜택 + 숫자 + 시간
- **CTA**: 동사 + 혜택 + 긴급성
- **Testimonial**: 이름 + 나이 + 직업 + 구체적 결과
---
## Next Steps
### 이 명령어 실행 후:
**📍 다음 단계: Step 5 - `/appkit.mvp`** (MVP 범위 정의)
- 세일즈 메시지에서 약속한 핵심 가치만 구현
- 최소한의 기능으로 시장 검증
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-11-19
- **Philosophy**: "Sell the hole, not the drill"

View File

@@ -0,0 +1,430 @@
---
description: 기능 구체화 - 각 기능을 사용자 가치 관점에서 구체화
---
## User Input
```text
$ARGUMENTS
```
User input **must** be considered.
## Overview
**This is Step 2 of the logical thinking 7-step workflow**:
```
논리적 사고 7단계:
1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?)
2. /appkit.spec → 기능 구체화 (뭐가 필요할까? 누가 쓸까?) ← YOU ARE HERE
3. /appkit.customer → 고객 스토리 (고객의 하루, 고민, 해결)
4. /appkit.sales → 세일즈 랜딩 구성 (어떻게 설득할까?)
5. /appkit.mvp → MVP 범위 정하기 (최소한으로 검증하려면?)
6. /appkit.merge → 기획 정돈 (흩어진 기획 통합)
7. /appkit.design → 개발 준비 (API, ERD, 기술 스펙)
```
User inputs in format: `/appkit.spec <spec-id> "<natural language description>"`
Examples:
- `/appkit.spec 003-booking "search and book courts from main screen"`
- `/appkit.spec 003-booking "time deal 30% discount, within 2 days of booking date"`
- `/appkit.spec 004-promotion "no duplicate coupon use, max 40% discount"`
**Core Concepts**:
- **Incremental detailing**: Don't write everything at once
- **Preserve existing content**: Previous content + new content added
- **Natural language input**: User inputs comfortably in natural language
**Note**: As you detail multiple specs, concepts may overlap or conflict. This is expected! The `/appkit.merge` command (Step 3) will consolidate these later.
## Execution Flow
### 1. Input Parsing
**Format**: `/appkit.spec <spec-id> "<natural language description>"`
**Parsing**:
```
Example: /appkit.spec 003-booking "searchable from main screen"
Extract:
- spec-id: 003-booking
- natural language description: "searchable from main screen"
```
**Validation**:
- Error if spec-id is empty
- Error if natural language description is empty
### 2. Script Execution
**Script**: `.app/scripts/get-spec-path.sh --json --spec-id "003-booking"`
**Example Output**:
```json
{
"SPEC_FILE": "docs/appkit/specs/003-booking/spec.md",
"SPEC_DIR": "docs/appkit/specs/003-booking"
}
```
**Error Handling**:
- If spec directory doesn't exist: "Spec 003-booking does not exist. Run /appkit.new first."
### 3. Load Existing Spec
**Read File**: `docs/appkit/specs/003-booking/spec.md`
**Check Status**:
1. **Empty template**:
- Not yet detailed with `/appkit.spec`
- All sections have `[This section will be filled...]`
2. **Partially written**:
- Some sections filled
- Some sections still empty
3. **Fully written**:
- Most sections filled
- Can add/modify
### 4. Natural Language Analysis with User Value Focus
**Input Analysis**: "search and book available courts from main screen at once"
**고객 가치 분석**:
```
핵심 질문:
- 누가? → 퇴근길 직장인, 시간이 없는 사람
- 언제? → 이동 중, 짬날 때
- 왜? → 빠르게 주말 운동 계획 세우려고
- 어떻게? → 한 화면에서 모든 것 해결
- 가치? → 시간 절약 (15분 → 3초)
Map to sections:
- User Value: 3초 만에 예약 완료
- User Journey:
- 앱 열기 → 날짜/시간 선택 → 예약 → 완료
- 총 소요 시간: 3초
- Pain Points Solved:
- 전화 대기 없음
- 여러 코트 동시 확인
- 즉시 확정
Business Rules (고객 관점):
- 실시간 업데이트 (놓치지 않게)
- 가격 투명 공개 (비교 가능)
- 즉시 확정 알림 (안심)
```
**Input Analysis 2**: "time deal within 2 days of booking date, 30% discount"
**고객 가치 분석**:
```
핵심 질문:
- 누가? → 시간 유연한 프리랜서, 학생
- 언제? → 갑자기 시간 생겼을 때
- 왜? → 저렴하게 운동하고 싶어서
- 어떻게? → 자동으로 할인 적용
- 가치? → 30% 비용 절감
Map to sections:
- User Value: 정가의 70%로 운동
- User Scenario:
- "내일 시간 비었네?" → 앱 확인 → "30% 할인!" → 즉시 예약
- Emotional Journey:
- 발견 (😮) → 기쁨 (😊) → 만족 (😍)
Business Rules (고객 이익):
- 자동 적용 (따로 쿠폰 입력 안 해도 됨)
- 명확한 조건 표시 (언제 할인되는지 투명)
- 다른 할인과 비교 (가장 이득인 것 자동 선택)
```
### 5. Spec Update (Incremental)
**Principles**:
1. **Preserve existing content**: Never delete
2. **Add new content**: Add natural language analysis results to relevant sections
3. **Prevent duplicates**: Don't add already existing content
4. **Maintain consistency**: Keep existing format and tone
**Update Example**:
**Before** (empty template):
```markdown
## User Journey & Screen Flow
[This section will be filled by /appkit.spec command]
## Business Rules
[This section will be filled by /appkit.spec command]
```
**After** (first `/appkit.spec` execution):
```markdown
## User Journey & Screen Flow
### 1. Main Screen
- **UI Elements**: Search bar (date, time), recommended court list
- **CTA**: "Search" button
- **Next**: Search results screen
### 2. Search Results Screen
- **UI Elements**: Filters (price, distance, rating), court cards (image, name, price, distance)
- **CTA**: Click court card
- **Next**: Court detail screen
### 3. Court Detail Screen
- **UI Elements**: Court info, reviews, available time slots
- **CTA**: "Book" button
- **Next**: Payment screen
## Business Rules
### Search Criteria
- Date: After today
- Time slot: Selectable
- Results: Show only available courts
```
**After** (second `/appkit.spec` execution - "sort by price and distance"):
```markdown
## User Journey & Screen Flow
### 1. Main Screen
- **UI Elements**: Search bar (date, time), recommended court list
- **CTA**: "Search" button
- **Next**: Search results screen
### 2. Search Results Screen
- **UI Elements**: Filters (price, distance, rating), sort options (price/distance), court cards # Updated
- **CTA**: Click court card
- **Next**: Court detail screen
### 3. Court Detail Screen
- **UI Elements**: Court info, reviews, available time slots
- **CTA**: "Book" button
- **Next**: Payment screen
## Business Rules
### Search Criteria
- Date: After today
- Time slot: Selectable
- Results: Show only available courts
### Sort Options # Added
- By price: Lowest first
- By distance: Closest first
- Default: By price
```
**After** (third `/appkit.spec` execution - "time deal 30% discount"):
```markdown
## Pricing & Promotion Logic
### Time Deal # New section added
- Condition: Within 2 days of booking date
- Discount rate: 30%
- Application: Automatic
```
### 6. Auto-Completeness Check (고객 가치 중심)
After updating spec, automatically check customer value completeness:
**Check Sections**:
- ✅ User Value (고객이 얻는 가치)
- ✅ Target User (누가 쓸까?)
- ✅ User Scenario (언제/어떻게 쓸까?)
- ⏳ Pain Points Solved (해결되는 문제)
- ❌ Success Metrics (어떻게 성공 측정?)
- ⚠️ Edge Cases (예외 상황)
**Report to User**:
```markdown
✅ Spec 002-booking 고객 가치 업데이트!
💡 핵심 가치 분석:
- 누가: 30대 직장인 (퇴근길)
- 언제: 이동 중 짬날 때
- 왜: 주말 운동 예약
- 가치: 15분 → 3초 시간 절약
📝 업데이트된 내용:
- User Value: 3초 예약으로 시간 절약
- User Scenario: 퇴근길 지하철 예약 시나리오
- Pain Points: 전화 대기, 불확실성 해결
📋 완성도 체크:
- ✅ User Value (명확)
- ✅ Target User (구체적)
- ✅ User Scenario (생생함)
- ⏳ Pain Points (더 추가 가능)
💡 제안: "주말 만석으로 운동 못함" 추가
- ❌ Success Metrics (미작성)
💡 제안: "평균 예약 시간 3초 이하"
- ⚠️ Edge Cases (미흡)
💡 제안: "동시 예약 충돌 처리"
💡 다음 단계:
더 많은 사용자 시나리오 추가:
/appkit.spec 002-booking "프리랜서가 평일 낮 할인받기"
/appkit.spec 002-booking "대학생 그룹 예약으로 절약"
📄 전체 spec 보기: docs/appkit/specs/002-booking/spec.md
📍 다음 단계: Step 4-5 - /appkit.customer (타겟 고객 정의 & 스토리텔링)
```
### 7. Completeness Check Criteria
**Section Status**:
-**Well-written**: Section has concrete content, no ambiguity
-**Partially written**: Section exists but lacks details
- ⚠️ **Vague**: Section has content but vague or missing key parts
-**Not written yet**: Section is empty or only has placeholder
**Required Sections** (at minimum):
1. User Journey & Screen Flow (with screen details)
2. Business Rules
3. Dependencies
**Recommended Sections** (depending on spec type):
- Pricing & Promotion Logic (if pricing/discounts involved)
- Payment Flow (if payments involved)
- Cancellation & Refund (if cancellations possible)
- Edge Cases (always recommended)
## Section Mapping Guide (고객 가치 중심)
Natural language input → Customer value section mapping:
### User Value Related
**Keywords**: "절약", "빠른", "편리한", "쉬운", "자동", "한번에"
**Examples**:
- "3초 만에 예약" → User Value: 시간 절약
- "자동 할인 적용" → User Value: 비용 절감
- "원터치 결제" → User Value: 편의성
### Target User Related
**Keywords**: "직장인", "학생", "프리랜서", "주부", "시니어"
**Examples**:
- "바쁜 직장인을 위한" → Target User: 30-40대 직장인
- "학생 할인" → Target User: 대학생
### User Scenario Related
**Keywords**: "퇴근길", "점심시간", "주말", "갑자기", "급하게"
**Examples**:
- "퇴근길 지하철에서" → User Scenario: 이동 중 예약
- "주말 아침 급하게" → User Scenario: 당일 예약
### Payment Flow Related
**Keywords**: "payment", "fee", "payment method", "card", "cash", "bank transfer"
**Examples**:
- "online payment 5% fee" → Payment Flow
- "cash payment no fee" → Payment Flow
### Cancellation & Refund Related
**Keywords**: "cancel", "refund", "change", "modify"
**Examples**:
- "100% refund 24h before" → Cancellation & Refund
- "1 booking change allowed" → Cancellation & Refund
### Edge Cases Related
**Keywords**: "fail", "error", "concurrent", "duplicate", "timeout", "when empty", "exceed"
**Examples**:
- "first-come-first-served for concurrent bookings" → Edge Cases
- "rollback booking on payment failure" → Edge Cases
### Dependencies Related
**Keywords**: "need", "depend", "integrate", "reference"
**Inference**: When using data or functionality from other specs
## Important Notes
### 🔴 Mandatory Requirements
1. **Incremental update**:
- Never delete existing content
- Only add new content
- Prevent duplicates
2. **Natural language analysis**:
- Carefully analyze user input
- Map to appropriate sections
- If inference is ambiguous, add to most relevant section
3. **Maintain consistency**:
- Keep existing format and tone
- Consistent markdown style
- Unified terminology
4. **Auto-completeness check**:
- Check completeness after every update
- Provide next step suggestions
- Point out vague or missing parts
### 🟡 Analysis Guidelines
1. **Multiple section updates**:
- Single natural language input can affect multiple sections
- Update all relevant sections
2. **Inference and expansion**:
- Don't just add explicit content
- Include reasonable inferences
- Example: "search" → search criteria, result display, empty result handling
3. **Cross-reference**:
- Specify in Dependencies if related to other specs
- Mention policy references if related to policies
### 🟢 Screen Flow Details
When updating User Journey & Screen Flow, include:
**For each screen**:
1. **Screen name**: Clear, descriptive name
2. **UI Elements**: Key visual elements users see
3. **CTA (Call-to-Action)**: Main buttons or actions
4. **Next**: Which screen comes next
**Example**:
```markdown
### 2. Search Results Screen
- **UI Elements**:
- Filter bar (price range, distance, rating)
- Sort dropdown (price/distance/rating)
- Court cards with: thumbnail, name, price, distance, rating
- "No results" message (when empty)
- **CTA**:
- Click court card → Court detail
- Adjust filters → Refresh results
- **Next**: Court detail screen or refined results
```
## Example Flow
```
# First execution
User: /appkit.spec 003-booking "search courts from main screen"
Claude: ✅ User Journey & Screen Flow, Business Rules updated
📋 Payment Flow, Cancellation missing
💡 Next: Add payment policy
# Second execution
User: /appkit.spec 003-booking "sort by price and distance"
Claude: ✅ User Journey, Business Rules updated (preserved + added)
📋 Payment Flow, Cancellation still missing
# Third execution
User: /appkit.spec 003-booking "time deal 30% discount"
Claude: ✅ Pricing & Promotion Logic added (new section)
📋 Payment Flow, Cancellation still missing
# Fourth execution
User: /appkit.spec 003-booking "online payment 5% fee"
Claude: ✅ Payment Flow added (new section)
📋 Only Cancellation missing now
💡 Almost complete! Just add cancellation policy
```

224
.claude/commands/docs.md Normal file
View File

@@ -0,0 +1,224 @@
---
description: Create documentation for existing implemented features from a natural language description.
---
## User Input
```text
$ARGUMENTS
```
You **MUST** consider the user input before proceeding (if not empty).
## Outline
The text the user typed after `/speckit.document` in the triggering message **is** the feature description (summarized by the user). Assume you always have it available in this conversation even if `$ARGUMENTS` appears literally below. Do not ask the user to repeat it unless they provided an empty command.
Given that feature description, do this:
1. **Generate a concise document name** (2-4 words):
- Analyze the feature description and extract the most meaningful keywords
- Create a 2-4 word name that captures the essence of the feature
- Use noun format when possible (e.g., "cart-feature", "payment-system", "user-authentication")
- Preserve technical terms and acronyms (OAuth2, API, JWT, etc.)
- Keep it concise but descriptive enough to understand the feature at a glance
- Examples:
- "장바구니 기능입니다" → "cart-feature"
- "결제 시스템 구현" → "payment-system"
- "사용자 인증 OAuth2" → "oauth2-authentication"
- "리뷰 포인트 시스템" → "review-points-system"
2. **Determine output location** (NO script execution, NO branch creation):
- Create docs directory if needed: `docs/` or `.specify/docs/`
- Generate filename: `[document-name].md` (e.g., `cart-feature.md`)
- Full path example: `docs/cart-feature.md`
3. Load `.specify/templates/docs-template.md` to understand required sections.
4. Follow this execution flow:
1. Parse user description from Input
If empty: ERROR "No feature description provided"
2. Extract key information from description:
- Feature overview and purpose
- Business policies mentioned
- Main logic flows
- Implemented features
- API endpoints (if mentioned)
- Known issues or improvements
- Related files (if mentioned)
3. For unclear aspects:
- Make informed guesses based on context and industry standards
- Only mark with [NEEDS CLARIFICATION: specific question] if:
- The choice significantly impacts documentation completeness
- Multiple reasonable interpretations exist with different implications
- No reasonable default exists
- **LIMIT: Maximum 3 [NEEDS CLARIFICATION] markers total**
- Prioritize clarifications by impact: business policy > logic flow > feature details
4. Fill all mandatory sections:
- Overview
- Business Policy (policies with reasons)
- Main Logic
- Feature List (completed and incomplete)
- API List (if applicable)
- Issues/Improvements
- Related Files
5. Return: SUCCESS (documentation ready)
5. Write the documentation to the determined file path using the template structure, replacing placeholders with concrete details derived from the feature description while preserving section order and headings.
6. **Documentation Quality Validation**: After writing the initial docs, validate it against quality criteria:
a. **Create Documentation Quality Checklist**: Generate a checklist file at `docs/checklists/[document-name]-quality.md` (or `.specify/docs/checklists/[document-name]-quality.md`) with these validation items:
```markdown
# Documentation Quality Checklist: [FEATURE NAME]
**Purpose**: Validate documentation completeness and quality
**Created**: [DATE]
**Feature**: [Link to docs.md]
## Content Completeness
- [ ] Overview clearly explains the feature purpose
- [ ] All business policies documented with reasons
- [ ] Main logic flows are described
- [ ] Feature list includes both completed and incomplete items
- [ ] API list is complete (if feature has APIs)
- [ ] Issues/improvements are identified
- [ ] Related files are listed
## Policy Documentation
- [ ] No [NEEDS CLARIFICATION] markers remain
- [ ] Each policy includes the reason/background
- [ ] Policies are clear and unambiguous
- [ ] Missing policies are identified in Issues/Improvements
## Documentation Quality
- [ ] Written in clear, understandable language
- [ ] Technical terms are used appropriately
- [ ] Examples are provided where helpful
- [ ] Document is well-structured and easy to navigate
## Notes
- Items marked incomplete require docs updates or clarification
```
b. **Run Validation Check**: Review the docs against each checklist item:
- For each item, determine if it passes or fails
- Document specific issues found (quote relevant sections)
c. **Handle Validation Results**:
- **If all items pass**: Mark checklist complete and proceed to step 7
- **If items fail (excluding [NEEDS CLARIFICATION])**:
1. List the failing items and specific issues
2. Update the docs to address each issue
3. Re-run validation until all items pass (max 3 iterations)
4. If still failing after 3 iterations, document remaining issues in checklist notes and warn user
- **If [NEEDS CLARIFICATION] markers remain**:
1. Extract all [NEEDS CLARIFICATION: ...] markers from the docs
2. **LIMIT CHECK**: If more than 3 markers exist, keep only the 3 most critical (by policy/logic/feature impact) and make informed guesses for the rest
3. **CRITICAL - Korean Communication**: Present all questions in Korean to the user
4. For each clarification needed (max 3), present options to user in this format:
```markdown
## 질문 [N]: [주제]
**문맥**: [문서의 관련 섹션 인용]
**알아야 할 내용**: [NEEDS CLARIFICATION 마커의 구체적 질문]
**제안 답변**:
| 옵션 | 답변 | 문서화 영향 |
|------|------|-------------|
| A | [첫 번째 제안 답변] | [문서화에 미치는 영향] |
| B | [두 번째 제안 답변] | [문서화에 미치는 영향] |
| C | [세 번째 제안 답변] | [문서화에 미치는 영향] |
| 직접입력 | 직접 답변 제공 | [사용자가 직접 입력하는 방법 설명] |
**선택**: _[사용자 응답 대기]_
```
5. **CRITICAL - Table Formatting**: Ensure markdown tables are properly formatted:
- Use consistent spacing with pipes aligned
- Each cell should have spaces around content: `| Content |` not `|Content|`
- Header separator must have at least 3 dashes: `|--------|`
- Test that the table renders correctly in markdown preview
6. Number questions sequentially in Korean (질문1, 질문2, 질문3 - max 3 total)
7. Present all questions together before waiting for responses
8. Wait for user to respond with their choices for all questions (e.g., "질문1: A, 질문2: 직접입력 - [상세내용], 질문3: B")
9. Update the docs by replacing each [NEEDS CLARIFICATION] marker with the user's selected or provided answer
10. Re-run validation after all clarifications are resolved
d. **Update Checklist**: After each validation iteration, update the checklist file with current pass/fail status
7. Report completion with document file path, checklist results, and any identified issues/improvements.
**NOTE:** This command does NOT create branches or run scripts - it only creates documentation files.
## General Guidelines
## Quick Guidelines
- Focus on documenting **WHAT is implemented**, **WHY (business reasons)**, and **HOW (main logic)**.
- Include both completed and incomplete features.
- Identify issues and improvements discovered during documentation.
- Written for both technical and non-technical stakeholders.
### Section Requirements
- **Mandatory sections**: Must be completed for every feature
- **Optional sections**: Include only when relevant to the feature (e.g., API List)
- When a section doesn't apply, remove it entirely (don't leave as "N/A")
### For AI Generation
When creating this documentation from a user prompt:
1. **Make informed guesses**: Use context, industry standards, and common patterns to fill gaps
2. **Document what's known**: Focus on information explicitly provided by the user
3. **Limit clarifications**: Maximum 3 [NEEDS CLARIFICATION] markers - use only for critical information that:
- Significantly impacts documentation completeness
- Has multiple reasonable interpretations with different implications
- Lacks any reasonable default
4. **Prioritize clarifications**: business policy > logic flow > feature details
5. **Think practically**: Document what exists, flag what's missing in Issues/Improvements
6. **Common areas needing clarification** (only if no reasonable default exists):
- Business policy reasons (why this implementation was chosen)
- Missing or unclear logic flows
- Incomplete feature status (implemented vs planned)
**Examples of reasonable defaults** (don't ask about these):
- Standard CRUD operations: If basic endpoints are mentioned, assume standard patterns
- Common business policies: Industry-standard practices unless specified otherwise
- File organization: Standard Rails/project conventions unless specified
- Error handling: Standard error responses unless specified
### Documentation Structure Guidelines
Documentation should be:
1. **Clear**: Use simple language, avoid jargon unless necessary
2. **Complete**: All mandatory sections filled appropriately
3. **Accurate**: Based on user's description, not assumptions
4. **Actionable**: Issues/improvements are specific and practical
**Good examples**:
- "재고 차감 시점: 장바구니 추가 시 (이유: 한정 수량 선점 방지)"
- "만료 정책: 30일 후 자동 만료 (이유: 데이터 누적 방지)"
- "[ ] [P1] 재고 복구 배치 작업 미구현 (현재 재고가 복구되지 않음)"
**Bad examples**:
- "정책 있음" (not specific)
- "잘 작동함" (no business reason)
- "개선 필요" (not actionable)

View File

@@ -0,0 +1,516 @@
# market.channel
**채널별 알고리즘 최적화 및 성과 극대화 전략 명령어**
---
## Overview
**This is the third step of the 4C Marketing Framework**:
```
저비용 마케팅 4C:
1. /market.customer → 고객 세분화 & 채널 추천 (누구에게, 어디서?)
2. /market.contents → 콘텐츠 전략 & 재활용 (무엇을 만들까?)
3. /market.channel → 채널별 최적화 전략 (어떻게 최적화할까?) ← YOU ARE HERE
4. /market.communicate → 바이럴 & 커뮤니티 전략 (어떻게 퍼뜨릴까?)
```
## Purpose
각 플랫폼의 **알고리즘과 사용자 행동**을 이해하고,
동일한 콘텐츠를 채널별로 최적화하여 **도달과 전환을 극대화**합니다.
**핵심 질문**: "같은 메시지도 플랫폼마다 어떻게 다르게 포장해야 할까?"
---
## When to Use
- `/market.contents`로 콘텐츠를 기획한 후
- 채널별 성과가 기대에 못 미칠 때
- 알고리즘 변화에 대응해야 할 때
- 채널 추가를 고려할 때
---
## Usage
```bash
/market.channel
/market.channel "focus: 유튜브 + 인스타"
/market.channel "네이버 SEO 집중"
```
---
## What I'll Do
### 1. 채널별 알고리즘 이해
```markdown
## Platform Algorithm Breakdown
### 유튜브 (YouTube)
**알고리즘 핵심**: CTR (클릭률) × Retention (시청 지속률) × Session Time
#### 최적화 요소
**1. 썸네일 + 제목 (CTR 결정)**
- CTR 8%+ 목표 (평균 4-5%)
- 썸네일: 사람 얼굴 클로즈업 + 텍스트 3단어 이내
- 제목: 40자 이내, 숫자 + 결과 + 타겟
- 예: "테니스 코트 예약 30분→3초로 줄인 법"
**2. 첫 30초 (Retention 결정)**
⚠️ 알고리즘 생존 구간
- 0-5초: 충격/질문으로 시작 (인사 X)
- 5-15초: 즉시 가치 제시 (구독 요청 X)
- 15-25초: 콘텐츠 로드맵 제시
- 25-30초: 감정 훅 (궁금증/공감)
**3. 평균 시청 지속률 (AVD)**
- 목표: 50%+ (10분 영상 → 5분 시청)
- 3분/5분/7분 마다 retention hook 삽입
- 예: "⚠️ 다음 내용 놓치면 손해"
**4. 세션 시간**
- 재생목록 활용
- 끝 화면 (End Screen)에 다음 영상 유도
- "이것도 보세요" 카드 삽입
**5. 업로드 최적 시간**
- 타겟 시청 시간대 2-3시간 전
- 직장인 타겟: 목/금요일 18:00 업로드 (퇴근 후 시청)
- 주부 타겟: 월/수요일 14:00 업로드 (오후 시간)
**6. 해시태그 & 챕터**
- 해시태그 3개 (너무 많으면 역효과)
- 챕터 5-7개 (타임라인 분할)
**성과 지표**:
- CTR: 8%+ (바이럴 가능)
- AVD: 50%+
- 구독 전환율: 2%+
### 인스타그램 (Instagram)
**알고리즘 핵심**: Engagement (좋아요/댓글/저장) × Relationship × Timeliness
#### 릴스 최적화
**1. 첫 3초 법칙**
- 스크롤 방지: 즉시 시각적 충격
- 텍스트 오버레이: 큰 글씨 (모바일 가독성)
- 음악: 트렌딩 사운드 사용 (검색 용이)
**2. 길이**
- 최적: 7-15초 (완주율 높음)
- 최대: 30초 (긴 건 유튜브로)
**3. 해시태그 전략**
- 총 15-20개
- 대형 (100만+): 2개 - #테니스 #운동
- 중형 (10-50만): 5개 - #테니스레슨 #테니스동호회
- 소형 (1-5만): 8개 - #테린이 #주말테니스
- 니치 (<1만): 5개 - #서울테니스코트 #코트예약
**4. 스토리 활용**
- 하루 5-10개 업로드 (알고리즘 부스트)
- 스티커 사용 (투표/질문/퀴즈)
- 하이라이트로 FAQ/가이드 정리
**5. 캐러셀 저장률**
- 마지막 슬라이드에 "저장해서 나중에 보세요"
- 체크리스트/가이드 형식 (저장 유도)
**6. 업로드 최적 시간**
- 출퇴근 시간: 07:00-09:00, 18:00-20:00
- 점심시간: 12:00-13:00
- 주말: 10:00-12:00 (브런치 타임)
**성과 지표**:
- 도달률: 팔로워의 30%+
- 저장률: 5%+
- 프로필 클릭률: 2%+
### 네이버 블로그 (Naver Blog)
**알고리즘 핵심**: SEO (키워드) × 체류 시간 × 이웃 수 × 방문자 수
#### SEO 최적화
**1. 키워드 전략**
- 메인 키워드: 제목에 1회, 본문에 3-5회
- 롱테일 키워드: "테니스 코트 예약 방법"
- LSI 키워드: 관련 검색어 (서울, 할인, 시간)
**2. 제목 공식**
- 패턴: [키워드] + [숫자/형용사] + [혜택]
- 예: "테니스 코트 예약 방법 총정리 (2025년 최신)"
- 길이: 25-30자 (모바일 노출 최적)
**3. 본문 구조**
- 서론: 공감 + 문제 제기 (300자)
- 본론: 단계별 솔루션 + 스크린샷 (1,500자)
- 결론: 요약 + CTA (200자)
- 총 2,000-3,000자 (체류 시간 3분+ 유도)
**4. 이미지 최적화**
- 개수: 7-10장
- 파일명: "테니스-코트-예약-방법.jpg" (SEO)
- Alt 텍스트: 키워드 포함
- 세로 이미지 선호 (모바일 최적)
**5. 내부 링크**
- 내 다른 포스트 2-3개 링크
- 체류 시간 증가 → 검색 순위 상승
**6. C-Rank 전략**
- 경쟁 낮은 키워드로 시작
- 상위 노출 후 상위 키워드 도전
- 예: "XX지역 테니스 코트" → "테니스 코트 예약"
**성과 지표**:
- 검색 유입: 50%+
- 체류 시간: 3분+
- 이웃 추가: 주 5명+
### 네이버 카페 (Naver Cafe)
**알고리즘 핵심**: 커뮤니티 규칙 준수 × 게시글 품질 × 회원 참여
#### 커뮤니티 마케팅
**1. 가입 전략**
- 타겟 카페 10-20개 가입
- 활동 1주일 후 게시 (신뢰 구축)
- 프로필: 전문성 어필 (광고 아님)
**2. 게시글 전략**
- 광고 금지 → 진짜 경험담
- 제목: 질문형 OR 공감형
- 예: "[후기] 동호회 예약 관리 이렇게 해결"
- 본문: 문제 → 시도 → 해결 → 결과
**3. 댓글 참여**
- 질문 글에 먼저 답변 (Give First)
- 자연스럽게 제품 언급
- 링크는 DM으로 (댓글 X)
**4. 신뢰 구축**
- 2-3주 꾸준히 활동
- 유용한 정보 공유
- 매니저와 관계 형성
**성과 지표**:
- 게시글 조회수: 500+
- DM 문의: 5+
- 실제 전환: 3+
### 블라인드 (Blind)
**알고리즘 핵심**: 공감 수 × 댓글 수 × 신고 회피
#### 직장인 커뮤니티 전략
**1. 게시 전략**
- 게시판: "직장 생활", "이직/커리어"
- 톤: 동료에게 말하듯 자연스럽게
- 금지: 직접적 광고, 링크 도배
**2. 제목**
- 공감형: "OO 맡았다가 퇴근 늦어본 적 있나요?"
- 질문형: "OO 업무 효율화 어떻게 하시나요?"
**3. 본문**
- 진짜 고민 공유
- 해결 방법 언급 (제품은 자연스럽게)
- 마지막에 질문으로 마무리
**4. 댓글 관리**
- 질문에 성실히 답변
- 광고 논란 시 "광고 아니고 진짜 써본 후기"
**성과 지표**:
- 공감 수: 10+
- 댓글 참여: 5+
- DM 문의: 3+
### 유튜브 쇼츠 (YouTube Shorts)
**알고리즘 핵심**: 완주율 × 리플레이 × 공유
#### 쇼츠 최적화
**1. 길이**
- 최적: 15-30초 (완주율 최대)
- 최대: 60초
**2. Hook (첫 3초)**
- 텍스트: "이거 모르면 손해"
- 비주얼: 극적 Before/After
- 음악: 긴장감/리듬감
**3. 자막 필수**
- 85% 무음 시청
- 큰 글씨 (모바일 가독성)
- 색상 대비 (흰 글씨 + 검은 테두리)
**4. CTA 위치**
- 마지막 3초: "자세한 내용은 고정 댓글"
- 댓글에 링크 (바이오 아님)
**성과 지표**:
- 완주율: 70%+
- 조회수: 1,000+ (48시간 내)
- 구독 전환: 1%+
```
### 2. Channel-Specific Content Adaptation
```markdown
## Same Message, Different Packaging
### Core Message (공통)
"테니스 코트 예약 30분 → 3초로 단축"
### 유튜브 버전 (10분)
**제목**: "테니스 코트 예약 30분 걸리는 사람 vs 3초 끝내는 사람 차이"
**썸네일**:
- Before: 😤 (전화 통화 중 짜증난 표정)
- After: 😄 (폰 들고 웃는 표정)
- 텍스트: "30분 vs 3초"
**스크립트 구조**:
0:00 - Hook: "매주 토요일 아침 7시에 일어나서 5개 코트에 전화하던 제가..."
0:30 - Problem: 기존 예약의 3가지 문제
2:00 - Discovery: 이 앱을 알게 된 계기
4:00 - Demo: 실제 사용 화면
7:00 - Result: 4주 사용 후기
9:00 - CTA: 첫 예약 할인
### 인스타 릴스 버전 (15초)
**Hook**: "주말마다 이러시죠?"
**화면**:
[0-3초] Before: 전화기 들고 대기 중 (⏰ 30분 텍스트)
[4-6초] Transition: 화면 전환 이펙트
[7-12초] After: 앱으로 탭탭탭 (⚡ 3초 텍스트)
[13-15초] CTA: "링크는 바이오에"
**음악**: 트렌딩 사운드 (빠른 템포)
**해시태그**: #테니스 #테린이 #코트예약 #꿀팁 #운동
### 네이버 블로그 버전 (2,500자)
**제목**: "테니스 코트 예약 방법 총정리 (2025년 최신) - 할인 받는 법까지"
**목차**:
1. 테니스 코트 예약 3가지 방법 비교
2. 전화 예약 vs 앱 예약 장단점
3. 추천 예약 앱 Top 3 (객관적 비교)
4. [OO 앱] 사용 가이드 (스크린샷)
5. 할인받는 꿀팁 3가지
6. 자주 묻는 질문 (FAQ)
**SEO 키워드** (본문 5회 삽입):
- 테니스 코트 예약
- 테니스 코트 할인
- 서울 테니스 코트
### 네이버 카페 버전 (800자)
**제목**: "[후기] 동호회 예약 관리 이렇게 해결했어요"
**본문**:
```
안녕하세요, 25명 동호회 운영 중인 회원입니다.
[문제]
매주 토요일 코트 예약이 제일 큰 스트레스였어요.
- 5개 코트 전화 (30분)
- 회원들 일정 조율 (카톡 100통)
- 예약 실패하면 욕먹음
[해결]
OO 앱 써봤는데 진짜 편하더라고요.
(광고 아니고 4주 써본 진짜 후기)
[효과]
- 예약 시간: 30분 → 3분
- 회원 만족도 UP
- 자동 할인 30% (회비 절감)
혹시 비슷한 고민 있으신 분들 참고하세요!
```
**톤**: 동료에게 말하듯, 광고 아님 강조
### 블라인드 버전 (500자)
**제목**: "동아리 간사 맡았다가 예약 업무로 스트레스 받는 사람?"
**본문**:
```
직장 테니스 동아리 간사 맡았는데
분기별 코트 예약이 업무보다 힘듭니다 ㅠㅠ
전화 10통 + 엑셀 정리 + 입금 확인...
퇴근 후 2시간 날리는 중
혹시 효율적으로 하는 법 아시는 분?
[추가]
댓글로 OO 앱 추천 받아서 써봤는데
진짜 10분 만에 끝나네요... 진작 쓸걸
링크 궁금하신 분 DM 주세요
(회사 정보 공개 안 돼서 여기 못 남김)
```
**전략**: 고민 공유 → 댓글로 자연스럽게 해결
### 유튜브 쇼츠 버전 (30초)
**자막 (큰 글씨)**:
[0-5초] "매주 이러시는 분?"
[6-10초] 전화 예약 장면 (30분 ⏰)
[11-15초] "이제 이렇게 하세요"
[16-25초] 앱 예약 장면 (3초 ⚡)
[26-30초] "자세한 건 고정 댓글"
**고정 댓글**: "앱 이름: OO / 첫 예약 30% 할인 코드: SHORTS2025"
```
### 3. Channel Performance Dashboard
```markdown
## Weekly Performance Tracking
### 주간 체크리스트
#### 유튜브
- [ ] CTR: 8% 이상 유지
- [ ] AVD: 50% 이상 유지
- [ ] 구독 전환율: 2% 이상
- [ ] 댓글 10개 이상 달림
- [ ] 업로드 시간 최적화 확인
**Pivot Signal**:
- CTR < 5%: 썸네일/제목 A/B 테스트
- AVD < 40%: 첫 30초 개선
- 구독 < 1%: CTA 위치 변경
#### 인스타그램
- [ ] 도달률: 팔로워 30% 이상
- [ ] 저장률: 5% 이상
- [ ] 프로필 클릭: 2% 이상
- [ ] 스토리 10개 이상 업로드
- [ ] 해시태그 15개 최적화
**Pivot Signal**:
- 도달률 < 20%: 해시태그 변경
- 저장률 < 2%: 콘텐츠 형식 변경 (캐러셀로)
- 클릭 < 1%: 바이오 CTA 개선
#### 네이버 블로그
- [ ] 검색 유입: 50% 이상
- [ ] 체류 시간: 3분 이상
- [ ] 이웃 추가: 주 5명
- [ ] 댓글: 3개 이상
- [ ] C-Rank 상승 확인
**Pivot Signal**:
- 검색 < 30%: 키워드 재선정
- 체류 < 2분: 본문 구조 개선
- 이웃 < 2명: 내부 링크 강화
#### 커뮤니티 (카페/블라인드)
- [ ] 게시글 조회수: 500+
- [ ] DM 문의: 5+
- [ ] 댓글 참여: 10+
- [ ] 신고 없음
- [ ] 신뢰 구축 (답변 활동)
**Pivot Signal**:
- 조회 < 200: 제목 개선
- 문의 < 2: 본문 CTA 개선
- 신고 발생: 톤 조정 (덜 광고스럽게)
```
---
## Output Files
### 생성될 파일들:
1. **`docs/market/channel-playbook.md`**
- 채널별 알고리즘 분석
- 최적화 체크리스트
- 성과 지표 및 Pivot 기준
2. **`docs/market/content-adaptation-guide.md`**
- 동일 메시지의 채널별 변주
- 포맷별 예시
- 톤앤매너 가이드
3. **`docs/market/performance-dashboard.md`**
- 주간 성과 트래킹 템플릿
- KPI 및 목표 설정
- 개선 액션 플랜
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/market.contents`**: 콘텐츠 → 채널별 최적화
- **To `/market.communicate`**: 성과 좋은 채널 → 바이럴 전략
- **Feedback to `/market.customer`**: 채널 성과 → 타겟 재조정
---
## Key Principles
### Channel Optimization:
1. **Platform Native**: 각 채널의 언어로 말하기
2. **Algorithm First**: 사용자 전에 알고리즘 통과
3. **Test & Iterate**: 2주마다 A/B 테스트
4. **Data-Driven**: 감 말고 지표로 결정
5. **Consistent Voice**: 채널은 다르되 브랜드는 일관
### Channel Anti-Patterns:
**Copy-Paste**: 유튜브 영상을 인스타에 그대로
**Algorithm Ignorance**: 알고리즘 무시하고 원하는 대로
**Vanity Metrics**: 팔로워만 보고 전환율 무시
**Impatience**: 1주 만에 판단
**Over-Optimization**: 알고리즘만 보고 사용자 무시
---
## Next Steps
### 이 명령어 실행 후:
**📍 다음 단계: `/market.communicate`** (바이럴 & 커뮤니티)
- 채널 최적화 완료 후 바이럴 전략
- 사용자 참여 유도 및 입소문
- 커뮤니티 구축
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-11-20
- **Philosophy**: "Don't fight the algorithm. Dance with it."

View File

@@ -0,0 +1,738 @@
# market.communicate
**바이럴 마케팅 & 커뮤니티 구축 전략 명령어**
---
## Overview
**This is the fourth step of the 4C Marketing Framework**:
```
저비용 마케팅 4C:
1. /market.customer → 고객 세분화 & 채널 추천 (누구에게, 어디서?)
2. /market.contents → 콘텐츠 전략 & 재활용 (무엇을 만들까?)
3. /market.channel → 채널별 최적화 전략 (어떻게 최적화할까?)
4. /market.communicate → 바이럴 & 커뮤니티 전략 (어떻게 퍼뜨릴까?) ← YOU ARE HERE
```
## Purpose
사람들이 **자발적으로 공유하고 추천**하게 만들고,
**충성 커뮤니티**를 구축하여 지속 가능한 성장 엔진을 만듭니다.
**핵심 질문**: "어떻게 하면 사람들이 알아서 우리 제품을 퍼뜨릴까?"
---
## When to Use
- `/market.channel`로 기본 최적화를 마친 후
- 초기 고객 10-100명을 확보한 후
- 바이럴 계수를 높이고 싶을 때
- 커뮤니티 구축이 필요할 때
---
## Usage
```bash
/market.communicate
/market.communicate "focus: 바이럴"
/market.communicate "커뮤니티 구축 중점"
```
---
## What I'll Do
### 1. 바이럴 루프 설계 (Viral Loop)
```markdown
## Viral Loop Framework
### 바이럴 계수 (K-Factor) 이해
**공식**: K = i × c
- i (Invites): 사용자 1명이 초대하는 평균 인원
- c (Conversion): 초대받은 사람 중 실제 가입하는 비율
**목표**: K > 1 (자가 성장)
- K = 1.2: 100명 → 120명 → 144명 (성장)
- K = 0.8: 100명 → 80명 → 64명 (소멸)
**Example: 테니스 코트 예약 앱**
- i = 3명 (동호회 회원에게 공유)
- c = 40% (초대받은 사람 중 가입)
- K = 3 × 0.4 = 1.2 ✅
### 바이럴 루프 4단계
#### Stage 1: Trigger (트리거 - 공유 동기)
"왜 공유하고 싶을까?"
**내재적 동기 (Intrinsic)**
- 도움주고 싶어서: "친구들도 편해질 것 같아"
- 자랑하고 싶어서: "나 이런 거 찾았어"
- 정체성 표현: "나는 이런 걸 쓰는 사람"
**외재적 동기 (Extrinsic)**
- 리워드: "친구 초대하면 할인"
- 필요성: "초대해야 기능 해금"
- 경쟁: "추천 순위 1위 되기"
**테니스 앱 예시**:
✅ 내재적: "우리 동호회 회원들 편하게 해주고 싶다"
✅ 외재적: "친구 초대 1명당 1회 예약 무료"
#### Stage 2: Sharing Mechanism (공유 메커니즘)
"어떻게 쉽게 공유할까?"
**One-Click Sharing**
- 카톡 공유: "우리 동호회 단톡방에 공유" 버튼
- URL 복사: 자동으로 할인 코드 포함
- 인스타 스토리: 예약 완료 시 "스토리 공유" 버튼
**Pre-filled Message**
```
[카톡 메시지 템플릿]
"나 이 앱으로 테니스 코트 예약하는데 진짜 편함!
3초 만에 예약되고 자동 할인까지 받아.
이 링크로 가입하면 첫 예약 30% 할인
→ [링크 + 내 추천 코드]"
```
**Social Proof Display**
- "이미 500명이 이 앱으로 예약했어요"
- "OO님 외 25명이 사용 중"
#### Stage 3: Landing (랜딩 - 초대받은 사람 경험)
"초대받은 사람이 뭘 보나?"
**전용 랜딩 페이지**
```
[화면]
🎾 OO님이 추천한 테니스 코트 예약 앱
"OO님처럼 3초 만에 예약하고
첫 예약 30% 할인받으세요"
[버튼] 지금 시작하기 (할인 자동 적용)
[하단]
이미 500명이 사용 중 ⭐⭐⭐⭐⭐
```
**Trust Signal**
- 추천인 이름 표시 (신뢰 구축)
- 할인 혜택 명확히 (즉시 가치)
- 사회적 증거 (안심)
#### Stage 4: Hook (훅 - 다시 공유하게 만들기)
"가입한 사람도 또 공유하게"
**First Use Magic Moment**
- 첫 예약 완료 시: "친구에게도 알려주시겠어요?"
- 할인 받았을 때: "친구도 30% 할인 받게 공유"
**Gamification**
- 추천 리더보드: "이번 달 Top 10 추천인"
- 배지 시스템: "5명 초대 → 골드 회원"
- 단계별 리워드: "3명/10명/30명 달성 시 보상"
### 바이럴 전략 유형
#### 1. Incentivized Referral (인센티브 추천)
**Dropbox 모델**: "너도 좋고 나도 좋고"
**Example: 테니스 앱**
```
친구 초대 프로그램:
- 초대한 사람: 무료 예약권 1회
- 초대받은 사람: 첫 예약 30% 할인
초대 10명 달성 시:
- 1개월 무료 프리미엄
```
**Pro**: 빠른 확산
**Con**: 인센티브 중독 (질 낮은 사용자)
#### 2. Product-Driven Virality (제품 기반 바이럴)
**Calendly 모델**: "제품 쓰면 자동으로 노출"
**Example: 테니스 앱**
```
예약 확인 메시지 (카톡):
"OO 코트 예약 완료! 🎾
토요일 10:00 / 2코트
Made with [앱 이름]
→ 간편 예약: [링크]"
```
**Pro**: 자연스러운 노출
**Con**: 느린 확산
#### 3. Content Virality (콘텐츠 바이럴)
**BuzzFeed 모델**: "재미/유용해서 공유"
**Example: 테니스 앱**
```
공유하고 싶은 콘텐츠:
- "테니스 코트 가성비 순위 Top 10"
- "서울 테니스 코트 지도 (할인 정보)"
- "동호회 운영 꿀팁 체크리스트 PDF"
```
**Pro**: 자연스러운 브랜드 노출
**Con**: 콘텐츠 제작 비용
#### 4. Social Currency (사회적 화폐)
**Tesla 모델**: "쓰는 것 자체가 자랑"
**Example: 테니스 앱**
```
Status Symbol 만들기:
- "얼리어답터 배지" (초기 100명)
- "VIP 회원" (추천 10명 이상)
- "동호회 오피셜" (단체 가입)
→ SNS에 인증하고 싶게 만들기
```
**Pro**: 충성도 높은 사용자
**Con**: 포지셔닝 필요
```
### 2. 커뮤니티 구축 (Community Building)
```markdown
## Community Strategy
### 커뮤니티 성장 4단계
#### Phase 1: Seed (씨앗 뿌리기)
**목표**: 첫 10-50명의 슈퍼팬 확보
**전략**:
1. **Hand-Pick Early Members**
- 가장 열성적인 사용자 직접 초대
- DM으로 1:1 관계 형성
- "VIP 베타 커뮤니티" 느낌
2. **Private Space 제공**
- 오픈채팅방 OR 디스코드
- 운영진과 직접 소통 가능
- 제품 개선에 의견 반영
3. **Exclusive Benefits**
- 신기능 미리 체험
- 피드백 즉시 반영
- 특별 할인/이벤트
**Example: 테니스 앱**
```
[DM 메시지]
"OO님, 앱 자주 이용해주셔서 감사합니다!
혹시 '테니스 매니아 VIP 톡방'에 초대해드려도 될까요?
- 신기능 미리 체험
- 피드백 즉시 반영
- 회원 전용 이벤트
선착순 50명 한정입니다.
관심 있으시면 답장 주세요 :)"
```
#### Phase 2: Nurture (성장시키기)
**목표**: 50-500명으로 확장
**전략**:
1. **Valuable Content**
- 주 2회 유용한 정보 공유
- 예: "이번 주 할인 코트 Top 5"
- 회원만 볼 수 있는 독점 정보
2. **Member Spotlight**
- 매주 "이주의 멤버" 소개
- 동호회 운영 사례 공유
- 서로 배우고 연결
3. **Events & Challenges**
- "30일 테니스 챌린지"
- 오프라인 모임 (분기 1회)
- 토너먼트 개최
**Example: 테니스 앱 커뮤니티**
```
[주간 루틴]
월: 이주의 할인 코트 정보
수: 멤버 스포트라이트 (동호회 소개)
금: 주말 테니스 팁
토: 커뮤니티 오프라인 모임 공지
```
#### Phase 3: Empower (권한 부여)
**목표**: 커뮤니티가 스스로 운영되게
**전략**:
1. **Member-Generated Content**
- 회원들이 팁/후기 직접 작성
- 베스트 게시글 선정 (리워드)
- 공식 블로그에 전재
2. **Ambassador Program**
- 지역별 앰버서더 (서울/경기/부산)
- 오프라인 모임 주최 권한
- 특별 혜택 (무료 프리미엄)
3. **Sub-Communities**
- 지역별 채널 (#서울 #경기 #부산)
- 레벨별 채널 (#초보 #중급 #고급)
- 주제별 채널 (#동호회운영 #장비)
**Example: 앰버서더 프로그램**
```
[모집 공고]
"테니스 앱 지역 앰버서더 모집 (서울/경기/부산)"
역할:
- 지역 테니스 커뮤니티 리드
- 월 1회 오프라인 모임 주최
- 신규 회원 온보딩 도움
혜택:
- 프리미엄 무료 (1년)
- 앰버서더 배지
- 분기별 앰버서더 미팅 (회식)
신청: [구글 폼]
```
#### Phase 4: Scale (확장)
**목표**: 500명+ 자가 성장하는 커뮤니티
**전략**:
1. **Flywheel Effect**
- 커뮤니티 → 콘텐츠 생산
- 콘텐츠 → 신규 유입
- 신규 유입 → 커뮤니티 강화
2. **Multi-Channel Presence**
- 디스코드: 실시간 소통
- 페이스북 그룹: 정보 아카이브
- 오픈채팅: 라이트 유저
3. **Self-Governance**
- 커뮤니티 운영 규칙 회원이 결정
- 모더레이터 선출
- 운영진은 가이드 역할만
### 커뮤니티 유형별 전략
#### 1. 정보 공유형 (Information)
**목적**: 유용한 정보 교환
**Example: 테니스 코트 DB 커뮤니티**
- 전국 코트 리뷰 DB
- 지역별 코트 추천
- 할인 정보 공유
**Engagement**:
- 리뷰 작성 시 포인트
- 베스트 리뷰 선정 (월간)
- 정보 기여도 배지
#### 2. 네트워킹형 (Networking)
**목적**: 사람과 사람 연결
**Example: 테니스 메이트 찾기**
- 지역별 파트너 매칭
- 동호회 모집 게시판
- 레슨 선생님 추천
**Engagement**:
- 월간 오프라인 모임
- 레벨별 매칭 이벤트
- 성공 매칭 후기 공유
#### 3. 학습형 (Learning)
**목적**: 함께 배우고 성장
**Example: 테니스 실력 향상 커뮤니티**
- 주간 테니스 팁
- 영상 분석 & 피드백
- 온라인 코칭 세션
**Engagement**:
- 30일 챌린지 (매일 연습)
- 전후 비교 영상 공유
- 실력 향상 인증
#### 4. 지지형 (Support)
**목적**: 서로 격려하고 응원
**Example: 테니스 라이프 커뮤니티**
- 운동 일지 공유
- 목표 달성 축하
- 슬럼프 극복 격려
**Engagement**:
- 주간 목표 공유 스레드
- 달성 시 축하 댓글
- 슬럼프 극복 스토리
```
### 3. 바이럴 트리거 (Shareability)
```markdown
## What Makes Content Shareable?
### STEPPS Framework (Jonah Berger)
#### 1. Social Currency (사회적 화폐)
"공유하면 나도 멋져 보여"
**전략**:
- 인사이더 정보: "아는 사람만 아는"
- 희소성: "선착순 100명"
- 성취감: "나 이거 성공했어"
**Example**:
❌ "테니스 코트 예약 완료"
✅ "숨은 가성비 코트 발견! (일반인 출입금지 구역)"
#### 2. Triggers (트리거)
"자주 생각나게 만들기"
**전략**:
- 일상과 연결: "주말마다"
- 반복 노출: "매주 토요일 알림"
- 장소 연동: "코트 근처 가면 알림"
**Example**:
- 금요일 저녁 푸시: "내일 테니스 치시나요? 😊"
- 위치 기반: "OO 코트 근처에 계시네요. 예약하시겠어요?"
#### 3. Emotion (감정)
"강한 감정을 유발"
**High-Arousal Emotions** (공유 ↑):
- 경외 (Awe): "와... 이런 게 있었어?"
- 흥분 (Excitement): "대박! 30% 할인!"
- 분노 (Anger): "이 사실 아무도 안 알려줬어?"
- 불안 (Anxiety): "이거 놓치면 손해"
**Low-Arousal Emotions** (공유 ↓):
- 슬픔 (Sadness)
- 만족 (Contentment)
**Example**:
❌ "편리한 예약 앱입니다" (Low)
✅ "왜 진작 이걸 안 만들었지? 10년 손해봤네" (Anger → 공유)
#### 4. Public (공개성)
"남들이 쓰는 게 보여야 함"
**전략**:
- 브랜딩 명확히: 예약 확인서에 로고
- 공개적 사용: SNS 공유 유도
- Observable: "이미 500명 사용 중"
**Example**:
- 인스타 스토리 공유 시 자동 배경 템플릿
- "OO님이 [앱 이름]으로 예약했어요" (친구 피드)
#### 5. Practical Value (실용적 가치)
"진짜 도움이 되니까 공유"
**전략**:
- 돈 절약: "30% 할인"
- 시간 절약: "30분 → 3초"
- 문제 해결: "만석 스트레스 해결"
**Example**:
✅ "친구야, 이거 쓰면 한 달에 1만원 아낀다"
✅ "우리 동호회 예약 관리 이걸로 하자"
#### 6. Stories (스토리)
"이야기 속에 자연스럽게 녹이기"
**전략**:
- Before/After 스토리
- 실패담 → 성공담
- 유머러스한 에피소드
**Example**:
```
"지난주 토요일 아침 7시.
5개 코트에 전화했지만 전부 만석.
결국 테니스 못 치고 집에서 넷플릭스...
그런데 친구가 이 앱 알려줘서 이번 주엔
3초 만에 예약 성공! 🎾
토요일 아침 상쾌하게 운동 다녀왔습니다 ㅎㅎ"
```
→ 스토리 자체가 재미있어서 공유됨
```
### 4. Growth Hacking Tactics (저비용 고효율)
```markdown
## Tactical Playbook
### Tactic 1: Launch on Product Hunt
**Cost**: $0
**Effort**: 중
**Impact**: 중-고
**How**:
1. Product Hunt 계정 생성
2. 출시일 2주 전 커뮤니티 참여 (신뢰 구축)
3. 출시 당일 00:01 (PST) 등록
4. 첫 6시간이 승부 (친구들에게 Upvote 부탁)
5. 댓글에 성실히 답변
**Goal**: Daily Top 5 → 트래픽 1,000+
### Tactic 2: Guest Posting
**Cost**: $0
**Effort**: 고
**Impact**: 중
**How**:
1. 타겟 블로그/미디어 10개 리스트업
2. 그들의 독자가 원하는 주제 리서치
3. 가치 있는 게스트 포스트 작성
4. 자연스럽게 제품 언급 (광고 X)
**Example**:
- Medium: "동호회 운영 자동화하는 5가지 방법"
- 브런치: "주말 운동 루틴 만들기"
- 네이버 포스트: "테니스 초보 가이드"
### Tactic 3: Micro-Influencer Outreach
**Cost**: 저 (무료 체험 제공)
**Effort**: 중
**Impact**: 중-고
**How**:
1. 팔로워 1만-5만 마이크로 인플루언서 찾기
2. 진짜 테니스 하는 사람 선별 (광고만 하는 사람 X)
3. DM: 무료 체험 제공 (광고 요청 X)
4. 자발적 리뷰 기대
**Target**:
- 인스타: #테니스 #테린이 해시태그 상위 포스터
- 유튜브: 테니스 레슨 채널 (구독자 1-10만)
### Tactic 4: Community Takeover
**Cost**: $0
**Effort**: 고 (시간 소요)
**Impact**: 고
**How**:
1. 타겟 커뮤니티에서 가장 도움 되는 사람 되기
2. 3-4주 동안 질문에 성실히 답변
3. 신뢰 구축 후 자연스럽게 제품 언급
4. 광고 아닌 "진짜 도움" 제공
**Example**:
- 네이버 카페: 매일 질문 3개 답변
- 블라인드: 동아리 운영 팁 공유
- 레딧: r/tennis에서 활동
### Tactic 5: Controversy Marketing (안전한 논란)
**Cost**: $0
**Effort**: 중
**Impact**: 고 (리스크 있음)
**How**:
1. 업계 통념에 반대 의견 제시
2. 논란 유발 (하지만 사실 기반)
3. 댓글로 토론 유도
4. 제품으로 해결책 제시
**Example**:
```
[제목] "테니스 코트 전화 예약이 더 빠르다는 건 거짓말입니다"
[본문]
"앱 예약이 느리다"는 말 많이 들었습니다.
실제로 측정해봤습니다.
전화 예약:
- 대기 시간: 평균 7분
- 통화 시간: 3분
- 재확인 전화: 2분
→ 총 12분
앱 예약:
- 검색: 30초
- 선택: 10초
- 결제: 20초
→ 총 1분
12배 차이입니다.
[데이터 그래프 첨부]
아직도 전화가 빠르다고 생각하시나요?
```
→ 논란 → 댓글 폭발 → 바이럴
### Tactic 6: Waitlist + FOMO
**Cost**: $0
**Effort**: 하
**Impact**: 중
**How**:
1. 정식 출시 전 "대기자 명단" 운영
2. "선착순 100명만" 메시지
3. 실시간 카운터: "현재 73/100"
4. 소셜 증거: "OO님 외 72명 대기 중"
**Psychology**: 희소성 + 사회적 증거 → 즉시 가입
### Tactic 7: Challenge/Event
**Cost**: 저 (경품)
**Effort**: 중
**Impact**: 중-고
**How**:
1. 30일 챌린지 기획
2. SNS 인증 유도 (#OO챌린지)
3. 우수 참가자 경품 (앱 내 혜택)
4. 참가자들이 자연스럽게 바이럴
**Example**:
```
"30일 주말 테니스 챌린지"
참여 방법:
1. 앱으로 코트 예약
2. 테니스 인증샷 인스타 업로드
3. #주말테니스챌린지 태그
우수 참여자 (5명):
- 3개월 프리미엄 무료
- 테니스 용품 세트
```
```
---
## Output Files
### 생성될 파일들:
1. **`docs/market/viral-loop-design.md`**
- 바이럴 계수 계산
- 4단계 바이럴 루프
- 전략 유형별 실행 계획
2. **`docs/market/community-playbook.md`**
- 커뮤니티 성장 4단계
- 유형별 커뮤니티 전략
- 앰버서더 프로그램 설계
3. **`docs/market/growth-hacking-tactics.md`**
- 7가지 저비용 전술
- 실행 체크리스트
- 성과 측정 방법
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/market.channel`**: 성과 좋은 채널 → 바이럴 전략 집중
- **From `/market.contents`**: 콘텐츠 → 공유 가능하게 변형
- **Feedback to all**: 바이럴/커뮤니티 인사이트 → 전략 개선
---
## Key Principles
### Viral Marketing:
1. **Built-in, Not Bolted-on**: 제품에 바이럴 메커니즘 내장
2. **Incentive Alignment**: 공유자와 피공유자 모두 이득
3. **Frictionless Sharing**: 클릭 1-2번으로 공유 가능
4. **Social Proof**: 이미 많은 사람이 쓴다는 증거
5. **FOMO > FOJI**: 놓치기 싫음 > 참여하고 싶음
### Community Building:
1. **Start Small**: 10명의 슈퍼팬 > 100명의 관심러
2. **Exclusive First**: VIP 느낌으로 시작
3. **Give Before Ask**: 가치를 먼저 제공
4. **Empower Members**: 권한 위임 → 주인의식
5. **Long-term Game**: 6개월-1년 호흡
### Anti-Patterns:
**Spam**: 무분별한 홍보
**Fake Scarcity**: 거짓 희소성 ("선착순 100명" 실제론 무제한)
**Forced Sharing**: 공유 안 하면 기능 제한 (역효과)
**Ignoring Community**: 만들고 방치
**Only Incentives**: 돈으로만 유도 (진짜 팬 안 생김)
---
## Next Steps
### 이 명령어 실행 후:
**🎯 4C Marketing 완성!**
이제 다음을 실행하세요:
1. **Week 1-2**: `/market.customer` 기반으로 타겟 채널 진입
2. **Week 3-4**: `/market.contents` 기반으로 콘텐츠 제작 & 배포
3. **Week 5-6**: `/market.channel` 기반으로 성과 측정 & 최적화
4. **Week 7-8**: `/market.communicate` 기반으로 바이럴 & 커뮤니티 시작
**📍 다음 체크포인트**: 4주 후
- 첫 100명 확보했나?
- 바이럴 계수 K > 1인가?
- 커뮤니티 활성화되고 있나?
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-11-20
- **Philosophy**: "The best marketing doesn't feel like marketing. It feels like a friend's recommendation."

View File

@@ -0,0 +1,589 @@
# market.contents
**하나의 핵심 메시지를 10가지 콘텐츠로 재활용하는 전략 명령어**
---
## Overview
**This is the second step of the 4C Marketing Framework**:
```
저비용 마케팅 4C:
1. /market.customer → 고객 세분화 & 채널 추천 (누구에게, 어디서?)
2. /market.contents → 콘텐츠 전략 & 재활용 (무엇을 만들까?) ← YOU ARE HERE
3. /market.channel → 채널별 최적화 전략 (어떻게 최적화할까?)
4. /market.communicate → 바이럴 & 커뮤니티 전략 (어떻게 퍼뜨릴까?)
```
## Purpose
하나의 **핵심 가치 메시지**를 파악하고, 이를 다양한 채널과 포맷으로 변주하여
**최소 노력으로 최대 콘텐츠**를 생성합니다.
**핵심 질문**: "우리 제품의 ONE 메시지는 뭐고, 이걸 10가지 방법으로 어떻게 말할까?"
---
## When to Use
- `/market.customer`로 타겟 채널을 정한 후
- 콘텐츠 제작 리소스가 부족할 때
- 채널마다 다른 콘텐츠를 만들어야 할 때
- 일관된 브랜드 메시지가 필요할 때
---
## Usage
```bash
/market.contents
/market.contents "핵심 메시지: 3초 만에 코트 예약"
/market.contents "focus: 시간 절약"
```
---
## What I'll Do
### 1. Core Message 추출
```markdown
## Core Message Extraction
### Input Sources
- `docs/appkit/value-proposition.md` → 핵심 가치
- `docs/appkit/sales-landing.md` → 메인 메시지
- `docs/market/customer-segments.md` → 고객 Pain Point
### The ONE Thing
"만약 고객이 5초 안에 우리 제품을 설명해야 한다면 뭐라고 할까?"
#### Example: 테니스 코트 예약 앱
Before (기능 나열):
❌ "코트 검색, 예약, 결제, 할인, 리뷰가 가능한 앱"
After (가치 중심):
✅ "매주 30분 걸리던 코트 예약, 3초로 단축"
### Message Framework: Before/After Bridge
**Before (고객의 현재 고통)**
- 주말마다 5개 코트에 전화 (평균 30분)
- 원하는 시간 만석일 때 허탈함
- 비싼 정가로 결제
**After (제품 사용 후 변화)**
- 앱으로 3초 예약 완료
- 실시간 공석 확인
- 자동 할인 30%
**Bridge (제품의 핵심 메커니즘)**
→ "실시간 통합 예약 시스템 + AI 자동 할인"
```
### 2. Content Pyramid (1→10 변주 시스템)
```markdown
## Content Pyramid: 1 Core → 10 Formats
### Level 1: Pillar Content (기둥 콘텐츠)
"가장 심층적이고 완전한 형태"
#### 형식: 유튜브 롱폼 (10분)
**제목**: "테니스 코트 예약 30분→3초로 줄인 방법 (실제 사용 후기)"
**구성**:
0:00-0:30 - Hook: "매주 토요일 아침 7시, 5개 코트에 전화하던 제가..."
0:30-2:00 - Problem: 기존 예약 방식의 3가지 문제
2:00-7:00 - Solution: 앱 사용 실제 데모 + 3가지 핵심 기능
7:00-9:00 - Results: Before/After 비교, 실제 절약 시간 계산
9:00-10:00 - CTA: 첫 예약 할인 안내
**산출물**: 1개 영상 (하지만 여기서 10개 콘텐츠 파생)
### Level 2: Derivative Content (파생 콘텐츠)
"Pillar에서 조각내기"
#### 2-1. 유튜브 쇼츠 3개 (각 60초)
**쇼츠 #1: Problem Focused**
- 제목: "주말마다 코트 예약 전화 30분씩 하는 사람?"
- 내용: 0:30-2:00 구간 재편집
- Hook: 공감 유도 → 문제 제시
**쇼츠 #2: Solution Demo**
- 제목: "코트 예약 3초 컷 (실제 화면)"
- 내용: 2:00-7:00 중 핵심 20초
- Hook: 빠른 데모 → 놀라움
**쇼츠 #3: Result Proof**
- 제목: "이 앱으로 한 달에 2시간 절약함"
- 내용: 7:00-9:00 중 숫자 강조
- Hook: 구체적 결과 → 신뢰
#### 2-2. 인스타그램 릴스 2개 (각 30초)
**릴스 #1: Before/After**
- 영상: 전화 예약 vs 앱 예약 비교
- 음악: 트렌딩 사운드
- 텍스트 오버레이: "Before: 30분 / After: 3초"
**릴스 #2: 3 Tips**
- 제목: "코트 예약 꿀팁 3가지"
- 내용: 할인받는 법 / 빠른 예약 법 / 취소 꿀팁
#### 2-3. 블로그 포스트 1개 (SEO 최적화)
**제목**: "테니스 코트 예약 방법 총정리 (2025년 최신)"
**목차**:
1. 전통 방식 vs 앱 예약 비교
2. 추천 앱 3가지 (객관적으로 보이되 우리 앱 1위)
3. 단계별 예약 가이드 (스크린샷)
4. 할인받는 법 (쿠폰 코드 삽입)
5. FAQ
**SEO 키워드**:
- 테니스 코트 예약
- 서울 테니스 코트
- 테니스 코트 할인
**길이**: 2,000-3,000자 (구글 상위 노출 목표)
#### 2-4. 트위터 쓰레드 1개 (5-7개 트윗)
**오프닝 트윗**:
"매주 토요일 아침 테니스 코트 예약하느라 30분 날리던 제가,
이제 3초 만에 끝냅니다. 어떻게? (thread 👇)"
**쓰레드 구성**:
1/ 문제: 전화 예약의 고통
2/ 발견: 이 앱을 알게 된 계기
3/ 사용: 실제 사용 후기
4/ 결과: 한 달 사용 후 변화
5/ 팁: 할인 받는 법
6/ CTA: 링크 + 첫 예약 할인
#### 2-5. 링크드인 포스트 1개 (전문가 관점)
**톤**: 캐주얼보다 전문적
**제목**: "테니스 동호회 운영진이 알아야 할 디지털 전환 사례"
**내용**:
- 배경: 25명 동호회 운영의 어려움
- 문제: 수작업 예약 관리의 비효율
- 솔루션: 디지털 예약 시스템 도입
- 결과: 관리 시간 80% 감소
- 인사이트: "작은 커뮤니티도 디지털 전환 필요"
#### 2-6. 네이버 카페 게시글 1개 (진짜 경험담)
**제목**: "[후기] 동호회 예약 관리 이렇게 해결했습니다"
**톤**: 광고 아님, 진짜 도움
**내용**:
```
안녕하세요, XX 동호회 운영 중인 김OO입니다.
저희 동호회 회원이 25명인데요,
매주 코트 예약이 제일 큰 스트레스였어요.
[문제]
- 토요일 오전 5개 코트 전화 (30분 소요)
- 회원들 일정 조율 카톡 100통
- 예약 실패하면 욕먹음 ㅠㅠ
[해결]
OO 앱 써보니까 진짜 편하더라고요.
(광고 아니고 진짜 써본 후기입니다)
[효과]
- 예약 시간: 30분 → 3분
- 회원들 만족도 UP
- 자동 할인까지 받음
혹시 동호회 운영하시는 분들 참고하세요!
```
#### 2-7. PDF 다운로드 자료 (리드 수집용)
**제목**: "테니스 동호회 운영자를 위한 예약 관리 체크리스트"
**내용**:
- [ ] 시즌별 선호 시간대 파악
- [ ] 단골 코트 3곳 확보
- [ ] 예약 앱 3개 비교 (기능/가격)
- [ ] 회원 결제 시스템 구축
- [ ] 예약 취소 정책 수립
- [ ] 비 올 때 Plan B
**CTA**: PDF 마지막 페이지에 앱 설치 링크
#### 2-8. 인스타 캐러셀 10장 (인포그래픽)
**제목**: "코트 예약 30분→3초 줄이는 법"
**슬라이드 구성**:
1. 표지: "주말마다 코트 예약 스트레스?"
2. 문제 1: 전화 대기 15분
3. 문제 2: 원하는 시간 만석
4. 문제 3: 비싼 정가
5. 솔루션: 실시간 예약 앱
6. 기능 1: 3초 예약
7. 기능 2: 자동 할인
8. 기능 3: 실시간 공석
9. Before/After 비교
10. CTA: 바이오 링크
#### 2-9. 커뮤니티 댓글/답변 (자연스러운 노출)
**상황**: 네이버 카페 질문글
"주말 코트 예약 어떻게 하시나요?"
**답변**:
```
저는 예전엔 전화로 했는데 너무 번거로워서
요즘은 OO 앱 써요.
장점:
- 실시간으로 빈 코트 확인
- 가격 비교 가능
- 자동 할인도 적용됨
단점:
- 아직 모든 코트가 등록된 건 아님
근데 제가 다니는 주요 코트는 다 있어서 만족 중입니다.
(광고 아니고 진짜 쓰는 사람 후기)
```
**전략**: 광고처럼 보이면 역효과, 진짜 도움말처럼
#### 2-10. 오픈채팅 / 밴드 공유 (바이럴 유도)
**상황**: 테니스 동호회 단톡방
**메시지**:
```
[공유] 이번 주 토요일 예약 완료했어요~
다들 이 앱 써보셨어요?
실시간으로 코트 예약 되고 할인도 받아서 좋더라고요.
저희 동호회 회원들 쓰면 예약 총무 일 진짜 줄어들 것 같아요 ㅎㅎ
링크: [...]
(첫 예약 할인 코드: TENNIS2025)
```
**전략**: 도움되는 정보 공유 → 자연스러운 바이럴
```
### 3. Content Calendar (4주 계획)
```markdown
## 4-Week Content Plan
### Week 1: Awareness (인지도)
"우리 제품이 존재한다는 걸 알리기"
| 요일 | 채널 | 콘텐츠 | 목표 |
|------|------|--------|------|
| 월 | 유튜브 | 롱폼 영상 업로드 | 조회수 500 |
| 화 | 블로그 | SEO 포스트 발행 | 유입 시작 |
| 수 | 인스타 | 릴스 #1 (Before/After) | 도달 1,000 |
| 목 | 네이버 카페 | 경험담 게시글 5개 | 댓글 10+ |
| 금 | 유튜브 쇼츠 | 쇼츠 #1 (Problem) | 조회수 1,000 |
| 토 | 링크드인 | 전문가 포스트 | 연결 요청 5+ |
| 일 | 휴식 | 주간 성과 분석 | - |
### Week 2: Engagement (참여 유도)
"관심있는 사람들과 대화 시작"
| 요일 | 채널 | 콘텐츠 | 목표 |
|------|------|--------|------|
| 월 | 인스타 | 릴스 #2 (3 Tips) | 저장 50+ |
| 화 | 트위터 | 쓰레드 발행 | 리트윗 10+ |
| 수 | 네이버 카페 | 질문글에 답변 10개 | 신뢰 구축 |
| 목 | 유튜브 쇼츠 | 쇼츠 #2 (Demo) | 조회수 2,000 |
| 금 | 인스타 | 캐러셀 10장 | 저장 30+ |
| 토 | 밴드 | 동호회에 공유 | 가입 5+ |
| 일 | 이메일 | PDF 다운로드자 대상 | 오픈율 30% |
### Week 3: Conversion (전환 유도)
"실제 사용자 확보"
| 요일 | 채널 | 콘텐츠 | 목표 |
|------|------|--------|------|
| 월 | 전 채널 | 할인 이벤트 공지 | 가입 20+ |
| 화 | 유튜브 쇼츠 | 쇼츠 #3 (Result) | 전환 5+ |
| 수 | 네이버 카페 | 베타 테스터 모집 | 신청 10+ |
| 목 | 블로그 | 사용 가이드 포스트 | 체류 3분+ |
| 금 | 인스타 스토리 | 카운트다운 (이벤트 마감) | FOMO 유도 |
| 토 | 오픈채팅 | 사용자 커뮤니티 개설 | 참여 10+ |
| 일 | 휴식 | 전환율 분석 | - |
### Week 4: Retention (재방문 유도)
"기존 사용자 만족도 높이기"
| 요일 | 채널 | 콘텐츠 | 목표 |
|------|------|--------|------|
| 월 | 이메일 | 사용 팁 뉴스레터 | 재방문 유도 |
| 화 | 유튜브 | 고급 기능 튜토리얼 | 활성 사용자 증가 |
| 수 | 인스타 | 사용자 후기 리그램 | 사회적 증명 |
| 목 | 네이버 카페 | 성공 사례 공유 | 입소문 |
| 금 | 블로그 | 업데이트 소식 | SEO 유지 |
| 토 | 커뮤니티 | 오프라인 모임 기획 | 충성도 UP |
| 일 | 회고 | 4주 성과 정리 & Next | - |
```
### 4. Content Hook Generator (감각적 첫 문장)
```markdown
## Hook Formula Library
### Formula 1: Shocking Number (충격적 숫자)
"매주 [시간]을 [지루한 작업]에 쓰고 있다는 걸 아시나요?"
**Example**:
- "매주 30분을 코트 예약 전화에 쓰고 있다는 걸 아시나요?"
- "한 달에 4시간을 예약 때문에 낭비하고 있습니다"
### Formula 2: Relatable Pain (공감되는 고통)
"[상황] 때문에 [부정적 감정] 느껴본 적 있으신가요?"
**Example**:
- "주말 코트 예약 실패해서 허탈했던 적 있으신가요?"
- "테니스 치고 싶은데 예약이 귀찮아서 포기한 적 있나요?"
### Formula 3: Before/After (극명한 대비)
"[Before] → [After]로 바뀐 방법"
**Example**:
- "30분 전화 예약 → 3초 앱 예약으로 바뀐 방법"
- "만석 스트레스 → 실시간 확인으로 바뀐 이유"
### Formula 4: Curiosity Gap (호기심 갭)
"[결과]를 한 비법, [일반 상식]이 아닙니다"
**Example**:
- "코트 예약 10초 컷, 전화 말고 OO 쓰세요"
- "할인받는 법, 쿠폰 말고 OO 하세요"
### Formula 5: Question Hook (질문 훅)
"왜 아직도 [구시대 방법]으로 [작업]하세요?"
**Example**:
- "왜 아직도 전화로 코트 예약하세요?"
- "왜 정가 내고 예약하세요?"
### Formula 6: Social Proof (사회적 증거)
"이미 [숫자]명이 [행동]했습니다. 당신은?"
**Example**:
- "이미 500명이 앱으로 예약합니다. 당신은?"
- "우리 동호회 회원 25명 모두 쓰는 이유"
### Formula 7: FOMO (놓치기 싫은 심리)
"[기회]를 놓치면 [손해]합니다"
**Example**:
- "이 할인 놓치면 정가로 평생 예약합니다"
- "선착순 100명만 30% 할인 (현재 73명)"
### Formula 8: Contrarian (반대 의견)
"[일반 통념]은 틀렸습니다. 진짜는 [반전]입니다"
**Example**:
- "전화 예약이 더 빠르다? 틀렸습니다. 앱이 10배 빠릅니다"
- "비싼 코트가 좋다? 아닙니다. 시간대가 중요합니다"
```
### 5. Content Repurposing Checklist
```markdown
## Repurposing Workflow
### Step 1: Create Pillar (1개 제작)
✅ 유튜브 롱폼 1개 (10분)
- 대본 작성
- 촬영/편집
- 업로드
### Step 2: Chop into Shorts (조각내기)
✅ 유튜브 쇼츠 3개
- 타임라인에서 핵심 60초 추출
- 세로 포맷 (9:16) 재편집
- 자막 추가
✅ 인스타 릴스 2개
- 쇼츠와 동일하되 30초로 압축
- 트렌딩 음악 추가
- 해시태그 15개
### Step 3: Transform to Text (텍스트 변환)
✅ 블로그 포스트
- 영상 대본 → 글로 변환
- SEO 최적화 (키워드 5개 삽입)
- 스크린샷 5-7장 추가
✅ 트위터 쓰레드
- 핵심 메시지 7개로 압축
- 각 트윗 280자 이내
- 첫 트윗에 훅 집중
✅ 링크드인 포스트
- 전문가 톤으로 재작성
- 인사이트 중심
- 1,000-1,500자
### Step 4: Design Visuals (비주얼 제작)
✅ 인스타 캐러셀 10장
- 캔바 템플릿 활용
- 핵심 메시지 1장 1문장
- 브랜드 컬러 일관성
✅ PDF 다운로드
- 체크리스트/가이드 형식
- 5-10페이지
- 마지막 페이지 CTA
### Step 5: Community Seeding (커뮤니티 배포)
✅ 네이버 카페 게시글
- 광고 느낌 제거
- 진짜 경험담처럼
- 5-10개 카페
✅ 커뮤니티 댓글
- 자연스럽게 언급
- 도움 되는 정보 공유
- 링크는 마지막에만
### Total Output: 1 Pillar → 20+ Content Pieces
```
---
## Output Files
### 생성될 파일들:
1. **`docs/market/core-message.md`**
- ONE 핵심 메시지
- Before/After/Bridge
- 고객 Pain Point 연결
2. **`docs/market/content-pyramid.md`**
- Pillar Content 기획
- 10가지 파생 콘텐츠
- 포맷별 제작 가이드
3. **`docs/market/content-calendar.md`**
- 4주 콘텐츠 캘린더
- 채널별 발행 스케줄
- 목표 지표
4. **`docs/market/hook-library.md`**
- 8가지 훅 공식
- 제품별 예시
- A/B 테스트용
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/market.customer`**: 타겟 채널 → 콘텐츠 포맷 결정
- **From `/appkit.sales`**: 핵심 메시지 → 콘텐츠 주제
- **To `/market.channel`**: 콘텐츠 → 채널별 최적화
- **To `/market.communicate`**: 콘텐츠 → 바이럴 전략
---
## Examples
### Example 1: B2C 앱
```bash
$ /market.contents
🎯 Core Message Extracted
ONE Message:
"매주 30분 걸리던 코트 예약, 3초로 단축"
Content Pyramid Generated:
1 Pillar:
✅ 유튜브 롱폼 (10분) - "예약 시간 90% 줄인 법"
10 Derivatives:
✅ 유튜브 쇼츠 3개
✅ 인스타 릴스 2개
✅ 블로그 포스트 1개
✅ 트위터 쓰레드 1개
✅ 링크드인 포스트 1개
✅ 네이버 카페 글 1개
✅ 인스타 캐러셀 1개
4-Week Calendar:
Week 1: Awareness (인지도)
Week 2: Engagement (참여)
Week 3: Conversion (전환)
Week 4: Retention (재방문)
✅ Generated content-pyramid.md
✅ Generated content-calendar.md
```
---
## Key Principles
### Content Efficiency:
1. **One to Many**: 1개 제작 → 10개 배포
2. **Core Message First**: 메시지 먼저, 포맷은 나중
3. **Platform Native**: 각 채널의 언어로 번역
4. **Hook Obsession**: 첫 3초가 전부
5. **Batch Production**: 한 번에 여러 개 제작
### Content Anti-Patterns:
**Spray and Pray**: 일관성 없이 막 올리기
**Perfectionism**: 완벽한 1개보다 괜찮은 10개
**Platform Blindness**: 유튜브 영상을 인스타에 그대로
**Message Dilution**: 채널마다 다른 메시지
**No Repurposing**: 매번 새로 만들기
---
## Next Steps
### 이 명령어 실행 후:
**📍 다음 단계: `/market.channel`** (채널별 최적화)
- 만든 콘텐츠를 각 채널에 맞게 최적화
- 플랫폼별 알고리즘 이해
- 성과 측정 및 개선
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-11-20
- **Philosophy**: "Create once, distribute everywhere. But make it native to each platform."

View File

@@ -0,0 +1,434 @@
# market.customer
**MVP에 맞는 타겟 고객 세분화 및 채널 추천 명령어**
---
## Overview
**This is the first step of the 4C Marketing Framework**:
```
저비용 마케팅 4C:
1. /market.customer → 고객 세분화 & 채널 추천 (누구에게, 어디서?) ← YOU ARE HERE
2. /market.contents → 콘텐츠 전략 & 재활용 (무엇을 만들까?)
3. /market.channel → 채널별 최적화 전략 (어떻게 최적화할까?)
4. /market.communicate → 바이럴 & 커뮤니티 전략 (어떻게 퍼뜨릴까?)
```
## Purpose
MVP 제품의 특성을 분석하여 **가장 효과적인 타겟 고객 세그먼트**를 찾고,
그들이 실제로 있는 **채널**을 추천합니다.
**핵심 질문**: "누가 가장 먼저 우리 제품을 써줄까? 그들은 지금 어디 있을까?"
---
## When to Use
- `/appkit.mvp`로 MVP 범위를 정의한 후
- 제품 출시 전 마케팅 전략 수립 시
- 광고비 없이 초기 고객을 확보해야 할 때
- 채널 선택이 불명확할 때
---
## Usage
```bash
/market.customer
/market.customer "테니스 코트 예약 앱"
/market.customer "직장인 대상 SaaS 툴"
```
---
## What I'll Do
### 1. 제품 맥락 분석
```markdown
## Product Context Analysis
### Input Sources
- `docs/appkit/overview.md` → 서비스 본질 파악
- `docs/appkit/customer-persona.md` → 기존 페르소나 활용
- `docs/appkit/mvp-scope.md` → MVP 핵심 가치 확인
### Key Questions
- 이 제품은 무엇을 해결하는가?
- 가장 급한 문제를 가진 사람은 누구인가?
- 돈을 낼 만한 가치가 있는 사람은?
- 입소문을 낼 만한 사람은?
```
### 2. 고객 세그먼트 우선순위화
```markdown
## Customer Segmentation Matrix
### Early Adopters (최우선 타겟)
"제품이 완벽하지 않아도 먼저 써줄 사람들"
#### Segment 1: 테니스 동호회 운영진 (Primary)
**Why First?**
- Pain Point 강도: ⭐⭐⭐⭐⭐ (매주 예약 전화 30통)
- 구매력: ⭐⭐⭐⭐ (회비로 결제 가능)
- 입소문 파급력: ⭐⭐⭐⭐⭐ (회원 20-50명에게 즉시 전파)
- 접근 용이성: ⭐⭐⭐⭐ (네이버 카페, 밴드에 집중)
**Demographics**
- 나이: 35-55세
- 직업: 회사원, 자영업
- 소득: 중상위
- 지역: 수도권
**Psychographics**
- 가치관: "우리 회원들 편하게 해주고 싶다"
- 관심사: 동호회 활성화, 효율적 운영
- 정보 습득: 네이버 카페, 밴드, 카톡 단톡방
- 구매 결정: 실용성 > 가격 (회원들이 좋아하면 OK)
**Where Are They?**
1. 네이버 카페: "테니스 동호회", "XX지역 테니스"
2. 밴드: 지역별 테니스 밴드
3. 카카오톡: 동호회 단톡방 (접근 어려움)
4. 오프라인: 주말 아침 코트장
**First Touch Strategy**
→ 네이버 카페 "운영진 고민" 게시판에 진짜 경험담 작성
→ "저희 동호회 예약 관리 이렇게 해결했어요" (광고 X)
#### Segment 2: 직장 내 테니스 동아리 간사 (Secondary)
**Why Second?**
- Pain Point: ⭐⭐⭐⭐ (분기별 예약 업무 스트레스)
- 구매력: ⭐⭐⭐ (동아리 예산 있음)
- 입소문: ⭐⭐⭐ (다른 직장 동아리로 전파 가능)
- 접근: ⭐⭐⭐ (링크드인, 직장인 커뮤니티)
**Where Are They?**
1. 블라인드: "직장 생활" 게시판
2. 링크드인: 직장인 그룹
3. 사내 게시판: 접근 어려움
4. 오픈 채팅방: "XX기업 테니스"
#### Segment 3: 개인 열성 플레이어 (Tertiary)
**Why Third?**
- Pain Point: ⭐⭐⭐ (개인 예약 번거로움)
- 구매력: ⭐⭐⭐⭐ (개인 결제)
- 입소문: ⭐⭐ (개인적 추천)
- 접근: ⭐⭐⭐⭐⭐ (인스타, 유튜브)
**Where Are They?**
1. 인스타그램: #테니스 #테린이 #테니스레슨
2. 유튜브: 테니스 레슨 영상 댓글란
3. 테니스용품 쇼핑몰: 커뮤니티 게시판
```
### 3. Channel Recommendation Matrix
```markdown
## Channel Priority by Customer Segment
### Tier 1: Immediate Action (이번 주부터)
"Early Adopters가 있는 곳"
| Channel | Segment | Cost | Effort | Expected Result |
|---------|---------|------|--------|-----------------|
| 네이버 카페 | 동호회 운영진 | 무료 | 중 | 첫 10명 확보 |
| 밴드 | 동호회 | 무료 | 중 | 첫 단체 고객 |
| 블라인드 | 직장 동아리 | 무료 | 하 | 피드백 수집 |
**Action Plan (Week 1-2)**
1. 네이버 카페 10개 가입
- "서울 테니스 동호회"
- "경기 테니스 모임"
- "주말 테니스"
2. 운영진 고민 게시판에 진짜 경험담 작성
3. DM으로 베타 테스터 모집 (광고 아님)
### Tier 2: Medium-term Growth (2-4주)
"인지도 확산"
| Channel | Segment | Cost | Effort | Expected Result |
|---------|---------|------|--------|-----------------|
| 인스타그램 | 개인 플레이어 | 저 | 중 | 브랜드 인지도 |
| 유튜브 쇼츠 | 일반 대중 | 저 | 고 | 자연 유입 |
| 블로그 SEO | 검색 유입 | 무료 | 중 | 장기 자산 |
**Content Ideas**
- 인스타 릴스: "테니스 코트 예약 꿀팁"
- 유튜브 쇼츠: "동호회 총무가 알려주는 예약 비법"
- 블로그: "서울 테니스 코트 예약 가이드"
### Tier 3: Scale (4주+)
"매스 마케팅 준비"
| Channel | Segment | Cost | Effort | Expected Result |
|---------|---------|------|--------|-----------------|
| 네이버 광고 | 검색 유입 | 중 | 하 | 빠른 확장 |
| 인플루언서 | 대중 | 중-고 | 중 | 바이럴 |
| 제휴 (코트) | 장소 기반 | 무료 | 고 | Win-win |
**Note**: Tier 3는 Tier 1-2 검증 후 진행
```
### 4. Persona-Channel-Message Mapping
```markdown
## Integrated Marketing Map
### Early Adopter Journey
#### Persona: 김회장 (45세, 테니스 동호회 회장)
**현재 상황**
- 매주 토요일 아침 예약을 위해 5개 코트에 전화
- 회원 25명 일정 조율이 가장 큰 스트레스
- 네이버 카페에서 "이번 주 예약 완료" 공지 작성
**Where**: 네이버 카페 "서울 테니스 동호회" (회원 3,500명)
**Message Hook**:
"동호회 회장님들, 매주 코트 예약 전화 30통 거는 거 지치지 않으세요?"
**Offer**:
"저희 동호회는 이 앱으로 예약 관리 10분으로 줄였습니다"
→ 무료 베타 테스터 모집 (선착순 10개 동호회)
**Conversion Path**:
1. 카페 게시글 작성 (진짜 경험담)
2. 댓글로 문의 → DM으로 안내
3. 카톡 오픈채팅방 초대
4. 사용 가이드 제공
5. 후기 작성 부탁 (인센티브: 1개월 무료)
#### Persona: 박간사 (32세, 직장 테니스 동아리 간사)
**Where**: 블라인드 "직장 생활" 게시판
**Message Hook**:
"테니스 동아리 간사 맡았다가 예약 업무로 퇴근 늦어본 적 있으신가요?"
**Offer**:
"3분 만에 분기 예약 완료하는 법"
→ 체크리스트 PDF 다운로드 (이메일 수집)
**Conversion Path**:
1. 블라인드 게시글
2. PDF 다운로드 (랜딩 페이지)
3. 이메일로 앱 소개
4. 7일 무료 체험
```
### 5. Channel Testing Framework
```markdown
## Channel Validation Checklist
### Week 1-2: Hypothesis Testing
각 채널에서 최소 실험 진행
#### Test 1: 네이버 카페
**Hypothesis**: 동호회 운영진이 실제 사용할까?
**Experiment**:
- 5개 카페에 경험담 게시
- 베타 테스터 10명 모집 목표
**Success Metrics**:
- 게시글 조회수: 500+
- DM 문의: 5+
- 실제 가입: 3+
**Pivot Signal**:
- 조회수 < 100: 메시지 변경
- 문의 < 2: 채널 변경
#### Test 2: 블라인드
**Hypothesis**: 직장인들이 관심 가질까?
**Experiment**:
- "직장 생활" 게시판 2건 작성
- PDF 다운로드 20건 목표
**Success Metrics**:
- 공감 수: 10+
- 댓글: 5+
- PDF 다운로드: 20+
**Pivot Signal**:
- 공감 < 5: 타겟 불일치
- 다운로드 < 5: 오퍼 변경
### Week 3-4: Double Down
검증된 채널에 집중
**If 네이버 카페 wins**:
→ 10개 → 30개 카페로 확대
→ 성공 사례 스토리텔링
**If 블라인드 wins**:
→ 다른 직장인 커뮤니티 확대 (당근 동네생활, 에브리타임)
```
---
## Output Files
### 생성될 파일들:
1. **`docs/market/customer-segments.md`**
- Early Adopter 우선순위
- 세그먼트별 특성 및 Pain Point
- Where they are (구체적 채널)
2. **`docs/market/channel-recommendations.md`**
- Tier 1/2/3 채널 우선순위
- 채널별 비용/노력/기대효과
- 주차별 실행 계획
3. **`docs/market/persona-channel-map.md`**
- 페르소나별 고객 여정
- 채널-메시지 매칭
- 전환 경로 설계
---
## Integration Points
### 다른 명령어와의 연계:
- **From `/appkit.customer`**: Primary Persona 활용
- **From `/appkit.mvp`**: MVP 핵심 가치 → 메시지 훅
- **To `/market.contents`**: 채널별 콘텐츠 아이디어
- **To `/market.channel`**: 선택된 채널의 최적화 전략
---
## Examples
### Example 1: B2C 모바일 앱
```bash
$ /market.customer "테니스 코트 예약 앱"
🎯 Customer Segmentation Complete
Early Adopters (우선순위):
1. 테니스 동호회 운영진 (Primary)
→ 네이버 카페, 밴드
2. 직장 테니스 동아리 간사 (Secondary)
→ 블라인드, 링크드인
3. 개인 열성 플레이어 (Tertiary)
→ 인스타그램, 유튜브
Tier 1 Channels (이번 주):
✅ 네이버 카페 10개
✅ 밴드 5개
✅ 블라인드 "직장생활"
Week 1-2 Goal:
- 첫 10명 Early Adopters 확보
- 채널별 A/B 테스트
- 검증된 채널에 집중
✅ Generated customer-segments.md
✅ Generated channel-recommendations.md
✅ Generated persona-channel-map.md
```
### Example 2: B2B SaaS 툴
```bash
$ /market.customer "직장인 일정 관리 SaaS"
🎯 Customer Segmentation Complete
Early Adopters:
1. 스타트업 팀장 (5-10명 팀)
→ 링크드인, 스타트업 커뮤니티
2. 프리랜서 PM/기획자
→ 브런치, 퍼블리
Tier 1 Channels:
✅ 링크드인 (전문가 네트워킹)
✅ 디스콰이엇 (스타트업)
✅ 브런치 (콘텐츠 마케팅)
Week 1-2 Goal:
- 베타 고객 5팀 확보
- 사용 사례 확보
- 추천 바이럴 유도
✅ Generated files
```
---
## Key Principles
### Customer-First Marketing:
1. **Segment Before Scale**: 대중보다 틈새 시장 먼저
2. **Go Where They Are**: 새 채널 만들지 말고 기존 공간에 들어가기
3. **Earn Trust First**: 광고하지 말고 진짜 가치 제공
4. **Manual Initially**: 자동화 전에 직접 대화
5. **Quality > Quantity**: 1000명보다 진짜 좋아하는 10명
### Channel Anti-Patterns:
**Spray and Pray**: 모든 채널 동시 시도
**Vanity Metrics**: 팔로워 수에 집착
**Ad Dependence**: 광고비 없으면 고객 못 모으는 구조
**Broadcasting**: 일방적 홍보
**Impatience**: 첫 주에 결과 기대
---
## Tips
### 성공적인 Early Adopter 확보를 위해:
1. **Micro-Segment**: 작고 구체적인 세그먼트부터
- "테니스 좋아하는 사람" ❌
- "주말 아침 테니스 동호회 운영진" ✅
2. **Real Pain Only**: 진짜 아픈 문제만 타겟
- "있으면 좋을 것 같은데" ❌
- "이거 없으면 진짜 힘들어" ✅
3. **Community First**: 개인보다 커뮤니티
- 개인 1명 전환 < 동호회 회장 1명 전환 (20명 동반)
4. **Earn Your Way In**: 스팸하지 말고 신뢰 쌓기
- "우리 제품 써주세요" ❌
- "제가 이런 고민 해결했는데 도움 될까요?" ✅
5. **Test Fast, Pivot Faster**: 2주 안에 검증
- 반응 없으면 과감히 채널/메시지 변경
---
## Next Steps
### 이 명령어 실행 후:
**📍 다음 단계: `/market.contents`** (콘텐츠 전략)
- 타겟 채널이 정해졌으니 어떤 콘텐츠를 만들지 기획
- 하나의 핵심 메시지를 10가지 포맷으로 재활용
- 채널별 최적 콘텐츠 형식 제안
---
## Version
- **Version**: 1.0.0
- **Created**: 2025-11-20
- **Philosophy**: "Find the smallest viable audience that loves you, not the largest possible audience that's indifferent."