본문으로 건너뛰기
강의자료 업로드 화면 — PPT·PDF 파일을 끌어 놓거나 눌러 올리고, 원고 형태(학문·일반)를 고르는 화면

AI 서비스 › 영상 자동 제작

강의자료 → 영상 자동 생성 서버

슬라이드를 올리면 대본·음성·영상까지 로컬 모델로 만드는 사내망 서버 — 개발서버 2대 연동, 전 구간 기능 검증 중

검증 중
기간
2026.06 ~ 2026.10 (작업 기록 기준(문서 관측 2026.06 ~ 10 · 실제 참여 기간 미확정))
상태
CPU 앱 서버·GPU 추론 서버 연동 완주(2026.09) 뒤 전 구간 기능 검증에 사용 중 · 운영 전환 전 · 실자료 부하·운영 안정성·고객 검증 남음
맥락
현 직장(유비온) · 대기업 고객사 사내 교육 플랫폼 과제
역할
파이프라인·2대 분리·운영 전환 요구 정의, LLM 백엔드 선택과 모델 비교 기준 정의, 개발용 프록시의 적용 범위와 검증 종료 시점 결정, GPU 서버 작업 직접 실행
구현
구현·문서·시험 Claude Code(실행) · 교차 검증 Codex · GPU 서버 설치 작업은 본인 직접 실행
기술
Rust(Axum·Tokio·SSE), llama.cpp(CUDA)·mlx-vlm, Gemma 4 26B-A4B(vision), Supertonic(ONNX TTS), LibreOffice·pdfium, FFmpeg(libx264), Redis(선택·폴백), Docker 오프라인 번들, Rocky Linux 9

핵심 수치.

실측

합본 157초·1080p

대상 OS와 같은 컨테이너 2대를 완전히 초기화하고 오프라인 번들만으로 전 구간 리허설, 2026.08

집계

결함 6건(치명 2)

리허설로 반입 전에 찾아 고친 결함 — 한글 폰트 누락·설치 차단 포함, 2026.08

실측

4.67초·9.43초·19.30초

TTS 동시 요청 1·2·4건 처리 시간 — 완전 직렬 확인, Supertonic ONNX, 개발 맥, 2026.08

개요

강사가 만든 PPTX·PDF 슬라이드를 올리면 분석 → 강의 대본 → 음성 → 영상 → 통합 묶음까지 자동으로 만드는 서버다. 외부 API 없이 사내망(외부 인터넷이 막힌 고객 사내 네트워크) 로컬 모델로만 동작한다. 맥 1대에서 돌던 PoC를 CPU 앱 서버 + GPU 추론 서버 2대 구성으로 옮겨 고객사 개발서버에 올렸고, 두 서버 연동을 마친 뒤 전 구간 기능 검증 중이다(운영 전환 전).

문제

  • 서버에 인터넷이 없어 외부 LLM·TTS API를 쓸 수 없고, 대상 서버에서 빌드·다운로드도 못 해 오프라인 묶음으로만 배포할 수 있었다.
  • 현장에서 발견한 결함은 그 자리에서 고칠 수 없다 — 패키지 하나가 빠지면 반입 절차를 다시 밟아야 한다.
  • 슬라이드 글자만 긁으면 강사처럼 설명하지 못해 이미지를 읽는 멀티모달 모델이 필요했고, LLM(GPU)과 TTS(CPU)가 한 대에서 자원을 다퉜다.
  • 「동시 사용자 몇 명까지 되나」에 답할 근거가 없었다.

본인 역할

구현·문서·시험은 AI 에이전트(Claude Code 실행·Codex 검증)가 했다. 아래는 결정·지시·실행 기록이 있는 것만 적었다. 오프라인 설치 리허설과 검증 루프를 누가 돌렸는지는 기록이 없어 본인 역할로 적지 않는다.

  • 파이프라인, CPU·GPU 2대 분리, 운영 전환 요구사항을 정의했다.
  • LLM 백엔드 선택지(Ollama·OpenAI 호환·mlx-vlm·llama.cpp)와 모델 비교 기준을 정의했다.
  • 개발자용 LLM 프록시의 적용 범위와 검증 종료 시점을 결정했고, 실서버와 비슷한 구조의 통합 시연을 요청한 뒤 시연용 추론을 도커 CPU 실행에서 맥 네이티브(Metal) 실행으로 바꾸라고 지적했다.
  • GPU 서버 설치 작업을 서버에서 직접 실행했다.

