Communitygithub.com

JayGPTPro/keyword-openers

Convierte un video de producto terminado en múltiples versiones, una por palabra clave. Reemplaza solo los primeros segundos con una escena que coincide con la palabra clave buscada, muestra la palabra clave en pantalla y mantiene intacta la banda sonora original. Ideal para anuncios de video Sponsored Brands o cualquier anuncio de video orientado por palabras clave.

¿Qué es keyword-openers?

Keyword-openers es una habilidad especializada para generar variantes de un video de producto existente, donde cada variante personaliza la apertura (aproximadamente 2 a 6 segundos) para coincidir con una palabra clave de búsqueda específica. El resto del video, incluyendo la banda sonora y la duración total, permanece sin cambios. Esto es crítico para formatos como Sponsored Brands Video de Amazon, donde el primer cuadro y las palabras en pantalla son lo que el comprador ve antes de que el sonido se active. La habilidad utiliza Genrupt MCP para escribir y generar las escenas de apertura (de unos 5 segundos cada una) con el modelo Seedance 2.5, intercambiar las escenas en el video original, verificar la integridad de cada archivo y construir una página de revisión. Está diseñada para vendedores que ya tienen un video de producto terminado y desean crear versiones para cada palabra clave en sus campañas de PPC, sin necesidad de volver a editar todo el video. No está pensada para crear el video de producto completo desde cero.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/JayGPTPro/keyword-openers/tree/HEAD

Preguntar en tu IA favorita

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

Documentación

Aperturas por palabra clave

Un comprador que buscó "palos para asar salchichas" y otro que buscó "palos para asar verduras" reciben hoy el mismo video, y este abre con un malvavisco. Esta habilidad le da a cada uno una apertura que muestra lo que escribieron.

Lo que cambia: la imagen de los primeros 2 a 6 segundos y un título con la palabra clave. Lo que nunca cambia: la banda sonora, la duración y todo lo que sigue al primer corte.

Los videos de Sponsored Brands comienzan sin sonido, por lo que la primera imagen y las palabras que contiene son lo que el comprador realmente recibe. Por eso, la apertura es la parte que vale la pena personalizar.

Lo que aporta el vendedor

  1. Un video de producto terminado (mp4 o mov). 16:9 o 9:16.
  2. Las palabras clave, de 3 a 10. Si no tiene una lista, ofrézcase a elegirlas: lea el listado y proponga palabras clave que nombren un USO, ALIMENTO, PERSONA o LUGAR diferente (estos cambian la imagen). Omita las palabras clave que solo reordenan las mismas palabras; obtendrían la misma escena.
  3. El ASIN, para que las escenas de apertura muestren el producto real.

Solicite los tres en UN SOLO mensaje. Si falta algo, pregunte una vez más y luego continúe.

Paso 1: leer el video

python3 scripts/openers.py inspect "<video>" "<workdir>" --keywords "kw uno; kw dos; kw tres"

<workdir> es una nueva carpeta junto al video, llamada keyword-openers. Esto escribe inspect.json, plan.json y dos hojas de contacto. En Windows el comando es python, no python3, aquí y en el paso 4.

Abra opening-sheet.jpg y mírelo. Los recuadros marcados como REPLACED son los que desaparecerán. Si hay un logotipo, un precio, una afirmación o texto grabado en esa zona, dígaselo al vendedor antes de continuar y ofrezca el corte anterior de cuts_first_20s (configure "window" en plan.json).

Abra también look-sheet.jpg. Está a punto de escribir escenas que deben parecer tomadas para este video: misma hora del día, misma luz, mismo tipo de personas, misma sensación de lente.

Si notes en inspect.json no está vacío, lea las notas al vendedor tal como están. Cuando una nota solicite una reexportación (una velocidad de fotogramas superior a 30, una velocidad de fotogramas variable, sonido de 96 kHz), ofrézcase a hacer usted mismo la copia corregida con ffmpeg y ejecute inspect en la copia. Cuando aspect no sea 16:9, indique antes de gastar cualquier crédito que Sponsored Brands Video solo acepta 16:9, y continúe solo si el vendedor desea las versiones para otra ubicación.

Paso 2: escribir una escena de apertura por palabra clave

Siga exactamente references/prompt-recipe.md. Una indicación por palabra clave, cada una con una sola toma de opener_seconds_to_generate segundos. Muestre al vendedor las escenas como una línea corta cada una ("palos para asar salchichas: un padre y su hijo sosteniendo dos salchichas sobre la misma fogata") y continúe a menos que él se oponga. No pegue las indicaciones completas a menos que se lo pidan.

Paso 3: precio, luego generar

Imágenes de referencia del producto: llame a scrape_video_reference_images_from_asin con el ASIN (y el domain del mercado del listado cuando no sea amazon.com) y espere las URL de las imágenes. Use las primeras cuatro.

