Initial commit
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
560
.claude/commands/README.appkit.md
Normal file
560
.claude/commands/README.appkit.md
Normal 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(개발 준비) 분리
|
||||
279
.claude/commands/appkit.customer.md
Normal file
279
.claude/commands/appkit.customer.md
Normal 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**: "기능이 아닌 고객의 삶을 디자인하라"
|
||||
785
.claude/commands/appkit.design.md
Normal file
785
.claude/commands/appkit.design.md
Normal 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**: "설계는 기획과 구현 사이의 다리"
|
||||
506
.claude/commands/appkit.merge.md
Normal file
506
.claude/commands/appkit.merge.md
Normal 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는 맥락을 놓친다. 사람이 통합하라."
|
||||
404
.claude/commands/appkit.mvp.md
Normal file
404
.claude/commands/appkit.mvp.md
Normal 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"
|
||||
480
.claude/commands/appkit.new.md
Normal file
480
.claude/commands/appkit.new.md
Normal 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]
|
||||
```
|
||||
370
.claude/commands/appkit.sales.md
Normal file
370
.claude/commands/appkit.sales.md
Normal 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"
|
||||
430
.claude/commands/appkit.spec.md
Normal file
430
.claude/commands/appkit.spec.md
Normal 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
224
.claude/commands/docs.md
Normal 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)
|
||||
516
.claude/commands/market.channel.md
Normal file
516
.claude/commands/market.channel.md
Normal 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."
|
||||
738
.claude/commands/market.communicate.md
Normal file
738
.claude/commands/market.communicate.md
Normal 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."
|
||||
589
.claude/commands/market.contents.md
Normal file
589
.claude/commands/market.contents.md
Normal 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."
|
||||
434
.claude/commands/market.customer.md
Normal file
434
.claude/commands/market.customer.md
Normal 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."
|
||||
Reference in New Issue
Block a user