UGREEN DXP4800PLUS NAS로 유튜브 쇼츠 자동화 시스템 구축기 (Docker · FastAPI · PostgreSQL · Edge-TTS)
집에 NAS가 있다면 유튜브 쇼츠 자동화 시스템을 직접 구축할 수 있다. 이 글은 UGREEN DXP4800PLUS NAS 위에서 실제로 운영 중인 쇼츠 자동화 파이프라인 구축 과정을 기록한 실전 후기다.
현재 운영 현황 (2026년 6월 기준)
- 수집 영상: 676개
- 저장 스냅샷: 38,134개
- 성장률 계산 성공률: 95.1%
- 트렌드 클러스터: 10종 (IT_DEVICE, AI/자동화, 연예/엔터 등)
- 자동 영상 생성: Video Factory v2 개발 중
단순 성공 사례가 아니다. FastAPI 404 오류, 분류기 정확도 문제, 영상 생성 실패까지 실제 겪은 삽질과 해결 과정을 함께 담았다.
전체 파이프라인 구조
YouTube API 수집 (30분마다)
↓
PostgreSQL 저장
↓
성장률 계산
↓
content_cluster 분류 (10종)
↓
format_type 분류 (6종)
↓
트렌드 대시보드
↓
AI 대본 자동 생성
↓
Edge-TTS 음성 생성
↓
FFmpeg 영상 합성
↓
drafts 폴더 저장처음에는 간단한 스크립트 몇 개면 끝날 줄 알았다. 실전은 달랐다.
FastAPI app.mount("/") 사용 시 API 404 오류 해결 방법
FastAPI에서 정적 파일을 서빙할 때 이런 코드를 썼다.
# 오류 코드 - API가 전부 404
app.mount("/", StaticFiles(directory="static", html=True), name="static")
@app.get("/api/trends")
async def get_trends():
...API 호출마다 404가 났다. 원인은 라우팅 우선순위였다. app.mount("/")가 상단에 있으면 뒤에 선언된 모든 엔드포인트가 무시된다.
# 해결 코드 - 항상 mount는 마지막 줄
@app.get("/api/trends")
async def get_trends():
...
app.mount("/", StaticFiles(directory="static", html=True), name="static")이 규칙 하나 때문에 같은 실수를 여러 번 반복했다.
YouTube 트렌드 수집기에서 AI 콘텐츠가 안 잡히는 이유
처음에 AI_AUTOMATION 클러스터로 분류된 영상이 499개 중 단 1개였다.
원인이 두 가지였다.
첫째, 수집 소스가 한국 급상승 위주였다. 한국 유튜브 급상승은 드라마, 연예, 뉴스가 압도적이다. AI/IT 콘텐츠가 애초에 없었다.
# 기존
collect_popular(region="KR") # 한국 급상승
collect_shorts_search(q="쇼츠") # 한국 쇼츠
# 개선: 글로벌 키워드 + 채널 추가
collect_global_keywords(["ChatGPT shorts", "Claude AI", "n8n automation"])
collect_global_channels(["MKBHD", "Techquickie", "Linus Tech Tips"])둘째, 분류기가 영어 키워드를 잡지 못했다. IT_DEVICE 클러스터를 새로 만들고 영어 키워드를 대폭 추가했다.
결과: AI_AUTOMATION 1개 → 61개, IT_DEVICE 0개 → 89개
왜 드라마 쇼츠는 자동화가 어렵고 IT 쇼츠는 쉬운가
자동 영상 생성을 처음 돌렸을 때 결과물이 처참했다. 트렌드 1위 드라마 쇼츠 대본으로 영상을 만들었는데, 배경에 여자 눈 클로즈업이 무한 루프로 돌아가고 자막은 음성과 전혀 맞지 않았다.
여기서 중요한 걸 배웠다.
| 자동화 가능 | 자동화 어려움 |
|---|---|
| IT 제품 스펙 비교 | 드라마/감정 연출 |
| AI 도구 소개 | 연예/셀럽 가십 |
| 랭킹/차트 정보 | 스토리텔링 |
| 앱 사용법 가이드 | 반전/충격 연출 |
드라마는 배우 표정, 타이밍, 감정선이 핵심이다. 자동화가 불가능하다. IT 제품은 제품 이미지와 스펙 텍스트면 된다. 현재는 IT_DEVICE와 AI_AUTOMATION 클러스터만 영상 자동 생성 대상으로 제한했다.
사용 기술 스택
- 하드웨어: UGREEN DXP4800PLUS [Intel Pentium Gold 8505 (5코어 / 8GB DDR5)]
- 컨테이너: Docker + Docker Compose
- 백엔드: FastAPI + Python 3.11
- DB: PostgreSQL 15
- 수집: YouTube Data API v3
- AI: OpenRouter (AI 언어 모델)
- TTS: Edge-TTS (한국어 음성)
- 영상: FFmpeg 5.1
현재 진행 상황
- 데이터 수집 파이프라인
- 성장률 계산 엔진
- 콘텐츠 분류기 v3
- AI 대본 생성
- Edge-TTS 음성 생성
- 자막 타이밍 동기화 (개선 중)
- 블로그 자동 발행 (준비 중)
자막 동기화 문제는 Edge-TTS의 --write-subtitle 옵션으로 해결할 예정이다. 다음 글에서 이어서 다룬다.
관련 글
- UGREEN DXP4800PLUS NAS로 AI 자동화 시스템 구축하기 (전체 가이드)
- FastAPI app.mount 사용 후 API가 404가 되는 이유와 해결 방법
- YouTube Data API 쿼터 초과를 피하는 방법 (700개 쇼츠 수집 사례)
- UGREEN DXP4800PLUS NAS에 Docker 설치하기 (초기 설정부터 컨테이너 실행까지)
💡 n8n, FastAPI, AI 파이프라인 등 자동화 구축 문의는 블로그 상단 메뉴를 통해 연락 주세요.
댓글
댓글 쓰기