Communitygithub.com

funi-ai/anuncios

Producción de anuncios publicitarios reales para productos físicos o software (UGC, videos pulidos, anuncios estáticos) y un manifiesto de activos, con fidelidad al producto real y disciplina en las afirmaciones.

¿Qué es anuncios?

Este skill permite a un agente de IA producir anuncios publicitarios completos para productos reales que el usuario ya posee, tanto para productos físicos como para aplicaciones y software. Genera videos UGC con presentador, unboxing, showcase, testimonios y anuncios tipo TV spot, así como anuncios estáticos con copia. Para productos físicos, se asegura de que cada fotograma que muestra el producto comience desde la foto real del usuario mediante un endpoint de edición, sin recrear nada a partir de texto. Para aplicaciones y software, utiliza capturas y grabaciones de pantalla reales del usuario, componiéndolas sin regenerarlas. El skill sigue una estricta disciplina de afirmaciones: cada afirmación, cita, número o precio en el guion o en pantalla debe tener origen en lo que el usuario proporcionó. El flujo de trabajo incluye pasos de pre-vuelo, preguntas orquestadas al usuario (3 preguntas máximo antes del plan, con opciones por defecto), compuertas de costo, enrutamiento a modelos específicos (Seedance, Wan 3.0, OmniHuman, GPT Image 2.5, etc.) y reparación acotada. Se integra con plataformas como Claude Code, Cursor y similares que soporten el formato de skills, y utiliza scripts locales (`genmedia`, `gm.py`) para ejecutar la producción y gestionar el pipeline.

