MoneyPrinterTurbo 설치부터 한국어 설정까지 — 윈도우 원클릭 + 설정 44개 전수

MoneyPrinterTurbo는 주제 한 줄을 넣으면 대본, 음성, 자막, 화면을 자동으로 붙여 세로 숏폼 영상 한 편을 만들어내는 오픈소스다. MIT 라이선스라 구독료가 없고, Windows에서는 압축 파일 하나를 풀고 start.bat을 누르면 켜진다. Python도 ffmpeg도 따로 깔지 않는다. 이 글은 설치 경로 세 갈래를 쉬운 순서로 정리하고, 한국어 자막이 기본 설정에서 전부 빈 네모로 렌더되는 문제의 해결 절차와 폰트 파일 내려받기, WebUI 설정 44개 전수 표를 담는다.

MoneyPrinterTurbo가 뭔가요?

MoneyPrinterTurbo는 숏폼 영상 한 편을 만드는 데 필요한 여섯 단계를 하나의 파이프라인으로 묶은 오픈소스 도구다. 저장소 이름은 harry0703/MoneyPrinterTurbo, 라이선스는 MIT, 주 언어는 Python이며 2024년 3월에 만들어졌다. GitHub 스타는 10만 개를 넘었고 최신 릴리스는 v1.3.4다.

MoneyPrinterTurbo 깃허브 저장소 화면 — 별 10만 개, MIT 라이선스
오른쪽 About 아래에 MIT license와 별·포크 수가 나란히 있다. 설치에 쓸 원클릭 패키지는 그 아래 Releasesv1.3.4 Latest를 눌러 들어간다.

파이프라인 단계는 README가 아니라 소스 코드에 상수로 박혀 있다. cli.py 19행의 _PIPELINE_STAGES("script", "terms", "audio", "subtitle", "materials", "video") 여섯 개이고, 오케스트레이터 _run_pipeline()(app/services/task.py:1043)도 같은 순서로 동작한다.

단계 하는 일
script 주제를 받아 LLM이 대본을 쓴다. 대본을 직접 넣으면 건너뛴다
terms 소재 검색어를 만든다. 로컬 소재를 쓰면 생성되지 않는다
audio TTS 보이스오버를 만든다. 무음이나 업로드 오디오도 가능하다
subtitle 자막을 만든다
materials Pexels·Pixabay·Coverr 또는 로컬에서 클립을 확보한다
video 위 요소를 합쳐 final-1.mp4로 쓴다

