STEP AI · Service Architecture Analysis

AENA 서비스 프로세스 전체 분석

KT 디지털사업팀을 위한 AI 기반 미디어 운영 시스템의 서비스 구조, 데이터 흐름, 기술 스택을 상세히 분석한 문서입니다.

6
주요 파이프라인 단계
20+
백그라운드 워커
9
에피소드 상태값
15+
DB 테이블
1
AENA가 뭘 하는 시스템인가
서비스 정의와 비즈니스 목적
한 줄 정의
KT ENA 채널의 방송 영상 원본을 자동 수집하여, AI가 분석하고, YouTube용 클립/쇼츠를 자동 생산하고, 업로드/스케줄링하고, 성과를 분석·리포팅하는 End-to-End 미디어 운영 자동화 플랫폼입니다.
📈
Production Efficiency
콘텐츠 생산 효율

동일 인력, 동일 시간으로 더 많은 콘텐츠를 생산합니다. 방송 1회 분량에서 AI가 자동으로 하이라이트 클립(5~10분), 쇼츠(30~90초), PPL 감지, 메타데이터까지 생성합니다.

⚙️
Operational Efficiency
운영 업무 자동화

콘텐츠 업로드, YouTube 스케줄링, 성과 데이터 수집, 리포팅 등 반복적 운영 업무를 자동화합니다. 사람은 "승인" 버튼만 누르면 나머지는 시스템이 처리합니다.

2
전체 서비스 플로우
방송 원본 → YouTube 배포까지 6단계
📁
STEP 1
CMS 수집
KT 내부 CMS에서 방송 원본 파일을 자동 스캔·색인·다운로드
🧩
STEP 2
에피소드 구성
LLM이 파일명을 분석하여 프로그램별 에피소드로 자동 그루핑
🎬
STEP 3
영상 병합
세그먼트 파일을 YouTube용 MP4로 병합·인코딩·썸네일 추출
🤖
STEP 4
AI 분석
Gemini가 장면/클립/쇼츠/PPL 분석 및 메타데이터 자동 생성
📤
STEP 5
배포·스케줄링
클립 내보내기, YouTube 업로드, 스케줄 관리, 승인 워크플로우
📊
STEP 6
분석·리포팅
YouTube Analytics 수집, AI 인사이트 생성, 대시보드 시각화
⚠️ 핵심 포인트: 수동 승인 게이트
STEP 3(영상 병합) 완료 후, AI 분석 진입 전 반드시 사람의 수동 승인이 필요합니다. 이것이 유일한 인간 개입 지점이며, 나머지는 전부 자동입니다.
3
에피소드 생명주기
하나의 방송 에피소드가 거치는 9개 상태
pending
에피소드 생성됨
downloading
CMS에서 다운로드 중
downloaded
다운로드 완료
merging
MP4 병합 중
merged
병합 완료
splitted
분석용 분할 완료
🔒 수동 승인 대기
uploaded
Gemini에 업로드됨
analyzed
AI 분석 완료
ready
✅ 최종 완료
skipped
5분 미만 또는 CMS 삭제 → 건너뜀
4
단계별 상세 프로세스
각 단계에서 어떤 워커가 무슨 일을 하는지
1
CMS 수집 — 방송 원본 파일 자동 수집
InitialIndexing → IncrementalScan

KT 내부 CMS(콘텐츠 관리 시스템)에 저장된 방송 원본 파일을 AENA 시스템으로 가져오는 단계입니다. 초기 1회 전체 색인 후, 5분마다 증분 스캔을 수행합니다.

InitialIndexingWorker
1
CMS 연결 & 전체 스캔
sync_sources에 등록된 CMS 소스에 접속하여 전체 파일 목록을 조회
2
파일 정보 파싱
파일명, 경로, 크기, 수정일 등 메타데이터 추출
3
DB 저장
UPSERT legacy_cms_files 테이블에 색인 결과 저장
IncrementalScanWorker
1
마지막 스캔 시점 확인
sync_sources.last_scan_at 이후 변경 사항만 조회
2
변경된 파일만 스캔
Cron: 5분마다 자동 실행
3
신규 파일 발견 시 이벤트 발행
EMIT incremental-scan:completed → 다음 단계 트리거
사용되는 DB 테이블
sync_sources legacy_cms_files
2
에피소드 그루핑 — LLM 기반 파일 → 에피소드 매칭
PreMatching → EpisodeGrouping

CMS에서 수집된 개별 파일들을 "어떤 프로그램의 몇 회차인지" 판별하여 에피소드 단위로 묶는 단계입니다. LLM(대규모 언어모델)이 파일명 패턴을 분석하여 자동으로 그루핑합니다.