핵심 판단

  1. TTS는 CPU 전용·한 번에 하나, GPU는 LLM 전용 — 설정에는 동시 TTS 2가 있었지만 코드는 1로 고정돼 있었다. 동시 요청 1·2·4건이 4.67초·9.43초·19.30초로 완전히 직렬이었고, 요청 1건이 CPU 약 9코어를 썼다. 동시 처리의 제약은 설정값이 아니라 엔진 인스턴스 수라는 것이 확인돼 이 정책이 확정됐다.
  2. 반입 전, 완전 초기화 환경에서 끝까지 한 번 돌린다 — 대상 OS와 같은 컨테이너 2대를 지우고 오프라인 묶음만으로 설치해 업로드부터 합본까지 돌렸다. 설치 성공과 동작 성공은 다르고, 폰트·로케일·코덱 문제는 마지막 산출 단계에서만 드러나기 때문이다.
  3. 모델 교체는 공개 벤치로 후보만 고르고, 판정은 자체 루브릭·속도 실측으로 — 다른 계열 모델이 공개 벤치에서 앞서도 한국어 강의 대본 품질은 벤치에 없다. 비교표를 먼저 만들고 재생 비교·완주·서버 실측 뒤에 결정하도록 기준을 세웠다(최종 교체 결정은 대기).
  4. 개발용 LLM 호출은 본편을 고치지 않는 탈부착 프록시로 — 개발자가 로컬 PC에서 개발서버의 LLM을 쓰게 하되, 본편 소스와 운영 묶음은 건드리지 않고 운영 전환 때 통째로 떼어 내도록 했다.

화면과 구성도

강의자료 → 영상 자동 생성 서버 구성도
구성도 — 직접 그린 그림(내부 주소·서버 이름 없음)
업로드 화면 — 슬라이드 파일만 올리면 분석·대본·음성·영상이 이어진다(제품 이름·회사 표기·파일 형식 아이콘은 가림)
처리 흐름 — CPU 서버가 문서 변환·음성·영상을, GPU 서버가 슬라이드 판독·대본만 맡는다(소요 시간은 개발 맥 관측치, 포트·제품명·서버 사양은 가림)

과정

  • PoC(2026.08 초): 맥 1대에서 전 과정을 구동했다. 앱은 처음부터 2대 구성을 전제로 짜여 있어 분리에 코드 변경이 거의 필요 없었다.
  • 측정·리허설(2026.08): TTS 동시성 실측으로 CPU 직렬 정책이 확정됐고, 완전 초기화 리허설로 결함 6건(치명 2 — 한글 폰트가 없어 슬라이드가 □□□로 나옴, 환경변수 검사가 GPU 설치를 막음)이 반입 전에 고쳐졌다.
  • AI 준비 확인 관문(2026.08): AI 서버가 죽어 있어도 업로드가 성공해 사용자가 자기 자료 탓으로 오해하는 문제가 있었다. 준비 확인을 분석 시작 지점에 두고, 실패하면 503과 [분석 다시 시작] 복구 경로를 주도록 바뀌었다.
  • 배포 오진(2026.08): 배포 스크립트의 || 폴백이 임시 경로 성공을 배포 성공으로 보이게 했다. 이후 배포마다 파일 해시를 대조하는 절차가 들어갔다.
  • 개발서버(2026.08 ~ 09): GPU 서버 설치 → CPU 서버 할당·설치 → 두 서버 연동 완주(3장 자료로 업로드 → 추출 → 분석 → 대본, 실측).
  • 실사용 자료 결함(2026.09): 사용자 자료로 시험하자 자료 추출 실패·문서 변환 무한 대기·보안 문서 처리 결함이 나왔고, 수정판이 세 번 배포됐다. 보안 문서 건은 이전 판으로 바꿔도 같은 증상이어서, 앱이 아니라 사용자 PC의 문서보안이 파일에 다시 씌워지는 것으로 원인이 확정됐다. 앱은 그런 파일을 기다리지 않고 바로 안내하도록 보완됐다.
  • 전 구간 기능 검증(2026.09 ~ ): 업로드부터 합본까지 기능 검증에 쓰고 있다.

결과

  • 오프라인 전 구간 성공 — 합본 157초·1920×1080·h264+aac(초기화한 컨테이너 2대, 리허설 실측).
  • TTS 처리 속도는 실시간의 3.2배(1,248자 → 53.9초 합성 / 173.8초 오디오, 개발 맥 실측)로, 동시 처리 상한을 산정하는 기준이 됐다.
  • 두 서버 연동 완주(2026.09) — 음성·영상 합본까지 전 구간은 개발서버에서 검증 중이다.
  • 60초 시연 영상과 소개·통합보고서 시리즈가 나왔다. 사용자 효과는 근거가 없다(운영 전).