Una palabra clave que nombra una característica en movimiento (extensible, plegable, una tapa que se abre) necesita una referencia de movimiento, o el modelo inventa el mecanismo: la primera apertura extensible hecha aquí creció sola, como por arte de magia. Primero busque la característica en el video del propio vendedor y corte esos segundos con ffmpeg. Solo cuando el video no la muestre, pídale al vendedor un clip corto de la característica en uso (3 a 8 segundos, al menos 300 píxeles de alto; un clip de teléfono es suficiente). Súbalo con la capacidad create_reference_asset_upload (búsquela con search_capabilities, haga PUT del archivo en la URL que devuelve) y pase el assetUrl en seedanceReferenceVideoUrls. En la indicación, diga qué tomar del clip (el movimiento) y qué ignorar (su mesa, su luz, sus otros objetos). Un video de referencia se suma al precio, así que inclúyalo en la verificación del precio.

Ponga precio antes de ejecutar cualquier cosa. Llame a get_credit_balance_and_costs con un preset de video_generation (modelo seedance_2_5_reference, 720p, la duración de la apertura, videoCount = número de palabras clave). 720p es el valor predeterminado para cualquier video: la apertura se reproduce durante unos segundos en un espacio pequeño, y la diferencia con 1080p no se nota allí. También cotice 1080p solo cuando el video del vendedor sea 1080p o mayor y él solicite la apertura más nítida. Nunca cite un precio de memoria. Luego diga una línea y espere un sí:

"5 aperturas, 5 segundos cada una, Seedance 2.5 a 720p: [el número que devolvió la llamada de precio] créditos. ¿Procedemos?"

Si el vendedor quiere un precio más bajo, cotice seedance_2_mini_reference y ofrezca eso. Un borrador a 480p es suficiente para juzgar una escena, pero demasiado suave para un anuncio en un video de 1080p.

Luego, una llamada generate_video por palabra clave, todas enviadas juntas:

  • modelType: "fal_seedance", seedanceModel, seedanceMode: "reference_to_video"
  • seedanceReferenceImageUrls: las imágenes del producto
  • seedanceDuration: opener_seconds_to_generate
  • seedanceAspectRatio: aspect de inspect.json
  • seedanceResolution: según lo cotizado
  • asin: el ASIN (el proyecto se crea o reutiliza a partir de él)
  • promptEnhancement: "skip" (la receta ya escribió la indicación final)
  • sceneTitle: la palabra clave

Espere con wait_for_operation / get_video_generation_result. Descargue cada clip terminado en la ruta que nombra su fila en plan.json:

curl -L -s -o "<workdir>/openers/<slug>.mp4" "<video url>"

Una generación que falla o es rechazada: infórmelo en una línea y continúe con el resto. No reintente más de una vez sin preguntar; un reintento cuesta lo mismo nuevamente. Una escena que se genera de nuevo se guarda como una nueva toma con su propia "label" y nombre de archivo, nunca sobre el clip que ya se pagó.

¿Sin Genrupt? La habilidad sigue funcionando. El vendedor coloca cualquier clip (filmado, de archivo, de otra herramienta) en la ruta de plan.json y usted pasa directamente al paso 4.

Paso 4: construir cada versión

python3 scripts/openers.py build "<workdir>/plan.json"

Sin créditos. Una versión tarda unos 4 segundos a 720p, 10 a 1080p y 25 a 4K, y cada una imprime una línea al finalizar. Ejecute el comando con un tiempo de espera de 10 minutos: el límite habitual de 2 minutos corta una lista larga. Para cada palabra clave, intercambia la imagen de apertura, dibuja el título y verifica el archivo escrito: misma longitud que el original, banda sonora idéntica bit por bit, el resto de la imagen intacto, la apertura realmente nueva, el título dentro del encuadre.

Para reconstruir una palabra clave después de una corrección y mantener el resto como está, agregue --only "palos para asar salchichas" (varias: "kw uno; kw dos").

Luego mire cada out/check/<slug>-seam.jpg. Está verificando tres cosas que el script no puede:

  1. El producto en la nueva escena es el producto del vendedor (forma, color, cantidad).
  2. El título es legible y no está sobre una cara ni sobre lo que nombra la palabra clave. Compare el recuadro "título sostenido" con el recuadro siguiente, "debajo del título": el mismo momento sin palabras. auto solo adivina según el brillo y el detalle; no puede ver una cara, y a la luz del fuego, la banda tranquila suele estar donde están las caras.
  3. El salto de "último nuevo cuadro" a "primer cuadro original" se lee como un corte normal.

Un título en un lugar inadecuado se corrige gratis, así que arréglelo antes de que el vendedor lo vea: asigne a esa variante un place (top, bottom, top-left, top-right, bottom-left, bottom-right) y, cuando no haya espacio libre a tamaño completo, un title_scale (0.5 a 1). Vuelva a construir y mire de nuevo. Una escena que falla en el producto se regenera con una indicación corregida (pregunte primero, cuesta créditos).

