返回 MoneyPrinterTurbo
config.example.toml
根目录 / config.example.toml
1 [app]
2 video_source = "pexels" # "pexels" or "pixabay"
3
4 # 是否隐藏配置面板
5 hide_config = false
6
7 # Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。
8 # 网络异常、服务端限流或 voice 与文本语言不匹配时,edge_tts 可能长期卡住。
9 # 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。
10 # 设置为 0 表示禁用超时。
11 edge_tts_timeout = 30
12
13 # 是否校验外部 API 和素材下载的 TLS 证书。
14 # 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。
15 # 只有在企业代理或自签证书环境明确需要时,才临时改为 false。
16 tls_verify = true
17
18 # Pexels API Key
19 # Register at https://www.pexels.com/api/ to get your API key.
20 # You can use multiple keys to avoid rate limits.
21 # For example: pexels_api_keys = ["123adsf4567adf89","abd1321cd13efgfdfhi"]
22 # Use straight ASCII double quotes around each key. Smart quotes copied from rich text will break TOML parsing.
23 # 请使用英文半角双引号包裹每个 Key;从富文本复制来的弯引号会导致 TOML 解析失败。
24 # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开
25 pexels_api_keys = []
26
27 # Pixabay API Key
28 # Register at https://pixabay.com/api/docs/ to get your API key.
29 # You can use multiple keys to avoid rate limits.
30 # For example: pixabay_api_keys = ["123adsf4567adf89","abd1321cd13efgfdfhi"]
31 # Use straight ASCII double quotes around each key. Smart quotes copied from rich text will break TOML parsing.
32 # 请使用英文半角双引号包裹每个 Key;从富文本复制来的弯引号会导致 TOML 解析失败。
33 # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开
34 pixabay_api_keys = []
35
36 # Coverr API Key
37 # Register at https://coverr.co/developers?ctx=header_navigation to get your API key instantly.
38 # Free tier (Demo) is limited to 50 requests/hour — sufficient for a few
39 # video tasks per hour. Upgrade to Pro/Ultimate subscription for 2000/hour.
40 # Coverr provides free HD/4K stock videos (subject to Coverr license terms,
41 # see https://coverr.co/license), mostly 16:9 landscape; if
42 # you generate 9:16 short-form videos, prefer Pexels/Pixabay as primary
43 # and use Coverr to widen the catalog for landscape/cinematic content.
44 # You can use multiple keys to avoid rate limits.
45 # For example: coverr_api_keys = ["123adsf4567adf89","abd1321cd13efgfdfhi"]
46 # Use straight ASCII double quotes around each key. Smart quotes copied from rich text will break TOML parsing.
47 # 请使用英文半角双引号包裹每个 Key;从富文本复制来的弯引号会导致 TOML 解析失败。
48 # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开
49 coverr_api_keys = []
50
51 # TwelveLabs API Key (optional) — https://twelvelabs.io
52 # TwelveLabs (可选) 视频理解 / 多模态嵌入集成。
53 # Enables two opt-in features:
54 # * Marengo (multimodal embeddings) semantically reorders the auto-generated
55 # search terms by relevance to your video subject, so the most on-topic
56 # B-roll is downloaded first when the timeline budget is tight.
57 # * Pegasus (video understanding) can QA / describe a clip from its URL.
58 # Leave empty to keep MoneyPrinterTurbo's behavior completely unchanged.
59 # Configure a TwelveLabs API key from the TwelveLabs dashboard (https://twelvelabs.io) and install the
60 # optional dependency with `uv sync --extra twelvelabs`.
61 # Register at https://playground.twelvelabs.io to get your API key.
62 # You can use multiple keys to avoid rate limits.
63 # For example: twelvelabs_api_keys = ["tlk_123adsf4567","tlk_abd1321cd13ef"]
64 # 请使用英文半角双引号包裹每个 Key;从富文本复制来的弯引号会导致 TOML 解析失败。
65 twelvelabs_api_keys = []
66
67 # Reorder search terms by Marengo relevance before downloading footage.
68 # Requires twelvelabs_api_keys above. Ignored in "match materials to script"
69 # mode, where term order is intentionally the script's narrative order.
70 twelvelabs_rerank_terms = false
71
72 # Optional model overrides (defaults shown).
73 # twelvelabs_marengo_model = "marengo3.0"
74 # twelvelabs_pegasus_model = "pegasus1.5"
75
76 # 支持的提供商 (Supported providers):
77 # openai
78 # aihubmix (OpenAI-compatible AI model gateway)
79 # aimlapi (OpenAI-compatible multi-model AI API)
80 # moonshot (月之暗面)
81 # azure
82 # qwen (通义千问)
83 # deepseek
84 # gemini
85 # ollama
86 # g4f (disabled by default; set enable_g4f=true only after accepting its risks)
87 # oneapi
88 # cloudflare
89 # minimax
90 # evolink (OpenAI-compatible multi-model AI gateway)
91 # volcengine (VolcEngine Ark OpenAI-compatible API)
92 # mimo (Xiaomi MiMo)
93 # ernie (文心一言)
94 # modelscope (魔搭社区)
95 # litellm (100+ providers via LiteLLM gateway)
96 llm_provider = "openai"
97
98 ########## Pollinations AI Settings
99 # Visit https://pollinations.ai/ to learn more
100 # API Key is optional - leave empty for public access
101 pollinations_api_key = ""
102 # Base URL for Pollinations API.
103 # Leave empty to use the default endpoint (https://text.pollinations.ai/openai).
104 # Note: the old "https://pollinations.ai/api/v1" endpoint no longer accepts
105 # requests (returns 405 Method Not Allowed), so only set this if you have a
106 # working custom endpoint.
107 pollinations_base_url = ""
108 # Default model for text generation
109 pollinations_model_name = "openai-fast"
110
111 ########## Ollama Settings
112 # No need to set it unless you want to use your own proxy
113 ollama_base_url = ""
114 # Check your available models at https://ollama.com/library
115 ollama_model_name = ""
116
117 ########## OpenAI API Key
118 # Get your API key at https://platform.openai.com/api-keys
119 # 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,
120 # 例如 OpenRouter 这类提供自定义 base_url 的平台。
121 openai_api_key = ""
122 # No need to set it unless you want to use your own proxy
123 # 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。
124 openai_base_url = ""
125 # Check your available models at https://platform.openai.com/account/limits
126 # 如果使用兼容供应商,请填写该平台要求的模型 ID。
127 openai_model_name = "gpt-4o-mini"
128
129 ########## AIHubMix API Key
130 # AIHubMix is OpenAI-compatible and can use one API key to access multiple models.
131 # Visit https://aihubmix.com/?aff=CEve to register and get your API key.
132 aihubmix_api_key = ""
133 aihubmix_base_url = "https://aihubmix.com/v1"
134 aihubmix_model_name = "gpt-5.4-mini"
135
136 ########## AIML API Key
137 # AIML API is OpenAI-compatible and can use one API key to access multiple model families.
138 # Visit https://aimlapi.com/app/keys to create your API key.
139 aimlapi_api_key = ""
140 aimlapi_base_url = "https://api.aimlapi.com/v1"
141 aimlapi_model_name = "openai/gpt-4o-mini"
142
143 ########## Moonshot API Key
144 # Visit https://platform.moonshot.cn/console/api-keys to get your API key.
145 moonshot_api_key = ""
146 moonshot_base_url = "https://api.moonshot.cn/v1"
147 moonshot_model_name = "moonshot-v1-8k"
148
149 ########## OneAPI API Key
150 # Visit https://github.com/songquanpeng/one-api to get your API key
151 oneapi_api_key = ""
152 oneapi_base_url = ""
153 oneapi_model_name = ""
154
155 ########## G4F
156 # g4f relies on reverse-engineered third-party endpoints and is not recommended
157 # for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,
158 # Ollama, or local inference.
159 # If you still need it, install the optional dependency with:
160 # uv sync --extra g4f
161 enable_g4f = false
162 # Visit https://github.com/xtekky/gpt4free to get more details
163 # Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py
164 g4f_model_name = "gpt-3.5-turbo"
165
166 ########## Azure API Key
167 # Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details
168 # API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference
169 azure_api_key = ""
170 azure_base_url = ""
171 azure_model_name = "gpt-35-turbo" # replace with your model deployment name
172 azure_api_version = "2024-02-15-preview"
173
174 ########## Gemini API Key
175 gemini_api_key = ""
176 gemini_model_name = "gemini-2.5-flash"
177
178 ########## Grok API Key
179 grok_api_key = ""
180 grok_model_name = "grok-4.3"
181 grok_base_url = "https://api.x.ai/v1"
182
183 ########## Groq API Key
184 # Visit https://console.groq.com/keys to get your api keys
185 # API documentation: https://console.groq.com/docs/api-reference
186 # Available models: https://console.groq.com/docs/api-reference#models-list
187 groq_api_key = ""
188 groq_model_name = "llama-3.3-70b-versatile"
189 groq_base_url = "https://api.groq.com/openai/v1"
190
191 ########## Qwen API Key
192 # Visit https://dashscope.console.aliyun.com/apiKey to get your API key
193 # Visit below links to get more details
194 # https://tongyi.aliyun.com/qianwen/
195 # https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction
196 qwen_api_key = ""
197 qwen_model_name = "qwen-max"
198
199
200 ########## MiniMax API Key
201 # Visit https://platform.minimax.io or https://platform.minimaxi.com to get your API key
202 # MiniMax API is OpenAI-compatible
203 # Available models: MiniMax-M3 (default), MiniMax-M2.7, MiniMax-M2.7-highspeed
204 # If your API key returns 401 on api.minimax.io, try the China endpoint: https://api.minimaxi.com/v1
205 minimax_api_key = ""
206 minimax_base_url = "https://api.minimax.io/v1"
207 minimax_model_name = "MiniMax-M3"
208
209 ########## EvoLink API Key
210 # EvoLink is an OpenAI-compatible gateway for language models.
211 # Visit https://evolink.ai/dashboard/keys to get your API key.
212 # API documentation: https://docs.evolink.ai/en/api-manual/language-series
213 # Available models include gpt-5.5, gpt-5.4, gpt-5.2, deepseek-v4-flash, deepseek-v4-pro, gemini-3.1-pro, and doubao-seed-2.0-pro.
214 evolink_api_key = ""
215 evolink_base_url = "https://direct.evolink.ai/v1"
216 evolink_model_name = "gpt-5.5"
217
218 ########## VolcEngine Ark API Key
219 # VolcEngine Ark provides an OpenAI-compatible Chat Completions API.
220 # Create an API key in the VolcEngine Ark console and use a model ID that is
221 # enabled for your account.
222 volcengine_api_key = ""
223 volcengine_base_url = "https://ark.cn-beijing.volces.com/api/v3"
224 volcengine_model_name = "doubao-seed-2-1-turbo-260628"
225
226 ########## Xiaomi MiMo API Key
227 # Xiaomi MiMo API is OpenAI-compatible.
228 # Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.
229 mimo_api_key = ""
230 mimo_base_url = "https://api.xiaomimimo.com/v1"
231 mimo_model_name = "mimo-v2.5-pro"
232 # Xiaomi MiMo TTS uses the same API key and base_url as MiMo LLM.
233 mimo_tts_model_name = "mimo-v2.5-tts"
234 # Optional natural language style prompt for MiMo TTS.
235 mimo_tts_style_prompt = "请用自然、清晰、适合短视频旁白的语气朗读。"
236
237 ########## DeepSeek API Key
238 # Visit https://platform.deepseek.com/api_keys to get your API key
239 deepseek_api_key = ""
240 deepseek_base_url = "https://api.deepseek.com"
241 deepseek_model_name = "deepseek-chat"
242
243
244 ########## ModelScope API Key
245 # Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key
246 # And note that you need to bind your Alibaba Cloud account before using the API.
247 modelscope_api_key = ""
248 modelscope_base_url = "https://api-inference.modelscope.cn/v1/"
249 modelscope_model_name = "Qwen/Qwen3-32B"
250
251 ########## LiteLLM (AI Gateway — 100+ providers)
252 # LiteLLM routes to any LLM provider via a unified interface.
253 # Use this for providers not directly supported above: Anthropic (native API),
254 # AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.
255 # Visit https://docs.litellm.ai/docs/providers for the full list.
256 #
257 # LiteLLM reads provider API keys from environment variables automatically:
258 # OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.
259 # Set the appropriate env var for your chosen provider before running.
260 #
261 # Model name in LiteLLM format: "provider/model-name"
262 # Examples: "openai/gpt-4o", "anthropic/claude-sonnet-4-20250514",
263 # "bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0",
264 # "gemini/gemini-2.5-flash", "ollama/llama3"
265 litellm_model_name = "openai/gpt-4o-mini"
266
267 # Subtitle Provider, "edge" or "whisper"
268 # If empty, the subtitle will not be generated
269 subtitle_provider = "edge"
270
271 #
272 # ImageMagick
273 #
274 # Once you have installed it, ImageMagick will be automatically detected, except on Windows!
275 # On Windows, for example "C:\Program Files (x86)\ImageMagick-7.1.1-Q16-HDRI\magick.exe"
276 # Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe
277
278 # imagemagick_path = "C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16\\magick.exe"
279
280
281 #
282 # FFMPEG
283 #
284 # 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。
285 # 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:
286 # RuntimeError: No ffmpeg exe could be found.
287 # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.
288 # 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/
289
290 # Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.
291 # However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:
292 # RuntimeError: No ffmpeg exe could be found.
293 # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.
294 # In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/
295
296 # ffmpeg_path = "C:\\Users\\harry\\Downloads\\ffmpeg.exe"
297
298 # 视频编码器。默认 libx264 最稳定;高级用户可以尝试硬件编码器提升速度。
299 # 如果当前 FFmpeg 或硬件驱动不支持所选编码器,程序会自动回退到 libx264。
300 # 可选值: "libx264", "h264_nvenc", "h264_amf", "h264_qsv", "h264_mf", "h264_videotoolbox"
301 # video_codec = "libx264"
302
303 # Video encoder. libx264 is the safest default; advanced users can try hardware encoders.
304 # If the selected encoder is not supported by the current FFmpeg or driver, the app falls back to libx264.
305 # Available values: "libx264", "h264_nvenc", "h264_amf", "h264_qsv", "h264_mf", "h264_videotoolbox"
306 # video_codec = "libx264"
307 #########################################################################################
308
309 # 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口
310 # 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4
311 # 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名
312 # 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4
313 # endpoint="https://xxxx.com"
314
315 # When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.
316 # For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4
317 # If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.
318 # For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4
319 # endpoint="https://xxxx.com"
320 endpoint = ""
321
322
323 # Video material storage location
324 # material_directory = "" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project
325 # material_directory = "/user/harry/videos" # Indicates that video materials will be downloaded to a specified folder
326 # material_directory = "task" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials
327
328 # 视频素材存放位置
329 # material_directory = "" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos
330 # material_directory = "/user/harry/videos" #表示将视频素材下载到指定的文件夹中
331 # material_directory = "task" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材
332
333 material_directory = ""
334
335 # Used for state management of the task.
336 # Redis is expected to be private to this app. Do not expose it to untrusted
337 # writers, because task state is deserialized for compatibility with existing
338 # records.
339 enable_redis = false
340 redis_host = "localhost"
341 redis_port = 6379
342 redis_db = 0
343 redis_password = ""
344
345 # 文生视频时的最大并发任务数
346 max_concurrent_tasks = 5
347
348 # 并发任务已满后的最大排队任务数,超过后接口返回 429,避免匿名请求无限堆积
349 max_queued_tasks = 100
350
351
352 [whisper]
353 # Only effective when subtitle_provider is "whisper"
354
355 # Run on GPU with FP16
356 # model = WhisperModel(model_size, device="cuda", compute_type="float16")
357
358 # Run on GPU with INT8
359 # model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
360
361 # Run on CPU with INT8
362 # model = WhisperModel(model_size, device="cpu", compute_type="int8")
363
364 # recommended model_size: "large-v3"
365 model_size = "large-v3"
366 # if you want to use GPU, set device="cuda"
367 device = "CPU"
368 compute_type = "int8"
369
370
371 [proxy]
372 ### Use a proxy to access the Pexels API
373 ### Format: "http://<username>:<password>@<proxy>:<port>"
374 ### Example: "http://user:pass@proxy:1234"
375 ### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies
376
377 # http = "http://10.10.1.10:3128"
378 # https = "http://10.10.1.10:1080"
379
380 [azure]
381 # Azure Speech API Key
382 # Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices
383 speech_key = ""
384 speech_region = ""
385
386 [siliconflow]
387 # SiliconFlow API Key
388 # Get your API key at https://siliconflow.cn
389 api_key = ""
390
391 [elevenlabs]
392 # ElevenLabs API Key
393 # Get your API key at https://elevenlabs.io/app/settings/api-keys
394 # Mark voices as favorites in the ElevenLabs voice library to make them appear here.
395 api_key = ""
396 # Model: eleven_multilingual_v2 | eleven_flash_v2_5 | eleven_v3
397 model_id = "eleven_multilingual_v2"
398
399 [ui]
400 # UI related settings
401 # 是否隐藏日志信息
402 # Whether to hide logs in the UI
403 hide_log = false
404
405 # 字幕位置设置 (Subtitle position settings)
406 # 可选值 (Available values): "top", "center", "bottom", "custom"
407 # subtitle_position = "custom"
408 # 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = "custom" 时生效
409 # Custom position as percentage from top (0-100), only effective when subtitle_position = "custom"
410 # custom_position = 70.0
411
412 ########## Upload-Post (Cross-post to TikTok/Instagram/YouTube Shorts)
413 # Upload-Post allows you to automatically cross-post generated videos to TikTok, Instagram and YouTube Shorts.
414 # Visit https://upload-post.com to create an account and get your API key.
415 # API Documentation: https://docs.upload-post.com
416
417 # Enable/disable Upload-Post integration
418 upload_post_enabled = false
419
420 # Your Upload-Post API key
421 upload_post_api_key = ""
422
423 # Your Upload-Post username
424 upload_post_username = ""
425
426 # Platforms to cross-post to (options: "tiktok", "instagram", "youtube")
427 upload_post_platforms = ["tiktok", "instagram"]
428
429 # Automatically cross-post videos after generation (if false, you'll need to call the API manually)
430 upload_post_auto_upload = false
431
432 # YouTube Shorts privacy status (options: "public", "unlisted", "private")
433 upload_post_youtube_privacy_status = "public"
434
435 # Chatterbox TTS (self-hosted, OpenAI-compatible) ##########################
436 # Chatterbox (https://github.com/resemble-ai/chatterbox, MIT) is an open-source,
437 # locally hosted TTS model with zero-shot voice cloning — a self-hostable
438 # alternative to ElevenLabs. Run a server that exposes an OpenAI-compatible
439 # endpoint at POST {base_url}/audio/speech (e.g. devnen/Chatterbox-TTS-Server
440 # or travisvn/chatterbox-tts-api), then set base_url below. In the WebUI pick
441 # "Chatterbox TTS" as the TTS server, or via the API pass a voice_name like
442 # "chatterbox:<voice>". Subtitles use the full-text fallback (no word-level
443 # timestamps); set subtitle_provider = "whisper" for tighter sync.
444 [chatterbox]
445 # Defaults target travisvn/chatterbox-tts-api running locally on port 4123.
446 base_url = "http://127.0.0.1:4123/v1"
447 api_key = ""
448 model_id = "chatterbox"
449 # Voices exposed by your server; shown in the WebUI dropdown as chatterbox:<name>
450 voices = ["default-Female"]
451
451 lines TOML