한계와 다음 단계

  • 실자료 부하·운영 안정성·고객 검증이 남았고, 동시 사용자·처리량·정확도 수치는 없다.
  • 인증·큐·업로드 제한을 PoC 후반에야 넣어 다중 사용자 시험이 늦어졌다.
  • 개발용 LLM 프록시는 계획 검증(Codex 게이트①)이 반려인 상태에서 본인 지시로 진행했다(user_directed — 통과 아님). 프록시의 로컬 시험은 맥의 스텁 환경에서 196건 통과·0건 실패였다. 실서버 검증은 남았고, 쓰는 범위가 넓어지기 전에 적용 범위를 다시 정해야 한다.
  • 파생 지표는 합성 데이터로만 검증됐고, 10월 변경은 git에 커밋되지 않은 파일로만 남아 있다.
  • 다른 계열 모델로의 교체는 비교 실측 뒤 결정할 항목으로 남아 있다.

기술

  • 백엔드: Rust 2021·Axum·Tokio, 진행 상황 SSE 스트리밍, 백엔드를 설정으로 바꾸는 AI 호출 추상화, 자원별 워커 풀 큐
  • AI: Gemma 4 26B-A4B(서버 llama.cpp CUDA q4_0 + mmproj, 맥 mlx-vlm 4bit), Supertonic(ONNX TTS)
  • 문서·영상 처리: LibreOffice headless → PDF → pdfium PNG, FFmpeg libx264
  • 저장: Redis(선택) — 실패 시 파일·인메모리 폴백
  • 배포: Docker 오프라인 번들(Rocky Linux 9 계열 대상), 개발서버 전용 프록시는 운영 묶음에 포함하지 않음

AI 활용 방식

  • 도구가 한 일: Claude Code가 구현·문서·시험을 맡고, Codex가 교차 검증을 맡았다(앱 보완 2회, 대시보드 3회 검증 루프 기록). 개발용 프록시 트랙은 2-AI 개발 방법론의 게이트를 거쳤다.
  • 검증이 잡은 것: AI 준비 확인 관문은 1차 검증에서 주 경로에서 우회되는 문제가, 2차에서 안내한 [다시 시작] 버튼이 실제로 없던 문제가 잡혔다.
  • 본인이 한 일: 요구·구조 정의, 모델 비교 기준, 프록시의 적용 범위와 검증 종료 시점 결정, GPU 서버 작업 실행. 게이트가 반려인 채 진행한 것은 user_directed로 남겨 통과와 구분했다.

관련 사례.

쇼츠 서비스 첫 화면 시안 — 영상 올리기, AI 구간 추천·보안 심의, 검수자 승인, 쇼츠 내려받기의 4단계 안내와 사내 계정 로그인 버튼

영상 자동 제작

개발서버 설치

사내 영상 하이라이트 쇼츠 자동 제작 서비스

사내 영상에서 AI가 고른 구간을 사람이 승인해 쇼츠로 만드는 서비스. 기획·배포 구성을 결정하고 개발서버에 설치했다(현장 합격 전)

1,229 통과·0 실패 · 본 저장소 cargo test, 로컬, 2026.10 — 개발서버 현장 결과 아님

2026.09 ~ 2026.10상세 사례

영상 저작 도구 화면 — 왼쪽은 원고 생성·장면 구성·장면 생성·TTS 생성 버튼과 에이전트 대화, 오른쪽은 미리보기와 타임라인

영상 자동 제작

PoC·내부 검증

폐쇄망 영상 저작 도구

원고에서 장면·이미지·내레이션·영상까지 로컬 모델만으로 만드는 저작 도구 — GPU 한 장의 세 엔진 교대를 실측으로 확인한 PoC

27.7초·동시 실행 0 · 개발용 맥(GPU 메모리 48GiB)에서 LLM ↔ 이미지 모델 교대 왕복, 2026.08 야간 검증

2026.07 ~ 2026.08상세 사례

킷의 HTML 슬라이드 양식 — 「이 문서 보는 법」 장에 조작 키 표와 표기·묶음 색 안내, 아래 진행 막대

방법론·에이전트

운영 중

2-AI 개발 방법론과 에이전트 운영

만드는 AI와 검사하는 AI를 나누고, 검증이 끝나지 않을 때 멈추는 규칙과 「통과」를 부풀리지 않는 기록 규칙을 킷으로 만들어 운영했다

1.5.0 → 1.12.0 · 방법론 킷 판 이력 2026-09 ~ 10, 배포 16파일 — 킷 회귀 878 PASS·0 FAIL은 Codex 응답 대역을 쓴 회귀 시험

2026.04 ~ 2026.10상세 사례