2026-04-21
YouTube Faceless Studio — 108/108 완주
작업 개요
- 레포:
1or4/youtube-faceless-studio(로컬:C:\Users\chyj1\youtube-faceless-studio) - 리서치 레포:
1or4/youtube-faceless-research(190+ 소스, 5 에이전트 딥리서치) - 세션 시작 시 스튜디오 완성도 ~40%, 리서치 스펙 대비 갭 108개 식별
- 스프린트 18개 단위로 개별 커밋 + 검증 → 전부 완료
최종 규모
- 커밋 19개 (초기 1 + S1~S18 18개)
- 17 니치 × 8 언어 × 4 티어 × 7 포맷 = 조합 3,808개
- 파이프라인 모듈 17종: script/tts/visual/music/assemble/thumbnail/seo/upload/repurpose/voice/captions/qc/live_stream/browser_upload/descript/opus_clip/remote_render
- API 라우트 11종: generate/publish/tiers/thumbnail/analytics/safety/repurpose/voice/schedule/live + health
- 트렌드 소스 6종 + 메트릭 4 + 경쟁/갭 분석
- vitest 14/14 통과
- Docker + GitHub Actions cron 준비
스프린트 히스토리
| # | 주제 | 항목 |
|---|---|---|
| S1 | BGM 파이프라인 + UI 긴급 버그 | 9 |
| S2 | 업로드 정합성 + 정책 준수 | 6 |
| S3 | 썸네일 A/B + SEO CTR 부스트 | 10 |
| S4 | 한국어 TTS + 토픽 승인 UX | 5 |
| S5 | Analytics 대시보드 | 8 |
| S6 | T3 No-code 티어 + 올인원 | 6 |
| S7 | Shorts 포맷 + 훅 오버레이 | 5 |
| S8 | 고CPM 니치 3개 | 3 |
| S9 | 3-스트라이크 + Whisper | 4 |
| S10 | 리퍼포징 4종 | 5 |
| S11 | 트렌드 소스 8종 | 8 |
| S12 | TTS 3 + 비주얼 5 확장 | 8 |
| S13 | 조립/썸네일 보강 | 8 |
| S14 | 업로드 고도화 | 6 |
| S15 | 자막 완성 | 6 |
| S16 | Suno/Artlist + Spotify 감지 | 3 |
| S17 | 니치 10 + 언어 5 + 포맷 2 | 17 |
| S18 | 인프라 마감 | 9 |
핵심 의사결정
- Vrew 공식 API 없음 → 한국어는 Edge TTS
ko-KR-SunHiNeural/InJoonNeural로 대체 (Vrew 수준 자연도) - Pictory/InVideo 올인원 provider 는 실패 시 mixed(pexels+gemini) 자동 폴백
- A/B 썸네일 YT v3 API 는 A/B 미지원 → 5변형 렌더 + Primary 교체 API + Studio 수동 등록 안내
- Shotstack/Creatomate 원격 렌더러는 옵션 (env 없으면 로컬 FFmpeg 유지)
- Playwright 업로더 는 API 쿼터 대체 백업 — storageState 1회 로그인 재사용
- Selenium/MJ 는 비공식 API 브릿지 — skeleton 만, env 없으면 skip
YouTube 정책 준수
alteredOrSyntheticContent='synthetic'자동 공시- 3-스트라이크 하드 게이트 (90일 만료)
- 일 12+ 업로드 하드 블록 (env 무관)
- 인간 리뷰 서명 로그 (
.tokens/reviews.json) - 템플릿 다양화 감지 (Jaccard 0.55)
- 스크립트 프롬프트 독창성 강제
- Chromaprint + AcoustID 상업곡 감지 + BGM 자동 제거
배포
- Dockerfile 준비 (Node 22 + ffmpeg + chromaprint + tini)
- Nexus Web First 원칙 따라 Docker 웹 배포 권장
- Electron/pkg 는 대안 (DEPLOY.md 참조)
다음 단계 제안
- 대표님 환경변수
.env채우기 (.env.example 참고) - YouTube OAuth 초기화 (
node scripts/oauth-init.js) — scope 재발급 필요 (analytics 추가됨) - YAL 풀에 니치별 무료 BGM 채우기 (
assets/music/yal/{niche}/*.mp3) - 첫 배치 테스트 (free 티어, manual topic)
- 결과 검증 → paid 티어 키 입력 순서