GENERAL

Antigravity를 이용한 '쇼츠 자동화 공장' 프로젝트

GENERAL
2026-02-02

"과연 AI가 어디까지 스스로 해낼 수 있을까?"

이 단순한 궁금증 하나로 시작한 프로젝트다. 이름하여 'Shorts Factory'. 이번 작업은 단순히 코드를 좀 짜는 걸 넘어, 내 개발 파트너인 Antigravity와 함께 시스템의 한계를 끝까지 밀어붙여 본 일종의 하드코어 테스트였다.

사실 뻔한 자동화 툴(n8n, Make, 오팔 같은 거) 써서 구축할 수도 있었겠지만, 이번 실험의 진짜 목적은 "AI 에이전트가 로컬 인프라와 복잡한 툴(FFmpeg, Python)을 얼마나 쫀득하게 제어하고 통합할 수 있는가"를 확인하는 데 있었다.


공장의 설계: "무인 쇼츠 생산 라인"

목표는 심플했다. "주제 하나만 던지면 대본, 음성, 이미지, 자막, 최종 렌더링까지 단 1초의 개입 없이 끝나는 시스템"을 만드는 거다.

단순하게 코드 몇 줄 받아 적는 수준이 아니라, 프로젝트 아키텍처부터 같이 짜고 에러 터지면 실시간으로 머리 맞대며 트러블슈팅했다. 운영 가이드까지 Antigravity가 스스로 업데이트하게 만들었으니, 말 그대로 '공장장' 노릇을 톡톡히 한 셈이다.


8단계 생산 파이프라인

공장은 총 8단계의 정밀 공정을 거친다. 모든 컨트롤은 main.py 파일 하나로 끝낸다.

  1. 데이터 수집: 주제 던지면 팩트 체크하고 쇼츠 호흡에 맞춰 정리한다.
  2. 인벤토리 빌드: 폴더 구조 싹 잡고 inventory.json에 상태 박아넣는다.
  3. AI 대본 작성: TTS가 읽기 좋게 '20자 이내 줄바꿈', '특수문자 금지' 같은 빡빡한 룰을 적용한다.
  4. 오디오 연성 (Edge-TTS): AI 티 안 나는 음성 뽑아내고, 속도감 있게 +35% 배속 친다.
  5. 그리드 비주얼 생성: 화풍 유지랑 비용 절감하려고 한 번에 6장 뽑는 3x2 그리드 방식을 쓴다.
  6. 이미지 슬라이싱: 갓 구워낸 그리드 이미지를 파이썬이 칼같이 9:16 비율로 6등분한다.
  7. 다이나믹 줌 (FFmpeg Zoompan): 멍청하게 멈춰있는 이미지에 FFmpeg 형님 손길을 거쳐 생동감을 불어넣는다.
  8. 최종 렌더링: 영상, 음성, 자막 다 때려 넣고 1080x1920 FHD 영상으로 출력한다.

실제 제작 사례: "2025년 한국인이 가장 많이 방문한 도시 - 도쿄"

최종 아웃풋이 나오기 전까지의 과정을 정리하면 아래와 같다.

핵심 기반: AI 대본 작성 (AI Scripting)

모든 영상의 뼈대는 결국 '글'이다. 주제를 정하면 Antigravity가 쇼츠 전용 대본을 먼저 뽑아낸다. TTS가 읽었을 때 어색하지 않도록 쉼표 하나까지 신경 써서 줄바꿈 룰을 적용하는 게 핵심이다. 이 대본이 확정되어야 그에 맞는 이미지 프롬프트와 오디오 길이가 결정된다.

비주얼 시스템 (Visual Assets)

대본의 분위기에 맞춰 일관성 있게 3x2 그리드 이미지 한 장을 통으로 뽑는다.

쇼츠 팩토리 그리드 이미지쇼츠 팩토리 그리드 이미지 원본: 3x2 그리드 이미지 (1:1)

