127.000 estrellas, un instalador de 872 MiB y 141 MiB de fuentes de Apple y Microsoft: auditoría de MoneyPrinterTurbo

MoneyPrinterTurbo tiene 127.556 estrellas, aparece hoy en la lista Trending de GitHub con 431 estrellas en un día y acumula 19.953 forks. He descargado su compilación para Windows de 872,79 MiB y la he descomprimido: ocupa 1.938,6 MiB en disco y arrastra un paquete .git de 523 MiB, un PortableGit de 363 MiB, dos compilaciones completas de ffmpeg y 40 MiB de símbolos de depuración. De los 202,53 MiB de bytes versionados, 141,26 MiB (69,7%) son fuentes propietarias — Microsoft YaHei (© 2022 Microsoft) y STHeiti (© Changzhou SinoType, las que distribuye macOS) — redistribuidas bajo una licencia MIT sin avisos de terceros y metidas también en la imagen GHCR. Además: 29 MP3 sacados de YouTube, CVE-2025-7897 (CVSS 7,3) y otras dos CVE de 2025 que estuvieron once meses sin corregir, y un «publicado con un clic» que en realidad es una API de terceros de 16 dólares al mes.

MoneyPrinterTurbo es, por los números, uno de los programas de IA más populares de GitHub. Su repositorio tiene 127.556 estrellas y 19.953 forks mientras escribo esto: una proporción de forks sobre estrellas del 15,6%, alta incluso para proyectos que la gente clona una vez y no vuelve a tocar. Hoy ha aparecido en la sexta posición de la lista diaria Trending de GitHub con «431 estrellas hoy». Se creó en marzo de 2024, publica la versión v1.3.7, su último commit es de ayer y promete lo que sugiere el nombre: le das un tema o una palabra clave y escribe el guion, elige el material de archivo, lo locuta, quema los subtítulos, añade música, renderiza un vídeo corto en HD y puede subirlo a TikTok, Instagram y YouTube Shorts.

Eso es la parte visible del embudo. Esta auditoría va sobre la parte de abajo: los objetos que el proyecto pone realmente en tu disco.

He descargado la versión actual para Windows — MoneyPrinterTurbo-Portable-Windows-1.3.7.7z, 872,79 MiB (915.187.824 bytes) —, he listado sus 23.992 entradas una a una, he pedido el manifiesto del contenedor en GHCR, he leído las tablas de nombres internas de los archivos de fuentes, he inspeccionado las tramas ID3 de la música incluida, he consultado el registro CVE para reconstruir el historial de avisos del proyecto y he raspado la página de precios del servicio de terceros que implementa el «publicado multiplataforma con un clic». Nada de esto ha requerido la cooperación del autor. Todo cabe en una tarde.

Resumen: MoneyPrinterTurbo es un producto real, con usuarios reales, que resuelve un problema genuinamente aburrido — pegar ffmpeg, un motor TTS, un LLM y un generador de subtítulos de forma que alguien sin conocimientos de programación pueda ejecutarlo con doble clic. Alrededor de ese núcleo hay tres historias que la descripción del repositorio no cuenta: una de empaquetado, otra de licencias y otra de seguridad. La de licencias es la grave: el 69,7% de los bytes versionados en un repositorio con licencia MIT son fuentes propietarias de Microsoft y del proveedor SinoType de Apple, y viajan en cada versión publicada y en la imagen de Docker.

La forma del proyecto, medida

MétricaValor (01-10-2026)
Estrellas / forks127.556 / 19.953 (15,6%)
Trending de hoyposición 6, «431 estrellas hoy»
Creado / último push11-03-2024 / 30-09-2026
Versionesv1.3.7 (13-09-2026), 14 activos de Windows en total
Descargas de activos117.554; solo la v1.3.7 = 14.221
Bytes servidos por las versiones~110,9 TB (110.932.111.965.964 bytes)
Incidencias / cerradas813 / 800 (98,4%)
Pull requests / colaboradores633 / 115
LicenciaMIT, «Copyright (c) 2024 Harry», sin avisos de terceros
Salud de la comunidad57%, sin CODE_OF_CONDUCT ni CONTRIBUTING
Bytes versionados202,53 MiB en 277 archivos
Imagen Dockerghcr.io/harry0703/moneyprinterturbo:latest, 700,29 MiB (linux/amd64)

