PTENES
Fábrica de imágenes + video de productos · 100% local

Una carpeta o un enlace se convierte en imágenes y video promocional

Indica la carpeta de fotos o la URL de la tienda. Videoprodutos encuentra los productos, recorta el fondo, aplica el preset de estilo (o lo elige automáticamente según el tipo de producto) y renderiza el video en 16:9 y 9:16, en una cola y desde la página web. Sin API de pago, sin créditos.

Ilustración de productos transformados en imágenes estilizadas y video
Qué es

Del producto sin procesar al anuncio listo, en lote

Un servidor Node con página web y una cola persistente. Cada tarea (carpeta o enlace) se convierte en un proyecto guardado en disco con originales, imágenes por preset en tres proporciones y videos listos para YouTube y Reels.

🔎 Encuentra los productos por sí solo

Carpeta (subcarpeta = producto, o fotos sueltas) o URL: Shopify, WooCommerce, JSON-LD, OpenGraph y, por último, las imágenes grandes de la página. Obtiene nombre, descripción y precio cuando existen.

🎨 9 presets de imagen + automático

Estudio blanco, dark premium, vibrante, minimalista, cálido/vintage, neón, natural, original y escenario con IA. Recorte de fondo con rembg local; salida 1:1, 16:9 y 9:16, limpia y con título/precio.

🎬 6 estilos de video + automático

Dinámico, elegante, tech, natural, promoción y cinemático: zoom/pan, transiciones, gradación de color, música CC0 (Freesound vía inemavox) o pista sintética, narración opcional y un catálogo con todos los productos.

Cómo funciona

Línea de montaje por producto

La categoría detectada (tecnología, moda, alimentos, hogar, mascotas, joyería…) determina el preset y el estilo cuando lo dejas en "automático". El copy (título, tagline, 3 beneficios, CTA) viene de Ollama local, o de una plantilla si no hay un LLM.

Carpeta / URL→ Productos + fotos→ Categoría + copy→ Recorte (rembg)→ Imágenes por preset→ Escenas (zoompan + texto)→ xfade + música + voz→ MP4 16:9 + 9:16→ projeto.json

Presets de imagen

presetcuándo usar
estudio-brancoe-commerce, cursos, libros
dark-premiumtecnología, joyería, automotriz
vibrantedeportes, infantil
minimalmoda, belleza
quente-vintagealimentos y bebidas
neónjuegos
naturalhogar, mascotas, eco
originalsolo corrige la luz/el color y encuadra
cenario-iafondo fotográfico generado (inemaimg / Agnes / API)

Estilos de video

estiloritmo
dinámicocortes de 2,2 s, punch zoom, slide
elegante3,6 s por escena, fundidos largos
techgradación azul/cian, wipe, leve rgbashift
naturalcálido, suave, guitarra
promoprecio destacado, CTA contundente
cinematicointro, contraste, música épica
Requisitos previos

Solo herramientas libres, todo en tu máquina

Obligatorio: Node 20+ y ffmpeg. Recomendado: Python con rembg (recorte de fondo). Opcionales y desactivables: Ollama (copy), inemavox (música/narración) e inemaimg o una API compatible (escenario con IA).

Node + ffmpeg

Servidor, composición (sharp) y render (h264_nvenc cuando hay GPU NVIDIA, si no, libx264).

# verificar
node -v   # >= 20
ffmpeg -version | head -1

rembg (recomendado)

Eliminación local del fondo con modelos ONNX. Sin esto, el producto se procesa sin recorte.

python3 -m venv .venv
.venv/bin/pip install rembg onnxruntime pillow numpy

Servicios opcionales

Si están disponibles, la app los usa; si no, recurre al fallback local sin fallar.

curl localhost:11434/api/tags     # Ollama → copiar
curl localhost:8010/api/system/status # inemavox → música/voz
curl localhost:8000/health         # inemaimg → escenario IA
Guía de uso · paso a paso

Del clon al primer video

Cinco pasos. El tercero es el único que vas a repetir.

1

Instalar y poner en marcha

Clona, instala las dependencias de Node y abre la página web en el puerto 3080.

git clone https://github.com/inematds/videoprodutos && cd videoprodutos
npm install
npm start        # → http://localhost:3080
2

Organizar la carpeta (o tomar el enlace)

Una subcarpeta por producto con las fotos y un produto.json o produto.md opcional (nombre, precio, descripción, categoría). Las fotos sueltas en la raíz se convierten en un producto cada una. O simplemente usa la URL de la tienda.

produtos/
  fone-x1/               ← un producto, varias fotos
    1.jpg 2.jpg
    produto.json         ← {"name":"Fone X1","price":"R$ 199","desc":"…","category":"tecnologia"}
  caneca-azul/
    foto.png
    produto.md           ← 1.ª línea = nombre, el resto = descripción
  camiseta.jpg           ← una foto suelta = un producto
3

Agregar a la cola