PreMatchingWorker
1
미매칭 파일 조회
groupingStatus가 pending인 파일들 조회
2
프로그램 패턴 매칭
파일명에서 프로그램명/회차를 추출하여 ongoing 프로그램과 매칭
3
매칭 결과 저장
matched 또는 unmatched로 상태 업데이트
EpisodeGroupingPersistenceWorker
1
LLM 파일 그루핑
AI가 파일명·메타데이터를 분석하여 에피소드 단위로 그루핑
2
에피소드 + 세그먼트 생성
INSERT episodes, episode_segments 테이블에 저장
3
그루핑 완료 이벤트
Cron: 매일 18시 또는 이벤트 트리거
사용되는 DB 테이블
legacy_cms_files programs episodes episode_segments
3
다운로드 & 병합 — CMS 파일 → YouTube용 MP4
Download → Merge → AnalysisSplitter

그루핑된 에피소드의 실제 영상 파일을 CMS에서 다운로드하고, 여러 세그먼트를 하나의 YouTube용 MP4로 병합합니다. 이후 AI 분석을 위해 50분 단위로 분할합니다.

워커역할핵심 동작출력물
EpisodeDownloadWorker CMS에서 물리 파일 다운로드 CMS Scanner로 다운로드 스트림 → BucketService에 저장 개별 세그먼트 파일들
EpisodeMergeNew 세그먼트 → MP4 병합 Timeline API로 병합 + YouTube 프리셋 인코딩
최적화 단일 영상 <30분이면 인코딩 없이 Passthrough
episode-{id}-mix-youtube.mp4
episode-{id}-clean-youtube.mp4
episode-{id}-thumbnail.jpg
EpisodeAnalysisSplitter AI 분석용 분할 Master MP4를 50분 단위로 균등 분할
5분 미만 → skipped 50분 이하 → 분할 없음
episode-{id}-analysis-{n}.mp4
🔒 이 단계 완료 후 → 수동 승인 필요
splitted 상태가 되면 관리자가 직접 확인하고 승인해야 AI 분석이 시작됩니다. 자동으로 넘어가지 않습니다.
4
AI 분석 — Gemini 기반 영상 분석 파이프라인
Upload → Prep → Scene → Clip / Shorts / PPL

Google Gemini API에 영상을 업로드하고, AI가 장면 분석 → 클립 추천 → 쇼츠 추천 → PPL 감지를 순차적으로 수행합니다. 이 단계가 AENA의 핵심 가치이며, 시스템의 존재 이유입니다.

워커역할상세
GeminiVideoUploadWorker Gemini에 영상 업로드 분석용 MP4를 Gemini File API에 업로드, 파일 URI/hash/만료일 저장
⚠️ 파일은 만료됨 → GeminiFileReuploadWorker가 재업로드 담당
GeminiAnalysisPrepWorker 분석 레코드 초기화 각 분석 유형(Scene, Clip, Shorts, PPL)에 대한 기본 레코드 생성
GeminiSceneAnalysisWorker 🎯 장면(Scene) 분석 AI가 영상을 시청하여 장면별 시작/종료 시간, 장면 설명, 분위기, 주요 인물 등을 분석
→ 이 결과가 Clip/Shorts 분석의 입력이 됨
GeminiClipAnalysisWorker 클립 추천 Scene 분석 결과를 기반으로 5~10분 하이라이트 클립 구간 추천
GeminiShortsAnalysisWorker 쇼츠 추천 30~90초 세로형(9:16) 쇼츠 구간 추천 + 16:9→9:16 화면비 변환 포인트
GeminiPplAnalysisWorker PPL 감지 간접광고(Product Placement) 노출 구간 및 브랜드 자동 식별
분석 흐름 순서
Upload
Prep
Scene 분석
Clip 분석
Shorts 분석
PPL 분석은 Scene 분석과 병렬로 실행됩니다.
5
배포 & 스케줄링 — 클립 내보내기 → YouTube 업로드
ClipExport → ClipUpload → YouTubeMetadata

AI가 추천한 클립/쇼츠를 검토(reviewed) 후, 실제 영상을 잘라내고(export), YouTube용 메타데이터를 AI가 생성하고, 스케줄에 따라 업로드합니다.

워커역할상세
EpisodeCustomClipExport 클립 영상 렌더링 Intro + 선택된 Scene들 + Outro + Overlay를 조합하여 최종 클립 영상 생성
Timeline API로 렌더링 → episode_media (type=custom-clip)
EpisodeCustomClipUpload Gemini 업로드 (메타데이터 생성용) 내보낸 클립을 Gemini에 업로드하여 AI가 영상을 "시청"할 수 있게 준비
EpisodeCustomClipYoutubeMetadata 🎯 YouTube 메타데이터 AI 생성 Gemini가 클립 영상을 분석하여 자동 생성:
제목 설명 태그 썸네일 타임스탬프
클립 상태 흐름
reviewed
exported
uploaded
metadata-generated