Una advertencia antes de que alguien cite esa cifra de transferencia como prueba de importancia: procede de los contadores de activos de GitHub, y un paquete portátil que se vuelve a descargar en cada versión infla exactamente ese número. 117.554 descargas de un archivo de entre 576 MiB y 980 MiB son 110,9 TB de tráfico: un hecho real de infraestructura y una métrica de vanidad a la vez.

La curva de estrellas es más interesante. La he reconstruido a partir de instantáneas del repositorio en Wayback Machine, leyendo el atributo title del contador de estrellas de GitHub:

FechaEstrellas
24-03-2024630dos semanas después del lanzamiento
01-11-202416.738
01-12-202548.030
23-03-202650.988
01-06-202675.373+24.385 en diez semanas
20-07-202698.299+22.926 en siete semanas
19-08-2026109.793
17-09-2026124.296
01-10-2026127.556

Entre el lanzamiento y el 1 de junio de 2026 el proyecto promedió 92,8 estrellas al día. Desde el 1 de junio promedia 427,7 al día, y eso subestima el pico: el repositorio sumó 18.297 estrellas en los veinte días que van del 12 de mayo al 1 de junio de 2026, y una web de análisis independiente registró que llegó al número 1 de GitHub Trending a finales de mayo de 2026 con 62.000 estrellas y +1.742 en un solo día.

El estallido coincide con algo concreto del ecosistema. El análisis de un producto rival atribuye el tirón a la fiebre del vídeo corto con IA chocando con el debate sobre el etiquetado de contenido IA en YouTube — un hilo de Hacker News sobre ese debate acumuló 507 votos —, que empujó a creadores a buscar cualquier cosa que automatizase la producción de Shorts. Estar en Trending es un buen sitio cuando una categoría entera se pone nerviosa.

Y el dato que hace extraña la curva: Hacker News tiene una sola publicación de este proyecto en dos años y medio. «Show HN: Generate short videos with one click using AI LLM», del 15 de noviembre de 2024, terminó con 2 puntos y 0 comentarios. Hay 127.556 personas que le han dado una estrella y, por lo que se puede comprobar, casi ninguna lo publicó en el sitio donde los desarrolladores discuten sobre herramientas.

El instalador de 872 MiB

La versión para Windows es un único .7z. Esto es lo que contiene, por tamaño descomprimido:

ComponenteArchivosDescomprimido
lib/python — CPython 3.11 embebido + site-packages17.437769,0 MiB
MoneyPrinterTurbo/.git — el repositorio git completo33523,4 MiB
lib/git — Git portátil para Windows6.289362,8 MiB
MoneyPrinterTurbo/resource — fuentes y música39197,1 MiB
lib/ffmpeg — una compilación independiente de ffmpeg181,5 MiB
el resto193~4,8 MiB
Total23.9921.938,6 MiB

872,79 MiB de descarga se convierten en 1.938,6 MiB en disco: un factor de 2,22. Quien haga doble clic en start.bat en un portátil con un disco de 256 GB acaba de gastar el 0,76% de su capacidad en una herramienta cuyo trabajo es montar vídeos verticales de un minuto.

La lista de archivos individuales es donde se ven las decisiones de empaquetado:

  • MoneyPrinterTurbo/.git/objects/pack/pack-696c4752….pack — 523,16 MiB. La versión publicada incluye toda la historia git del proyecto, no un tarball del código.
  • lib/python/Lib/site-packages/imageio_ffmpeg/binaries/ffmpeg-win-x86_64-v7.1.exe — 83,58 MiB.
  • lib/ffmpeg/ffmpeg-7.0-essentials_build/ffmpeg.exe — 81,53 MiB. Es decir: el archivo lleva dos compilaciones completas de ffmpeg, 165 MiB entre las dos, para una sola tarea.
  • lib/python/Library/bin/libcrypto-3-x64.pdb (24,14 MiB) y lib/python/python311.pdb (16,14 MiB): 40,3 MiB de símbolos de depuración de Windows procedentes de OpenSSL y CPython, que nada necesita en un entorno ya compilado.
  • lib/python/Lib/site-packages/pydeck/nbextension/static/index.js.map: 18,51 MiB, incluido dos veces, la segunda como share/jupyter/nbextensions/pydeck/index.js.map. Un mapa de código JavaScript de una dependencia de Streamlit, duplicado, son 37 MiB.
  • lib/git/mingw32/bin/scalar.exe y lib/git/mingw32/libexec/git-core/scalar.exe: el binario scalar de Microsoft, también duplicado, 10,84 MiB cada uno.

