Volver a las guías

Vídeos para anuncios con RunPod (para expertos)

Generar clips hablados y escenas con Wan 2.2 e InfiniteTalk en tu pod de RunPod, con los scripts de RoyLead haciendo el grueso del trabajo. Costes, instalación, trampas.

Actualizada el 16 de septiembre de 2026


⚠️ Para expertos. Hace falta saber usar un terminal (Linux, macOS o WSL en Windows), ssh y ffmpeg, y tener una cuenta de RunPod con tarjeta asociada. Si no te reconoces en esta descripción, usa fal.ai: los mismos modelos, se paga por clip, nada que instalar. Es la vía que el playbook del lanzamiento propone por defecto.

Con RunPod alquilas una GPU por horas y ejecutas en ella los modelos de código abierto: Wan 2.2 para las escenas mudas (image-to-video) e InfiniteTalk para las frases habladas con los labios sincronizados. Los scripts de RoyLead hacen la parte aburrida: esperan a que ComfyUI esté listo, dejan InfiniteTalk a punto, suben fotos y voces, generan los clips en fila, los descargan y montan el vídeo final.

Cuánto cuesta

ConceptoCoste
GPU RTX PRO 6000 (96 GB), Secure Cloud2,09 $ la hora, solo mientras está encendida
GPU RTX 5090 Community0,69 $ la hora, pero 62 GB de RAM: con los modelos completos puede quedarse sin memoria
Disco de red de 200 GB con los modelos14 $ al mes, siempre
Una tanda de 6 clips (pod recién encendido)unos 25 minutos, menos de 1 $
Corto de 60 s, 12 planos por 3 intentosunas 2 horas de GPU

El pod se borra al final de la sesión: un pod parado pero no borrado sigue costando. El disco se queda, con los modelos dentro.

Paso 1 — Cuenta, clave SSH, disco

  1. Crea la cuenta en runpod.io y carga saldo.
  2. En Settings → SSH Public Keys registra tu clave pública (~/.ssh/id_ed25519.pub; si no la tienes: ssh-keygen -t ed25519). Los scripts usan ~/.ssh/id_ed25519; para otra clave, define RUNPOD_SSH_KEY=/ruta/de/la/clave antes de lanzarlos.
  3. Crea un Network Volume de 200 GB en un centro de datos EU (p. ej. EU-RO-1). El disco guarda los modelos (unos 176 GB): los descargas una sola vez. El centro de datos del disco decide dónde podrás crear los pods.

Paso 2 — El pod

Plantilla recomendada: «One Click - ComfyUI Wan2.1 - Wan 2.2» (autor Hearmeman, id 758dsjwiqz). Al crearlo:

  • GPU: RTX PRO 6000 Blackwell (96 GB) en Secure Cloud. Con menos RAM, los modelos completos (28 GB cada uno) dejan el pod sin memoria al cargar el segundo.
  • Disco: tu network volume, montado en /workspace.
  • Variables de la plantilla: la primera vez download_wan22=true y download_wan21=true (descarga los modelos al disco, 8-10 minutos). En los pods siguientes ponlas a false: los modelos ya están en el disco y volver a descargarlos lo llena.
  • Puerto 8188: es ComfyUI en el navegador, en https://<pod_id>-8188.proxy.runpod.net.

En la ficha del pod, en Connect, coge las dos cosas que necesitan los scripts: el pod id (está en la URL) y el usuario SSH del proxy (<pod_id>-<código>@ssh.runpod.io).

Paso 3 — InfiniteTalk (solo para los clips hablados)

La plantilla no incluye InfiniteTalk. Una sola vez, en el disco, en /workspace/ComfyUI/models/, añade estos archivos (desde Hugging Face):

CarpetaArchivoRepositorio
diffusion_modelsWan2_1-InfiniTetalk-Single_fp16.safetensorsKijai/WanVideo_comfy (carpeta InfiniteTalk)
wav2vec2wav2vec2-chinese-base_fp16.safetensorsKijai/wav2vec2_safetensors
text_encodersumt5-xxl-enc-bf16.safetensorsKijai/WanVideo_comfy
vaeWan2_1_VAE_bf16.safetensorsKijai/WanVideo_comfy
loraslightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensorsKijai/WanVideo_comfy (carpeta Lightx2v)

El modelo base wan2.1_i2v_480p_14B_bf16.safetensors ya lo descarga la plantilla.

💡 Espacio. Un disco de «200 GB» contiene unos 186 reales. Con todo instalado quedan unos 20 GB para los vídeos: si las descargas se paran sin error, está lleno. El archivo wan2.1_t2v_14B_bf16.safetensors (27 GB, Wan desde texto) no hace falta: se puede borrar.

Las otras dos cosas que InfiniteTalk necesita (un enlace de carpeta y un parche para la biblioteca transformers 5) las hace orchestrate.sh solo en cada pod nuevo, porque están en el disco del contenedor y se pierden cuando el pod se borra.