이걸 시스템이 받자마자 아래처럼 6개의 낱개 장면으로 쪼개버린다.

Slice 1Slice 2Slice 3Slice 4Slice 5Slice 6

그리드에서 6장으로 칼같이 슬라이싱된 개별 장면들 (9:16)

오디오 및 자막 (Audio & Subtitles)

만들어진 대본을 이용해 Edge-TTS로 음성을 생성하고 자막을 생성한다.

00:00 / 00:00
꼴통 레코드
STEREOSIDE A

  • 자막(SRT) 데이터:

    전체 자막 보기 (클릭)

    SRT
    1
    00:00:00,100 --> 00:00:03,457
    2025년 한국인에게 가장 사랑받은 외국 도시!
    
    2
    00:00:03,407 --> 00:00:06,351
    그 영광의 1위는 바로 일본의 도쿄입니다.
    
    3
    00:00:06,351 --> 00:00:09,361
    최신 유행이 시작되는 시부야 스카이의 전망부터!
    
    4
    00:00:09,361 --> 00:00:12,750
    환상적인 지브리 파크까지 볼거리가 정말 풍성한데요.
    
    5
    00:00:12,750 --> 00:00:15,898
    특히 요즘은 도쿄 도심 내의 힙한 팝업 스토어와!
    
    6
    00:00:15,898 --> 00:00:19,259
    세련된 카페 투어가 필수 코스로 여겨지고 있습니다.
    
    7
    00:00:19,259 --> 00:00:22,296
    여기에 세계적인 미슐랭 맛집 탐방까지 더해지면!
    
    8
    00:00:22,296 --> 00:00:24,981
    그야말로 완벽한 여행이 완성되는 거죠.
    
    9
    00:00:24,981 --> 00:00:28,148
    여러분은 도쿄에 가면 무엇을 가장 하고 싶으신가요?
    
    10
    00:00:28,148 --> 00:00:31,527
    2026년 올해 첫 여행지는 어디로 계획 중이세요?
    
    11
    00:00:31,527 --> 00:00:33,861
    여러분의 계획을 댓글로 들려주세요!
    
    12
    00:00:33,861 --> 00:00:36,296
    구독과 좋아요는 큰 힘이 됩니다.
    

최종 결과물

방금 그 재료들로 뽑아낸 따끈따끈한 영상이다. (렌더링 15초 컷)


Antigravity와의 협업 회고

이번 프로젝트에서 Antigravity는 도구가 아니라 '찐 파트너'였다.

  • 트러블: FFmpeg filter_complex 꼬여서 자막 깨지고 오디오 싱크 밀릴 때 솔직히 좀 빡셌다.
  • 해결: Antigravity가 로그 싹 훑더니 폰트 경로 문제 잡아내고, 자동 패딩 스크립트까지 뚝딱 짜주더라.
  • 마무리: 작업 끝나면 scripts/clean_01_all.py로 뒷정리까지 깔끔하게 하는 로직도 지가 제안해서 구현했다.

마무리하며

'Shorts Factory'는 단순히 영상 뽑는 기계가 아니라, "AI랑 인간이 팀 먹고 어디까지 갈 수 있나" 가볍게 확인해 본 실험적인 프로젝트다.

이 프로젝트 소스코드는 쿨하게 MIT 라이선스로 열어뒀다.

어디까지나 테스트 삼아 만든 실험작이기 때문에, 실제로 활용하고 싶다면 폰트 사이즈부터 다른 디자인 요소들까지 본인 입맛에 맞게 직접 수정해서 써야 한다. 진짜 볼만한 결과물을 뽑아내려면 더 이쁘게 잘 꾸미는 과정이 반드시 필요할 거다. 이걸 실제 영상 제작에 투입할지 말지는 온전히 보는 사람의 선택이겠지만, 이 시스템의 가능성을 확인해본 것만으로도 나에게는 충분히 의미 있는 작업이었다.