Remix de publicité virale
Transformez une structure publicitaire éprouvée en une publicité pour l'application de l'utilisateur. Le modèle IA fournit les personnes et les décors ; tout ce qui est affiché sur un écran de téléphone provient de l'enregistrement réel de l'application ; le montage maintient chaque parole sur le visage qui la prononce.
$S = scripts/ dans le répertoire de ce skill. Nécessite ffmpeg, Python 3 avec numpy pillow opencv-python-headless, et pour les vérifications vocales mlx-whisper (Apple Silicon) ou openai-whisper. Enregistrez des séquences d'application avec un enregistreur d'écran tel que le skill app-demo-recorder (version release, compte réel, état sans publicité).
Lisez references/lessons.md une fois avant la première édition. Il répertorie les échecs que ce workflow est conçu pour éviter.
0. Se mettre d'accord sur l'objectif (un seul message)
Public cible (qui reste réellement dans l'application, pas qui vous souhaiteriez qu'il l'utilise), canal (Meta / YouTube Shorts / TikTok), la seule fonctionnalité à montrer, et un budget de crédits. Les publics seniors veulent un rythme plus lent, un texte plus grand, un pair à l'écran, et un avantage concret (argent, temps). Ne commencez pas la génération payante sans budget.
1. Trouver une référence qui fonctionne déjà
python3 $S/find_reference_ads.py search --country KR --objective app_install --period 180 --order like
python3 $S/find_reference_ads.py search --country KR --keyword 앱테크 --lang ko
python3 $S/find_reference_ads.py download <id> <id> --out refs
Choisissez des publicités de 4 à 30 secondes (les modèles de recréation acceptent cette plage) dont la structure correspond à la fonctionnalité : découverte → essai → résultat → appel à l'action. Les likes sont gonflés par les dépenses ; comparez au sein d'une même recherche, pas entre elles. Les vidéos de référence sont filigranées et appartiennent à leurs annonceurs : utilisez-les uniquement comme source structurelle d'un travail de recréation.
2. Choisir la personne (fiche de personnage)
Le modèle de recréation a besoin d'un visage à copier. Si l'utilisateur n'a pas de photos de talents, générez une fiche de personnage par personne avant de dépenser des crédits vidéo, et obtenez l'accord de l'utilisateur.
- Qui : un pair du spectateur cible (même âge, région, emploi, vêtements), ordinaire plutôt que mannequin, correspondant au rôle de la référence (présentateur, client, voisin).
- Fiche : une image paysage (environ 1600x900), photoréaliste, la même personne et tenue dans trois vues : gros plan avant tête-épaules, mi-corps, corps entier ; fond clair neutre, lumière du jour douce. Mains détendues et entièrement visibles, cinq doigts chacune. Pas de texte, logos, filigranes ou téléphone à la main.
- Structure du prompt : « Photorealistic character reference sheet of ONE fictional <âge> <nationalité> , <détails visage/cheveux>, wearing . Three views side by side on a plain light background: front close-up, half body, full body. Natural skin texture, soft daylight. No text, no logos, no props. »
Outils, du moins cher au plus cher :
# Génération d'image Codex CLI (inclus dans un plan ChatGPT, pas de crédits vidéo)
codex exec --skip-git-repo-check --sandbox workspace-write -C cast \
"Use your image generation tool to create ONE image: <prompt skeleton>. Save it as ./cast_<name>.png and print its path."
- Higgsfield (ou une autre API d'image) via les outils de l'agent :
generate_imageavec le même prompt, ou son workflow de fiche de personnage pour une fiche multi-vues. Coûte des crédits ; citez d'abord le prix. - Tout modèle d'image pour lequel l'utilisateur paie déjà.
Ouvrez l'image et vérifiez : un visage cohérent dans toutes les vues, mains naturelles, pas de texte, aucune ressemblance avec une personne réelle ou célèbre. Une personne fictive doit être divulguée comme générée par IA là où la plateforme ou la loi l'exige. Conservez la fiche à côté du brief : le travail de recréation la reçoit comme image du casting.
3. Générer la recréation
Préparez : la vidéo de référence, la fiche de personnage de l'étape 2, l'icône de l'application, et 1 à 2 captures d'écran réelles de l'application.
Rédigez le brief pour que la sortie IA soit facile à réparer :
- Conservez les temps forts et le rythme de la référence ; remplacez le casting, le décor, le produit. Donnez les dialogues mot pour mot, courts, dans la langue cible. Évitez les formulations de témoignage (« J'ai essayé et j'ai obtenu… ») sauf si c'est vrai ; préférez la démonstration (« Calculons… »).
- Demandez aucun sous-titre ou texte à l'écran (ils sortent déformés), et aucun gros plan de mains tapant sur un téléphone (les mains semblent anormales et les doigts traversent l'écran, qui ne peut pas être remplacé).
- Les écrans de téléphone seront remplacés, demandez donc que le téléphone soit tenu immobile et face à la caméra.
- Citez d'abord le coût ; rédigez en basse résolution ; une sortie à la fois.
4. Cartographier la sortie IA avant de la toucher
python3 $S/analyze_source.py ai.mp4 work/ana # plans, dialogues, planche contact work/ana/shots.jpg
python3 $S/analyze_source.py ai.mp4 work/ana --no-speech --rms 17.2-17.6 # point de coupe audio exact près d'une ligne
Regardez shots.jpg. Classez chaque plan : garder (personnes, décors), remplacer l'écran (un téléphone face à la caméra), supprimer (mains tapant, visages déformés, action illisible). Notez où chaque ligne est prononcée et sur quel plan. Les débuts de ligne du reconnaisseur sont souvent en avance de 0,3 à 0,7 s : confirmez avec --rms avant de couper l'audio.
5. Mettre la vraie application sur chaque téléphone
python3 $S/screen_replace.py auto ai.mp4 3.33 6.50 app.mp4 work/shotB.mp4 --work work/B --app-start 2.4
python3 $S/screen_replace.py auto ai.mp4 17.46 21.25 app.mp4 work/shotE.mp4 --work work/E --app-start 10.6 --blank 0,1740,1080,2020
auto extrait le plan (s'arrêtant à toute coupe dans la plage), trouve l'image clé et les coins de l'écran, les ajuste au cadre, suit le téléphone dans tout le plan (suivi planaire, dans les deux directions, à travers la rotation), composite avec luminosité assortie et un peu de reflet, et écrit work/X/key_preview.png (quadrillage + grille de pixels) et work/X/qa.png (original vs composite).
Ouvrez toujours les deux images. Si le quadrillage est décalé, lisez les coins sur la grille et relancez avec --key K --quad "x,y x,y x,y x,y" (HG HD BD BG, bord intérieur de l'écran). Utilisez START/END de la plage de sécurité de l'analyse. Faites correspondre le clip d'application à la ligne : montrez l'écran de saisie pendant que la personne demande, le résultat pendant qu'elle réagit. Supprimez l'interface utilisateur obsolète ou privée avec --blank (coordonnées pixels de l'application).
6. Construire le moment du résultat et le texte
python3 $S/pop_highlight.py result_clip.mp4 x0,y0,x1,y1 work/pop.mp4 --blank 0,975,720,1145 # le chiffre clé apparaît, brille, scintille
python3 $S/captions.py captions.json work/caps # accroche, sous-titres des lignes, carte de fin en PNG
Règles de texte : une accroche sur la première image (une question que le spectateur se pose), un sous-titre par ligne parlée, max deux lignes, grand, contraste élevé, hors des 20 % inférieurs et du bord droit, jamais sur l'interface utilisateur de l'application que le spectateur doit lire. Gardez le texte au minimum que l'utilisateur accepte ; les mentions légalement requises restent mais petites. Carte de fin = icône + nom de l'application (+ appel à l'action si l'utilisateur le souhaite).
7. Assembler avec synchronisation intacte
Écrivez un JSON de chronologie (format dans scripts/assemble.py --help) et exécutez :
python3 $S/assemble.py timeline.json out.mp4
- L'audio est l'audio source lui-même, découpé en segments ; chaque plan avec un visage parlant utilise les mêmes temps source pour la vidéo et l'audio. Sur les écrans d'application, les plans larges et la carte de fin, une ligne peut être jouée en voix off.
- Supprimez les silences morts (silences avant les lignes, entre les plans) au lieu d'accélérer le tout.
- Un plan de personne doit bouger dès sa première image : ne figez jamais un visage pour remplir le temps ; pour allonger une réaction, ralentissez la partie silencieuse avec interpolation d'images (
minterpolate) et fournissez légèrement plus de source que nécessaire. - Les fondus utilisent de vraies images après le point de coupe ; les écrans d'application peuvent être coupés secs.
- Les totaux vidéo et audio doivent correspondre (l'outil refuse sinon).
8. Vérifier comme un spectateur exigeant
python3 $S/verify.py out.mp4 --forbid ai.mp4:10.79-17.29 --person 0-3.2 --person 5.2-8.8 --sheet work/sheet.jpg
Regardez ensuite la fiche, lisez le transcript par rapport à vos sous-titres, et regardez-la une fois. Oublis typiques : une image de transition du plan suivant, un visage figé pendant 4 images, une ligne jouée sur le mauvais visage, une fausse interface utilisateur au bord d'un écran remplacé, du texte recouvrant l'application, l'accroche restant à l'écran sur l'interface utilisateur de l'application. Corrigez et revérifiez avant de montrer à l'utilisateur.
9. Livrer
Un dossier : mp4 final, la sortie brute IA, les composites, le JSON de chronologie, README avec le tableau de chronologie, les crédits dépensés, et les risques ouverts (divulgation de personne IA, formulation de témoignage, nom de marque mal prononcé). Lorsqu'une révision indépendante est souhaitée, donnez à un réviseur en contexte frais la planche d'images, le transcript et la chronologie, et dites-lui quelle structure conserver : un réviseur à qui on dit seulement « rendez-le conforme et plus rapide » supprimera les personnes et les séquences d'application.