Paso 5: entrega

Abra out/index.html para el vendedor. Dígale, en este orden:

  1. Cuántas versiones están listas y que los archivos para subir están en out/upload/: un archivo por palabra clave, nombrado por la palabra clave.
  2. Cualquier cosa que haya visto en una hoja de unión que deba revisar.
  3. Cómo usarlos: references/amazon-upload.md (un grupo de anuncios por palabra clave, cada uno con su propia versión). La página contiene los mismos pasos.

Una palabra clave con varias tomas no tiene archivo en out/upload/ hasta que se elija una. Pregunte al vendedor qué toma, establezca "pick": true en esa variante y vuelva a construir.

plan.json

{
  "video": "/ruta/al/video.mp4",
  "window": 3.875,
  "style": "pop",
  "font": "bold",
  "accent": "CD763C",
  "title": true,
  "opener_audio": "off",
  "variants": [
    {"keyword": "palos para asar salchichas", "opener": "openers/palos-para-asar-salchichas.mp4"}
  ]
}
  • window: segundos de imagen a reemplazar. inspect elige el corte propio del video más cercano a 4 segundos. Cámbielo solo a otro valor de cuts_first_20s.
  • style: cómo se muestra la palabra clave en pantalla.
    • pop (predeterminado): mayúsculas grandes. Las palabras que hacen que esta palabra clave sea diferente de las demás caen sobre una barra de resaltado que se desliza; el resto aparece palabra por palabra. Diseñado para un recuadro pequeño y silencioso en los resultados de búsqueda.
    • sticker: la palabra clave sobre una pegatina de búsqueda blanca inclinada que se estampa, con las palabras diferentes marcadas.
    • kinetic, line, search: títulos inferiores discretos, para una marca que busca tranquilidad.
  • punch: con pop y sticker, la imagen corta a un encuadre 1,08x más ajustado en el momento en que el título aterriza. false lo desactiva; punch_zoom establece otro tamaño.
  • place (solo pop y sticker): auto (predeterminado) adivina la banda más tranquila de la toma, superior o inferior, y un lado de ella cuando ese lado es claramente más tranquilo. top, bottom, top-left, top-right, bottom-left o bottom-right lo fuerza. Los tres estilos tranquilos siempre se colocan en la parte inferior.
  • title_scale (solo pop y sticker): 0.5 a 1. Un título más pequeño, para una toma sin espacio libre a tamaño completo. Para todas las versiones al principio del archivo, o en una variante.
  • font: bold, round, serif, clean. Coincida con el tipo que ya está en el video.
  • accent: tomado de los colores propios del video. Anule con el color de la marca si se conoce.
  • title: false para que no haya palabras en pantalla.
  • opener_audio: "off" mantiene la banda sonora bit por bit. Un número como -18 mezcla el sonido propio de la nueva escena debajo a tantos dB.
  • take: una apertura suele ser un poco más larga que la ventana. end (predeterminado) conserva sus últimos segundos, donde la escena se ha asentado. start conserva sus primeros segundos, para una escena cuya acción comienza de inmediato (un palo que se extiende, una tapa que se abre).
  • Varias tomas de una palabra clave: repita la variante con la misma keyword, un opener diferente y una "label" ("A", "B"). Cada una se construye en su propio archivo y tarjeta, para que el vendedor elija mirando. Ofrezca una segunda toma cuando una palabra clave sea importante; diga lo que cuesta. "pick": true en la toma elegida la copia a out/upload/<keyword>.mp4.
  • Una variante puede incluir "title_text" cuando las palabras en pantalla deben diferir de la palabra clave, "take", "emphasis" (las palabras a marcar; por defecto, las palabras que las palabras clave no comparten, por lo tanto "palos para asar" en "palos para asar salchichas"), "place", "title_scale", "pick" y su propio "window".

Cuando algo falla

build verifica primero plan.json y dice en palabras qué corregir. Una palabra clave en letras que las fuentes incorporadas no pueden dibujar (hebreo, chino, árabe) falla con esa frase: asigne a la variante un "title_text" en letras latinas, o establezca "title": false. Los emojis se eliminan del título. Una palabra clave de más de 5 palabras se dibuja pequeña; asígnele un "title_text" más corto. Un video sin corte entre 2 y 6 segundos obtiene una disolución corta en lugar de un corte.

Reglas

  • Nunca alargue el video ni toque su banda sonora. Si una solicitud necesita cualquiera de los dos, es un trabajo diferente; dígalo.
  • Nunca invente una característica del producto en una escena. La escena muestra el uso de la palabra clave con el producto tal como es.
  • Las personas en una nueva escena deben coincidir con las personas en el video cuando el video tiene personas.
  • Una generación pagada por palabra clave, a menos que el vendedor apruebe otra.

Skills relacionados