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
- Um vídeo de produto finalizado (mp4 ou mov). 16:9 ou 9:16.
- 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.
- 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 produtoseedanceDuration:opener_seconds_to_generateseedanceAspectRatio:aspectdeinspect.jsonseedanceResolution: conforme precificadoasin: 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:
- O produto na nova cena é o produto do vendedor (forma, cor, quantidade).
- 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.
autoapenas 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. - 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:
- 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. - Qualquer coisa que você tenha visto em uma folha de emenda que ele deva verificar.
- 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. Oinspectescolhe o corte do próprio vídeo mais próximo de 4 segundos. Altere-o apenas para outro valor decuts_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: compopestickera imagem corta para um quadro 1,08x mais apertado na batida em que o título cai.falsedesliga;punch_zoomdefine outro tamanho.place(apenaspopesticker):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-leftoubottom-rightforça. Os três estilos silenciosos sempre ficam na parte inferior.title_scale(apenaspopesticker): 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:falsepara nenhuma palavra na tela.opener_audio:"off"mantém a trilha sonora bit a bit. Um número como-18dobra 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.startmanté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, umopenerdiferente 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": truena take escolhida a copia paraout/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.