PRD (제품 요구사항 명세서)
프로젝트 전체 기능 명세, 아키텍처, 배포 가이드
톡탁(TokTak) 클론 - Product Requirements Document (PRD)
프로젝트명: TokTak Clone (ad.uschool.kr)
버전: 1.0.0
작성일: 2026-03-09
도메인: https://ad.uschool.kr
기술 스택: PHP 8.2+ / MySQL 8.0 / Redis 7 / Nginx / Docker
원본 서비스: https://toktak.ai (보다플레이 VodaPlay)
1. 프로젝트 개요
1.1 목적
AI 기반 SNS 콘텐츠 자동화 플랫폼. 사용자가 상품 URL 하나만 입력하면 AI가 자동으로 쇼츠 영상, SNS 카드뉴스, 블로그 글을 동시에 생성하고, 연동된 SNS 채널에 자동 업로드까지 완료하는 풀오토메이션 시스템.
1.2 핵심 가치
- •원클릭 콘텐츠 생성: URL → 영상 + 이미지 + 블로그 (6크레딧/회)
- •AI 감지 회피: 사람이 쓴 것처럼 자연스러운 한국어 콘텐츠
- •스마트 자동 업로드: SNS별 최적 시간대에 자동 게시
- •수익 창출: 파트너스 + 어필리에이트 + 구독 기반 수익모델
2. 시스템 아키텍처
2.1 기술 스택
| 구분 | 기술 | 버전 |
|---|---|---|
| Backend | PHP (Custom MVC) | 8.2+ |
| Database | MySQL | 8.0 |
| Cache/Session | Redis | 7 |
| Web Server | Nginx | Alpine |
| AI Engine | OpenAI API (GPT-4, TTS, DALL-E) | Latest |
| Video | FFmpeg | 6.0+ |
| Frontend | Tailwind CSS + Alpine.js + HTMX | 3.x |
| Container | Docker + Docker Compose | 3.8 |
| CI/CD | GitHub Actions | Latest |
| SSL | Let's Encrypt (Certbot) | Latest |
| 결제 | Stripe | 2024-04-10 |
2.2 디렉토리 구조
toktak-clone/
├── app/
│ ├── Config/ # Database, Router 핵심 설정
│ ├── Controllers/ # 10개 컨트롤러 (Auth, Content, SNS, Partner 등)
│ │ ├── Api/ # API 컨트롤러 (Voice, ContentSettings)
│ │ └── Admin/ # 관리자 컨트롤러 (Revenue)
│ ├── Services/ # 비즈니스 로직
│ │ ├── AI/ # ContentGenerator, ImageGenerator, VideoGenerator, HumanizeService
│ │ ├── SNS/ # SnsUploader
│ │ └── Scheduler/ # SnsScheduler (자동 업로드)
│ └── Views/ # PHP 템플릿 (10개 뷰)
├── chrome-extension/ # 크롬 확장프로그램 (Manifest V3)
├── config/ # app, database, services 설정
├── database/migrations/ # SQL 마이그레이션 (2개)
├── docker/ # Nginx, PHP 설정
├── public/ # index.php (진입점)
├── routes/ # web.php (80+ 라우트)
└── Docker/CI 파일들
2.3 인프라 구성도
[사용자] → [Nginx (443/SSL)] → [PHP-FPM (9000)]
↓
[MySQL] [Redis]
↓
[OpenAI API] [FFmpeg]
↓
[SNS APIs: YouTube, Instagram, TikTok, Twitter, Naver]
3. 핵심 기능 명세
3.1 콘텐츠 생성 파이프라인
Flow: URL 입력 → 스크래핑 → AI 분석 → 콘텐츠 생성 → 결과 표시
| 단계 | 기능 | 파일 |
|---|---|---|
| Step 0 | URL 입력 + "생성하기" 버튼 | Views/dashboard/index.php |
| Step 1 | 콘텐츠 타입/템플릿/시간 선택 | Views/content/create.php |
| Step 2 | 스크립트 편집, 음성 미리듣기, 자막/BGM 설정 | Views/content/create-step2.php |
| Step 3 | AI 분석 진행 (4단계 프로그레스) | Views/content/analysis.php |
| Step 4 | 결과 (영상 + 이미지 + 블로그) | Views/content/result.php |
생성물 (1회 = 6크레딧):
- •9:16 세로 영상 (15s / 30s / 60s) + TTS 나레이션 + 자막 + BGM
- •SNS 카드뉴스 이미지 (4가지 템플릿)
- •SEO 최적화 블로그 글 (1000~2000자)
3.2 음성 미리듣기 시스템
10개 AI 보이스 (6 여성 + 4 남성):
| ID | 이름 | OpenAI Voice | 성별 |
|---|---|---|---|
| documentary_female | 다큐 나레이션 | nova | 여 |
| ai_assistant_female | AI 어시스턴트 | shimmer | 여 |
| ad_narrator_female | 광고 나레이터 | echo | 여 |
| news_anchor_female | 뉴스 앵커 | alloy | 여 |
| kindergarten_female | 유치원 선생님 | nova (pitch) | 여 |
| asmr_female | ASMR | shimmer (slow) | 여 |
| finance_male | 경제 전문가 | onyx | 남 |
| radio_dj_male | 라디오 DJ | fable | 남 |
| lecturer_male | 강사/교수 | echo (male) | 남 |
| business_male | 비즈니스 | onyx (formal) | 남 |
- •TTS API 미리듣기 + Web Speech API 폴백
- •세션 기반 오디오 캐싱 (1시간 TTL)
- •속도 조절 (0.75x ~ 2.0x)
3.3 SNS 자동 업로드 스케줄러
파일: app/Services/Scheduler/SnsScheduler.php
| 플랫폼 | 주간 빈도 | 최적 시간대 | 요일 |
|---|---|---|---|
| YouTube | 주 2-3회 | 14:00-18:00 | 화/목/토 |
| 일 1-2회 | 11:00-13:00, 19:00-21:00 | 매일 | |
| TikTok | 일 1-3회 | 07:00-09:00, 12:00-14:00, 19:00-22:00 | 매일 |
| Twitter/X | 일 3-5회 | 08:00-09:00, 12:00-13:00, 18:00-19:00 | 매일 |
| 네이버 블로그 | 일 1회 | 09:00-11:00 | 평일 위주 |
Human-like 패턴:
- •±15~45분 랜덤 지터 (정확한 시간 회피)
- •8~20% 확률로 업로드 건너뛰기
- •주말 패턴 차별화 (늦은 시작, 적은 빈도)
- •연속 업로드 간 최소 30분 간격
3.4 AI 감지 회피 시스템 (HumanizeService)
파일: app/Services/AI/HumanizeService.php
| 기법 | 설명 |
|---|---|
| 톤 변환 | 격식체 → 비격식체 (ㅎㅎ, ㅋㅋ, 진짜, 완전 등) |
| 감정 삽입 | 개인 경험/감정 문구 자동 추가 ("저도 써봤는데 대박이에요") |
| 의도적 불완전성 | 3% 확률 띄어쓰기 오류, 5% 마침표 누락 |
| 플랫폼별 톤 | Instagram=캐주얼, YouTube=친근전문, Blog=상세존댓말, TikTok=초캐주얼 |
| 메타데이터 자연화 | 기기/앱 정보 시뮬레이션, 수정 이력 생성 |
| 구조 변형 | 문장 순서 셔플, 접속사/간투사 삽입 |
3.5 멀티 플랫폼 스크래핑
파일: app/Services/Scraper/ProductScraper.php
지원 플랫폼: 쿠팡, 알리익스프레스, 네이버 스마트스토어, 11번가, G마켓, 아마존, 일반 웹페이지
추출 데이터: 상품명, 가격, 이미지(최대 10장), 상세 설명, 평점, 리뷰 수, 카테고리
24시간 캐시 + User-Agent 로테이션
3.6 크롬 확장프로그램
디렉토리: chrome-extension/
- •Manifest V3 기반
- •7개 쇼핑몰 자동 인식 + 상품 데이터 추출
- •원클릭 콘텐츠 생성 (팝업 UI)
- •실시간 진행률 추적 + 완료 알림
- •Bearer 토큰 인증 (chrome.storage)
4. 수익 모델
상세 문서: REVENUE_MODEL.md
4.1 주요 수익원
| 수익원 | 모델 | 예상 비중 |
|---|---|---|
| 구독 요금제 | 무료/₩19,900/₩49,900/₩89,900 월 | 45% |
| 크레딧 추가 구매 | ₩9,900~₩119,900 패키지 | 25% |
| 파트너스 수수료 | 추천 커미션 10~30% | 15% |
| 어필리에이트 | 쿠팡/알리 제휴 링크 전환 | 10% |
| API 판매 | 개발자용 콘텐츠 생성 API | 5% |
4.2 구독 플랜 상세
| 플랜 | 월 가격 | 크레딧 | SNS 채널 | AI 모드 | 주요 기능 |
|---|---|---|---|---|---|
| 무료 | ₩0 | 30 | 2개 | 기본 | 15초 영상 |
| 스타터 | ₩19,900 | 100+50보너스 | 5개 | 기본 | 30초, 비디오 에디팅, 블로그 |
| 프로 | ₩49,900 | 300+100보너스 | 무제한 | 프로 | 60초, 에이전트, 다국어, 분석 |
| 엔터프라이즈 | ₩89,900 | 1000+300보너스 | 무제한 | 엔터프라이즈 | API, 화이트라벨, 전담매니저 |
연간 결제: 20% 할인
4.3 12개월 수익 예측
| 월 | 유료 사용자 | 월 매출(₩) |
|---|---|---|
| 1 | 50 | 2,670,000 |
| 3 | 200 | 8,310,000 |
| 6 | 550 | 20,280,000 |
| 12 | 1,200 | 37,360,000 |
| 연간 합계 | ₩220,400,000 |
5. 데이터베이스 스키마
5.1 마이그레이션 파일
| 파일 | 테이블 수 | 설명 |
|---|---|---|
001_create_tables.sql | 17개 | 핵심 테이블 (users, contents, sns_channels 등) |
002_revenue_tables.sql | 8개 | 수익 관련 (subscription_plans, referral_codes 등) |
5.2 핵심 테이블 목록 (총 25개)
사용자/인증: users, audit_logs
콘텐츠: contents, content_items, scrape_cache
SNS: sns_channels, upload_jobs, upload_logs
수익: subscription_plans, credit_packages, credit_transactions, subscriptions
파트너스: partners, partner_earnings, referral_codes, referral_tracking
어필리에이트: affiliate_links, short_url_clicks
결제: stripe_sessions, payout_requests
기타: multi_links, multi_link_items, follow_exchanges, notifications
6. API 엔드포인트
6.1 웹 라우트 (80+)
| 그룹 | 라우트 수 | 인증 필요 |
|---|---|---|
| Auth (인증) | 7 | 일부 |
| Dashboard | 2 | O |
| Content (콘텐츠) | 7 | O |
| SNS (소셜) | 10 | O |
| MultiLink | 6 | O |
| Follow | 5 | O |
| Pricing (요금) | 4 | 일부 |
| Partner (파트너스) | 5 | O |
| Credits (크레딧) | 1 | O |
| Guide | 2 | X |
| Profile | 5 | O |
| Admin (관리자) | 12 | O (admin) |
| API | 14 | API Key |
| Webhook | 1 | Signature |
| Health | 1 | X |
6.2 주요 API 엔드포인트
POST /api/content/generate # AI 콘텐츠 생성
POST /api/scrape/url # URL 스크래핑
POST /api/voice/preview # 음성 미리듣기
POST /api/content/save-settings # 설정 저장
POST /api/content/recommend-style # AI 스타일 추천
POST /api/upload/sns # SNS 업로드
GET /api/credits/balance # 크레딧 조회
GET /api/analytics/overview # 통계 개요
7. 보안 설정
7.1 Nginx 보안 헤더
- •X-Frame-Options: SAMEORIGIN
- •X-Content-Type-Options: nosniff
- •X-XSS-Protection: 1; mode=block
- •Content-Security-Policy
- •Strict-Transport-Security (HSTS)
- •Referrer-Policy: strict-origin-when-cross-origin
7.2 애플리케이션 보안
- •CSRF 토큰 (모든 POST 요청)
- •Stripe Webhook 서명 검증
- •OAuth 2.0 (Google, Facebook)
- •Bearer Token API 인증
- •Rate Limiting (API: 1000r/m, Upload: 10r/m)
- •SESSION_SECURE=true, SESSION_DOMAIN=ad.uschool.kr
7.3 SSL/TLS
- •Let's Encrypt 자동 갱신 (Certbot)
- •TLSv1.2 + TLSv1.3
- •HTTP → HTTPS 자동 리다이렉트
8. 배포 가이드
8.1 서버 요구사항
| 항목 | 최소 | 권장 |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB | 8 GB |
| Storage | 50 GB SSD | 100 GB SSD |
| OS | Ubuntu 22.04 | Ubuntu 22.04 |
| Docker | 24.0+ | Latest |
8.2 배포 단계
# 1. 서버에 프로젝트 업로드
scp toktak-clone.zip user@ad.uschool.kr:~/
# 2. 압축 해제
unzip toktak-clone.zip && cd toktak-clone
# 3. 환경 설정
cp .env.docker .env
nano .env # API 키, DB 비밀번호 등 수정
# 4. SSL 인증서 발급
docker-compose -f docker-compose.yml -f docker-compose.prod.yml run certbot
# 5. Docker 빌드 및 실행
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build
# 6. DB 마이그레이션 확인
docker exec toktak-app php -r "echo 'PHP OK';"
# 7. 헬스 체크
curl https://ad.uschool.kr/health
8.3 필수 환경변수 (.env)
APP_URL=https://ad.uschool.kr
OPENAI_API_KEY=sk-... # OpenAI API 키 (필수)
DB_PASSWORD=<강력한비밀번호> # MySQL 비밀번호
REDIS_PASSWORD=<강력한비밀번호> # Redis 비밀번호
STRIPE_SECRET_KEY=sk_live_... # Stripe 결제 키
GOOGLE_CLIENT_ID=... # Google OAuth
YOUTUBE_API_KEY=... # YouTube 업로드용
INSTAGRAM_APP_ID=... # Instagram 연동
TIKTOK_CLIENT_KEY=... # TikTok 연동
9. 파일 목록 (86개)
9.1 코드 통계
| 구분 | 파일 수 | 코드 라인 |
|---|---|---|
| PHP (Controllers) | 12 | ~5,500 |
| PHP (Services) | 7 | ~3,200 |
| PHP (Views) | 10 | ~4,500 |
| PHP (Config/Routes) | 8 | ~1,800 |
| SQL (Migrations) | 2 | ~880 |
| JS (Chrome Ext) | 3 | ~1,050 |
| HTML/CSS | 3 | ~500 |
| Docker/CI/Deploy | 8 | ~550 |
| 합계 | 86 | ~16,000 |
9.2 주요 파일 경로
# 핵심 코드
app/Controllers/ContentController.php # 콘텐츠 생성 위자드
app/Controllers/PartnerController.php # 파트너스 시스템
app/Services/AI/ContentGenerator.php # GPT-4 콘텐츠 생성
app/Services/AI/VideoGenerator.php # FFmpeg 영상 합성
app/Services/AI/HumanizeService.php # AI 감지 회피
app/Services/Scheduler/SnsScheduler.php # 자동 업로드 스케줄러
app/Services/Scraper/ProductScraper.php # 멀티플랫폼 스크래핑
# 프론트엔드
app/Views/content/create-step2.php # 음성 미리듣기 (핵심 UI)
app/Views/pricing/index.php # 요금제 페이지
app/Views/partner/dashboard.php # 파트너스 대시보드
# 데이터베이스
database/migrations/001_create_tables.sql # 17개 핵심 테이블
database/migrations/002_revenue_tables.sql # 8개 수익 테이블
# 크롬 확장
chrome-extension/manifest.json # Manifest V3
chrome-extension/content/content-script.js # 상품 추출
chrome-extension/popup/popup.html # 팝업 UI
# 배포
docker-compose.yml # 개발 환경
docker-compose.prod.yml # 프로덕션 환경
docker/nginx/default.conf # Nginx (ad.uschool.kr)
.github/workflows/deploy.yml # CI/CD
10. 향후 로드맵
Phase 2 (3~6개월)
- •[ ] 모바일 앱 (React Native)
- •[ ] Chrome 확장프로그램 프리미엄 (₩4,900/월)
- •[ ] 쓰레드(Threads) / 블루스카이 SNS 추가
- •[ ] A/B 테스트 시스템
Phase 3 (6~12개월)
- •[ ] AI 학습 마켓플레이스
- •[ ] 브랜드 협업 매칭 시스템
- •[ ] 다국어 지원 (일본어, 영어, 베트남어)
- •[ ] 어드민 대시보드 고도화
Phase 4 (12~18개월)
- •[ ] B2B SaaS 솔루션
- •[ ] 해외 시장 진출 (일본, 동남아)
- •[ ] 자체 AI 모델 파인튜닝
- •[ ] 월 ₩490M 매출 목표
부록
A. 관련 문서
- •
ANALYSIS.md- 원본 TokTak 서비스 상세 분석 - •
REVENUE_MODEL.md- 수익 모델 상세 (969줄) - •
README.md- 프로젝트 개요 - •
SETUP.md- 설치 가이드
B. 외부 의존성
- •OpenAI API (GPT-4, TTS, DALL-E)
- •Stripe (결제)
- •Google/Facebook OAuth
- •YouTube/Instagram/TikTok/Twitter/Naver API
- •FFmpeg (영상 합성)
- •Let's Encrypt (SSL)
C. 라이선스
학습 및 참고용 프로젝트. 상업적 사용 시 원본 서비스(toktak.ai) 라이선스 확인 필요.