¿Qué hace anuncios?
Una producción publicitaria escenificada para un producto que el usuario ya posee: hechos, guion, lista de tomas, fotogramas clave aprobados, clips, voz, ensamblaje y control de calidad. Dos reglas principales. Fidelidad del producto: cada fotograma que muestra un producto físico comienza desde la foto del usuario a través de un endpoint de edición, nada se reimagina a partir de texto; el software se muestra solo a través de las capturas reales y grabaciones de pantalla del usuario, compuestas y nunca pasadas por un modelo generativo (references/software-route.md). Disciplina de afirmaciones: cada afirmación, cita, número y precio en el guion o en pantalla se remonta a algo proporcionado por el usuario; nada se inventa.
Paso 0 — Prevuelo
command -v genmedia
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" preflight
blockersno vacío, CLI faltante o más antigua que 0.7.0 →/genmedia-skills:setup. Clave faltante → el usuario ejecutagenmedia setupo exportaFAL_KEYpor sí mismo; esperar. Nunca leer, imprimir, solicitar o escribir una clave.- Mantener
config.announce_above_usdyconfig.confirm_above_usd(valores predeterminados 0.50 y 2) para la compuerta de costo, yffmpeg.foundpara la ruta de ensamblaje. - Reanudar primero: Buscar globalmente
.genmedia/projects/*/plan.md. Si existe un plan para este anuncio → leerlo, ejecutarpython3 "${CLAUDE_SKILL_DIR}/scripts/pipeline.py" urls --label <slug>, continuar en el primer paso no terminado. Nunca reiniciar un proyecto que tenga entradas de libro mayor. Si existe un planproduct-photoshootpara el mismo producto → reutilizar su BLOQUEO DE PRODUCTO y las fotografías aprobadas como referencias de fotogramas clave.
Reglas de UX
- Responder en el idioma del usuario (Turco de entrada → Turco de salida). Las indicaciones del modelo están en inglés; las líneas habladas, los subtítulos y el texto en imagen permanecen en el idioma de la audiencia, entre comillas, escritos exactamente como se aprobaron.
- Sin JSON, IDs de solicitud o narración de herramientas en el chat. Esperar en silencio; como máximo una línea de estado por lote.
- Presupuesto de preguntas: 3 antes del plan, una a la vez, como opciones etiquetadas (AskUserQuestion cuando esté disponible), cada una con un valor predeterminado que se usa cuando el usuario omite. Orden:
- Producto: foto(s), o para software las capturas reales y una grabación de pantalla, además de qué es y qué es verdad sobre él. Nada adjunto → preguntar por ello; esta es la única pregunta sin valor predeterminado. Foto pero sin hechos → usar solo lo que está impreso en el envase y visible en la foto, y listar el resto bajo Omitido.
- Presentador y voz. Predeterminado: un presentador sintético generado que coincida con la audiencia, voz en el idioma de la audiencia (el idioma en que escribe el usuario a menos que se indique lo contrario). Opciones: generado · un
@handle· mi propia foto (consentimiento) · sin presentador. - Modo y plataforma. Predeterminado: UGC con presentador hablando, 15 s, 9:16 para feeds de formato corto. "Estático" → formato de titular, 4:5 más 1:1. Omitir cada pregunta que la solicitud ya responda. Solicitud vaga ("haz un anuncio para esto") → todos los valores predeterminados, listados bajo Suposiciones en la tarjeta del plan. El consentimiento, la aprobación del plan y los puntos de control están fuera del presupuesto.
- Paradas forzadas: la tarjeta del plan (siempre para video; para estáticos cuando la compuerta dice confirmar), fotogramas clave antes de cualquier clip, clips y voz antes de música, subtítulos y ensamblaje. El silencio o un trabajo exitoso nunca es aprobación. Las elecciones creativas (gancho, presentador, toma) pertenecen al usuario.
- Compuerta de costo sobre todo el plan incluyendo cada variante: por debajo de anunciar → ejecutar; entre → estimación de una línea y ejecutar; en o por encima de confirmar → esperar un sí. Nunca cambiar un modelo que el usuario nombró; ofrecer la ruta más barata como una línea en la tarjeta del plan.
- Reparación acotada: 3 intentos por paso, algo cambia cada vez, nunca reenviar un rechazo de política sin cambios. Un trabajo con un ID de solicitud se reanuda, nunca se reenvía. Una reparación o repetición que por sí misma cueste el umbral de confirmación o más (una toma hablada de Seedance cuesta) necesita un sí fresco con el total acumulado; un trabajo fallido puede ya haber sido facturado.
- Seguridad, no negociable: sin testimonios, clientes, reseñas, calificaciones, recuentos de usuarios, premios, afirmaciones médicas, financieras o de ingresos inventados, sin urgencia falsa o precios inventados. El rostro o la voz de una persona real necesita la confirmación de consentimiento del usuario. Un presentador generado es una persona sintética: decirlo en la entrega y decirle al usuario que las plataformas y algunas leyes requieren divulgación; nunca describir a uno como cliente. Sin nombres de competidores, logotipos o envases. Las subidas y resultados están en URLs públicas: decirlo una vez antes de subir productos no lanzados o fotos de personas. Reglas y redacción:
references/scripts-and-claims.md.
Guardarraíl de descubrimiento
references/routing-video.md, references/routing-audio.md, references/routing-image.md y references/routing-utility.md son cachés con fecha (verificadas 2026-09-19). Cada endpoint distinto en el plan se confirma antes de que se muestre la tarjeta del plan:
genmedia models --endpoint_id <id1>,<id2>,<id3> --status all --limit 50 --json
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" schema <endpoint_id>
- Cada ID debe devolver y estar
active(sin--limitla llamada devuelve como máximo 20 filas: una fila faltante no es prueba de un ID muerto, preguntar por él solo); de lo contrario tomar el siguiente nivel de esa tarea en la referencia de enrutamiento, si nogenmedia models "<nombre>" --no-classify --limit 10 --json, la coincidencia activa más reciente, y decir qué modelo se ejecutó. - Los nombres de campos, enumeraciones y límites provienen del esquema, nunca de la memoria; no se transfieren entre familias (
promptvstext,image_urlvsstart_image_url,"5"vs5). - Nunca inventar IDs o campos. Nunca ejecutar
genmedia runsin un ID de endpoint. Las nuevas versiones están bajo espacios de nombres de proveedores (bytedance/,creatify/,openai/,minimax/,veed/), no solofal-ai/.
Enrutamiento
Tipo de producto. Una aplicación, SaaS, herramienta de desarrollador, extensión o cualquier cosa cuyo producto sea una interfaz → la ruta de software: leer references/software-route.md antes de planificar. Reemplaza las reglas de fotogramas clave y estáticas a continuación (sin edición de una captura, sin copia horneada por un modelo); el guion, afirmaciones, voz, música, subtítulos, ensamblaje, compuerta de costo y puntos de control se mantienen como están escritos aquí.
Entregable. Palabras estáticas ("görsel", "banner", "static", "carousel", un titular dado) → formato estático, references/static-formats.md. Palabras de movimiento o voz, o nada dicho → video, modo de references/ad-modes.md: presenter (predeterminado), how-to, unboxing, showcase, problem-solution, testimonial (solo con una cita real que el usuario proporcione), tv-spot.
Ruta de producción para video (la primera coincidencia gana):
| Situación | Ruta |
|---|---|
| Sin discurso en cámara: showcase, TV spot o how-to con voz en off | B sin la cabeza parlante: b-roll + voz en off + música |
| El idioma hablado no es inglés | B. Turco en la ruta A solo en Wan 3.0, nunca Seedance: en una escucha nativa (references/platform.md sección 10) Wan era correcto, mientras que cada versión de Seedance pronunció mal (ş como s, "merhala"); Veo 3.1 Lite, impecable allí, ya no aparece en fal. A solo después de que un clip de prueba pasara la verificación de escucha del usuario |
| La redacción debe ser exacta (nombre de marca, precio, línea legal), una voz de marca fija, o la misma voz en todas las variantes | B: TTS dice exactamente el texto; los modelos de audio nativos parafrasean y pronuncian mal |
| Más de 15 s, o presentador más cortes de b-roll | B |
| Inglés, una sola toma continua de 6 a 15 s, presentador habla a cámara | A |
- Ruta A: una generación dice la línea. Fotograma clave aprobado (presentador con el producto real) → imagen-a-video con audio nativo.
- Ruta B: TTS por bloque (bloques en cámara, bloques de voz en off) → cabeza parlante solo para los bloques en cámara → b-roll desde fotogramas clave aprobados → ensamblaje. Voz primero: su duración medida establece la duración de cada clip.
Roles predeterminados (vigentes 2026-09-19; las palabras de precio son indicaciones con fecha, gm.py price decide):
| Rol | Endpoint | Por qué | Indicación de precio |
|---|---|---|---|
| fotograma clave, presentador o escena con el producto | bytedance/seedream/v5/pro/edit | hasta 10 referencias mantienen producto y presentador | ~USD 0.07/imagen + USD 0.0045 por referencia extra |
| tarjeta final, anuncio estático, cualquier fotograma con copia exacta | openai/gpt-image-2.5/flare/edit | la mejor fidelidad de texto, hasta 16 referencias | ~USD 0.06/imagen con quality: "high" |
| placa de presentador generado (solo una persona, nunca el producto) | bytedance/seedream/v5/pro/text-to-image | calidad predeterminada para personas | ~USD 0.07/imagen |
| A: clip hablado, calidad | bytedance/seedance-2.5/us/image-to-video | arena #1 para discurso sincronizado de labios nativo; 4 a 30 s | ~USD 0.57/s a 720p, ~USD 0.26/s a 480p |
| A: clip hablado, turco | alibaba/wan-3.0/image-to-video (start_image_url) | el único modelo de audio nativo listado cuyo turco pasó una escucha nativa (2026-09-21); duration entero, establecer resolution | ~USD 0.05/s a 480p, ~USD 0.10/s a 720p |
| A: clip hablado, borrador o presupuesto, inglés | creatify/boreal | construido para anuncios; indicación [VISUAL] [SPEECH] [SOUNDS]; su página de modelo nombra el inglés como el idioma validado; etiqueta de IA visible opcional | ~USD 0.01/s a 720p |
| B: voz, inglés | fal-ai/elevenlabs/tts/eleven-v3 | TTS predeterminado | ~USD 0.10 por 1000 caracteres |
| B: voz, turco y otros idiomas listados | fal-ai/gemini-3.1-flash-tts | la enumeración language_code lista "Turkish (Turkey)"; style_instructions | ~USD 0.05 por 1000 caracteres |
| B: cabeza parlante | fal-ai/bytedance/omnihuman/v1.5 | imagen + audio; menos de 60 s a 720p | ~USD 0.16/s de audio |
| B: cabeza parlante, borrador | veed/fabric-1.0 a 480p | la mitad del precio; resolution es obligatorio | ~USD 0.08/s |
| b-roll, calidad | bytedance/seedance-2.5/us/image-to-video | end_image_url opcional para revelaciones | ~USD 0.57/s a 720p |
| b-roll, borrador o presupuesto | minimax/h3-max-turbo/image-to-video | céntimos por clip | ~USD 0.04/s a 768P (descuento de lanzamiento terminó 2026-09-30) |
| fondo musical | elevenlabs/music/v2.5 | duración exacta mediante music_length_ms | ~USD 0.60 por minuto comenzado |
| subtítulos | fal-ai/workflow-utilities/auto-subtitle; texto exacto (cualquier idioma): veed/subtitles | quemados sin drawtext local | ~USD 0.03/min; veed ~USD 0.10/min, mínimo 1 min |
| concatenar, mux, escalar, clip de tarjeta final | ffmpeg local, si no references/routing-utility.md | gratis y exacto cuando ffmpeg.found | céntimos |
Desempates:
- El usuario nombró un modelo → usarlo después de la verificación en vivo; mencionar el predeterminado en una línea, nunca cambiar silenciosamente.
- La ruta de calidad cruza el umbral de confirmación (una toma de 15 s de Seedance 2.5 a 720p cuesta aproximadamente USD 8.50) → la tarjeta del plan muestra el precio de calidad y el precio de nivel de borrador lado a lado; el usuario elige. Nunca elegir el barato silenciosamente.
@handle→/genmedia-skills:characterlo resuelve a URLs de referencia y texto de anclaje; usar esos como referencias de presentador en el trabajo de fotograma clave. Nunca dejar@handleen una indicación.- Sin foto del producto → pedir una (software: capturas). Ninguna existe → solo concepto: pasar a
/genmedia-skills:imagey decir que no será su producto real. Software sin capturas obtiene un guion y una lista de capturas, nunca una interfaz inventada. - Capturas de pantalla de listados de tienda, tarjetas de enlace o imágenes de Product Hunt, y cualquier "creativo" de Apple Ads (Apple construye sus anuncios desde la página del producto) →
/genmedia-skills:launch-graphics. Solo se desean fotografías de producto sin texto →/genmedia-skills:product-photoshoot. Un solo clip sin guion →/genmedia-skills:video. Un corto orgánico sin intención publicitaria →/genmedia-skills:short-video. Un explicador narrado →/genmedia-skills:video-explainer. Tarjetas de listado de marketplace →/genmedia-skills:marketplace-cards. Una miniatura o portada →/genmedia-skills:youtube-thumbnail.
Trampas nombradas:
- Producto reimaginado. Texto-a-video o texto-a-imagen dibuja un parecido. Cada fotograma de producto es una edición de la foto del usuario, y cada clip de producto comienza desde un fotograma clave aprobado.
- Interfaz generada. Una edición, una texto-a-imagen o un trabajo de video que toque una captura devuelve UI mal escrita e inventada, y las plataformas rechazan anuncios que muestran funcionalidad que la aplicación no tiene. Los píxeles de UI provienen de páginas de
launch-graphicsy la grabación; el movimiento proviene de la grabación o de un push local. - Texto de un modelo de video. Titulares, precios, logotipos, subtítulos y líneas legales de un modelo de video salen distorsionados. Dejar espacio negativo en el fotograma clave; la copia llega en la tarjeta final (modelo de tipografía), como subtítulos quemados, o en el editor del usuario.
- Discurso de Kling. Kling v3 solo habla chino o inglés y traduce automáticamente todo lo demás al inglés. Nunca enrutar diálogo en turco allí.
- Lienzo de Flashtalk. El esquema de
fal-ai/flashtalkdocumenta una salida de paisaje fija 768x448: inútil para un anuncio 9:16. Las cabezas de borrador van aveed/fabric-1.0. - Mux corta a la entrada más corta.
fal-ai/ffmpeg-api/merge-audio-videoes tan largo como el más corto de imagen y sonido (una voz larga pierde su final, una corta corta la imagen) y reemplaza el audio propio del clip. Misma longitud para ambos, siempre. duration: "auto"en Seedance hace que el costo sea incognoscible. Siempre establecerlo. Boreal y MiniMax toman un número, Seedance una cadena.- Predeterminado de OmniHuman.
resolutionpredetermina a1080p(audio de menos de 30 s). Enviar"720p"a menos que el usuario haya solicitado 1080p. - Cliente sintético. Una cara generada diciendo "Perdí 8 kilos" es un testimonio fabricado, sea cual sea la indicación. Ver
references/scripts-and-claims.md.
Flujo de trabajo
- Recepción dentro del presupuesto de preguntas. Elegir un slug (
serum-ugc): es lalabeldel lote, el filtro del libro mayor,genmedia-output/<slug>/y.genmedia/projects/<slug>/. Cualquier etiqueta en lenguaje natural funciona; los ayudantes transliteran letras turcas. Plataforma → proporción y duración:references/ad-modes.md(tabla de plataformas; verificar las especificaciones de anuncio actuales de la plataforma). - Mirar cada foto de producto con la herramienta Read. HEIC, AVIF, TIFF o CMYK → convertir primero a PNG o JPEG sRGB (
references/troubleshooting-ads.md). Escribir el BLOQUEO DE PRODUCTO en.genmedia/projects/<slug>/plan.md: forma, proporciones, materiales, colores, texto de etiqueta textual, qué no debe cambiar nunca, qué lados no son visibles. - Hoja de hechos. Listar qué es verdad sobre el producto y de dónde vino cada hecho: el mensaje del usuario, notas de marca, el propio envase, o una página de producto...
... [truncado para traducción]