Compatible con✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/funi-ai/claude-plugins/tree/main/plugins/genmedia-skills/skills/ads

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿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
  • blockers no vacío, CLI faltante o más antigua que 0.7.0 → /genmedia-skills:setup. Clave faltante → el usuario ejecuta genmedia setup o exporta FAL_KEY por sí mismo; esperar. Nunca leer, imprimir, solicitar o escribir una clave.
  • Mantener config.announce_above_usd y config.confirm_above_usd (valores predeterminados 0.50 y 2) para la compuerta de costo, y ffmpeg.found para la ruta de ensamblaje.
  • Reanudar primero: Buscar globalmente .genmedia/projects/*/plan.md. Si existe un plan para este anuncio → leerlo, ejecutar python3 "${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 plan product-photoshoot para el mismo producto → reutilizar su BLOQUEO DE PRODUCTO y las fotografías aprobadas como referencias de fotogramas clave.

Reglas de UX

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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 --limit la 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 no genmedia 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 (prompt vs text, image_url vs start_image_url, "5" vs 5).
  • Nunca inventar IDs o campos. Nunca ejecutar genmedia run sin un ID de endpoint. Las nuevas versiones están bajo espacios de nombres de proveedores (bytedance/, creatify/, openai/, minimax/, veed/), no solo fal-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ónRuta
Sin discurso en cámara: showcase, TV spot o how-to con voz en offB sin la cabeza parlante: b-roll + voz en off + música
El idioma hablado no es inglésB. 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 variantesB: 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-rollB
Inglés, una sola toma continua de 6 a 15 s, presentador habla a cámaraA
  • 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):

RolEndpointPor quéIndicación de precio
fotograma clave, presentador o escena con el productobytedance/seedream/v5/pro/edithasta 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 exactaopenai/gpt-image-2.5/flare/editla 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-imagecalidad predeterminada para personas~USD 0.07/imagen
A: clip hablado, calidadbytedance/seedance-2.5/us/image-to-videoarena #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, turcoalibaba/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éscreatify/borealconstruido 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ésfal-ai/elevenlabs/tts/eleven-v3TTS predeterminado~USD 0.10 por 1000 caracteres
B: voz, turco y otros idiomas listadosfal-ai/gemini-3.1-flash-ttsla enumeración language_code lista "Turkish (Turkey)"; style_instructions~USD 0.05 por 1000 caracteres
B: cabeza parlantefal-ai/bytedance/omnihuman/v1.5imagen + audio; menos de 60 s a 720p~USD 0.16/s de audio
B: cabeza parlante, borradorveed/fabric-1.0 a 480pla mitad del precio; resolution es obligatorio~USD 0.08/s
b-roll, calidadbytedance/seedance-2.5/us/image-to-videoend_image_url opcional para revelaciones~USD 0.57/s a 720p
b-roll, borrador o presupuestominimax/h3-max-turbo/image-to-videocéntimos por clip~USD 0.04/s a 768P (descuento de lanzamiento terminó 2026-09-30)
fondo musicalelevenlabs/music/v2.5duración exacta mediante music_length_ms~USD 0.60 por minuto comenzado
subtítulosfal-ai/workflow-utilities/auto-subtitle; texto exacto (cualquier idioma): veed/subtitlesquemados sin drawtext local~USD 0.03/min; veed ~USD 0.10/min, mínimo 1 min
concatenar, mux, escalar, clip de tarjeta finalffmpeg local, si no references/routing-utility.mdgratis y exacto cuando ffmpeg.foundcéntimos

Desempates:

  1. El usuario nombró un modelo → usarlo después de la verificación en vivo; mencionar el predeterminado en una línea, nunca cambiar silenciosamente.
  2. 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.
  3. @handle → /genmedia-skills:character lo resuelve a URLs de referencia y texto de anclaje; usar esos como referencias de presentador en el trabajo de fotograma clave. Nunca dejar @handle en una indicación.
  4. Sin foto del producto → pedir una (software: capturas). Ninguna existe → solo concepto: pasar a /genmedia-skills:image y decir que no será su producto real. Software sin capturas obtiene un guion y una lista de capturas, nunca una interfaz inventada.
  5. 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-graphics y 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/flashtalk documenta una salida de paisaje fija 768x448: inútil para un anuncio 9:16. Las cabezas de borrador van a veed/fabric-1.0.
  • Mux corta a la entrada más corta. fal-ai/ffmpeg-api/merge-audio-video es 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. resolution predetermina a 1080p (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

  1. Recepción dentro del presupuesto de preguntas. Elegir un slug (serum-ugc): es la label del 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).
  2. 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.
  3. 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]

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

funi-ai/demo-video

Product demos, store previews, App Store header/search videos and loops cut from the user's REAL screen recording: trimmed, sped, zoomed, framed, captioned, voiced with local ffmpeg. Models add only what is not the product: narration (Eleven v3, Gemini TTS for Turkish), music and UI sound. Use when: "make a demo video of my app", "App Store preview video", "App Store header video", "Google Play promo video", "turn this screen recording into a demo", "GIF loop for my changelog", "Product Hunt launch video", "ekran kaydımdan tanıtım videosu yap", "changelog için GIF döngüsü". Chain: takes recordings, device frames (`layers`) and end cards from `launch-graphics`; produces MP4, WebM, GIF, SRT/VTT and posters. NOT for: generated b-roll shorts (use `short-video`); explainers with generated pictures (use `video-explainer`); paid ads (use `ads`); store screenshots, link cards (use `launch-graphics`); one generated clip (use `video`); voice or music alone (use `audio`); joining finished files (use `pipelines`).

funi-ai/youtube-thumbnail

Thumbnails and covers that survive at small size: YouTube thumbnails (16:9), Shorts, Reels and TikTok covers (9:16), podcast and course covers (1:1), from a title plus an optional face photo, @handle character, brand colours or a frame of the user's own video. Text baked in by GPT Image 2.5; faces locked through reference edits. Use when: "make a thumbnail for my video", "YouTube thumbnail with my face", "Shorts cover", "podcast cover art", "thumbnail from this frame", "change only the text on the thumbnail", "videoma thumbnail yap", "kapak görseli hazırla", "küçük resimdeki yazıyı değiştir". Chain: consumes an @handle from `character` and stills or frames from `image` and `video`; produces sized PNG and JPEG. NOT for: posters, photo edits (use `image`); logos (use `brandkit`); link cards, OG images (use `launch-graphics`); ad creatives (use `ads`); the video (use `video`, `short-video`); new characters (use `character`); batches (use `pipelines`); model choice (use `models`); setup problems (use `setup`).

Skills relacionados