Dos elementos explican el tamaño: el paquete git y la instalación portátil de Git, juntos 886 MiB descomprimidos. Y ese peso no es un artefacto de la descompresión: los paquetes de git ya vienen comprimidos con zlib, y pasar por gzip 200 MiB de este deja 200,0 MiB en 199,9 MiB — un 99,9% incompresible. El paquete de 523 MiB engorda la descarga en 523 MiB, no es una cifra teórica que se evapore al extraer. El update.bat de la raíz del archivo ocupa 306 bytes y explica por qué están los dos:

@echo off
set "CURRENT_DIR=%~dp0"
%CURRENT_DIR%lib\git\bin\git.exe -C %CURRENT_DIR%MoneyPrinterTurbo pull
%CURRENT_DIR%\lib\python\Scripts\pip.exe install -r %CURRENT_DIR%MoneyPrinterTurbo\requirements.txt
echo ##### Update completed #####
pause

El «paquete de un clic» es un checkout de git con un cliente Git propio para poder hacer git pull desde main y luego reinstalar dependencias con pip. Es una decisión defendible en un proyecto pensado en primer lugar para el público chino, donde un clon limpio suele ser la vía más rápida de recibir correcciones; y es también la razón por la que una aplicación de 300 MiB lleva ocho versiones seguidas publicándose cerca de los 900 MiB: de v1.3.0 a v1.3.7 todas han pesado entre 872,79 y 979,13 MiB.

Hay una consecuencia de cadena de suministro que conviene nombrar, no porque haya pasado nada, sino porque es el diseño: una versión numerada que se autoactualiza desde una rama sin fijar en la primera ejecución, y un requirements.txt que vuelve a resolver paquetes desde PyPI. Quien confía en el número de versión que descargó está ejecutando lo que main fuera esa mañana.

El 69,7% de este repositorio son fuentes de otras personas

resource/fonts contiene nueve archivos. Cuatro son estos, y he leído sus tablas de nombres internas con fontTools en lugar de fiarme de los nombres de archivo:

ArchivoTamañoLo que la fuente dice de sí misma
STHeitiLight.ttc53,20 MiBCopyright © 2000–2007 Changzhou SinoType Technology Co., Ltd.; familias Heiti TC, Heiti SC; nombre PostScript STHeitiTC-Light; versión 17.0d1e2; 2021-06-23
STHeitiMedium.ttc53,17 MiBMismo copyright; Heiti SC Medium/Heiti TC Medium
MicrosoftYaHeiNormal.ttc18,79 MiB«© 2022 Microsoft Corporation. All Rights Reserved. Portions © 2022 Beijing Founder Electronics Co. Ltd.»; marca «Microsoft YaHei is a trademark of the Microsoft group of companies.»
MicrosoftYaHeiBold.ttc16,10 MiBIgual, en negrita

La fuente de Microsoft lleva su propia licencia dentro del archivo, y no es una licencia de redistribución:

«Microsoft supplied font. You may use this font to create, display and print content as permitted by the license terms, or terms of use, of the Microsoft product, service or content in which this font was included. You may only (i) embed this font in content as permitted by the embedding restrictions included in this font; and (ii) temporarily download this font to a printer or other output device…»

«Microsoft supplied font» es la frase clave: el archivo se licencia para el sistema operativo con el que se distribuyó, no para terceros. El par STHeiti es la misma historia con otro dueño: Heiti SC y Heiti TC son las fuentes de sistema chinas simplificada y tradicional de macOS, licenciadas por Apple a SinoType, y la cadena interna de versión (17.0d1e2, con fecha 23-06-2021) es coherente con una compilación de fuente de sistema de macOS.

En total: 141,26 MiB de los 202,53 MiB de bytes versionados, el 69,75%. La licencia del repositorio es un texto MIT escueto, Copyright (c) 2024 Harry, sin archivo de avisos de terceros, sin excepción para fuentes y sin una sola línea en ninguno de los dos README sobre de dónde salen. La sección de subtítulos del README inglés dice únicamente:

«Fonts for rendering video subtitles are located in the project’s resource/fonts directory, and you can also add your own fonts.»

Y no es peso decorativo. config.example.toml documenta la fuente por defecto de los subtítulos como font_name = "MicrosoftYaHeiBold.ttc", así que el archivo propietario es la ruta de renderizado por defecto: los glifos acaban horneados en los vídeos que los usuarios suben.