스케줄 관리 UI에서 캘린더 형태로 업로드 일정을 관리하며, 플랫폼·상태·프로그램별 필터링이 가능합니다.

6
분석 & 리포팅 — YouTube Analytics + AI 인사이트
SyncChannels → SyncPlaylists → SyncAnalytics → AIInsight

YouTube 채널/영상의 성과 데이터를 매일 자동 수집하고, AI가 주간/월간 인사이트를 자동 생성합니다.

워커주기역할
YouTubeSyncChannelsWorker 매일 20시 채널 정보 동기화 (구독자 수, 영상 수, 조회 수 등)
YouTubeSyncPlaylistsWorker 매일 21시 재생목록 & 영상 목록 동기화, N:M 관계 매핑
YouTubeSyncAnalyticsWorker 매일 04시 채널 일일 통계 + 영상별 일일 통계 수집 (조회수, 시청시간, 수익 등)
SpriteGeneratorWorker 이벤트 타임라인 미리보기용 스프라이트 이미지 생성 (1초 간격, 10열, 160px)
AIInsightWorker 매일 🎯 AI가 카테고리별 성과·트렌드·추천 인사이트를 자동 생성
매일: weekly / 월요일: weekly+monthly / 1일: all
대시보드에서 제공하는 데이터
구독자 증감 추이 콘텐츠 성과 (최근/인기 영상) 영상별 분석 수익 분석 고급 분석 AI LLM 분석 인사이트
5
외부 의존성 & 기술 스택
이 시스템이 의존하는 외부 서비스와 기술
🤖 Google Gemini API
영상 업로드, 장면 분석, 클립/쇼츠 추천, PPL 감지, YouTube 메타데이터 생성 등 모든 AI 분석의 핵심 엔진
6개 워커가 직접 호출 파일 만료 관리 필요
📺 YouTube Data API
채널 정보 조회, 재생목록 동기화, 영상 메타데이터 조회, 업로드 기능
OAuth 토큰 관리 API 할당량 제한
📊 YouTube Analytics API
일일 채널/영상 통계 수집 (조회수, 시청시간, 구독자 변동, 수익 데이터)
2일 지연 데이터
🗄️ KT CMS
방송 원본 파일이 저장된 KT 내부 콘텐츠 관리 시스템. 파일 스캔 및 다운로드 소스.
접근 크리덴셜 필요
🐘 PostgreSQL + PGBoss
메인 DB + Job Queue 엔진. 모든 워커가 PGBoss 이벤트로 트리거되며, 상태 관리/배치 처리를 담당.
이벤트 드리븐 Singleton 큐
🎥 FFmpeg / Timeline API
영상 병합, 인코딩, 분할, 썸네일 추출, 스프라이트 생성 등 모든 영상 처리 담당.
Resumable 인코딩 Stream Copy
6
실제 사용 시나리오
운영자 관점에서 AENA를 어떻게 쓰는가
📺 시나리오: "나는 SOLO" 231회 방송 후 YouTube 클립 배포
📁
CMS 등록
방송 후 CMS에
원본 파일 저장
방송팀 작업
🔄
자동 감지
5분 내 자동 스캔
→ 에피소드 생성
자동
🎬
자동 병합
MP4 병합
+ 썸네일 추출
자동
승인
관리자가 영상 확인
후 분석 승인 클릭
수동
🤖
AI 분석
장면/클립/쇼츠
/PPL 자동 분석
자동
👀
클립 검토
AI 추천 클립 중
배포할 것 선택
수동
📤
자동 배포
렌더링 → 메타데이터
→ 스케줄 업로드
자동
운영자가 실제로 하는 일은 딱 2가지
① 분석 승인 버튼 클릭 (영상 품질 확인 후)    ② AI 추천 클립 검토/선택 (배포할 클립 결정)
나머지 전체 프로세스(수집 → 그루핑 → 병합 → 분석 → 렌더링 → 메타데이터 → 업로드 → 통계 수집 → 인사이트)는 100% 자동입니다.
7
데이터 구조 개요
파이프라인에서 사용되는 주요 DB 테이블
CMS & 소스 관리
sync_sources
legacy_cms_files
콘텐츠 핵심
programs
episodes
episode_segments
episode_files
episode_media
files
AI 분석
custom_clip_gemini_files
episode_custom_clips
episode_custom_clip_scenes
custom_clip_youtube_metadata
ai_insights
YouTube 연동
youtube_channels
youtube_channel_tokens
youtube_playlists
youtube_videos
youtube_video_playlists
youtube_analytics_daily
youtube_analytics_video_daily
AENA Service Process Analysis · Generated from STEP AI 회사소개서 + Worker Pipeline Architecture · Confidential