2개월 만에 AI 페이스리스(Faceless) 비디오 생성기를 만들었습니다 — 사용된 기술 스택 공개
요약
프롬프트 입력만으로 숏폼 영상을 자동 생성하는 AI 비디오 서비스 Keyvello의 기술 스택과 개발 경험을 공유합니다. Next.js, Supabase, Modal 등을 활용한 파이프라인 구축 과정과 실무적인 팁을 다룹니다.
핵심 포인트
- Modal을 활용해 Vercel의 FFmpeg 실행 및 콜드 스타트 문제 해결
- Supabase RLS(행 단위 보안)는 초기 설계 단계부터 필수 적용 권장
- 사용자는 자유도 높은 편집보다 정해진 템플릿 기반의 생성을 선호함
- 비디오 파이프라인: GPT-4o 스크립트 → 이미지/오디오 병렬 생성 → FFmpeg 합성
6개월 전 저는 프롬프트를 2~5분 만에 완성된 숏폼 비디오로 변환해 주는 AI 비디오 생성기인 Keyvello (keyvello.com)를 시작했습니다. 동료 개발자분들을 위해 기술적인 세부 사항을 공유합니다.
문제 상황
TikTok / YouTube Shorts / Reels의 페이스리스(Faceless) 크리에이터들은 스크립트 작성, 보이스오버(Voiceovers), B-roll, 자막, 편집에 영상 하나당 2~4시간을 소비합니다. 대부분은 영상 10개를 올리기도 전에 번아웃을 겪습니다.
기술 스택
- 프론트엔드 (Frontend): Next.js 16, React 19, TypeScript, Tailwind CSS 4, Radix UI
- 백엔드 (Backend): Next.js API Routes (App Router)
- 데이터베이스 (DB): Supabase (Postgres + Auth + RLS)
- AI: 스크립트용 GPT-5.5, 이미지용 Fal.ai, 음성용 ElevenLabs
- 비디오 (Video): fluent-ffmpeg를 통한 FFmpeg, 이미지 프로세싱용 Sharp
- 스토리지 (Storage): Cloudflare R2 (S3 호환)
- 결제 (Payments): Dodo Payments
- 컴퓨팅 (Compute): 앱용 Vercel, 비디오 파이프라인용 Modal
- 상태 관리 (State): Zustand
파이프라인 (Pipeline)
프롬프트 → GPT-4o 스크립트 → 장면 분할기 (Scene splitter) → 병렬 처리 (Flux 이미지 + ElevenLabs 오디오) → FFmpeg 합성 (Modal) → R2 업로드 → 상태 업데이트
나를 놀라게 한 점들
- Modal이 Vercel에서 FFmpeg를 실행하는 것보다 훨씬 뛰어납니다. Vercel 함수의 콜드 스타트(Cold starts) 문제 때문에 60초 이상의 영상 제작이 불가능했습니다. Modal의 웹훅(Webhooks)이 이 문제를 해결했습니다.
- RLS(Row-level security)는 첫날부터 타협할 수 없는 요소입니다. 사용자 1,000명일 때 행 단위 보안을 사후에 적용하는 것은 매우 고통스럽습니다.
- 크레딧 환불은 별도의 RPC가 필요합니다.
increment_user_credits가 트리거에 의해 차단되어 발생하는 무음 실패(Silent failure)를 겪었습니다. 대신add_credits를 사용하세요. - 사용자들은 가공되지 않은 제어권이 아니라 템플릿을 원합니다. 초기에 '빈 캔버스(Blank canvas)' 모드를 출시했지만, 아무도 사용하지 않았습니다. 11개의 지정된 템플릿(AI Stories, Fake Texts, Stick Animation 등)이 생성의 95%를 차지합니다.
다음 단계
- 말하는 아바타(Talking-avatar) 템플릿을 위한 더 나은 립싱크(Lipsync) 기능.
- 템플릿 등급별로 더 정교한 비용 제어.
- 제휴 프로그램(Affiliate program).
AI 비디오 분야에서 무언가를 만들고 계신다면 의견을 나누고 싶습니다 — 댓글을 남겨주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기