La distribución va más allá de las versiones de GitHub. La imagen GHCR ghcr.io/harry0703/moneyprinterturbo:latest pesa 700,29 MiB para linux/amd64; su capa COPY . . son 134,02 MiB, y al descargarla y listarla, sus cuatro entradas más grandes eran STHeitiLight.ttc (53,20 MiB), STHeitiMedium.ttc (53,17 MiB), MicrosoftYaHeiNormal.ttc (18,79 MiB) y MicrosoftYaHeiBold.ttc (16,10 MiB), seguidas de los 29 MP3. El repositorio sí tiene un .dockerignore — excluye .git y storage —, pero no excluye resource/. Cualquiera que haga pull de esa imagen recibe las fuentes, use el punto de entrada que use.

Las 29 canciones

resource/songs contiene 29 MP3 llamados output000.mp3 … output029.mp3, 55,3 MiB en total. He analizado cuatro con mutagen:

  • Los cuatro duran exactamente 180,0 segundos.
  • Bitrates de 89 a 100 kbps a 48 kHz.
  • Todos llevan una única trama de metadatos: TSSE = Lavf60.16.100, la etiqueta del codificador de FFmpeg. No sobrevive ningún campo de artista, título, álbum, año o licencia.

Un directorio de pistas de tres minutos recortadas de forma uniforme, con bitrate bajo y metadatos borrados, es el aspecto que tiene una extracción masiva de audio. Y el proyecto no lo esconde: el README chino y el inglés lo dicen.

«The current project includes some default music from YouTube videos. If there are copyright issues, please delete.»

