Keyword openers — Ouvertures par mot-clé
Un acheteur qui a cherché « hot dog roasting sticks » et un acheteur qui a cherché « vegetable roasting sticks » reçoivent aujourd'hui la même vidéo, qui s'ouvre sur un marshmallow. Cette compétence offre à chacun d'eux une ouverture qui montre ce qu'ils ont tapé.
Ce qui change : l'image des 2 à 6 premières secondes, et un titre avec le mot-clé. Ce qui ne change jamais : la bande sonore, la durée, et tout ce qui suit le premier cut.
La vidéo Sponsored Brands démarre sans son, donc la première image et les mots qu'elle contient sont ce que l'acheteur reçoit effectivement. C'est pourquoi l'ouverture est la partie qui mérite d'être adaptée.
Ce que le vendeur apporte
- Une vidéo produit finie (mp4 ou mov). 16:9 ou 9:16.
- Les mots-clés, de 3 à 10. S'ils n'ont pas de liste, proposez de les choisir : lisez l'annonce et proposez des mots-clés qui nomment une UTILISATION, un ALIMENT, une PERSONNE ou un LIEU différent (ceux-ci changent l'image). Ignorez les mots-clés qui ne font que réorganiser les mêmes mots ; ils obtiendraient la même scène.
- L'ASIN, pour que les scènes d'ouverture montrent le vrai produit.
Demandez les trois éléments dans UN SEUL message. Si quelque chose manque, demandez une fois de plus, puis continuez.
Étape 1 : lire la vidéo
python3 scripts/openers.py inspect "<video>" "<workdir>" --keywords "kw one; kw two; kw three"
<workdir> est un nouveau dossier à côté de la vidéo, nommé keyword-openers. Cela écrit inspect.json, plan.json, et deux feuilles de contact. Sous Windows, la commande est python, pas python3, ici et à l'étape 4.
Ouvrez opening-sheet.jpg et regardez-le. Les vignettes marquées REPLACED sont celles qui seront supprimées. Si un logo, un prix, une allégation ou du texte incrusté s'y trouve, dites-le au vendeur avant de continuer, et proposez le cut antérieur depuis cuts_first_20s (définissez "window" dans plan.json).
Ouvrez aussi look-sheet.jpg. Vous allez écrire des scènes qui doivent ressembler à avoir été tournées pour cette vidéo : même heure de la journée, même lumière, même type de personnes, même rendu d'objectif.
Si le champ notes dans inspect.json n'est pas vide, lisez les notes au vendeur telles quelles. Lorsqu'une note demande une réexportation (une fréquence d'images supérieure à 30, une fréquence d'images variable, un son à 96 kHz), proposez de faire vous-même la copie corrigée avec ffmpeg et d'exécuter inspect sur la copie. Lorsque aspect n'est pas 16:9, dites avant que des crédits soient dépensés que Sponsored Brands video n'accepte que le 16:9, et continuez uniquement si le vendeur souhaite les versions pour un autre emplacement.
Étape 2 : écrire une scène d'ouverture par mot-clé
Suivez exactement references/prompt-recipe.md. Un prompt par mot-clé, chacun étant un seul plan de opener_seconds_to_generate secondes. Montrez les scènes au vendeur sous forme d'une courte ligne chacune ("hot dog roasting sticks : un père et son fils tenant deux hot dogs au-dessus du même feu de camp") et passez à la suite sauf s'il s'y oppose. Ne collez pas les prompts complets sauf demande explicite.
Étape 3 : tarifer, puis générer
Images de référence du produit : appelez scrape_video_reference_images_from_asin avec l'ASIN (et le domain de la marketplace de l'annonce lorsqu'il ne s'agit pas d'amazon.com) et attendez les URLs des images. Utilisez les quatre premières.
Un mot-clé qui nomme une fonctionnalité mobile (extensible, pliable, un couvercle qui s'ouvre) nécessite une référence de mouvement, sinon le modèle invente le mécanisme : la première ouverture extensible faite ici s'est allongée toute seule, comme par magie. Cherchez d'abord la fonctionnalité dans la vidéo du vendeur lui-même et découpez ces secondes avec ffmpeg. Ce n'est que lorsque la vidéo ne la montre pas que demandez au vendeur un court clip de la fonctionnalité en cours d'utilisation (3 à 8 secondes, au moins 300 px de haut ; un clip de téléphone convient).
Téléchargez-le avec la capacité create_reference_asset_upload (trouvez-la avec search_capabilities, faites un PUT du fichier vers l'URL qu'elle renvoie) et passez le assetUrl dans seedanceReferenceVideoUrls. Dans le prompt, dites ce qu'il faut prendre du clip (le mouvement) et ce qu'il faut ignorer (sa table, sa lumière, ses autres objets). Une vidéo de référence s'ajoute au prix, donc incluez-la dans la vérification du prix.
Tarifiez avant toute exécution. Appelez get_credit_balance_and_costs avec un preset video_generation (modèle seedance_2_5_reference, 720p, la durée d'ouverture, videoCount = nombre de mots-clés). La 720p est la valeur par défaut pour toute vidéo : l'ouverture dure quelques secondes dans un petit emplacement, et la différence avec la 1080p n'y est pas visible. Tarifiez également la 1080p uniquement si la vidéo du vendeur est en 1080p ou plus grande et qu'il demande l'ouverture la plus nette. Ne citez jamais un prix de mémoire. Dites ensuite une ligne et attendez un oui :
« 5 ouvertures, 5 secondes chacune, Seedance 2.5 en 720p : [le nombre renvoyé par l'appel de tarif] crédits. On y va ? »
Si le vendeur veut moins cher, tarifez seedance_2_mini_reference et proposez cela. Un brouillon en 480p est correct pour juger une scène mais trop flou pour une annonce sur une vidéo en 1080p.
Ensuite, un appel generate_video par mot-clé, tous envoyés ensemble :
modelType: "fal_seedance",seedanceModel,seedanceMode: "reference_to_video"seedanceReferenceImageUrls: les images du produitseedanceDuration:opener_seconds_to_generateseedanceAspectRatio:aspectdeinspect.jsonseedanceResolution: tel que tariféasin: l'ASIN (le projet est créé ou réutilisé à partir de lui)promptEnhancement: "skip"(la recette a déjà écrit le prompt final)sceneTitle: le mot-clé
Attendez avec wait_for_operation / get_video_generation_result. Téléchargez chaque clip terminé vers le chemin que sa ligne dans plan.json nomme :
curl -L -s -o "<workdir>/openers/<slug>.mp4" "<video url>"
Une génération qui échoue ou est refusée : signalez-la en une ligne et continuez avec les autres. Ne réessayez pas plus d'une fois sans demander ; un nouvel essai coûte le même prix. Une scène qui est générée à nouveau est enregistrée comme une nouvelle prise avec son propre "label" et nom de fichier, jamais par-dessus le clip qui a déjà été payé.
Pas de Genrupt ? La compétence fonctionne quand même. Le vendeur dépose n'importe quel clip (filmé, stock, un autre outil) au chemin indiqué dans plan.json et vous passez directement à l'étape 4.
Étape 4 : construire chaque version
python3 scripts/openers.py build "<workdir>/plan.json"
Aucun crédit. Une version prend environ 4 secondes en 720p, 10 en 1080p et 25 en 4K, et chacune imprime une ligne à sa fin. Exécutez la commande avec un délai d'attente de 10 minutes : la limite habituelle de 2 minutes coupe une longue liste trop tôt. Pour chaque mot-clé, il échange l'image d'ouverture, dessine le titre, et vérifie le fichier écrit : même durée que l'original, bande sonore identique bit pour bit, le reste de l'image intact, l'ouverture effectivement nouvelle, le titre dans le cadre.
Pour reconstruire un mot-clé après une correction et conserver le reste tel quel, ajoutez --only "hot dog roasting sticks" (plusieurs : "kw one; kw two").
Ensuite, regardez chaque out/check/<slug>-seam.jpg. Vous vérifiez trois choses que le script ne peut pas :
- Le produit dans la nouvelle scène est le produit du vendeur (forme, couleur, nombre).
- Le titre est lisible et ne se trouve pas sur un visage ou sur la chose que le mot-clé nomme. Comparez la vignette « title held » avec la vignette adjacente, « under the title » : le même moment sans mots.
autone fait que deviner à partir de la luminosité et des détails ; il ne peut pas voir un visage, et à la lumière du feu, la bande calme est souvent là où se trouvent les visages. - Le saut de « last new frame » à « first original frame » se lit comme un cut normal.
Un titre mal placé est gratuit à corriger, alors corrigez-le avant que le vendeur ne le voie : donnez à cette variante un place (top, bottom, top-left, top-right, bottom-left, bottom-right) et, lorsqu'aucun emplacement n'est libre en taille réelle, un title_scale (0.5 à 1). Reconstruisez et regardez à nouveau. Une scène qui échoue sur le produit est régénérée avec un prompt corrigé (demandez d'abord, cela coûte des crédits).
Étape 5 : remise
Ouvrez out/index.html pour le vendeur. Dites-lui, dans cet ordre :
- Combien de versions sont prêtes, et que les fichiers à télécharger se trouvent dans
out/upload/: un fichier par mot-clé, nommé par le mot-clé. - Tout ce que vous avez vu sur une feuille de raccord qu'il devrait regarder.
- Comment les utiliser :
references/amazon-upload.md(un groupe d'annonces par mot-clé, chacun avec sa propre version). La page contient les mêmes étapes.
Un mot-clé avec plusieurs prises n'a pas de fichier dans out/upload/ tant qu'une n'a pas été choisie. Demandez au vendeur quelle prise, définissez "pick": true sur cette variante, et reconstruisez.
plan.json
{
"video": "/path/to/video.mp4",
"window": 3.875,
"style": "pop",
"font": "bold",
"accent": "CD763C",
"title": true,
"opener_audio": "off",
"variants": [
{"keyword": "hot dog roasting sticks", "opener": "openers/hot-dog-roasting-sticks.mp4"}
]
}
window: secondes d'image à remplacer.inspectchoisit le cut propre de la vidéo le plus proche de 4 secondes. Changez-le uniquement pour une autre valeur decuts_first_20s.style: comment le mot-clé est affiché à l'écran.pop(par défaut) : grandes capitales. Les mots qui rendent ce mot-clé différent des autres atterrissent sur une barre de surlignage qui apparaît en balayant ; les autres apparaissent mot par mot. Conçu pour une petite vignette silencieuse dans les résultats de recherche.sticker: le mot-clé sur un autocollant de recherche blanc incliné qui s'imprime, les mots différents marqués.kinetic,line,search: titres discrets en bas de l'écran, pour une marque qui souhaite du calme.
punch: avecpopetsticker, l'image coupe à un cadre 1,08x plus serré sur le temps où le titre atterrit.falsele désactive ;punch_zoomdéfinit une autre taille.place(surpopetstickeruniquement) :auto(par défaut) devine la bande la plus calme du plan, en haut ou en bas, et un côté de celle-ci lorsque ce côté est nettement plus calme.top,bottom,top-left,top-right,bottom-leftoubottom-rightle force. Les trois styles discrets sont toujours en bas.title_scale(popetstickeruniquement) : 0,5 à 1. Un titre plus petit, pour un plan sans emplacement libre en taille réelle. Pour toutes les versions en haut du fichier, ou sur une variante.font:bold,round,serif,clean. Correspond au type déjà présent dans la vidéo.accent: extrait des couleurs de la vidéo elle-même. Remplacez par la couleur de la marque si connue.title:falsepour aucun mot à l'écran.opener_audio:"off"conserve la bande sonore bit pour bit. Un nombre comme-18intègre le son de la nouvelle scène en dessous à ce nombre de dB.take: une ouverture est généralement un peu plus longue que la fenêtre.end(par défaut) conserve ses dernières secondes, là où la scène s'est stabilisée.startconserve ses premières secondes, pour une scène dont l'action commence immédiatement (un bâton qui s'étend, un couvercle qui s'ouvre).- Plusieurs prises d'un même mot-clé : répétez la variante avec le même
keyword, unopenerdifférent et un"label"("A","B"). Chacune est construite vers son propre fichier et carte, afin que le vendeur choisisse en regardant. Proposez une deuxième prise lorsqu'un mot-clé est important ; dites ce que cela coûte."pick": truesur la prise choisie la copie versout/upload/<keyword>.mp4. - Une variante peut comporter
"title_text"lorsque les mots à l'écran doivent différer du mot-clé,"take","emphasis"(les mots à marquer ; par défaut les mots que les mots-clés ne partagent pas, donc "hot dog" dans "hot dog roasting sticks"),"place","title_scale","pick", et son propre"window".
Quand quelque chose cloche
build vérifie d'abord plan.json et dit en mots quoi corriger. Un mot-clé dans des lettres que les polices intégrées ne peuvent pas dessiner (hébreu, chinois, arabe) échoue avec cette phrase : donnez à la variante un "title_text" en lettres latines, ou définissez "title": false. Les emoji sont supprimés du titre. Un mot-clé de plus de 5 mots est dessiné petit ; donnez-lui un "title_text" plus court. Une vidéo sans cut entre 2 et 6 secondes reçoit un court fondu enchaîné au lieu d'un cut.
Règles
- N'allongez jamais la vidéo et ne touchez jamais à sa bande sonore. Si une demande nécessite l'un ou l'autre, c'est un travail différent ; dites-le.
- N'inventez jamais une fonctionnalité du produit dans une scène. La scène montre l'utilisation du mot-clé avec le produit tel qu'il est.
- Les personnes dans une nouvelle scène doivent correspondre aux personnes de la vidéo lorsque la vidéo contient des personnes.
- Une génération payante par mot-clé, sauf approbation du vendeur pour une autre.