← Volver a las guías

Vídeos para anuncios con RunPod

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 21 de septiembre de 2026


💡 Recomendada si usas Claude Code. El terminal, ssh y ffmpeg los usa Claude por ti: solo necesitas una cuenta de RunPod con tarjeta asociada y la instalación de abajo, una vez. Pagas la GPU por horas en vez de por clip, y con varios vídeos seguidos sale a cuenta. Si trabajas en un chat (claude.ai, ChatGPT, Claude Desktop), que no puede usar el terminal, elige fal.ai: los mismos modelos, se paga por clip, nada que instalar.

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 (opcional, no recomendado)14 $ al mes por 200 GB, siempre
Una escena muda o un clip hablado en la PRO 6000unos 2 minutos, unos 0,07 $
Un vídeo de 8 escenas (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. Sin disco no queda nada que pagar.

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. El disco de red es opcional y a menudo conviene no tenerlo. Un Network Volume de 200 GB guarda los modelos (unos 176 GB) y te evita volver a descargarlos, pero cuesta 14 $ al mes y sobre todo te encadena a su centro de datos: el pod nace a la fuerza allí, y si en ese centro de datos falta la GPU adecuada te quedas bloqueado. Sin disco, la plantilla descarga sola los modelos al encender: con download_wan22=true (escenas mudas) y download_wan21=true (clips hablados) tarda 1-3 minutos, unos céntimos. Los archivos de InfiniteTalk, en cambio, la plantilla no los descarga: si necesitas clips hablados, añádelos como en el paso 3 (pocos minutos). Así coges la GPU en cualquier centro de datos donde la haya. Verificado el 2026-09-21 en un pod sin disco: escenas mudas, clips hablados e imágenes. El disco solo compensa si generas todos los días o tienes modelos propios: en ese caso ponlo donde la RTX PRO 6000 esté disponible más a menudo, nunca en un centro de datos que solo tenga GPU de 32 GB.

Paso 2 — El pod

💡 Deja que lo gestione Claude. Si conectas tu cuenta de RunPod a Claude Code, Claude crea el pod, lo apaga en cuanto se descargan los clips y lo elimina (solo con tu confirmación) él solo: nada de pods olvidados encendidos. La conexión oficial de RunPod, desde el terminal, con tu API key de RunPod (Settings → API Keys): claude mcp add --transport http runpod -s user https://mcp.getrunpod.io/ --header "Authorization: Bearer <tu API key>", y luego /mcp en Claude Code para recargar. Instrucciones completas y alternativas: github.com/runpod/runpod-mcp. Sin la conexión, el pod lo creas tú como se explica abajo.

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.
  • La GPU tiene que ser Blackwell, no una tarjeta más antigua. Si la PRO 6000 no está disponible, recurre a otra Blackwell del mismo centro de datos (la RTX PRO 4500 de 32 GB cuesta 0,72 $ la hora, pero sirve solo para las escenas mudas: los clips hablados se quedan sin memoria incluso de 7 segundos). En arquitecturas anteriores — A100, 4090, 5090 — las escenas mudas con Wan salen perfectas, pero InfiniteTalk produce un fotograma y luego negro: el modelo hablado se va a NaN y no da ningún error, ni en el log de ComfyUI ni en orchestrate.sh, que escribe DONE y descarga un clip negro. Solo te enteras abriendo el archivo.
  • Disco: ninguno (recomendado). Si tienes un network volume, móntalo en /workspace.
  • Variables de la plantilla: sin disco, en cada pod, download_wan22=true (escenas mudas) y download_wan21=true (clips hablados): 1-3 minutos. Con disco, true solo la primera vez, luego false: los modelos ya están ahí 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)

Una sola cara por clip. InfiniteTalk mueve la boca de todas las caras que encuentra en el fotograma, con el mismo audio — incluidas las del fondo y las reflejadas en un espejo. Dos personas en cuadro se convierten en dos que dicen la misma frase a la vez. Las escenas de diálogo se parten en dos clips, uno por frase, y quien no habla se queda de espaldas, desenfocado o fuera del encuadre.

La plantilla (v29) no descarga estos archivos: comprueba con ls /workspace/ComfyUI/models/diffusion_models | grep -i infinitetalk, y si faltan añádelos en /workspace/ComfyUI/models/ (desde Hugging Face; sin disco, en cada pod nuevo):

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). Atención a dónde está el disco de red: el pod nace a la fuerza en su centro de datos, y allí la PRO 6000 puede no estar aunque el catálogo la dé como disponible en otro sitio.
  • Clips hablados negros (un fotograma y luego oscuro, el audio está): la GPU no es Blackwell. Pasó con una A100 80 GB, sin un solo error en los logs — orchestrate.sh escribe DONE y descarga un clip negro. Antes de montar, comprueba que los hablados no estén oscuros: ffmpeg -i clip/shot-01.mp4 -vf "signalstats,metadata=print:key=lavfi.signalstats.YAVG" -f null - — si después del primer fotograma YAVG se queda alrededor de 16, son negros. Se regeneran en una Blackwell reescribiendo clip.tsv solo con las filas it: las escenas ya descargadas no se tocan.
  • La clave SSH debe estar registrada en la cuenta (Settings → SSH Public Keys) antes de crear el pod: las claves añadidas después no entran en los pods ya encendidos, y el proxy responde Permission denied (publickey). Sin SSH orchestrate.sh no falla enseguida: llega hasta un PATCH output: vacío y se para ahí.
  • 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 ↗