«Bórralo si infringe» no es una licencia y no funciona en la dirección que importa: el bgm_type = "random" por defecto elige uno de esos archivos para tu vídeo, y quien lo sube a YouTube es quien tiene algo en juego si Content ID detecta la pista. La corrección es una línea en un script de compilación — borrar resource/songs y resource/fonts/*.ttc — y no está ni en el .dockerignore ni en las notas de empaquetado.

La «Azure TTS V1» que no es Azure

MoneyPrinterTurbo ofrece once vías de voz. La que viene por defecto, y que la interfaz etiqueta como Azure TTS V1, es edge-tts 7.2.7, que no es un producto de Azure. Es un cliente comunitario que invierte la ingeniería del endpoint que hay detrás del botón «Leer en voz alta» de Microsoft Edge.

Tres hechos al respecto, ninguno discutido:

  1. No tiene licencia para esto. El endpoint no es una API pública de desarrollo; existe para el navegador Edge. Como resumió un comentarista en el propio hilo de Hacker News de la librería: la API de Edge «no está licenciada para ningún uso, comercial o no, fuera de Edge».
  2. Se rompe. En 2024 Microsoft empezó a exigir una cabecera Sec-MS-Token y todas las librerías dependientes estuvieron rotas semanas, hasta que la comunidad volvió a invertir el proceso. El autor de la librería, rany_, escribió en Hacker News en enero de 2025: «básicamente, es una muy mala idea usar esta librería para nada serio o crítico». Microsoft también restringió el endpoint a las etiquetas SSML básicas que usa Edge, así que los controles de emoción y prosodia que ofrecen las voces comerciales de Azure no están disponibles.
  3. La alternativa obvia tiene su propia trampa de licencia. Azure Speech tiene un nivel gratuito, F0, con 500.000 caracteres neuronales al mes, pero los Product Terms de Microsoft reservan los derechos de uso comercial del audio a los clientes de pago: «For Customers of the paid tier TTS Service only, Customer may use the audio output of prebuilt neural voices generated using the TTS Service, including for commercial purposes.» Se aclaró en el propio Q&A de Microsoft en marzo de 2026, donde un moderador voluntario explicó a un usuario que F0 es «una asignación de precio para evaluación y pruebas» y no incluye esos derechos de uso.

Es decir: las dos opciones de voz más baratas de la configuración por defecto — la gratuita y el nivel gratuito de la de pago — son la elección equivocada si el vídeo se va a monetizar. Si eso suena a puntillismo, conviene recordar que la premisa comercial de la herramienta es la monetización; el repositorio se llama MoneyPrinterTurbo.

Las opciones realmente seguras son aburridas y están disponibles: Kokoro-82M (Apache-2.0, se ejecuta en local sobre CPU y está en la parte alta de la tabla de TTS Arena), Piper (MIT, corre en una Raspberry Pi), o una clave de Azure Speech S0/ElevenLabs/Cartesia donde los derechos de salida sean explícitos.

Tres CVE de julio de 2025 en una API que nadie tenía que autenticar

MoneyPrinterTurbo tiene un historial de seguridad que no aparece en ninguna parte de su README. El resumen semanal de vulnerabilidades de CISA de la semana del 14 de julio de 2025 lista tres avisos contra este proyecto, todos asignados por VulDB y publicados el 20-07-2025:

CVEProblemaCVSS 3.1Afecta a
CVE-2025-7897verify_token en app/controllers/base.py: falta de autenticación en el endpoint de la API, explotable en remoto, sin privilegios requeridos7,3 HIGH (AV:N/AC:L/PR:N/UI:N)1.2.0–1.2.6
CVE-2025-7896Salto de ruta (path traversal) en download_video/delete_video, en app/controllers/v1/video.py6,3 MEDIUM1.2.0–1.2.6
CVE-2025-7895Subida de archivos sin restricciones en upload_bgm_file, en app/controllers/v1/video.py6,3 MEDIUM1.2.0–1.2.6

La cronología es lo interesante. La etiqueta v1.2.6 se publicó el 10-05-2025. Las CVE se publicaron el 20-07-2025. La siguiente versión, la v1.2.7, llegó el 03-04-2026: casi once meses después, en un proyecto que luego publicó catorce versiones en los seis meses siguientes. Cualquiera que sea la razón, un proyecto con 50.000 estrellas en aquel momento tardó casi un año en sacar una versión tras recibir una CVE de severidad alta por falta de autenticación.

¿Está corregido ahora? En parte, y conviene ser preciso, porque es exactamente el patrón que hace difícil consumir avisos de seguridad. He leído app/controllers/base.py en la v1.3.7:

configured_key = config.app.get("api_key", "")
if configured_key in (None, ""):
    return None          # <- sin autenticación por diseño si no hay clave

La función solo cierra el acceso cuando hay una clave configurada. Con la clave vacía devuelve None de inmediato y todas las rutas de la API son públicas; el docstring en chino lo documenta como «空 Key 保留现有的本地免认证模式» («una clave vacía conserva el modo local sin autenticación existente»). Lo que la rodea sí mejoró: ahora se rechazan de plano las cabeceras x-api-key duplicadas en lugar de resolverlas de forma ambigua, y la comparación usa secrets.compare_digest sobre bytes UTF-8, con un comentario sobre ataques con caracteres Latin-1. Los manejadores de subida y borrado también se reestructuraron en llamadas de servicio validadas.

Pero config.example.toml — el archivo que el proyecto copia a config.toml en la primera ejecución — sigue distribuyendo esto:

listen_host = "0.0.0.0"
listen_port = 8080
api_key = ""

Escuchando en todas las interfaces, en el puerto 8080, sin clave: exactamente la postura que le valió la CVE de 7,3. El docker-compose sí lo hace bien, mapeando a 127.0.0.1:8080, y el lanzador del WebUI usa MPT_WEBUI_HOST=127.0.0.1 por defecto, así que la vía del contenedor está bien. La vía manual uv run python main.py — la que el README recomienda a desarrolladores y la que se ejecuta al extraer el paquete portátil — queda sin autenticación en la red local hasta que el usuario lea el comentario y ponga una clave.

El «publicado multiplataforma con un clic» es una API de 16 dólares al mes

La lista de funciones dice: «支持一键跨平台发布,生成完成后可自动上传至 TikTok、Instagram 和 YouTube Shorts». Busqué la implementación esperando flujos OAuth por plataforma. Lo que hay es app/services/upload_post.py, un cliente de 402 líneas para Upload-Post, un servicio comercial de terceros en api.upload-post.com:

  • Necesita upload_post_api_key y upload_post_username.
  • Consulta el estado del trabajo cada 10 segundos con un tiempo máximo de una hora, y marca una plataforma como fallida si el resultado no aparece o viene como omitido.
  • Valores por defecto en la configuración de ejemplo: upload_post_enabled = false, upload_post_platforms = ["tiktok", "instagram"], upload_post_youtube_privacy_status = "public".

La página de precios de Upload-Post, que he raspado hoy, tiene un nivel gratuito (10 subidas al mes, según su documentación para desarrolladores) y luego 16 $/mes (192 $/año), 33 $/mes (400 $/año), 118 $/mes (1.411 $/año) y 350 $/mes (4.205 $/año); adjuntar enlaces en X cuesta 19 $/mes adicionales.

Nada de esto es deshonesto: delegar la publicación en una API especializada es una decisión de ingeniería razonable, y evita mantener cuatro clientes de subida no oficiales y frágiles. Simplemente no es lo que «un clic» sugiere a quien lee la lista de funciones, y es un coste recurrente que la comparación del README con alternativas «gratuitas» nunca menciona. Hay un riesgo relacionado que conviene decir sin rodeos: publicar de forma automatizada y en volumen es justo el comportamiento que los sistemas de moderación de las plataformas están diseñados para detectar, y el trabajo de Upload-Post es empujar el mismo archivo a varias de ellas.

La superficie de credenciales y quién paga la herramienta gratuita

config.example.toml tiene 698 líneas y declara 47 claves con credenciales repartidas en 41 proveedores distintos: OpenAI, Anthropic, Gemini, Moonshot/Kimi, DeepSeek, Qwen, Azure OpenAI, xAI, Groq, MiniMax, MiMo, Volcano Ark, ModelScope, OpenRouter, AIHubMix, AIMLAPI, API Route, APIMart, CheaperInference, Cloudflare AI Gateway, EvoLink, Fluxion AI, OneAPI, Pollinations, Requesty, Shengsuanyun, Sonilo, Metaso, MuAPI, Ofox, WaveSpeed, Pexels, Pixabay, Coverr, imagen de OpenAI, TwelveLabs, LoomLoom y Upload-Post. El flujo de primera ejecución es: consigue al menos dos de ellas (un LLM y una clave de material de archivo, salvo que uses Ollama y material local) antes de que se renderice nada.

Dónde va el dinero se ve en el README. Después de la lista de funciones, aproximadamente 110 de las 568 líneas del README son bloques de patrocinio, y no son logotipos decorativos:

  • Kimi / Moonshot AI como patrocinador principal, con enlace con seguimiento (track_id=…&aff=moneyprinterturbo) que ofrece un 10% de crédito extra en la primera recarga, hasta 1.000 CNY, hasta el 31 de diciembre de 2026.
  • Revendedores de API que anuncian precios por debajo de tarifa: Infistar.cc («grandes modelos hasta 0,1 del precio oficial», es decir un 90% de descuento, más 5 $ de crédito), Fluxion AI («coste de llamada entre un 40% y un 98% por debajo del precio oficial o de referencia», más 3 $), APIMart, Ofox, UCloud AstraFlow (50 CNY de cómputo), Shengsuanyun (10 CNY de tokens), Metaso (vídeo MiniMax H3 a 0,09 ¥/s en 768p y 0,15 ¥/s en 2K).
  • Promoción cruzada del producto comercial del autor, MangoDisk, en un bloque a ancho completo.
  • Y una ruta de código: script_generation_backend = "loomloom" con loomloom_base_url = "https://loomloom.shengsuanyun.com/loom/v1", un SkillBot alojado de un patrocinador cableado directamente en la configuración como generador de guiones seleccionable.

Anunciar un 90% por debajo del precio de tarifa de modelos de frontera es un modelo de negocio que exige o bien contratos empresariales por volumen revendidos contra sus condiciones, o bien otra cosa. Sea cual sea, el hecho de que ese sea el argumento de venta dice bastante sobre el público al que monetiza el proyecto: gente que quiere ganar dinero con vídeo IA sin gastar dinero en IA.

Antes de que esto suene a ataque al autor, el contraargumento es real. El patrocinio es como se financian los proyectos de código abierto chinos de este tamaño, el código es MIT y es genuinamente útil, y para la mayoría de lectores la alternativa es no tener nada. La objeción es más estrecha: quien decide si construye un negocio sobre esta pila merece saber que la documentación de la herramienta es también su inventario publicitario, y que los caminos de pago recomendados son enlaces de afiliación.

Qué dicen los análisis independientes

Dos análisis encontrados al investigar el proyecto merecen cita, porque coinciden entre sí y con los artefactos:

El análisis de Wavect de 2026 (publicado el 20 de agosto, revisado el 2 de septiembre de 2026, cuando registraba «alrededor de 120.000 estrellas y la v1.3.6») plantea bien la cuestión del coste: hay que medir el coste por vídeo aprobado, no por renderizado, «porque los renderizados descartados y las reescrituras también consumen tokens, llamadas a APIs de material, cómputo y tiempo humano de revisión». Sobre la exposición: «Trata el WebUI y la API por defecto como servicios de desarrollo, no como frontera de un SaaS público». Sobre la monetización: la herramienta «no hace que un canal sea elegible o no por sí misma», pero las directrices de YouTube consideran no elegible el contenido producido en masa, repetitivo y con variación mínima.

La comparativa de AI Fruit (mayo de 2026) es más directa sobre el arranque: entre 30 y 90 minutos de configuración, con las tres quejas principales de instalación siendo versiones de Python incompatibles, rutas de ffmpeg y bibliotecas CUDA ausentes; coste mensual esperado de 0–30 $ si alojas el modelo en local, 30–80 $ con APIs en la nube; y el problema de salida que nadie menciona en la lista de funciones: «el material de archivo se siente genérico… el resultado se parece a cualquier otro Short cosido por IA, porque los clips subyacentes vienen de las mismas bibliotecas gratuitas», con resultados flojos fuera de noticias y listículos.

Ese último punto es el que ninguna mejora de empaquetado resuelve. La tubería técnica es competente; el insumo diferenciador es la misma biblioteca de Pexels de la que tira todo el mundo.

Reproducir esta auditoría

Todo lo anterior se reproduce en una tarde. Los cuatro comandos que produjeron los números más interesantes:

# 1. El contenido real del instalador (~872 MiB de descarga, ~1,9 GiB extraídos)
curl -L -o mpt.7z https://github.com/harry0703/MoneyPrinterTurbo/releases/download/v1.3.7/MoneyPrinterTurbo-Portable-Windows-1.3.7.7z
uv run --with py7zr python3 -c "import py7zr;z=py7zr.SevenZipFile('mpt.7z');print(len(z.list()))"

# 2. Qué son realmente las fuentes incluidas (no cómo se llaman)
uv run --with fonttools python3 -c "from fontTools.ttLib import TTCollection;t=TTCollection('resource/fonts/MicrosoftYaHeiNormal.ttc').fonts[0];print([n.toUnicode() for n in t['name'].names if n.nameID==0][:1])"

# 3. La capa más pesada de la imagen de contenedor, entrada por entrada
#    token: https://ghcr.io/token?scope=repository:harry0703/moneyprinterturbo:pull&service=ghcr.io
#    después GET /v2/harry0703/moneyprinterturbo/blobs/<digest> y listarlo como tar

# 4. El historial de avisos, que el README no menciona
curl -s "https://cveawg.mitre.org/api/cve/CVE-2025-7897" | head -c 2000

La lección vale más allá de este proyecto. Las estrellas miden atención; los activos de una versión miden intención; los bytes versionados miden qué estaba dispuesto a comprometer un mantenedor. Cuando el recuento de bytes de un repositorio lo dominan archivos que nadie escribió, ahí suelen estar tanto el riesgo de licencia como el problema de tamaño, y ambos son visibles sin leer una línea de código de la aplicación.

Guía práctica

Si quieres usarlo. Úsalo: para aprender y para experimentos internos es genuinamente capaz, y la vía local (Ollama, material propio y TTS autoalojado) no cuesta más que tiempo. Antes de publicar nada:

  1. Borra las fuentes y la música. rm -rf resource/songs resource/fonts/*.ttc. Instala Noto Sans CJK o Source Han Sans (ambas SIL OFL) y pon las tuyas. font_name acepta cualquier archivo que dejes en el directorio.
  2. Cambia la voz. Kokoro o Piper en local, o Azure Speech S0 / ElevenLabs / Cartesia si vas a monetizar. No publiques locuciones hechas con edge-tts ni con el nivel gratuito F0 de Azure.
  3. No uses la postura de red por defecto. Pon listen_host = "127.0.0.1" y una api_key no vacía. Si tiene que ser accesible, delante un proxy inverso con TLS y autenticación, y conserva los mapeos de puerto 127.0.0.1: del compose.
  4. No uses la compilación portátil de Windows como instalación de producción. Se vuelve a traer main al actualizar, arrastra un paquete git de 523 MiB y no fija nada. Usa uv sync --frozen contra uv.lock, o la imagen de contenedor con tu propia etapa de compilación.
  5. Guarda la trazabilidad. Por vídeo: identificadores de los activos de origen, los archivos de fuente y música usados, el proveedor de TTS y su nivel de cuenta, y el hash del archivo final. La normativa sobre divulgación de medios sintéticos (artículo 50 del Reglamento europeo de IA) y las políticas de las plataformas apuntan en la misma dirección, y «no sabía qué archivo de música había elegido» no es una defensa.
  6. Cuenta con la capa de Content ID y de políticas, no solo con el renderizado. Lee la política de monetización de YouTube sobre contenido producido en masa y repetitivo antes de escalar, y declara el contenido sintético en el flujo de subida.

Preguntas frecuentes

¿MoneyPrinterTurbo es gratis? El código es MIT. Ejecutarlo no lo es: una clave de LLM y otra de material de archivo son el mínimo en la vía por defecto, y los análisis independientes sitúan el uso real en 0–30 $/mes autoalojando el modelo y 30–80 $/mes con APIs en la nube. La publicación automatizada añade de 0 $ (10 subidas al mes) a 350 $/mes en Upload-Post.

¿Las fuentes incluidas me afectan a mí si solo uso la herramienta en local? La redistribución es un problema del mantenedor, no tuyo, pero los glifos de los subtítulos quedan horneados en el vídeo exportado, y usar para eso un archivo de fuente que no has licenciado es otra cuestión. Cambia las fuentes: son dos minutos y eliminan la ambigüedad.

¿Me afectan las CVE de 2025 en la versión actual? El rango de los avisos es 1.2.0–1.2.6 y el proyecto va por la 1.3.7. El código se reestructuró y la autenticación se endureció, pero el valor por defecto sigue siendo «sin clave configurada no hay autenticación», y la configuración de ejemplo sigue atando la API a 0.0.0.0:8080. Trata cualquier instancia con api_key vacía como pública.

¿Se pueden monetizar los vídeos hechos con esto? La licencia no lo impide y la herramienta tampoco hace elegible a un canal. YouTube evalúa el contenido: el trabajo original que sigue un formato repetible puede monetizarse; los clips intercambiables producidos en masa, en general, no. Las licencias de voz y música son los dos componentes con más probabilidad de provocar una reclamación antes que el propio algoritmo.

¿Por qué hay tantas estrellas si apenas se habla del proyecto entre desarrolladores? Porque «estrella» y «adoptar» son acciones distintas, y el público de este proyecto llega por el contenido chino sobre monetización de vídeo corto, no por la discusión entre programadores. El 15,6% de quienes le dieron estrella lo bifurcaron; el activo más descargado tiene 20.664 descargas; hay una publicación en Hacker News con dos puntos. Nada de eso es fraude: es un público distinto del que miden las listas de herramientas con muchas estrellas.

¿Le diría a alguien que montara un negocio sobre esto? Como motor de renderizado propio y modificable, sí, con los arreglos anteriores. Como sistema de ingresos, no: el cuello de botella no es la tubería, sino que todos los competidores están cosiendo la misma biblioteca gratuita en el mismo formato vertical, y las plataformas dicen cada vez más claro que eso no lo van a premiar.

Conclusión

MoneyPrinterTurbo es una herramienta competente y genuinamente popular, con una cantidad inusual de maquinaria detrás de una promesa sencilla, y la versión honesta del argumento es mejor que la de marketing: una tubería local integrada — guion, voz, material, subtítulos, música, renderizado y publicación — con once opciones de TTS y diez fuentes de vídeo, que alguien que nunca ha instalado Python puede ejecutar. 115 colaboradores, 800 de 813 incidencias cerradas, un umbral de cobertura de ramas del 70% en pyproject.toml y un proyecto que no para de publicar. Nada de lo que hay aquí exige que sus responsables sean cínicos.

Pero tres cosas no deberían sobrevivir a la próxima versión. 141,26 MiB de fuentes de Apple y Microsoft redistribuidas bajo una licencia MIT son un riesgo legal concentrado en el mantenedor y distribuido a 117.554 descargas. 29 MP3 sacados de YouTube con la advertencia «bórralo si infringe» son el mismo problema con la confesión ya escrita. Y una configuración de ejemplo que ata una API sin autenticación a todas las interfaces es la forma en que el proyecto consiguió su CVE de severidad alta, que quedó abierta once meses.

Arregla esas tres cosas — borrar resource/fonts/*.ttc y resource/songs de la compilación, poner listen_host a 127.0.0.1 por defecto y añadir Noto Sans CJK — y desaparece aproximadamente un tercio de los bytes versionados, la imagen se hace más pequeña y esta auditoría deja de tener interés. Normalmente ese es el objetivo.