Anúncios
Uma produção de anúncio encenada para um produto que o usuário já possui: fatos, roteiro, lista de planos, keyframes aprovados, clipes, voz, montagem, QA. Duas regras principais. Fidelidade do produto: cada quadro que mostra um produto físico começa a partir da foto do usuário através de um endpoint de edição, nada é reimaginado a partir de texto; software é mostrado apenas através das capturas reais e gravações de tela do usuário, compostas e nunca passadas por um modelo generativo (references/software-route.md). Disciplina de alegações: cada alegação, citação, número e preço no roteiro ou na tela tem origem em algo que o usuário forneceu; nada é inventado.
Passo 0 — Pré-verificação
command -v genmedia
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" preflight
blockersnão vazio, CLI ausente ou mais antigo que 0.7.0 →/genmedia-skills:setup. Chave ausente → o usuário executagenmedia setupou exportaFAL_KEYpor conta própria; aguarde. Nunca leia, imprima, solicite ou digite uma chave.- Mantenha
config.announce_above_usdeconfig.confirm_above_usd(padrões 0.50 e 2) para o portão de custo, effmpeg.foundpara o caminho de montagem. - Retomar primeiro: Pesquise globalmente
.genmedia/projects/*/plan.md. Um plano para este anúncio existe → leia-o, executepython3 "${CLAUDE_SKILL_DIR}/scripts/pipeline.py" urls --label <slug>, continue no primeiro passo inacabado. Nunca reinicie um projeto que tenha entradas no ledger. Um planoproduct-photoshootpara o mesmo produto → reutilize seu PRODUCT LOCK e stills aprovados como referências de keyframe.
Regras de UX
- Responda no idioma do usuário (Turco de entrada → Turco de saída). Prompts de modelo são em inglês; falas, legendas e texto na imagem permanecem no idioma do público, entre aspas, escritos exatamente como aprovados.
- Sem JSON, IDs de requisição ou narração de ferramentas no chat. Aguarde silenciosamente; no máximo uma linha de status por lote.
- Orçamento de perguntas: 3 antes do plano, uma de cada vez, como opções rotuladas (AskUserQuestion quando disponível), cada uma com um padrão que você usa quando o usuário pula. Ordem:
- Produto: foto(s), ou para software as capturas reais e uma gravação de tela, além do que é e o que é verdade sobre ele. Nada anexado → peça; esta é a única pergunta sem padrão. Foto mas sem fatos → use apenas o que está impresso na embalagem e visível na foto, e liste o restante sob "Deixado de fora".
- Apresentador e voz. Padrão: um apresentador sintético gerado combinando com o público, voz no idioma do público (o idioma em que o usuário escreve, a menos que indicado o contrário). Opções: gerado · um
@handle· minha própria foto (consentimento) · sem apresentador. - Modo e plataforma. Padrão: UGC com apresentador falando, 15 s, 9:16 para feeds de formato curto. "Estático" → formato de headline, 4:5 mais 1:1. Pule toda pergunta que a solicitação já responder. Solicitação mais vaga ("faça um anúncio para isso") → todos os padrões, listados sob Suposições no card do plano. Consentimento, aprovação do plano e os pontos de verificação estão fora do orçamento.
- Paradas obrigatórias: o card do plano (sempre para vídeo; para estáticos quando o portão disser confirmar), keyframes antes de qualquer clipe, clipes e voz antes de música, legendas e montagem. Silêncio ou um trabalho bem-sucedido nunca é aprovação. Escolhas criativas (gancho, apresentador, take) pertencem ao usuário.
- Portão de custo sobre o plano inteiro incluindo cada variante: abaixo do anúncio → execute; entre → estimativa de uma linha e execute; no ou acima do confirmar → aguarde um sim. Nunca troque um modelo que o usuário nomeou; ofereça a rota mais barata como uma linha no card do plano.
- Reparo limitado: 3 tentativas por etapa, algo muda a cada vez, nunca reenvie uma rejeição de política inalterada. Um trabalho com um ID de requisição é retomado, nunca reenviado. Um reparo ou novo teste que por si só custe o limite de confirmação ou mais (um take falado do Seedance custa) precisa de um novo sim com o total acumulado; um trabalho falho pode já ter sido faturado.
- Segurança, não negociável: nenhum depoimento fabricado, clientes, avaliações, classificações, contagens de usuários, prêmios, alegações médicas, financeiras ou de renda, nenhuma urgência falsa ou preços inventados. O rosto ou voz de uma pessoa real precisa da confirmação de consentimento do usuário. Um apresentador gerado é uma pessoa sintética: diga isso na entrega e informe ao usuário que plataformas e algumas leis exigem divulgação; nunca descreva um como cliente. Sem nomes de concorrentes, logotipos ou embalagens. Uploads e resultados ficam em URLs públicas: diga isso uma vez antes de fazer upload de produtos não lançados ou fotos de pessoas. Regras e redação:
references/scripts-and-claims.md.
Barreira de descoberta
references/routing-video.md, references/routing-audio.md, references/routing-image.md e references/routing-utility.md são caches datados (verificados em 2026-09-19). Cada endpoint distinto no plano é confirmado antes que o card do plano seja mostrado:
genmedia models --endpoint_id <id1>,<id2>,<id3> --status all --limit 50 --json
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" schema <endpoint_id>
- Cada ID deve retornar e estar
active(sem--limita chamada retorna no máximo 20 linhas: uma linha ausente não prova que um ID está morto, pergunte por ele sozinho novamente); caso contrário, pegue o próximo nível daquela tarefa na referência de roteamento, senãogenmedia models "<nome>" --no-classify --limit 10 --json, a correspondência ativa mais recente, e diga qual modelo foi executado. - Nomes de campos, enums e limites vêm do schema, nunca da memória; eles não são transferidos entre famílias (
promptvstext,image_urlvsstart_image_url,"5"vs5). - Nunca invente IDs ou campos. Nunca execute
genmedia runsem um ID de endpoint. Novos lançamentos ficam sob namespaces de fornecedores (bytedance/,creatify/,openai/,minimax/,veed/), não apenasfal-ai/.
Roteamento
Tipo de produto. Um app, SaaS, ferramenta de desenvolvedor, extensão ou qualquer coisa cujo produto seja uma interface → a rota de software: leia references/software-route.md antes de planejar. Ela substitui as regras de keyframe e estáticas abaixo (sem edição de uma captura, sem texto assado por um modelo); roteiro, alegações, voz, música, legendas, montagem, portão de custo e pontos de verificação permanecem como escritos aqui.
Entregável. Palavras estáticas ("görsel", "banner", "static", "carousel", um headline dado) → formato estático, references/static-formats.md. Palavras de movimento ou voz, ou nada dito → vídeo, modo de references/ad-modes.md: presenter (padrão), how-to, unboxing, showcase, problem-solution, testimonial (apenas com uma citação real que o usuário forneça), tv-spot.
Rota de produção para vídeo (primeira correspondência vence):
| Situação | Rota |
|---|---|
| Sem fala na câmera: showcase, TV spot ou how-to com voz sobreposta | B sem a cabeça falante: b-roll + voz sobreposta + música |
| Idioma falado não é inglês | B. Turco na rota A apenas no Wan 3.0, nunca no Seedance: em uma escuta nativa (references/platform.md seção 10) o Wan estava correto, enquanto toda versão do Seedance pronunciou errado (ş como s, "merhala"); Veo 3.1 Lite, impecável lá, não está mais listado no fal. A apenas depois que um clipe de teste passou pela verificação de escuta do usuário |
| Redação deve ser exata (marca, preço, linha legal), uma voz de marca fixa, ou a mesma voz entre variantes | B: TTS diz exatamente o texto; modelos de áudio nativos parafraseiam e pronunciam errado |
| Mais longo que 15 s, ou apresentador mais cortes de b-roll | B |
| Inglês, um take contínuo de 6 a 15 s, apresentador fala para a câmera | A |
- Rota A: uma geração fala a linha. Keyframe aprovado (apresentador com o produto real) → imagem-para-vídeo com áudio nativo.
- Rota B: TTS por bloco (blocos na câmera, blocos de voz sobreposta) → cabeça falante apenas para os blocos na câmera → b-roll a partir de keyframes aprovados → montar. Voz primeiro: sua duração medida define a duração de cada clipe.
Padrões de função (ativos em 2026-09-19; palavras de preço são dicas datadas, gm.py price decide)
| Função | Endpoint | Por quê | Dica de preço |
|---|---|---|---|
| keyframe, apresentador ou cena com o produto | bytedance/seedream/v5/pro/edit | até 10 referências mantêm produto e apresentador | ~USD 0.07/imagem + USD 0.0045 por referência extra |
| cartão final, anúncio estático, qualquer quadro com texto exato | openai/gpt-image-2.5/flare/edit | melhor fidelidade de texto, até 16 referências | ~USD 0.06/imagem em quality: "high" |
| placa de apresentador gerado (apenas uma pessoa, nunca o produto) | bytedance/seedream/v5/pro/text-to-image | padrão de qualidade para pessoas | ~USD 0.07/imagem |
| A: clipe falado, qualidade | bytedance/seedance-2.5/us/image-to-video | arena #1 para fala sincronizada com lábios nativa; 4 a 30 s | ~USD 0.57/s em 720p, ~USD 0.26/s em 480p |
| A: clipe falado, Turco | alibaba/wan-3.0/image-to-video (start_image_url) | o único modelo de áudio nativo listado cujo Turco passou por uma escuta nativa (2026-09-21); duration inteiro, defina resolution | ~USD 0.05/s em 480p, ~USD 0.10/s em 720p |
| A: clipe falado, rascunho ou orçamento, Inglês | creatify/boreal | construído para anúncios; prompt [VISUAL] [SPEECH] [SOUNDS]; sua página de modelo nomeia o Inglês como idioma validado; rótulo opcional de IA visível | ~USD 0.01/s em 720p |
| B: voz, Inglês | fal-ai/elevenlabs/tts/eleven-v3 | TTS padrão | ~USD 0.10 por 1000 caracteres |
| B: voz, Turco e outros idiomas listados | fal-ai/gemini-3.1-flash-tts | enum language_code lista "Turkish (Turkey)"; style_instructions | ~USD 0.05 por 1000 caracteres |
| B: cabeça falante | fal-ai/bytedance/omnihuman/v1.5 | imagem + áudio; abaixo de 60 s em 720p | ~USD 0.16/s de áudio |
| B: cabeça falante, rascunho | veed/fabric-1.0 em 480p | metade do preço; resolution é obrigatório | ~USD 0.08/s |
| b-roll, qualidade | bytedance/seedance-2.5/us/image-to-video | end_image_url opcional para revelações | ~USD 0.57/s em 720p |
| b-roll, rascunho ou orçamento | minimax/h3-max-turbo/image-to-video | centavos por clipe | ~USD 0.04/s em 768P (desconto de lançamento encerrado em 2026-09-30) |
| música de fundo | elevenlabs/music/v2.5 | duração exata via music_length_ms | ~USD 0.60 por minuto iniciado |
| legendas | fal-ai/workflow-utilities/auto-subtitle; texto exato (qualquer idioma): veed/subtitles | queimadas sem drawtext local | ~USD 0.03/min; veed ~USD 0.10/min, mínimo de 1 min |
| concat, mux, redimensionar, clipe de cartão final | ffmpeg local, senão references/routing-utility.md | gratuito e exato quando ffmpeg.found | centavos |
Desempates:
- O usuário nomeou um modelo → use-o após a verificação ao vivo; mencione o padrão em uma linha, nunca troque silenciosamente.
- Rota de qualidade cruza o limite de confirmação (um take de 15 s do Seedance 2.5 em 720p custa cerca de USD 8.50) → o card do plano mostra o preço de qualidade e o preço do nível de rascunho lado a lado; o usuário escolhe. Nunca escolha o barato silenciosamente.
@handle→/genmedia-skills:characterresolve para URLs de referência e texto âncora; use-os como referências de apresentador no trabalho de keyframe. Nunca deixe@handleem um prompt.- Nenhuma foto do produto → peça uma (software: capturas). Nenhuma existe → apenas conceito: passe para
/genmedia-skills:imagee diga que não será o produto real deles. Software sem capturas recebe um roteiro e uma lista de capturas, nunca uma interface inventada. - Capturas de tela de listagem de loja, cards de link ou imagens do Product Hunt, e qualquer "creative" do Apple Ads (a Apple constrói seus anúncios a partir da página do produto) →
/genmedia-skills:launch-graphics. Apenas stills de produto sem texto desejados →/genmedia-skills:product-photoshoot. Um único clipe sem roteiro →/genmedia-skills:video. Um curta orgânico sem intenção de anúncio →/genmedia-skills:short-video. Um explicador narrado →/genmedia-skills:video-explainer. Cards de listagem de marketplace →/genmedia-skills:marketplace-cards. Uma thumbnail ou capa →/genmedia-skills:youtube-thumbnail.
Armadilhas nomeadas:
- Produto reimaginado. Texto-para-vídeo ou texto-para-imagem desenha um sósia. Cada quadro do produto é uma edição da foto do usuário, e cada clipe do produto começa a partir de um keyframe aprovado.
- Interface gerada. Uma edição, texto-para-imagem ou trabalho de vídeo que toque uma captura retorna UI com erros de ortografia, inventada, e plataformas rejeitam anúncios que mostram funcionalidade que o app não possui. Pixels de UI vêm de páginas
launch-graphicse da gravação; movimento vem da gravação ou de um push local. - Texto de um modelo de vídeo. Headlines, preços, logotipos, legendas e linhas legais de um modelo de vídeo saem distorcidos. Deixe espaço negativo no keyframe; o texto chega no cartão final (modelo de tipografia), como legendas queimadas, ou no editor do usuário.
- Fala Kling. O Kling v3 fala apenas Chinês ou Inglês e traduz automaticamente todo o resto para o Inglês. Nunca roteie diálogo em Turco para lá.
- Canvas Flashtalk. O schema de
fal-ai/flashtalkdocumenta uma saída paisagem fixa de 768x448: sem utilidade para um anúncio 9:16. Cabeças de rascunho vão paraveed/fabric-1.0. - Mux corta para a entrada mais curta.
fal-ai/ffmpeg-api/merge-audio-videotem a duração da mais curta entre imagem e som (uma voz longa perde seu final, uma curta corta a imagem) e substitui o áudio próprio do clipe. Mesmo comprimento para ambos, sempre. duration: "auto"no Seedance torna o custo incognoscível. Sempre defina-o. Boreal e MiniMax aceitam um número, Seedance uma string.- Padrão OmniHuman.
resolutionpadrão é1080p(áudio abaixo de 30 s). Envie"720p"a menos que o usuário tenha solicitado 1080p. - Cliente sintético. Um rosto gerado dizendo "Perdi 8 quilos" é um depoimento fabricado, qualquer que seja o nome no prompt. Veja
references/scripts-and-claims.md.
Fluxo de trabalho
- Triagem dentro do orçamento de perguntas. Escolha um slug (
serum-ugc): é olabeldo lote, o filtro do ledger,genmedia-output/<slug>/e.genmedia/projects/<slug>/. Qualquer rótulo em linguagem natural funciona; auxiliares transliteram letras turcas. Plataforma → proporção e duração:references/ad-modes.md(tabela de plataforma; verifique as especificações atuais de anúncio da plataforma). - Olhe para cada foto do produto com a ferramenta Read. HEIC, AVIF, TIFF ou CMYK → converta para PNG ou sRGB JPEG primeiro (
references/troubleshooting-ads.md). Escreva o PRODUCT LOCK em.genmedia/projects/<slug>/plan.md: forma, proporções, materiais, cores, texto do rótulo literal, o que nunca deve mudar, quais lados não são visíveis. - Ficha de fatos. Liste o que é verdade sobre o produto e de onde cada fato veio: a mensagem do usuário, notas da marca, a própria embalagem ou uma página do produto.
... [truncado para tradução]