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 파이프라인 등 자동화 구축 문의는 블로그 상단 메뉴를 통해 연락 주세요.

댓글

이 블로그의 인기 게시물

YouTube Data API 쿼터 초과를 피하는 방법 (700개 쇼츠 수집 사례)

FastAPI app.mount 사용 후 API가 404가 되는 이유와 해결 방법