KT 디지털사업팀을 위한 AI 기반 미디어 운영 시스템의 서비스 구조, 데이터 흐름, 기술 스택을 상세히 분석한 문서입니다.
동일 인력, 동일 시간으로 더 많은 콘텐츠를 생산합니다. 방송 1회 분량에서 AI가 자동으로 하이라이트 클립(5~10분), 쇼츠(30~90초), PPL 감지, 메타데이터까지 생성합니다.
콘텐츠 업로드, YouTube 스케줄링, 성과 데이터 수집, 리포팅 등 반복적 운영 업무를 자동화합니다. 사람은 "승인" 버튼만 누르면 나머지는 시스템이 처리합니다.
KT 내부 CMS(콘텐츠 관리 시스템)에 저장된 방송 원본 파일을 AENA 시스템으로 가져오는 단계입니다. 초기 1회 전체 색인 후, 5분마다 증분 스캔을 수행합니다.
CMS에서 수집된 개별 파일들을 "어떤 프로그램의 몇 회차인지" 판별하여 에피소드 단위로 묶는 단계입니다. LLM(대규모 언어모델)이 파일명 패턴을 분석하여 자동으로 그루핑합니다.
그루핑된 에피소드의 실제 영상 파일을 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 |
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) 노출 구간 및 브랜드 자동 식별 |
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가 클립 영상을 분석하여 자동 생성: 제목 설명 태그 썸네일 타임스탬프 |
스케줄 관리 UI에서 캘린더 형태로 업로드 일정을 관리하며, 플랫폼·상태·프로그램별 필터링이 가능합니다.
YouTube 채널/영상의 성과 데이터를 매일 자동 수집하고, AI가 주간/월간 인사이트를 자동 생성합니다.
| 워커 | 주기 | 역할 |
|---|---|---|
| YouTubeSyncChannelsWorker | 매일 20시 | 채널 정보 동기화 (구독자 수, 영상 수, 조회 수 등) |
| YouTubeSyncPlaylistsWorker | 매일 21시 | 재생목록 & 영상 목록 동기화, N:M 관계 매핑 |
| YouTubeSyncAnalyticsWorker | 매일 04시 | 채널 일일 통계 + 영상별 일일 통계 수집 (조회수, 시청시간, 수익 등) |
| SpriteGeneratorWorker | 이벤트 | 타임라인 미리보기용 스프라이트 이미지 생성 (1초 간격, 10열, 160px) |
| AIInsightWorker | 매일 | 🎯 AI가 카테고리별 성과·트렌드·추천 인사이트를 자동 생성 매일: weekly / 월요일: weekly+monthly / 1일: all |