Paso 4 — Los scripts en tu PC

Descárgalos en una carpeta, todos juntos (se buscan entre ellos):

Desde el terminal:

mkdir -p ~/video-tools && cd ~/video-tools
for f in lib_video.sh orchestrate.sh gen_video.py fix_wav2vec_tf5.py monta_video.sh monta_short.sh clip.tsv.esempio montaggio.tsv.esempio chiusura.txt.esempio; do
  curl -fsSLO "https://app.roylead.com/supporto/video-tools/$f"
done
chmod +x *.sh

También necesitas ffmpeg (con libx264 y libass), ffprobe, python3, curl, ssh.

Los scripts no se modifican: lo leen todo de archivos de datos en la carpeta del vídeo.

Paso 5 — La carpeta de un vídeo

mi-video/
  clip.tsv                 los trabajos: nombre, tipo (it = hablado, wan = escena muda), imagen, frase o fotogramas, prompt
  immagini/                los fotogramas de partida (uno por plano, generados con ChatGPT a partir de las fotos del producto)
  audio/battute/           las frases en mp3, una por clip hablado
  montaggio.tsv            el orden de los clips en el vídeo, con el mp3 que va bajo las escenas mudas
  montaggio/sottotitoli.ass  los subtítulos (en Meta se ve sin sonido)
  chiusura.txt             3 líneas: oferta, línea 2, línea 3 (opcional)
  prodotto.png             foto del producto para el cierre (opcional, va con chiusura.txt)

Las voces se hacen con ElevenLabs, un texto entero por personaje con [long pause] entre las frases, y luego se cortan por las pausas en un mp3 por frase (ffmpeg -af silencedetect). Si usas el playbook del lanzamiento con Claude Code, el guion, clip.tsv, montaggio.tsv, los subtítulos y los cortes de las voces te los prepara él.

Paso 6 — Generar y montar

# enciende el pod, coge pod_id y el usuario ssh en "Connect", y luego:
nohup ./orchestrate.sh <pod_id> <usuario_ssh> ~/mi-video > ~/mi-video/orchestrate.log 2>&1 &
tail -f ~/mi-video/orchestrate.log        # READY, MODELS, UPLOADED, luego un DONE por clip, ALL_DONE

Los clips llegan a mi-video/clip/. Las manos con objetos fallan a menudo: cuenta con 2-3 intentos por escena (cambia la semilla relanzando, o el prompt). Tiempos medidos en la RTX PRO 6000: primer clip 5-7 minutos (carga los modelos), luego 1-4 minutos cada uno.

./monta_video.sh ~/mi-video      # → mi-video/video-finale.mp4 (1080x1920, 30 fps, -16 LUFS)
./monta_short.sh ~/mi-video      # → mi-video/short-<nombre>.mp4, uno por clip, con el grafismo encima

monta_video.sh se para solo si la voz tiene huecos de más de 1,5 segundos: mejor un error ahora que un vídeo mudo publicado. El archivo final se escribe en el disco del sistema y luego se copia: en un disco de Windows montado en WSL, la unión puede pararse con «No space left on device».

Después borra el pod.

Trampas ya encontradas

  • ComfyUI responde 403 (error 1010) a las llamadas sin User-Agent de navegador: los scripts lo mandan; si usas curl a mano, añade -A "Mozilla/5.0".
  • SSH directo rechazado: se pasa por el proxy ssh.runpod.io con -tt y los comandos por stdin (lo hace lib_video.sh).
  • ComfyUI no arranca en algunas máquinas Community (502 fijo, en el log «could not bind on any address»): la máquina no tiene IPv6. orchestrate.sh lo relanza solo en 0.0.0.0.
  • Sin memoria con la RTX 5090: 62 GB de RAM no bastan para dos modelos completos de 28 GB. O una GPU con más RAM, o las versiones fp8_scaled de los modelos.
  • GPU no disponible al crear el pod: el recambio que funcionó fue una RTX PRO 6000 Max-Q en Community sin disco de red, con download_wan22=true (vuelve a descargar en 8 minutos).
  • ComfyUI muere y la plantilla no lo reinicia: orchestrate.sh lo relanza; a mano: python3 /ComfyUI/main.py --listen 0.0.0.0 --use-sage-attention --extra-model-paths-config /ComfyUI/extra_model_paths.yaml.

Reglas de Meta para los vídeos con IA

  • En Ads Manager hay que declarar que el contenido está generado con IA.
  • El personaje se presenta como portavoz, nunca como «cliente real»: Meta lo considera engañoso.
  • Subtítulos siempre: la mayoría mira sin sonido.

¿Listo para ponerlo en práctica?

Crea tu cuenta de RoyLead y empieza en pocos minutos.

Empieza gratis