En la pestaña Nueva tarea: pega la carpeta (o usa "Procurar") o la URL, elige un preset y un estilo (o deja "Automático"), marca 16:9 y/o 9:16 y haz clic en Agregar a la cola. La pestaña Cola muestra el progreso y el registro en vivo. En la CLI es igual:

node cli.js ~/produtos --preset dark-premium --estilo tech --marca "MINHA LOJA"
node cli.js https://loja.com.br --max 5 --formato 9:16
node cli.js ~/produtos/cafes                       # todo automático
4

Poner un lote en cola

En la pestaña Nueva tarea → Lote (o --lote lista.txt): una fuente por línea, campos opcionales separados por |. La cola procesa en serie y sobrevive al reinicio del servidor.

# fuente | preset | estilo | formato | max=N | marca=Nombre | sin-video
~/produtos/cafes | quente-vintage | natural
https://minhaloja.com.br | auto | promo | 9:16 | max=5
~/produtos/fones | dark-premium | tech | ambos | marca=SOUNDX
~/produtos/camisetas | minimal | | | sem-video   # solo imágenes
5

Obtener el resultado

Pestaña Proyectos: reproductor de los videos, todas las imágenes por preset y los originales, con descarga. En el disco, todo queda en una carpeta autocontenida:

~/projetos/output/videoprodutos/<id>/
  projeto.json           ← manifiesto: productos, copy, categoría, preset, estilo, archivos
  originais/             ← fotos de entrada
  imagens/<preset>/      ← 1:1, 16:9, 9:16 · limpia y con texto
  videos/                ← <produto>-<estilo>-16x9.mp4, -9x16.mp4, _catalogo-*.mp4
+

Configurar LLM / imagen por IA (opcional)

Pestaña Configuraciones (se guarda en .env) o edita el archivo. Cada proveedor puede ser none; la app sigue funcionando con plantillas y presets locales.

LLM_PROVIDER=ollama          # none | ollama | openai (cualquier API compatible: Groq, OpenRouter…)
OLLAMA_MODEL=qwen3.8:27b
IMG_PROVIDER=inemaimg        # none | inemaimg (flux2-klein local) | agnes (US$ 0) | openai
TTS_ENGINE=edge              # none | edge | chatterbox   (vía inemavox)
MUSIC=freesound              # none | freesound | freesound-api | synth
VIDEO_ENGINE=ffmpeg           # ffmpeg (local) | agnes (clips de cámara por IA, US$ 0) | kie (reservado)
APP_PASSWORD=                 # contraseña HTTP Basic — obligatoria en una VPS
☁

Ejecutar en una VPS sin GPU

Perfil listo en deploy/: Agnes para copy, escenario y video, edge-tts para la voz, rembg en CPU, libx264 en el render, contraseña al frente. Probado con 2 vCPU / 4 GB.

git clone https://github.com/inematds/videoprodutos /root/projetos/videoprodutos
cd /root/projetos/videoprodutos && bash deploy/deploy.sh   # deps, venv, fuentes, systemd
nano .env        # AGNES_API_KEY y APP_PASSWORD (modelo en deploy/env.vps.example)
systemctl restart videoprodutos                    # → http://IP:3080
Ejemplos

Generado en la primera prueba, sin retoques

Dos fotos de productos en una carpeta, todo automático: el perro quedó en "pet" (preset natural, estilo natural) y el parlante en "tecnologia" (dark premium, estilo tech). Copy con Ollama local, recorte con rembg, narración con Edge TTS.

Imagen 1:1 generada con el preset dark premium, con título y precio
Imagen 1:1 "post" — preset dark-premium, título y tagline escritos por el LLM, recorte automático.
Frame de video 16:9 con estilo tech y beneficio destacado
Frame de video 16:9 — escena de beneficio, gradación de color "tech", overlay renderizado de SVG.
Frame de video 9:16 con CTA y precio
Video 9:16 — escena final con CTA y firma de la marca (el precio aparece como sello cuando el producto tiene precio).
Página web de videoprodutos con la cola de producción
La página web: nueva tarea, lote, cola con registro en vivo, proyectos y configuraciones.
Roadmap

A dónde va esto

El núcleo (descubrimiento → imágenes → video → cola) está listo. Falta refinamiento e integración.

v1.0
Núcleo localCarpeta/URL, 9 presets, 6 estilos, selección automática por categoría, cola persistente, página web, CLI, configuración opcional de LLM/imágenes.
v1.1
Motor de video con IA + VPSClips de cámara con Agnes (conectable: kie y otros en lib/videoai.js), perfil de deploy sin GPU con contraseña, edge-tts y Freesound directos.
v1.2
Edición del copy antes del renderRevisa el título, los beneficios y el precio en la cola antes de generar el video; vuelve a renderizar solo el video.
v1.3
Subtítulos y locución clonadaSubtítulos integrados y sincronizados con la narración; voz clonada (chatterbox/rachel) como opción predeterminada cuando la GPU esté libre.
v2
Exportación de HyperFrames y publicaciónComposición HTML editable para quienes quieren modificar el motion, y envío directo a Metricool/agenda de publicaciones.