Communitygithub.com

Aberturas por Palavra-Chave

Gera uma versão de vídeo para cada palavra-chave, substituindo apenas a abertura por uma cena que corresponde ao termo de busca, mantendo a trilha sonora original intacta.

O que é Aberturas por Palavra-Chave?

Esta skill transforma um único vídeo de produto finalizado em várias versões otimizadas para anúncios de vídeo direcionados por palavra-chave, como os Sponsored Brands da Amazon. Para cada palavra-chave fornecida, a ferramenta substitui os primeiros 2 a 6 segundos do vídeo por uma nova cena gerada por IA que corresponde visualmente ao termo de busca, insere o nome da palavra-chave na tela e preserva exatamente a trilha sonora original, o comprimento do vídeo e todo o conteúdo após o primeiro corte. O fluxo completo inclui inspeção automática do vídeo, escrita de prompts para cada cena de abertura, geração de vídeo via Seedance (com verificação de créditos), montagem final com verificação de qualidade e criação de uma página de revisão HTML. A skill é compatível com as plataformas Claude Code, Cursor e Codex, utilizando o MCP Genrupt para orquestração. Ideal para vendedores que já possuem um vídeo de produto finalizado e desejam criar variações para diferentes palavras-chave em campanhas PPC sem precisar reeditar ou regravar o vídeo inteiro.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Aberturas por Palavra-Chave faz?

Um comprador que pesquisou "varas para assar cachorro-quente" e um que pesquisou "varas para assar legumes" veem hoje o mesmo vídeo que abre com um marshmallow. Esta skill dá a cada um deles uma abertura que mostra exatamente o que digitaram.

O que ela muda: a imagem dos primeiros 2 a 6 segundos e um título com a palavra-chave. O que ela nunca muda: a trilha sonora, a duração e tudo após o primeiro corte.

O vídeo do Sponsored Brands começa sem som, então a primeira imagem e as palavras nela são o que o comprador realmente vê. É por isso que a abertura é a parte que vale a pena personalizar.

O que o vendedor traz

  1. Um vídeo de produto finalizado (mp4 ou mov). 16:9 ou 9:16.
  2. As palavras-chave, de 3 a 10. Se ele não tiver uma lista, ofereça-se para escolher: leia a listagem e proponha palavras-chave que nomeiem um USO, ALIMENTO, PESSOA ou LUGAR diferente (esses mudam a imagem). Pule palavras-chave que apenas reordenam as mesmas palavras; elas receberiam a mesma cena.
  3. O ASIN, para que as cenas de abertura mostrem o produto real.

Peça todos os três em UMA mensagem. Se faltar algo, pergunte mais uma vez e depois prossiga.

Etapa 1: ler o vídeo

python3 scripts/openers.py inspect "<video>" "<workdir>" --keywords "kw um; kw dois; kw três"

<workdir> é uma nova pasta ao lado do vídeo, nomeada keyword-openers. Isso escreve inspect.json, plan.json e dois contact sheets. No Windows, o comando é python, não python3, aqui e na etapa 4.

Abra opening-sheet.jpg e observe-o. Os quadris marcados como REPLACED são o que será removido. Se houver um logotipo, preço, alegação ou texto queimado ali, avise ao vendedor antes de prosseguir e ofereça o corte anterior de cuts_first_20s (defina "window" em plan.json).

Abra também look-sheet.jpg. Você está prestes a escrever cenas que devem parecer que foram filmadas para este vídeo: mesma hora do dia, mesma luz, mesmo tipo de pessoas, mesma sensação de lente.

Se notes em inspect.json não estiver vazio, leia as notas para o vendedor exatamente como estão. Quando uma nota pedir uma reexportação (taxa de quadros acima de 30, taxa de quadros variável, som de 96 kHz), ofereça-se para fazer a cópia corrigida você mesmo com ffmpeg e execute inspect na cópia. Quando aspect não for 16:9, diga antes que qualquer crédito seja gasto que o vídeo do Sponsored Brands aceita apenas 16:9 e prossiga somente se o vendedor quiser as versões para outro canal.

Etapa 2: escrever uma cena de abertura por palavra-chave

Siga exatamente references/prompt-recipe.md. Um prompt por palavra-chave, cada um uma única tomada de opener_seconds_to_generate segundos. Mostre as cenas ao vendedor como uma linha curta cada ("varas para assar cachorro-quente: um pai e seu filho segurando dois cachorros-quentes sobre a mesma fogueira") e prossiga, a menos que ele se oponha. Não cole os prompts completos, a menos que solicitado.

Etapa 3: precificar e gerar

Imagens de referência do produto: chame scrape_video_reference_images_from_asin com o ASIN (e o domain do marketplace da listagem quando não for amazon.com) e aguarde as URLs das imagens. Use as quatro primeiras.