인터페이스는 네 가지다. WebUI(http://127.0.0.1:8501), REST API(http://127.0.0.1:8080/docs), CLI(cli.py), 저장소가 제공하는 AI Agent 스킬. 이 글의 설정 표는 WebUI 기준이다.

화면에 나오는 영상은 AI가 만드나요?

화면은 AI가 그리지 않는다. MoneyPrinterTurbo는 무료 스톡 영상 플랫폼에서 클립을 검색해 내려받은 뒤 이어붙인다. app/services/material.py 606행의 save_video()가 하는 일은 HTTP GET 요청으로 받은 바이트를 MP4 파일로 쓰는 것이고, 그 위의 검색 함수들은 Pexels(api.pexels.com/v1/videos/search), Pixabay(pixabay.com/api/videos/), Coverr(api.coverr.co/videos) 엔드포인트를 호출한다.

설정 파일과 CLI가 허용하는 소재 출처도 정확히 네 개다. pexels, pixabay, coverr, local. 영상 화면 자체를 생성 모델로 만들어내는 경로는 문서에도, 설정에도, 코드에도 없다.

이 방식은 실행으로도 확인됐다. 기본 경로로 한 번 돌리자 storage/cache_videos/에 스톡 클립 18개, 130MB가 내려받아졌고 그 18개가 순서대로 이어붙었다. AI가 만드는 것은 대본과 음성과 자막이고, 화면은 남이 찍어둔 영상의 재조합이다.

왜 써야 하나요?

숏폼 한 편을 수동으로 만들면 단계마다 다른 도구를 쓴다. 대본은 LLM, 소재는 스톡 영상 사이트, 목소리는 TTS, 자막 싱크와 합성은 편집기다. MoneyPrinterTurbo는 이 네 갈래를 한 번의 실행으로 묶는다. README가 스스로를 규정한 문구도 “An All-in-One AI Short Video Generator”다.

줄어드는 부담은 시간으로 환산된다. 87.27초짜리 세로 영상 한 편을 만드는 동안 사람이 한 일은 명령어 한 줄이었고, 기계가 10분 26초를 썼다. 대본, 검색어 5개, 스톡 클립 18개 다운로드, TTS, 자막, 합성까지 사람 개입은 0회였다.

비용 면에서는 구독료가 없다. MIT 라이선스 오픈소스이고, 기본 TTS인 Edge TTS는 API 키를 요구하지 않는다. 대본과 검색어를 직접 넣고 소재를 로컬로 지정하면 외부 API 키를 하나도 쓰지 않고 전 구간이 완주한다. 실측으로 확인한 경로다. 종료 코드 0, 소요 3분 15초, 산출물은 final-1.mp4 632KB / 1080×1920 h264 / 15.17초, 외부 API 키 0개.

설치는 어떻게 하나요?

Windows를 쓰면 원클릭 패키지를 받아 푸는 것이 가장 짧다. 내 컴퓨터에 아무것도 깔기 싫으면 Google Colab, 코드를 고치거나 맥·리눅스를 쓰면 git clone이다. 이 순서는 우리가 정한 것이 아니라 README의 Quick Start가 안내하는 순서다. 원문은 이렇다.

Recommended Paths

- If you do not want to install or configure the project manually: generate videos with an AI Agent
- Windows users: use the one-click package first for the fastest local trial
- macOS / Linux users: use `uv` for the primary local setup path
- If you want a more isolated runtime: use Docker deployment
경로 누구에게 필요한 것 이 글이 확인한 범위
① Windows 원클릭 패키지 Windows 사용자. 처음 써보는 사람 900MB 다운로드, 여유 디스크 3GB 남짓 내려받기부터 WebUI 기동까지 실제로 해봤다
② Google Colab 내 컴퓨터에 아무것도 설치하고 싶지 않은 사람 구글 계정과 브라우저 README가 노트북 주소를 안내한다는 것까지. 실행해 보지 않았다
③ 직접 설치(git clone + uv) 맥·리눅스 사용자, 코드를 고치거나 CLI로 자동화할 사람 Python 3.11, git, uv 클론부터 영상 완성까지 여러 번 돌렸다
④ Docker 격리된 실행 환경을 원할 때 Docker 명령만 문서로 확인했다. 실행해 보지 않았다

Quick Start 첫 줄에 적힌 AI Agent 경로는 저장소가 제공하는 스킬 문서를 에이전트에게 읽히는 방식이다. README에 프롬프트 예시가 실려 있지만 이 글에서는 실행하지 않았다.

① Windows 원클릭 패키지 — 가장 쉬운 경로

압축 파일 하나를 받아서 풀고 update.bat, start.bat을 차례로 누르면 브라우저에 WebUI가 뜬다. Python, git, ffmpeg가 패키지 안에 들어 있어 따로 설치할 것이 없다. 실제로 해본 소요 시간은 내려받기 57.2초, 압축 해제 69.4초, 기동 2초다.

항목 실측값
파일 이름 MoneyPrinterTurbo-Portable-Windows-1.3.4.7z
크기 900.4MB (944,172,235 바이트) · 릴리스 v1.3.4
내려받기 57.2초 (평균 15.7MB/s)
압축 해제 69.4초 → 파일 34,322개 · 2.04GB
update.bat 종료 코드 0. git pull로 15개 파일 갱신(876줄 추가), 파이썬 패키지는 전부 설치된 상태
start.bat 종료 코드 0. 2초 만에 포트 개방
WebUI HTTP 200. 브라우저에서 전 항목 렌더 확인

순서는 이렇다.

  1. 릴리스 페이지에서 파일을 받는다. github.com/harry0703/MoneyPrinterTurbo/releases/latest에서 MoneyPrinterTurbo-Portable-Windows-1.3.4.7z를 내려받는다.
  2. 짧은 경로에 폴더를 만들고 거기서 푼다. 압축 파일 안에 감싸는 폴더가 없어서, 푼 자리에 lib, MoneyPrinterTurbo, start.bat, update.bat, api.bat이 그대로 쏟아진다. C:\mpt처럼 짧은 폴더를 먼저 만들고 그 안에서 푼다.
  3. update.bat을 더블클릭한다. README가 먼저 실행하라고 안내하는 파일이다. 최신 코드를 내려받는다.
  4. start.bat을 더블클릭한다. 브라우저가 자동으로 열린다. 빈 화면이면 Chrome이나 Edge로 열라고 README가 덧붙인다.

2번에서 초보자가 반드시 걸린다. Windows 탐색기는 .7z을 열지 못한다. 더블클릭으로 끝나지 않는다는 뜻이다. 그런데 7-Zip을 따로 깔 필요도 없다. Windows 11에 들어 있는 tar(bsdtar / libarchive)가 .7z을 읽는다. 7-Zip이 설치돼 있지 않은 기계에서 확인한 사실이다. 명령 프롬프트나 PowerShell을 열고 파일이 있는 폴더에서 이 한 줄을 실행한다.

tar -xf MoneyPrinterTurbo-Portable-Windows-1.3.4.7z

start.bat을 실행하면 검은 창에 이런 줄이 뜬다. 실제 출력 그대로다.

***** Current directory: C:\mpt-test\ *****
***** FFmpeg file: C:\mpt-test\lib\ffmpeg\ffmpeg-7.0-essentials_build\ffmpeg.exe *****
***** Port 8501 is unavailable, using 8502 instead. *****
***** WebUI address: http://127.0.0.1:8502 *****

이 출력에 이 경로의 장점이 두 줄로 드러나 있다. ffmpeg 경로를 패키지 안의 파일로 직접 잡고, 8501 포트가 이미 쓰이고 있으면 알아서 8502로 옮긴다. 이 실행에서는 다른 프로그램이 8501을 쓰고 있었고 start.bat이 8502를 골랐다. 여기에 더해 streamlit이 처음 실행될 때 묻는 이메일 입력 프롬프트를 자동으로 건너뛰도록 credentials.toml을 미리 만들어 둔다. 처음 켜는 사람이 만날 마찰 세 개가 미리 제거돼 있다.

설정 파일도 알아서 생긴다. 첫 실행 로그에 copy config.example.toml to config.toml이 찍힌다. 직접 설치 경로에서 Docker를 쓸 때 손으로 하는 복사를 여기서는 하지 않아도 된다.

경로 길이 — 문서를 다 지켜도 실패할 수 있는 지점

어느 문서에도 적혀 있지 않은 제약이 하나 있다. 압축을 푸는 위치의 경로가 길면 설치가 실패한다.

README와 패키지에 동봉된 안내 파일은 압축 푸는 경로에 한글·특수문자·공백을 넣지 말라고 경고한다. 그런데 경로 길이는 말하지 않는다. 패키지 내부의 가장 긴 경로가 205자다(lib/python/Lib/site-packages/litellm/proxy/guardrails/ 아래의 JSON 파일). Windows의 기본 경로 길이 상한 MAX_PATH는 260자다. 산술로는 압축을 푸는 위치가 54자를 넘으면 실패한다.

다만 이 54자는 산술이지 실측이 아니다. 검증에 쓴 기계는 Windows의 긴 경로 옵션(LongPathsEnabled)이 이미 켜져 있어서 긴 경로 실패를 재현하지 못했다. 이 값의 기본은 꺼짐이므로 대부분의 기계에서는 상한이 살아 있다. 실패를 재현하려면 시스템 설정을 바꿔야 해서 하지 않았다. 확인된 것은 “내부 경로가 205자”까지이고, 그 뒤는 MAX_PATH 260에서 뺀 계산이다.

C:\mpt\                                                          7자   → 안전
C:\Users\홍길동\Desktop\MoneyPrinterTurbo-Portable-Windows-1.3.4\  61자  → 초과

바탕화면에 압축 파일 이름 그대로 폴더를 만들어 푸는 것이 가장 흔한 방식인데, 그것이 정확히 위험한 조합이다. 폴더 이름을 짧게 하고 드라이브 바로 아래에 두면 피할 수 있다.

이 경로에만 해당하는 것

  • ffmpeg·git·Python이 전부 동봉돼 있다. lib/ffmpeg/, lib/git/, lib/python/. README FAQ의 RuntimeError: No ffmpeg exe could be found 항목이 이 경로에서는 구조적으로 발생하지 않는다. start.bat이 ffmpeg 위치를 패키지 안의 파일로 지정하기 때문이다.
  • 파이썬 패키지 설치가 pip로 이뤄진다. update.batlib/python/Scripts/pip.exe install -r requirements.txt를 실행한다. 아래 ③번 경로에서 겪은 uv sync의 조용한 실패가 이 경로에서는 일어나지 않는다.
  • 업데이트를 해도 설정 화면은 그대로다. update.bat이 소스 파일 여러 개를 갱신했지만 화면 항목 44개와 TTS 제공자 8종은 이 글의 표와 일치했다.
  • 한글 폰트 문제는 이 경로에도 똑같이 있다. 동봉 폰트가 같기 때문이다. 폰트 파일은 압축을 푼 폴더 안의 MoneyPrinterTurbo\resource\fonts\에 넣는다.
  • 이 경로로 영상을 끝까지 뽑아보지는 않았다. WebUI가 뜨는 것까지 확인했다. 생성 파이프라인은 같은 코드이므로 이 글의 다른 실측값이 그대로 적용된다고 본다.

② Google Colab — 설치 없이 브라우저에서

README에 “Run in Google Colab” 항목과 배지 링크가 있다. 로컬 환경을 만들지 않고 브라우저에서 바로 돌려보라는 안내이고, 노트북 주소는 아래와 같다.

https://colab.research.google.com/github/harry0703/MoneyPrinterTurbo/blob/main/docs/MoneyPrinterTurbo.ipynb

이 경로는 우리가 실행해 보지 않았다. 확인한 것은 README에 이 안내가 있다는 것과 위 주소가 열린다는 것까지다. 소요 시간, 생성 성공 여부, 한국어 자막이 어떻게 나오는지, 만든 파일을 어떻게 내려받는지는 검증하지 않았으므로 이 글에서 보증하지 않는다.

③ 직접 설치(git clone + uv) — 개발자용, 맥·리눅스 권장 경로

저장소를 클론하고 uv로 의존성을 받는 방식이다. README가 macOS·Linux 사용자에게 첫째로 권하는 경로이고, Windows에서도 되지만 코드를 고치거나 CLI로 자동화할 생각이 아니라면 ①번이 짧다. Python은 3.11 이상이 필요하고 README는 3.11을 권한다. Windows에서는 프로젝트 경로에 비ASCII 문자, 특수문자, 공백이 들어가면 안 된다. 한글 경로도 여기에 포함된다.

git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo
uv python install 3.11
uv sync --frozen

실행 명령은 목적에 따라 나뉜다. WebUI는 Windows에서 webui.bat, macOS와 Linux에서 webui.sh다.

.\webui.bat
sh webui.sh

API 서비스만 띄우려면 main.py를 실행한다. 원클릭 패키지에서는 같은 일을 api.bat이 한다.

uv run python main.py

브라우저 없이 한 편을 만드는 CLI 명령은 README가 “The simplest complete generation command”로 제시한 예제 그대로다.

uv run python cli.py --video-subject "How AI is changing everyday life"

Docker가 있으면 더 짧다. 다만 첫 실행 전에 config.example.tomlconfig.toml로 복사해 둬야 마운트된다.

cd MoneyPrinterTurbo
docker compose -f docker-compose.release.yml up

이 경로에서 겪은 것 — 종료 코드 0인데 실패했다

uv sync --frozen은 종료 코드 0으로 끝나고도 패키지 내용을 풀지 않은 채 넘어갈 수 있다.

uv sync --frozen이 12.6초 만에 종료 코드 0으로 끝났고 오류 메시지도 없었다. 그런데 다음 단계인 webui.bat이 이렇게 죽었다.

No module named streamlit.__main__; 'streamlit' is a package and cannot be directly executed

확인해 보니 streamlit 패키지 디렉터리에 .py 파일이 하나도 없었다. blinker도 같은 상태로, 메타데이터만 놓이고 내용이 풀리지 않았다. uv sync --frozen --reinstall로 다시 받으니 정상 설치됐고 WebUI가 떴다.

uv sync --frozen --reinstall

이 실패는 MoneyPrinterTurbo의 결함이 아니라 uv와 실행 환경 쪽 문제다. 다만 설치 직후 WebUI가 모듈 오류로 죽는다면 이 재설치를 먼저 시도해 볼 값어치가 있다. Windows 원클릭 패키지에는 이 문제가 없다. 그쪽은 uv가 아니라 pip로 설치하기 때문이다.

처음 켜면 뭐부터 하나요?

LLM API 키를 넣는 것이 첫 번째다. 파이프라인 첫 단계가 LLM 대본 생성이라 키가 없으면 생성 버튼을 누르는 순간 실패한다. 도구 자신도 그렇게 안내한다. 처음 켜면 3단계 온보딩 투어가 뜨는데 1단계 제목이 Step 1: Configure the AI model이다.

온보딩 투어는 브라우저 프로필이 새것이면 나타난다. 어두운 오버레이가 화면 전체를 덮고 클릭을 전부 삼키므로, 투어를 닫기 전에는 아래 설정을 누를 수 없다. 설정이 안 눌린다면 고장이 아니라 이 모달이 떠 있는 것이다.

MoneyPrinterTurbo WebUI 메인 화면 — 우측 상단 Settings 버튼과 설정 4열 그룹
설정은 왼쪽부터 Video Script · Video · Audio · Subtitle Settings 네 열이고, 아래 붉은 Generate Video가 실행 버튼이다. 키를 넣으러 갈 곳은 오른쪽 맨 위 Settings다 — Task ManagerEnglish 사이에 톱니바퀴 아이콘과 함께 있다. 다만 이 화면은 처음 켠 상태가 아니다. Voiceko-KR-SunHi-Female, FontNanumGothic-Bold.ttf로 이미 바뀌어 있는데, 아래에서 다룰 한국어 설정을 마친 뒤의 모습이다. 처음 켜면 각각 en-AU-Natasha-FemaleMicrosoftYaHeiBold.ttc다.

LLM 키를 어디서 받아 어디에 넣나요

WebUI 우측 상단의 Settings 버튼을 누르면 다이얼로그가 열리고 탭이 네 개 있다. LLM Settings, Material APIs, Cache Management, Interface Settings. 첫 탭이 LLM 설정이다. Google Gemini를 기준으로 하면 순서는 이렇다.

Settings 다이얼로그 — 탭 네 개
다이얼로그 위쪽 탭 줄에서 왼쪽 첫째 LLM Settings가 열린 상태다. 스톡 영상 키는 여기가 아니라 바로 옆 Material APIs에 있다.
  1. SettingsLLM Settings 탭을 연다.
  2. LLM ProviderGoogle Gemini로 둔다. 실측 표시 기본값이 이 값이다.
  3. 오른쪽 안내 패널에 API Key: create one on Google AI Studio라고 뜬다. Google AI Studio에 구글 계정으로 로그인해 키를 발급받는다.
  4. 발급받은 문자열을 API Key 칸에 붙여넣는다. 이 칸은 입력값이 점으로 가려지므로 화면 녹화나 캡처에 키가 노출되지 않는다.
  5. Model Namegemini-3.1-pro-preview가 기본이다. 그대로 둔다.
  6. Test Model Connection 버튼을 누른다. 키가 제대로 들어갔는지 확인할 수 있는 수단은 이 버튼 하나다.
Settings 다이얼로그의 LLM Settings 탭 — API 키 입력 위치
키를 붙여넣는 자리는 LLM Provider 바로 아래 API Key 칸이고, 입력값이 점으로 가려진다. 그 아래 Test Model Connection이 키를 검사하는 버튼이다. 오른쪽 파란 패널은 고른 제공자에 무엇이 필요한지 알려준다.

제공자를 Google Gemini로 두면 안내 패널이 Base Url: not required라고 알려준다. 필요한 입력은 제공자마다 다르므로 이 패널을 보고 채운다. 스톡 영상 소스의 키(Pexels 등)는 이 탭이 아니라 Material APIs 탭에 있다.

대본을 직접 써서 넣을 거라면 LLM 키 없이도 쓸 수 있다. 대본과 검색어를 직접 넣고 소재를 로컬 파일로 지정하면 외부 API 키를 하나도 쓰지 않고 완주한다.

처음 켰을 때 확인할 항목 8개

WebUI 메인 폼은 4열이고 각 열이 설정 그룹 하나다. 메인 폼에는 항목이 44개 있고, 여기에 우측 상단 Settings 다이얼로그가 따로 붙는다. 처음 켰을 때 반드시 확인해야 하는 것은 아래 여덟 개인데, 그중 API Key 두 개는 메인 폼이 아니라 Settings 안에 있다. 나머지는 기본값으로 둬도 된다.

항목 왜 건드려야 하나 이렇게 넣으세요
Settings → LLM Settings → API Key 비어 있으면 script 단계에서 즉시 실패한다. 파이프라인 첫 단계가 LLM 대본 생성이다 제공자에서 키를 발급받아 입력한 뒤 Test Model Connection으로 확인한다. 대본을 직접 쓸 거면 생략 가능
Subtitle Settings → Font 기본값 MicrosoftYaHeiBold.ttc의 한글 커버리지가 0%다. 한국어 자막이 전부 빈 네모로 렌더된다 반드시 바꾼다. resource/fonts/에 한글 .ttf 또는 .ttc를 넣고 그 파일명을 고른다
Video Script Settings → Script Language 선택지 12개에 ko-KR이 없다. 한국어를 고를 수 없다 Auto Detect(기본값)를 유지하고 Video Subject를 한국어로 쓴다
Audio Settings → Voice 기본값이 UI 언어 기준으로 정해진다. 영어 UI에서는 en-AU-Natasha-Female이 잡혀 한국어 대본에 영어 음성이 붙는다 ko-KR-SunHi-Female, ko-KR-InJoon-Male, ko-KR-HyunsuMultilingual-Male 중 선택
Settings → Material APIs → Pexels API Key 기본 Video SourcePexels인데 키가 없으면 생성 버튼에서 즉시 차단된다 Pexels 키를 입력하거나, Video SourceLocal file로 바꾼다
Video Script Settings → Video Subject 또는 Video Script 둘 다 비면 태스크를 만들지 않고 중단한다 최소 하나는 채운다. 대본 품질을 직접 통제하려면 Video Script
Audio Settings → Background Music Source 기본값이 Random Background Music이라 동봉 BGM 29곡 중 하나가 자동으로 섞인다. 저장소가 권리 상태를 보증하지 않는 음원이다 업로드용 영상이면 No Background Music으로 바꾼다.
Video Settings → Maximum Clip Duration WebUI 기본값이 3초라 컷이 빠르게 넘어간다. 스키마와 CLI 기본값 5초와도 다르다 톤에 맞춰 3~5초
이 글의 내용을 영상으로 정리했다. 설치부터 한국어 자막이 깨지는 지점, 폰트로 고치는 과정까지 6분 24초다.

한국어로 만들려면 뭘 바꾸나요?

여섯 군데를 순서대로 바꾸면 끝난다. 이 도구는 한국어 UI가 없고 대본 언어 목록에도 한국어가 없어서, 한국어 결과물은 몇 개의 우회로 얻는다. 아래 순서 그대로 따라가면 자막까지 정상으로 나온다.

  1. Video Subject에 주제를 한국어로 쓴다. 대본 생성 규칙이 “주제와 같은 언어로 답하라”이므로 주제를 한국어로 쓰면 대본도 한국어로 나온다.
  2. Script LanguageAuto Detect 그대로 둔다. 선택지 12개에 ko-KR이 없다. 다른 값을 고르면 한국어 주제를 넣어도 그 언어로 대본이 나올 수 있다.
  3. Voice를 한국어 음성으로 바꾼다. 목록이 322개인 데다 가상 스크롤이라 스크롤로는 ko-KR까지 닿지 않는다. 검색창에 ko-KR을 입력하면 세 종류가 나온다. ko-KR-SunHi-Female, ko-KR-InJoon-Male, ko-KR-HyunsuMultilingual-Male. 기본값은 영어 음성이고, 언어가 어긋나도 경고가 없다.
  4. 한글 폰트 파일을 resource/fonts/에 넣고 Font에서 고른다. 원클릭 패키지라면 압축을 푼 폴더 안의 MoneyPrinterTurbo\resource\fonts\다. 이 단계를 빼면 자막이 전부 빈 네모가 된다. 폰트 파일은 아래 내려받기 절에 있다. 프로그램을 다시 켤 필요는 없고 최대 30초 뒤 목록에 나타난다.
  5. Video Keywords는 영어로 쓰거나 비운다. 스톡 영상 검색 API가 영어 기준이라 한국어 검색어를 넣으면 결과가 비어 소재 확보가 실패할 수 있다. 비우면 LLM이 대신 만든다.
  6. Background Music SourceNo Background Music으로 바꾼다. 한국어와는 무관하지만, 어딘가에 올릴 영상이라면 권리 상태가 불명확한 동봉 음원을 피하는 편이 안전하다.

이 여섯 개를 적용하고 WebUI에서 한국어 주제로 처음부터 돌린 결과는 아래와 같다.

항목 실측값
산출 영상 길이 52.51초
최종 파일 final-1.mp4 14MB / 1080×1920 h264 / aac
자막 블록 8개
자막 한글 글자수 278자
자막의 빈 네모 0개

이때 사용한 설정은 Script Language = Auto Detect, Voice = ko-KR-SunHi-Female, Background Music Source = No Background Music, Font = NanumGothic-Bold.ttf다. 폰트 파일 하나로 고쳐진다는 것이 끝에서 끝까지 확인됐다.

CLI로 돌린다면 같은 내용이 플래그가 된다.

uv run python cli.py --video-script "..." --video-language ko-KR \
  --voice-name ko-KR-SunHiNeural --font-name "NanumGothic-Bold.ttf"

한글 폰트 묶음은 어디서 받나요?

한글 자막에 쓸 폰트 파일을 묶어 두었다. 앞 절의 한국어 설정 4번 단계(자막 폰트 교체)에 필요한 것이고, 아래에서 zip 하나로 받는다.

core-insight-ko-pack.zip 내려받기 (https://core-insight2026.com/wp-content/uploads/2026/08/core-insight-ko-pack.zip)

파일 크기는 791,650 바이트이고 로그인 없이 바로 받아진다. 안에는 세 개가 들어 있다.

파일 크기 무엇
ko-pack/fonts/NanumGothic-Bold.ttf 2,073,868 바이트 자막용 나눔고딕 볼드. resource/fonts/에 복사할 파일
ko-pack/fonts/OFL.txt 4,534 바이트 폰트 라이선스 전문
ko-pack/README-ko.md 3,460 바이트 설치와 함정 정리(한국어)

나눔고딕은 SIL Open Font License 1.1로 배포되는 폰트라 이렇게 묶어서 다시 나눠주는 것이 허용된다(Copyright (c) 2010, NHN Corporation). 라이선스 전문을 같은 폴더에 함께 넣은 이유도 그 조건을 맞추기 위해서다. 폰트 파일만 따로 파는 것은 허용되지 않고, 고친 판본에 예약된 이름을 쓸 수 없다.

이 폰트를 고른 기준은 네 가지였고 전부 실측으로 확인했다. 재배포 가능한 라이선스, 도구가 인식하는 .ttf 형식, 현대 한글 11,172자 중 11,172자 커버(100.0%), 그리고 실제 렌더 확인이다.

한국어 자막이 깨져서 전부 네모로 나오는 이유는 뭔가요?

동봉된 폰트에 한글 글리프가 없기 때문이다. 기본 설정으로 한국어 대본을 넣고 돌리면 영상에 번인된 한글이 전부 빈 네모로 렌더된다. 앞 절의 4번 단계, 폰트 파일 하나를 넣고 골라주면 해결된다.

한국어 자막이 전부 빈 네모로 렌더된 실제 출력 화면
화면 아래쪽 자막 자리를 본다. 글자가 있어야 할 곳에 빈 네모만 한 줄로 늘어서 있다. 폰트를 바꾸지 않고 돌린 실제 출력에서 5초 지점 프레임을 뽑은 것이다.

이 실패의 위험한 점은 어떤 자동 지표로도 드러나지 않는다는 것이다. 실측 결과는 이랬다.

지표 결과
종료 코드 0
경고·에러 로그 0건
subtitle.srt 정상 UTF-8 한글 (file 판정: SubRip, Unicode text, UTF-8 text)
final-1.mp4 정상 h264, 길이도 정확
렌더된 화면 모든 한글이 빈 네모

한글이 전부 네모로 나와도 프로그램은 실패를 알리지 않는다. 종료 코드 0, 경고·에러 로그 0건이다.

종료 코드도, 로그도, 자막 파일도, 영상 메타데이터도 전부 성공을 가리킨다. 완성된 영상을 눈으로 열어보기 전까지 아무 신호가 없다. 무인 파이프라인으로 돌릴 때 가장 위험한 종류의 실패다.

원인은 폰트다. fontToolsresource/fonts/의 동봉 폰트 9종 전부를 검사해 현대 한글 음절 11,172자(U+AC00–U+D7A3) 중 몇 개가 들어 있는지 셌다.

폰트 파일 현대 한글 11,172자 커버리지
BeVietnamPro-Bold.ttf 0.0% (0 / 11,172)
BeVietnamPro-Medium.ttf 0.0%
Charm-Bold.ttf 0.0%
Charm-Regular.ttf 0.0%
MicrosoftYaHeiBold.ttc (WebUI 기본값) 0.0%
MicrosoftYaHeiNormal.ttc 0.0%
STHeitiLight.ttc 59.9% (6,691 / 11,172)
STHeitiMedium.ttc (CLI 기본값) 59.9%
UTM Kabel KT.ttf 0.0%

9종 중 7종이 한글 0%다. WebUI 기본값 MicrosoftYaHeiBold.ttc는 그중 하나이고, CLI 기본값 STHeitiMedium.ttc는 59.9%지만 실제 렌더 결과는 역시 전부 네모였다. 저장소 용량 335MB 중 resource/fonts/가 142MB로 가장 큰 항목인데, 그 142MB에 한국어로 쓸 수 있는 폰트가 없다.

폰트를 넣을 때 걸리기 쉬운 지점이 세 개 있다.

  • 확장자는 .ttf 또는 .ttc여야 한다. 폰트 목록을 만드는 get_all_fonts()(webui/Main.py:1271)가 이 두 확장자만 스캔한다. .otf를 넣으면 드롭다운에 나타나지 않고, 이때도 경고가 없다. Pretendard는 OFL 라이선스로 번들·재배포가 허용되지만 배포되는 개별 파일이 전부 .otf라서 그대로는 목록에 뜨지 않는다.
  • 재시작은 필요 없다. 다만 폰트 목록에는 30초짜리 캐시가 걸려 있다. 파일을 넣고 바로 새로고침하면 아직 안 보일 수 있고, 최대 30초 뒤 목록에 나타난다.
  • Restore Subtitle Defaults 버튼을 누르면 폰트가 MicrosoftYaHeiBold.ttc로 되돌아간다. 한글 폰트를 지정해 둔 상태에서 이 버튼을 누르면 자막이 다시 깨진다.

WebUI에는 CLI에 없는 사전 경고가 하나 있다. The selected subtitle font does not support some script characters, so subtitles may be missing.라는 문구인데, 검사 대상이 Video Script 또는 Video Subject의 텍스트라서 두 칸이 모두 비어 있으면 경고가 뜨지 않는다. 자막이 꺼져 있어도 검사를 건너뛴다. 경고가 뜨더라도 생성을 막지는 않는다.

기존 방식과 뭐가 다른가요?

이 도구가 없으면 숏폼 한 편에 다섯 갈래 작업이 각각 따로 붙는다. 대본을 쓰고, 스톡 영상 사이트에서 클립을 골라 내려받고, 목소리를 합성하고, 자막 타임코드를 맞추고, 편집기에서 합친다. 도구도 다르고 창도 다르고 결과물을 옮기는 손도 매번 든다.

MoneyPrinterTurbo를 쓰면 이 다섯 갈래가 한 번의 실행으로 이어진다. 실측으로는 주제 한 줄과 명령어 한 줄만 넣고 87.27초 영상 한 편이 나왔고, 그 사이 검색어 5개 생성과 클립 18개 다운로드, 자막 생성, 합성이 사람 개입 없이 진행됐다.

대신 성격이 바뀐다. 사람이 하던 일은 “만드는 일”에서 “고르고 고치는 일”로 옮겨간다. 자동 생성된 대본은 형용사 위주의 홍보문 톤이었고(영어와 한국어 모두 같았다), 자막 한 줄이 9.56초 동안 132자로 표시되기도 했다. 화면도 내가 의도한 장면이 아니라 검색어에 걸린 스톡 클립이다. 초안을 빠르게 뽑고 다듬는 용도에 맞는 도구이지, 완성본을 그대로 받아 쓰는 도구는 아니다.

시간도 공짜가 아니다. 실측 환경(Windows 11 Pro 26200 / Python 3.11.15 / ffmpeg 8.1.1, GPU 미사용)에서 15.17초 영상에 3분 15초, 87.27초 영상에 10분 26초가 걸렸다. 실시간 대비 약 7~13배이고, 병목은 영상 리사이즈로 클립 하나에 24~28초씩 들었다. 다른 기계에서는 달라지는 수치다.

주의할 점

한국어 사용자에게 가장 먼저 걸리는 문제는 앞에서 다룬 자막 폰트다. 그 밖에 알고 써야 할 것들을 모았다.

동봉된 배경음악은 권리 상태가 밝혀져 있지 않다. 어딘가에 올릴 영상이라면 Background Music SourceNo Background Music으로 바꾼다.

README가 동봉 음악에 대해 “The current project includes some default music from YouTube videos. If there are copyright issues, please delete them.”이라고 밝힌다. resource/songs/에는 mp3 29개가 들어 있고, BGM 기본값이 Random Background Music이라 손대지 않으면 자동으로 섞인다.

  • 무료 LLM 티어는 붐빌 때 막힌다. WebUI로 돌린 한 번의 실행에서 대본 생성은 11초 만에 성공했는데, 곧바로 이어진 검색어 생성이 503 UNAVAILABLE을 받았다. 86초 동안 재시도한 뒤 Video Generation Failed: failed to generate video search terms로 확정됐다. 그동안 화면에는 진행 표시가 없다.
  • 앞 단계 산출물도 함께 사라진다. 무료 LLM 티어가 503으로 막힌 그 실패에서, 대본은 이미 생성에 성공했지만 작업이 terms 단계에서 실패하자 storage/tasks/에 디렉터리조차 만들어지지 않았다. 성공한 대본을 화면에서 회수할 방법이 없다.
  • 로컬 소재는 출력 종횡비와 맞춰야 한다. 1920×1080 클립을 9:16 출력에 넣자 크롭이 아니라 레터박스로 처리돼 위아래에 큰 검은 띠가 생겼다. 스톡 소스를 쓰는 기본 경로에서는 문제되지 않는다. Pexels에서 내려받은 클립 18개 중 15개가 이미 1080×1920, 3개가 720×1280이었고 v1.3.4 릴리스 노트도 출력 방향에 맞는 소재를 우선 고른다고 밝힌다.
  • Windows에서는 경로에 비ASCII 문자, 특수문자, 공백을 넣지 않는다. README-en이 non-ASCII라고 못박았으므로 한글 경로도 여기에 포함된다. Windows 원클릭 패키지 안내에서도 같은 제약을 반복한다. 원클릭 패키지에는 경로 길이 제약도 있다 — 설치 절에 따로 적었다.
  • 자동 대본과 자막 분할은 손봐야 한다. 생성된 대본은 사실 오류는 없지만 구체적 정보가 희박한 홍보문 톤이었고, 언어를 한국어로 바꿔도 같았다. 자막은 문장 단위로만 끊기고 길이 상한이 없어 한 줄이 길어질 수 있다. 문장을 짧게 끊고 마침표를 찍은 대본을 직접 넣는 편이 낫다.
  • 대량 복제 영상은 플랫폼 수익화 대상이 아니다. 유튜브는 2025년 7월 15일에 수익화 정책의 “repetitious content” 항목을 “inauthentic content”로 개칭하고 기준을 명확히 했다. 템플릿만 조금씩 바꿔 대량 생산한 영상은 여기에 걸린다. 같은 정책이 AI 사용 자체는 문제 삼지 않는다고 명시하므로, 원본 가치가 있고 대량 복제가 아니면 파트너 프로그램 자격은 유지된다.
  • 위생 성격의 열린 이슈가 하나 있다. 이슈 #1174가 업로드 파일명 정규화 함수의 계약 위반을 지적하며 열려 있다. 제보자 본인이 제목에 “no exploit”이라고 적었고, 하위 파일 쓰기 로직이 경로를 안전하게 제한하고 있어 실제 악용 경로는 없다고 설명한다.
  • 확인하지 않은 경로가 있다. Google Colab 경로, Docker 배포 경로, 원클릭 패키지로 영상을 끝까지 만드는 것, 배경음악 random 경로, Whisper 자막 경로(subtitle_provider = "whisper"), Videos per Run 2 이상은 이번 검증에서 실행하지 않았다. Settings 다이얼로그의 Cache ManagementInterface Settings 탭도 개별 항목까지 조사하지 않았다. 이 글의 해당 서술은 소스와 문서 근거이며 실행으로 확인한 값이 아니다.

자주 묻는 질문

API 키 없이도 쓸 수 있나요?

쓸 수 있다. 대본과 검색어를 직접 넣고 Video SourceLocal file로 지정하면 외부 API 키를 하나도 쓰지 않고 전 구간이 완주한다. 실측 결과는 종료 코드 0, 소요 3분 15초, final-1.mp4 632KB / 1080×1920 h264 / 15.17초였다. 자막 파일도 정상 타임코드로 생성됐고 화면에 번인된 것까지 프레임을 뽑아 확인했다. 기본 TTS인 Edge TTS(WebUI 표기 Azure TTS V1)가 키를 요구하지 않기 때문이다.

한국어 UI가 있나요?

없다. webui/i18n/에 있는 언어 파일은 de, en, es, id, pt, ru, tr, vi, zh 아홉 종류이고 한국어가 없다. Script Language 드롭다운의 선택지 12개에도 ko-KR이 없다. 한국어 대본을 얻으려면 Script LanguageAuto Detect로 두고 Video Subject를 한국어로 쓴다.

폰트를 넣었는데 목록에 안 보입니다

확장자를 먼저 확인한다. 폰트 목록은 resource/fonts/를 스캔해 만들어지는데 .ttf.ttc만 잡는다. .otf.woff2는 넣어도 목록에 나타나지 않고 이때 아무 경고도 뜨지 않는다. 확장자가 맞다면 30초를 기다린 뒤 새로고침한다. 목록 캐시의 TTL이 30초라 그 안에는 반영되지 않을 수 있다. 프로그램을 다시 켤 필요는 없다.

영상 한 편 만드는 데 얼마나 걸리나요?

Windows 11 Pro 26200 / Python 3.11.15 / ffmpeg 8.1.1, GPU를 쓰지 않는 환경에서 15.17초 영상에 3분 15초, 87.27초 영상에 10분 26초가 걸렸다. 실시간 대비 약 7~13배다. 시간의 대부분은 영상 리사이즈에서 나오며 클립 하나에 24~28초씩 들었다. 다른 기계에서는 달라지는 수치이므로 이 환경의 관측값으로만 읽는다.

만든 영상을 유튜브에 올려 수익을 낼 수 있나요?

영상 자체를 올리는 것과 수익화 자격은 다른 문제다. 유튜브는 2025년 7월 15일에 수익화 정책의 “repetitious content”를 “inauthentic content”로 개칭·명확화했고, 템플릿을 조금씩 바꿔 대량 생산한 영상은 수익화 대상이 아니다. 같은 정책이 AI를 쓰는 것 자체는 문제 삼지 않으므로, 원본 가치가 있는 영상이고 대량 복제가 아니라면 파트너 프로그램 자격은 유지된다. 도구의 저장소 문서에는 수익화 적격성에 관한 언급이 없다.

원클릭 패키지가 압축이 안 풀립니다

내려받은 파일이 .7z 형식인데 윈도우 탐색기는 이 형식을 열지 못한다. 더블클릭해도 아무 일이 일어나지 않거나 연결 프로그램을 묻는 창이 뜬다. 별도 프로그램을 설치하지 않아도 윈도우에 들어 있는 tar로 풀 수 있다. 압축 파일이 있는 폴더에서 명령 프롬프트를 열고 아래를 실행한다.

tar -xf MoneyPrinterTurbo-Portable-Windows-1.3.4.7z

검증에 쓴 기계에는 7-Zip이 설치돼 있지 않았고, 윈도우 11에 동봉된 tar(bsdtar 3.8.4 / libarchive)로 34,322개 파일이 69.4초에 풀렸다. 푸는 위치는 짧은 경로여야 한다 — 이유는 설치 절의 경로 길이 항목에 있다.

원클릭 패키지와 직접 설치 중 뭘 골라야 하나요?

윈도우에서 일단 써보는 것이 목적이면 원클릭이다. README도 윈도우 사용자에게 이 경로를 먼저 권한다. 파이썬도 git도 ffmpeg도 따로 깔 필요가 없다. 이 환경에서 내려받기가 57.2초, 압축 해제가 69.4초였고 start.bat은 2초 만에 화면을 띄웠다. 그 사이 update.bat이 도는 시간은 재지 않았다.

맥이나 리눅스를 쓰거나, 코드를 고치거나, CLI로 자동화할 생각이면 직접 설치다. 원클릭 패키지는 윈도우용만 제공된다. 디스크가 빠듯할 때도 직접 설치가 가볍다 — 원클릭은 푼 뒤 2.04GB를 쓰고 파이썬과 git과 ffmpeg를 통째로 안고 있다.

두 경로는 같은 코드를 돌리므로 만들어지는 영상에는 차이가 없다. 한글 자막이 깨지는 문제도 양쪽 모두에 그대로 있다. 동봉 폰트가 같기 때문이다.

설정 항목은 각각 뭘 넣나요?

여기부터는 읽는 글이 아니라 찾아보는 자료다. 막힌 항목의 영문 이름으로 아래 표에서 검색하면 된다. WebUI 메인 폼은 4열 그룹으로 나뉘고, 여기에 우측 상단 Settings 다이얼로그가 따로 있다. 메인 폼의 항목은 44개이며 대부분 기본값으로 둬도 된다. 아래 표는 그 44개를 전부 싣는다(Video SettingsUpload Local FilesVideo Sourcelocal로 골랐을 때만 나타나는 부속 입력이라 행을 따로 뒀다). 앞의 최소 설정 여덟 개 중 메인 폼에 속한 여섯 개는 여기에도 다시 나오고, API Key 두 개는 Settings 절에 있다. 조건부로만 나타나는 항목은 어떤 선택을 해야 보이는지 함께 적었다.

Settings 다이얼로그 → LLM Settings (첫 탭)

Settings 다이얼로그에는 탭이 네 개 있다. LLM Settings, Material APIs, Cache Management, Interface Settings. 첫 탭이 LLM 설정이고, 이 탭을 채우지 않으면 script 단계에서 실패한다.

항목 무엇을 정하나 기본값 이렇게 넣으세요
LLM Provider 대본과 검색어를 생성할 AI 제공자를 정한다 실측 표시값 Google Gemini 쓰려는 제공자를 고른다. 고른 값에 따라 오른쪽 안내 패널의 내용이 바뀐다
API Key 그 제공자에 접속할 자격증명 비어 있음(화면에서 점으로 가려짐) 제공자 콘솔에서 발급받아 붙여넣는다. 비어 있으면 첫 단계에서 실패한다. Gemini는 Google AI Studio에서 발급한다
Model Name 호출할 모델 이름 gemini-3.1-pro-preview(Gemini 선택 시) 기본값 그대로 둔다
Test Model Connection (버튼) 입력한 값으로 실제 호출해 연결을 검사한다 키를 넣은 뒤 반드시 누른다. 이 버튼 외에는 키가 제대로 들어갔는지 확인할 방법이 없다

제공자를 Google Gemini로 두면 오른쪽 안내 패널이 Base Url: not required라고 알려준다. 필요한 입력은 제공자마다 다르므로 이 패널을 보고 채운다.

Settings 다이얼로그 → Material APIs (둘째 탭)

스톡 영상 소스의 키는 메인 폼이 아니라 이 탭에 있다. Video Source를 고르는 자리와 키를 넣는 자리가 떨어져 있어서 처음 켤 때 막히기 쉬운 지점이다.

항목 무엇을 정하나 기본값 이렇게 넣으세요
Pexels API Key Pexels 검색·다운로드 자격증명 비어 있음 Video SourcePexels(기본값)면 필수. 여러 개 넣으면 라운드로빈으로 순환한다
Pixabay API Key Pixabay 검색·다운로드 자격증명 비어 있음 Video SourcePixabay일 때만 필요
Coverr API Key Coverr 검색·다운로드 자격증명 비어 있음 Video SourceCoverr일 때만 필요

나머지 두 탭인 Cache ManagementInterface Settings는 이번 조사에서 개별 항목까지 열거하지 않았다. 확인한 범위를 넘어서는 설명은 넣지 않는다.

Video Script Settings (1열)

항목 무엇을 정하나 기본값 이렇게 넣으세요
Video Subject 영상 주제. LLM 프롬프트의 주제 줄이 된다 빈 문자열 한국어로 그냥 쓴다. Script LanguageAuto Detect로 두면 대본도 한국어로 나온다. 플레이스홀더 예시는 Example: How AI is changing everyday life
Script Language 대본 생성 프롬프트에 붙는 언어 지정 한 줄 Auto Detect(내부값 빈 문자열) 선택지 12개에 ko-KR이 없다. Auto Detect 유지 + 주제를 한국어로 쓰는 것이 한국어 대본을 얻는 경로다. 이 값은 음성이나 자막 폰트와 무관하다
Script Paragraph Count 생성 대본의 문단 수. 사실상 영상 길이를 좌우한다 1 (범위 1~10) 쇼츠는 1~2, 나레이션이 긴 영상은 3~5. 실측으로 2문단이 87초 영상이 됐다. Advanced Script Settings를 펼쳐야 보인다
Custom Script Requirements 톤·타깃·훅 등 대본에 붙일 추가 지시(2000자 상한) 빈 문자열 비워도 된다. 한국어로 적어도 그대로 모델에 전달된다. Advanced Script Settings 안에 있다
System Prompt 대본 생성 규칙 블록 전체(8000자 상한) 기본 프롬프트 전문이 미리 채워져 있음 손대지 않는 것을 권한다. 기본값과 문자열이 같으면 저장되지 않아 이후 버전의 기본 규칙이 자동 적용된다. 톤을 바꾸려면 Custom Script Requirements를 쓴다. 부속 버튼으로 Restore Default System PromptPreview Final Prompt가 있다
Generate Script & Keywords with AI (버튼) 대본과 검색어를 한 번에 생성한다 LLM 키가 설정돼 있어야 한다. Video Subject가 비면 호출하지 않고 경고만 띄운다. 생성되는 키워드는 5개이며 Match Visuals to Script Order가 켜져 있으면 8개
Video Script (Optional) 완성 대본을 직접 넣는 칸. 이 텍스트가 그대로 TTS 입력과 자막 원문이 된다 빈 문자열 직접 쓴 대본을 넣는 편이 낫다. 채우면 LLM 대본 생성을 건너뛴다. 문장을 짧게 끊고 마침표를 찍어야 자막이 잘게 나뉜다
Generate Keywords with AI (버튼) 대본에서 검색어만 생성한다 Video Script가 비면 경고만 띄우고 호출하지 않는다
Video Keywords (English, Optional) 스톡 영상 검색어. 콤마로 구분한다 빈 문자열 반드시 영어로 쓴다. Pexels·Pixabay·Coverr가 영어 검색 API라 한국어를 넣으면 결과가 비어 소재 확보가 실패할 수 있다. 비우면 LLM이 생성하므로 키가 필요해진다. Video SourceLocal file이면 이 값은 아예 쓰이지 않는다

Video Settings (2열)

항목 무엇을 정하나 기본값 이렇게 넣으세요
Video Source 화면 소재를 어디서 가져올지 정한다 Pexels 선택지는 Pexels / Pixabay / Coverr / Local file 네 개. 앞의 셋은 Settings → Material APIs의 키가 필요하다. 키 없이 돌려보려면 Local file. Coverr를 고르면 종횡비 기본값이 Landscape 16:9로 바뀐다
Upload Local Files 로컬 소재 파일 업로드 없음 Video SourceLocal file일 때만 나타나고, 이때는 필수다. 확장자 8종(.mp4 .mov .avi .flv .mkv .jpg .jpeg .png). 소재 종횡비를 출력에 맞춰야 검은 띠가 생기지 않는다
Video Concatenation Mode 확보한 소재를 잇는 방식 Random Concatenation (Recommended) 스톡 소재를 쓰는 일반 경로는 기본값 유지. 직접 찍은 클립을 의도한 순서로 보여주려면 Sequential Concatenation. 다만 Sequential은 파일마다 앞부분만 쓰므로 긴 클립 한두 개로는 오디오 길이를 못 채워 반복 재생된다
Match Visuals to Script Order 화면을 대본 서술 순서에 맞춘다 꺼짐 나레이션과 화면을 맞추고 싶으면 켠다. 켜면 Video Concatenation Mode가 잠기고 sequential로 고정되며, 키워드 생성이 5개에서 8개로 늘어 LLM 호출량도 늘어난다
Video Transition Mode 클립마다 적용할 1초짜리 전환 효과 None 선택지는 None, Shuffle, FadeIn, FadeOut, SlideIn, SlideOut, ZoomIn, ZoomOut 여덟 개. 클립 길이가 3초일 때 전환에 1초를 쓰면 실질 노출이 2초로 줄어든다. 클립이 3초 이하면 None 유지
Video Aspect Ratio 출력 해상도 Portrait 9:16(1080×1920) 쇼츠·릴스·틱톡은 Portrait 9:16, 가로 영상은 Landscape 16:9(1920×1080). 선택이 소스별로 따로 기억되므로 소스를 바꾸면 종횡비가 바뀐 것처럼 보인다
Maximum Clip Duration (seconds) 소재 한 조각의 길이. 최종 영상 길이는 나레이션이 결정한다 3 (선택지 2~10초) 3~5초. 스키마와 CLI 기본값은 5초인데 WebUI만 3초다. 값을 키우면 컷이 느려지고 다운로드하는 클립 수가 줄어 렌더 시간도 준다
Clip Speed 화면 소재의 재생 배속. 나레이션과 자막은 그대로다 1.00x (0.50~2.00, 스텝 0.05) 기본값 유지. 정적인 스톡 클립이 늘어져 보일 때만 1.2~1.5x
Videos per Run 같은 대본·같은 오디오로 소재 배치만 다른 영상을 몇 편 만들지 1 (선택지 1~5) 1. 렌더가 실시간의 7~13배 걸리므로 값을 올리면 대기 시간이 그만큼 늘어난다. 2 이상이면 Video Concatenation Mode 선택이 무시되고 random으로 고정된다
Video Encoder 영상 인코딩에 쓸 코덱 Default (Recommended) 기본값 유지. 선택지는 libx264 (CPU), NVIDIA NVENC (h264_nvenc), AMD AMF (h264_amf), Intel QSV (h264_qsv), Windows MediaFoundation (h264_mf), macOS VideoToolbox (h264_videotoolbox). 하드웨어 인코더가 없으면 자동으로 libx264로 폴백하므로 시도 자체는 안전하다

Audio Settings (3열)

항목 무엇을 정하나 기본값 이렇게 넣으세요
Voiceover Mode 나레이션을 어떻게 얻을지 Auto(TTS 합성) 무인 자동화면 Auto. 외부에서 만든 음성 파일을 쓰려면 Upload. 나레이션 없이 만들려면 None. Auto가 아니면 아래 서비스·음색·속도 컨트롤이 렌더되지 않는다
Voiceover Service TTS 제공자 Azure TTS V1 Azure TTS V1 유지를 권한다. 키가 필요 없고 한국어 음성 3종이 여기에 있다. 나머지 일곱 개(Azure TTS V2, SiliconFlow TTS, Google Gemini TTS, Xiaomi MiMo TTS, MiniMax TTS, ElevenLabs TTS, Chatterbox TTS)는 각자 크리덴셜이나 자체 호스팅 서버가 필요하다. Voiceover ModeAuto일 때만 보인다
Voice (match script language) 나레이션 목소리 UI 언어 기준 자동 선택. 영어 UI에서 en-AU-Natasha-Female 한국어 대본이면 반드시 바꾼다. ko-KR-SunHi-Female(여성), ko-KR-InJoon-Male(남성), ko-KR-HyunsuMultilingual-Male(남성) 세 종류가 Azure TTS V1 목록(322개)에 있다. 목록이 가상 스크롤이라 검색창에 ko-KR을 입력해야 찾아진다. 라벨과 달리 Script Language와 자동으로 연동되지 않고, 언어가 어긋나도 경고가 없다
프로바이더별 인증·설정 입력 (조건부) 선택한 TTS 서비스의 키·엔드포인트·모델 서비스마다 다름 Azure TTS V1을 쓰면 이 구역이 전부 나타나지 않는다. 다른 서비스를 골랐을 때 나타나는 15개 입력은 아래 표에 따로 정리했다
Voiceover Volume 나레이션 트랙 볼륨 100% (선택지 60%~500%) 기본값 유지. BGM과의 균형은 Background Music Volume에서 잡는 편이 낫다. TTS 합성에는 전달되지 않고 믹싱 단계에서만 적용된다. Voiceover ModeNone이면 나타나지 않는다
Voiceover Speed 나레이션 속도 1.0× (선택지 0.8×~2.0×) 한국어 나레이션은 1.0×~1.1×. 1.3× 이상은 자막 타이밍이 촘촘해져 읽기 어렵다. Voiceover ModeAuto일 때만 보인다
Voice Sample / Full Preview (버튼) 음색 샘플 재생과 대본 전체 미리듣기 Full PreviewVideo Script 전문을 합성하므로 유료 TTS에서는 크레딧을 쓴다. 대신 파라미터가 그대로면 생성 시 그 오디오를 재사용해 TTS 호출을 한 번 아낀다. Video Script가 비면 비활성 상태다
Upload Voiceover File 직접 만든 오디오를 나레이션으로 사용 없음 Voiceover ModeUpload일 때만 나타나고 필수다. 확장자 6종(.mp3 .wav .m4a .aac .flac .ogg). 업로드 오디오에는 TTS 타임라인이 없어서 기본 설정으로는 자막이 통째로 생성되지 않는다. 자막이 필요하면 config.tomlsubtitle_providerwhisper로 바꿔야 하며, 이 사실은 화면 어디에도 표시되지 않는다
Background Music Source 배경음악 출처 Random Background Music 선택지는 No Background Music, Random Background Music, Custom Background Music, Automatic Video-Matched Music (Sonilo AI), Automatic Video-Matched Music (ElevenLabs AI) 다섯 개. 업로드할 영상이면 No Background Music으로 바꾼다. 기본값이 random이라 아무것도 건드리지 않으면 동봉 29곡 중 하나가 자동으로 섞인다
Sonilo API Key / ElevenLabs Music API Key (조건부) AI 배경음악 생성 자격증명 비어 있음 BGM 소스를 Sonilo AI 또는 ElevenLabs AI로 골랐을 때만 나타난다. 키 없이 생성 버튼을 누르면 태스크를 만들지 않고 중단한다
Background Music Volume 배경음악 볼륨 20% (선택지 0%~100%) 나레이션이 있으면 10~20%. 0%는 단순 무음이 아니라 BGM 파이프라인 전체를 끄는 스위치다 — 업로드 파일 저장도, 유료 음악 API 호출도 하지 않는다. BGM 소스가 No Background Music이면 비활성 상태다
Upload Background Music / Or Enter a Custom Music Path (조건부) 직접 준비한 배경음악 없음 / 빈 문자열 BGM 소스가 Custom Background Music일 때만 나타난다. 업로드는 30MB 상한에 확장자 8종(.mp3 .m4a .aac .wav .flac .ogg .opus .wma)이고 FFmpeg 전체 디코드 검증을 통과해야 한다. 경로 입력칸은 임의 경로를 받지 않고 storage/bgmresource/songs 안의 파일명만 해석한다
Music Style (조건부) 생성할 음악의 스타일 프롬프트 빈 문자열 BGM 소스가 Sonilo AI 또는 ElevenLabs AI일 때만 나타난다. 비우면 서비스가 영상에 맞춰 자동 판단한다. 상한은 Sonilo 2000자, ElevenLabs 1000자. 옆의 Test Sonilo Connection / Test ElevenLabs Connection 버튼으로 연결만 확인할 수 있다

아래는 Voiceover ServiceAzure TTS V1 이외의 값으로 바꿨을 때만 나타나는 입력이다. 어떤 서비스를 골랐을 때 보이는지를 함께 적었다.

항목 무엇을 정하나 기본값 이렇게 넣으세요
Speech Region Azure Speech 리소스 지역 비어 있음 Azure TTS V2를 고르거나 V2 음색을 선택했을 때 나타난다
Speech Key Azure Speech 키 비어 있음 표시 조건은 Speech Region과 같다
Gemini API Key Gemini TTS 자격증명 비어 있음 Google Gemini TTS를 골랐을 때 나타난다. LLM 설정의 Gemini 키와 같은 값을 공유한다
SiliconFlow API Key SiliconFlow TTS 자격증명 비어 있음 SiliconFlow TTS 또는 해당 음색을 골랐을 때 나타난다
MiMo API Key Xiaomi MiMo TTS 자격증명 비어 있음 Xiaomi MiMo TTS를 골랐을 때 나타난다. LLM 설정의 MiMo 키와 공용이다
MiniMax TTS API Key MiniMax TTS 자격증명 비어 있음 MiniMax TTS를 골랐을 때 나타난다
MiniMax TTS Endpoint 호출할 지역 엔드포인트 https://api.minimax.io/v1/t2a_v2(글로벌) 중국 리전은 https://api.minimaxi.com/v1/t2a_v2
MiniMax TTS Model 합성 모델 speech-2.8-hd 기본값 그대로
MiniMax TTS Voice ID 사용할 음색 ID English_expressive_narrator MiniMax는 이 값 하나만 음색 목록으로 잡히므로, 쓰려는 음색 ID를 직접 넣는다
ElevenLabs API Key ElevenLabs 자격증명 비어 있음 ElevenLabs TTS를 골랐을 때 나타난다. 음색 목록을 실시간 조회하므로 키가 없으면 목록이 비고 voice_name도 빈 값이 된다. 사전에 Voice Library에서 즐겨찾기를 등록해 둬야 한다
ElevenLabs Model 합성 모델 eleven_multilingual_v2 선택지는 eleven_multilingual_v2, eleven_flash_v2_5, eleven_v3
Chatterbox Base URL 자체 호스팅 서버 주소 http://127.0.0.1:4123/v1 Chatterbox TTS를 골랐을 때 나타난다. 서버를 직접 띄워 둬야 동작한다
Chatterbox API Key 자체 호스팅 서버 인증 비어 있음 서버에 인증을 걸어 뒀을 때만 채운다
Chatterbox Model 모델 식별자 chatterbox 기본값 그대로
Chatterbox Voices 사용할 음색 목록(콤마 구분) default-Female 비워 두면 chatterbox:default-Female 한 개만 잡힌다

Subtitle Settings (4열)

항목 무엇을 정하나 기본값 이렇게 넣으세요
Enable Subtitles 자막을 영상에 번인할지 켜짐 켜둔다. 끄면 아래 자막 컨트롤이 사라지지 않고 전부 비활성 상태가 되며, 자막 생성 단계 자체를 건너뛴다
Font 자막 글꼴 MicrosoftYaHeiBold.ttc 한글 커버리지 0%인 기본값이므로 반드시 바꾼다. resource/fonts/에 한글 폰트를 넣고 이 목록에서 고른다. 목록은 그 폴더를 스캔한 결과이고 .ttf.ttc만 잡힌다. 재시작은 필요 없고 최대 30초 뒤 나타난다
Position 자막의 세로 위치 Bottom (Recommended) 선택지는 Top, Center, Bottom (Recommended), Custom. 쇼츠는 Bottom이 표준이고, 플랫폼 UI에 가리면 Custom
Custom Position (% from top) 화면 위에서부터의 퍼센트 위치 70.0 PositionCustom으로 골랐을 때만 나타난다. 70 전후가 화면 아래쪽 3분의 1 지점이다. 0~100 밖의 값은 에러 문구가 뜨고 저장되지 않지만 생성 자체를 막지는 않으므로 그대로 만들면 반영될 수 있다
Color (글자색) 자막 글자 색 #FFFFFF 흰색 유지 + 검정 외곽선. 스톡 영상은 배경 밝기가 계속 바뀌므로 색보다 외곽선이 중요하다
Font Size 자막 글자 크기 60 (범위 30~100) 1080×1920 세로 영상 기준 60이 적정. 한글은 같은 픽셀 크기에서 획이 조밀하므로 60 미만으로 내리지 않는 편이 좋다
Outline 글자 외곽선 색 #000000 검정 유지. 이 값은 config에 저장되지 않고 세션에만 남는다
Outline Width 외곽선 두께 1.50 (범위 0.0~10.0) 1.5~2.0. 배경이 밝은 스톡 클립에서 흰 자막이 사라지는 것을 막는 장치다. 이 값도 세션에만 남는다
Background 자막 뒤에 배경 박스를 깔지 꺼짐 외곽선으로 가독성이 나오면 꺼둔다. 켜면 아래 배경색이 적용된다
Color (배경색) 자막 배경 박스의 색 #000000 Background가 꺼져 있으면 컨트롤이 사라지지 않고 비활성 상태로 남는다. 색 값 자체는 유지되므로 다시 켜면 복원된다
Rounded Background 배경 박스를 둥근 반투명 스타일로 꺼짐 Background를 켰을 때만 유효하다. Background가 꺼져 있으면 체크 상태와 무관하게 적용되지 않는다
자동 경고 2종 입력 항목이 아니라 그룹 하단에 뜨는 진단 글자색과 배경색이 구분되지 않을 때, 그리고 선택한 폰트가 대본의 문자를 못 그릴 때 뜬다. 둘 다 경고일 뿐 생성을 막지 않는다. 폰트 경고는 대본이나 주제가 입력된 상태에서만 뜬다
Restore Subtitle Defaults (버튼) 자막 설정 전체를 기본값으로 되돌린다 누르면 FontMicrosoftYaHeiBold.ttc로 돌아가 한국어 자막이 다시 깨진다. 한글 폰트를 지정해 둔 상태에서는 누르지 않는다

생성 버튼이 막는 조건

Generate Video를 누르면 아래 조건을 순서대로 검사하고, 하나라도 걸리면 태스크를 만들지 않고 중단한다. 화면에 뜨는 문구를 그대로 옮겼다.

조건 화면에 뜨는 문구
Video SubjectVideo Script가 둘 다 비었다 Video Subject and Video Script cannot both be empty
Video Source가 허용된 네 값 밖이다 Please Select a Valid Video Source
소스가 pexels인데 Pexels 키가 없다 Please Enter the Pexels API Key
소스가 pixabay인데 Pixabay 키가 없다 Please Enter the Pixabay API Key
소스가 coverr인데 Coverr 키가 없다 Please Enter the Coverr API Key
BGM이 Sonilo이고 볼륨이 0보다 큰데 키가 없다 Enter a Sonilo API Key to use Sonilo background music.
BGM이 ElevenLabs이고 볼륨이 0보다 큰데 키가 없다 Enter an ElevenLabs API Key to use ElevenLabs background music.
소스가 local인데 업로드한 소재가 없다 Please upload at least one local material file first.
Voiceover ModeUpload인데 파일이 없다 Please upload a voiceover file first
과거 태스크를 복원할 때 필요한 커스텀 오디오를 다시 올리지 않았다 복원 경고 문구

Video SubjectVideo Script는 어느 한쪽만 있으면 된다. 주제만 있으면 LLM이 대본을 생성하고, 대본만 있으면 대본 생성을 건너뛴다. 둘 다 있으면 대본이 이기고 주제는 키워드 생성 프롬프트에만 쓰인다.

화면에 표시되지 않는 동작

소스를 읽어야 알 수 있고 화면에는 아무 표시가 없는 동작을 모았다. 설정을 바꿨는데 결과가 예상과 다를 때 여기부터 확인한다.

  • Videos per Run이 2 이상이면 Video Concatenation Mode 선택이 무시되고 random으로 강제된다.
  • Video Aspect RatioVideo Source별로 따로 기억된다. 소스를 바꾸면 종횡비가 저절로 바뀐 것처럼 보인다.
  • Full Preview로 만든 나레이션은 파라미터가 같으면 생성 시 재사용되어 TTS 호출을 한 번 줄인다.
  • Voiceover ModeUpload면 기본 설정에서 자막이 생성되지 않는다. 경고 로그 한 줄만 남는다.
  • WebUI의 기본 자막 폰트(MicrosoftYaHeiBold.ttc)는 CLI와 스키마 기본값(STHeitiMedium.ttc)과 다르고 한글 커버리지가 더 나쁘다.
  • Maximum Clip Duration의 WebUI 기본값 3초가 스키마 기본값 5초와 다르다.
  • Background Music Volume 0%는 볼륨이 아니라 BGM 파이프라인 전체의 킬 스위치다.
  • Custom Background Music의 경로 입력은 임의 경로를 받지 않고 storage/bgmresource/songs 두 디렉터리만 허용한다.
  • Video KeywordsVideo Sourcelocal이면 아예 사용되지 않는다.
  • 폰트 목록 캐시의 TTL은 30초다. 폰트를 넣고 바로 새로고침하면 아직 안 보일 수 있다.
  • Voiceover Volume은 TTS 합성에 전달되지 않고 믹싱 단계에서만 적용된다.
  • Restore Subtitle Defaults는 지정해 둔 한글 폰트를 되돌려 자막을 다시 깨뜨린다.

저장소는 github.com/harry0703/MoneyPrinterTurbo에 있다. Windows에서 처음 써본다면 릴리스 페이지의 원클릭 패키지를 받아 짧은 경로에 풀고 update.bat, start.bat을 차례로 누르는 것이 가장 빠르다. 그다음 할 일은 두 가지다. Settings → LLM Settings에 키를 넣고 Test Model Connection으로 확인하는 것, 그리고 한글 폰트 .ttf 파일을 resource/fonts/에 넣고 Font에서 고르는 것. 나눔고딕 볼드는 OFL 라이선스라 그대로 넣어 쓸 수 있고 현대 한글 11,172자를 전부 커버한다. 위 내려받기 절에 파일을 올려 뒀다.

같은 방식으로 끝까지 돌려본 다른 도구들:

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다