Uma palavra-chave que nomeia um recurso móvel (extensível, dobrável, uma tampa que abre) precisa de uma referência de movimento, ou o modelo inventa o mecanismo: a primeira abertura extensível feita aqui cresceu sozinha, como mágica. Primeiro, procure o recurso no próprio vídeo do vendedor e corte esses segundos com ffmpeg. Apenas quando o vídeo não o mostrar, peça ao vendedor um clipe curto do recurso sendo usado (3 a 8 segundos, pelo menos 300 px de altura; um clipe de celular é suficiente). Faça o upload com a capacidade create_reference_asset_upload (encontre-a com search_capabilities, faça PUT do arquivo para a URL que ela retorna) e passe o assetUrl em seedanceReferenceVideoUrls. No prompt, diga o que extrair do clipe (o movimento) e o que ignorar (sua mesa, sua luz, seus outros objetos). Um vídeo de referência aumenta o preço, portanto, inclua-o na verificação de preço.

Preço antes de executar qualquer coisa. Chame get_credit_balance_and_costs com um preset de video_generation (modelo seedance_2_5_reference, 720p, o comprimento da abertura, videoCount = número de palavras-chave). 720p é o padrão para qualquer vídeo: a abertura é reproduzida por alguns segundos em um slot pequeno, e a diferença para 1080p não aparece lá. Precifique também 1080p apenas quando o vídeo do vendedor for 1080p ou maior e ele pedir a abertura mais nítida. Nunca cite um preço de memória. Em seguida, diga uma linha e aguarde um sim:

"5 aberturas, 5 segundos cada, Seedance 2.5 em 720p: [o número que a chamada de preço retornou] créditos. Vai?"

Se o vendedor quiser mais barato, precifique seedance_2_mini_reference e ofereça isso. Um rascunho em 480p é suficiente para julgar uma cena e muito suave para um anúncio em um vídeo 1080p.

Em seguida, uma chamada generate_video por palavra-chave, todas enviadas juntas:

  • modelType: "fal_seedance", seedanceModel, seedanceMode: "reference_to_video"
  • seedanceReferenceImageUrls: as imagens do produto
  • seedanceDuration: opener_seconds_to_generate
  • seedanceAspectRatio: aspect de inspect.json
  • seedanceResolution: conforme precificado
  • asin: o ASIN (o projeto é criado ou reutilizado a partir dele)
  • promptEnhancement: "skip" (a receita já escreveu o prompt final)
  • sceneTitle: a palavra-chave

Aguarde com wait_for_operation / get_video_generation_result. Baixe cada clipe finalizado para o caminho que sua linha em plan.json nomeia:

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

Uma geração que falha ou é recusada: relate-a em uma linha e continue com o restante. Não tente novamente mais de uma vez sem perguntar; uma repetição custa o mesmo novamente. Uma cena que é gerada novamente é salva como uma nova take com seu próprio "label" e nome de arquivo, nunca sobrescrevendo o clipe que já foi pago.

Sem Genrupt? A skill ainda funciona. O vendedor coloca qualquer clipe (filmado, stock, outra ferramenta) no caminho em plan.json e você vai direto para a etapa 4.

Etapa 4: montar cada versão

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

Sem créditos. Uma versão leva cerca de 4 segundos em 720p, 10 em 1080p e 25 em 4K, e cada uma imprime uma linha à medida que termina. Execute o comando com um tempo limite de 10 minutos: o limite usual de 2 minutos interrompe uma lista longa. Para cada palavra-chave, ele troca a imagem de abertura, desenha o título e verifica o arquivo escrito: mesma duração do original, trilha sonora idêntica bit a bit, o resto da imagem intacto, a abertura realmente nova, o título dentro do quadro.

Para reconstruir uma palavra-chave após uma correção e manter o restante como está, adicione --only "varas para assar cachorro-quente" (várias: "kw um; kw dois").

Em seguida, olhe cada out/check/<slug>-seam.jpg. Você está verificando três coisas que o script não pode:

  1. O produto na nova cena é o produto do vendedor (forma, cor, quantidade).
  2. O título é legível e não fica sobre um rosto ou sobre a coisa que a palavra-chave nomeia. Compare o tile "title held" com o tile ao lado, "under the title": o mesmo momento sem palavras. auto apenas adivinha com base no brilho e detalhes; não pode ver um rosto, e à luz da fogueira a faixa calma geralmente é onde os rostos estão.
  3. O salto de "último novo quadro" para "primeiro quadro original" é lido como um corte normal.

Um título em um local ruim é gratuito para consertar, então corrija-o antes que o vendedor o veja: dê a essa variante um place (top, bottom, top-left, top-right, bottom-left, bottom-right) e, quando nenhum local estiver livre no tamanho total, um title_scale (0,5 a 1). Construa novamente e olhe novamente. Uma cena que falha no produto é regenerada com um prompt corrigido (pergunte primeiro, custa créditos).

Etapa 5: entrega

Abra out/index.html para o vendedor. Diga a ele, nesta ordem:

  1. Quantas versões estão prontas e que os arquivos para upload estão em out/upload/: um arquivo por palavra-chave, nomeado pela palavra-chave.
  2. Qualquer coisa que você tenha visto em uma folha de emenda que ele deva verificar.
  3. Como usá-los: references/amazon-upload.md (um grupo de anúncios por palavra-chave, cada um com sua própria versão). A página traz os mesmos passos.

Uma palavra-chave com várias takes não tem arquivo em out/upload/ até que uma seja escolhida. Pergunte ao vendedor qual take, defina "pick": true nessa variante e construa novamente.

plan.json

{
  "video": "/caminho/para/video.mp4",
  "window": 3.875,
  "style": "pop",
  "font": "bold",
  "accent": "CD763C",
  "title": true,
  "opener_audio": "off",
  "variants": [
    {"keyword": "varas para assar cachorro-quente", "opener": "openers/varas-para-assar-cachorro-quente.mp4"}
  ]
}
  • window: segundos de imagem a serem substituídos. O inspect escolhe o corte do próprio vídeo mais próximo de 4 segundos. Altere-o apenas para outro valor de cuts_first_20s.
  • style: como a palavra-chave é exibida na tela.
    • pop (padrão): letras maiúsculas grandes. As palavras que tornam esta palavra-chave diferente das outras caem em uma barra de destaque que aparece; o resto aparece palavra por palavra. Projetado para um tile pequeno e silencioso nos resultados de pesquisa.
    • sticker: a palavra-chave em um adesivo de pesquisa branco inclinado que é carimbado, com as palavras diferentes marcadas.
    • kinetic, line, search: títulos de terço inferior silenciosos, para uma marca que deseja calma.
  • punch: com pop e sticker a imagem corta para um quadro 1,08x mais apertado na batida em que o título cai. false desliga; punch_zoom define outro tamanho.
  • place (apenas pop e sticker): auto (padrão) adivinha a faixa mais calma do quadro, superior ou inferior, e um lado dela quando esse lado é claramente mais calmo. top, bottom, top-left, top-right, bottom-left ou bottom-right força. Os três estilos silenciosos sempre ficam na parte inferior.
  • title_scale (apenas pop e sticker): 0,5 a 1. Um título menor, para um quadro sem local livre no tamanho total. Para todas as versões no topo do arquivo ou em uma variante.
  • font: bold, round, serif, clean. Corresponda ao tipo já presente no vídeo.
  • accent: obtido das cores do próprio vídeo. Substitua pela cor da marca se conhecida.
  • title: false para nenhuma palavra na tela.
  • opener_audio: "off" mantém a trilha sonora bit a bit. Um número como -18 dobra o som da própria nova cena abaixo dele nesse número de dB.
  • take: uma abertura geralmente é um pouco mais longa que a janela. end (padrão) mantém seus últimos segundos, onde a cena se estabilizou. start mantém seus primeiros segundos, para uma cena cuja ação começa imediatamente (uma vara se estendendo, uma tampa abrindo).
  • Várias takes de uma palavra-chave: repita a variante com a mesma keyword, um opener diferente e um "label" ("A", "B"). Cada uma gera seu próprio arquivo e cartão, para que o vendedor escolha olhando. Ofereça uma segunda take quando uma palavra-chave for importante; diga quanto custa. "pick": true na take escolhida a copia para out/upload/<palavra-chave>.mp4.
  • Uma variante pode carregar "title_text" quando as palavras na tela devem diferir da palavra-chave, "take", "emphasis" (as palavras a marcar; por padrão, as palavras que as palavras-chave não compartilham, então "cachorro-quente" em "varas para assar cachorro-quente"), "place", "title_scale", "pick" e seu próprio "window".

Quando algo está errado

build verifica plan.json primeiro e diz em palavras o que corrigir. Uma palavra-chave em letras que as fontes embutidas não podem desenhar (hebraico, chinês, árabe) falha com essa frase: dê à variante um "title_text" em letras latinas ou defina "title": false. Emojis são removidos do título. Uma palavra-chave com mais de 5 palavras é desenhada pequena; dê a ela um "title_text" mais curto. Um vídeo sem corte entre 2 e 6 segundos recebe um dissolve curto em vez de um corte.

Regras

  • Nunca alongue o vídeo e nunca toque em sua trilha sonora. Se uma solicitação precisar de um ou de outro, é um trabalho diferente; diga isso.
  • Nunca invente um recurso do produto em uma cena. A cena mostra o uso da palavra-chave com o produto como ele é.
  • As pessoas em uma nova cena devem corresponder às pessoas no vídeo quando o vídeo tiver pessoas.
  • Uma geração paga por palavra-chave, a menos que o vendedor aprove outra.

Habilidades Relacionadas