Que fait Editar criativo ?
Kit dans kit/ (à côté de ce fichier). Tous les scripts sont en Python 3.10+ et utilisent ffmpeg/ffprobe.
Sous Windows, exécutez avec python (pas python3). Si ffmpeg n'est pas dans le PATH de la session, les scripts
le trouvent automatiquement via le PATH utilisateur.
KIT = <dossier de ce SKILL.md>/kit
1. Offre et dossiers
Découvrez le nom de l'offre (demandez s'il n'est pas venu dans la demande). Racine par défaut : ~/Documents/Ofertas (sous Windows, %USERPROFILE%\Documents\Ofertas).
python "$KIT/criar_oferta.py" "Velas de Natal"
Crée (ou complète, sans rien effacer) la structure :
| Dossier | Contenu |
|---|---|
_work | fichiers temporaires (nettoyés à la fin) |
01_prontos | créations finales .mp4 + lote_XX_resumo.csv |
02_brutos | b-roll et vidéos de référence |
03_apresentadora | enregistrements UGC / présentatrice |
04_imagens | photos du produit, captures d'écran de la page |
05_audios | narrations (<id>.mp3 + <id>.palavras.json) |
06_efeitos | 9 effets sonores du kit + musica*.mp3 optionnels (bande-son) |
07_roteiros | lots de scripts .json |
08_validados | créations qui vendent déjà (base pour modélisation/variation) |
Lisez oferta.json. Si produto/publico/promessa sont vides, demandez à l'utilisateur (ou lisez la
page de vente s'il vous donne le lien) et remplissez — les scripts en dépendent.
2. Les quatre questions (un seul appel AskUserQuestion)
- Mode — "Que faisons-nous ?"
- Créations neuves — tester de nouveaux angles et scripts
- Modélisation de créations — vidéos de zéro avec la structure d'une création qui vend/déjà performe (de l'utilisateur ou du marché)
- Variations de validées — réutiliser la vidéo validée elle-même et ne changer que l'accroche
Attention — "améliore cette validée et crée des variations" : quand l'utilisateur envoie une création à lui qui vend et demande des variations/versions améliorées, le standard est Modélisation (vidéos totalement nouvelles, avec script et images neuves, en utilisant la validée uniquement comme référence de structure). N'utilisez "Variations de validées" (qui réutilise les images et l'audio de la vidéo envoyée) que si l'utilisateur demande explicitement de conserver la vidéo originale. 2. Quantité — "Combien de variations ?" 5 / 10 / 20 / 50 3. Sous-titres — "Quel style de sous-titres ?"
- Alterner les deux (Recommandé) — alterne boîte violette et mot jaune entre les variations
- Boîte violette — mot parlé dans une boîte violette
- Mot jaune — mot parlé en jaune, sans fond
- Narration — "Comment faire la narration des nouvelles accroches et corps ?"
- Générer avec voix gratuite (Recommandé) — voix neurales en portugais, sans frais
- Générer avec ElevenLabs — utilise le compte de l'utilisateur et consomme des crédits
- J'ai déjà les narrations — je place les audios dans 05_audios
Si l'utilisateur a déjà répondu à quelque chose dans la demande, ne redemandez pas.
ElevenLabs : la clé se trouve dans ~/.config/editar-criativo/.env (ELEVENLABS_API_KEY= et, optionnel,
ELEVENLABS_VOICE_ID=). Si elle manque, proposez d'ouvrir le fichier dans le Bloc-notes pour que
l'utilisateur la colle. N'imprimez jamais la clé et ne la mettez pas dans une commande shell.
3. Matériel visuel
Listez 02_brutos, 03_apresentadora et 04_imagens. Sources de matériel, dans cet ordre de préférence :
- Matériel de l'utilisateur (photos/vidéos du produit, enregistrement de la page) : toujours le meilleur.
- Banques gratuites (Pexels + Pixabay) — b-roll d'appui, utilisation commerciale autorisée :
python "$KIT/buscar_midias.py" "<pasta_oferta>" "candle making" --qtd 6 python "$KIT/buscar_midias.py" "<pasta_oferta>" "christmas candle" --tipo foto --qtd 4- Effectuez 3–5 recherches avec des termes en anglais qui couvrent ce que la narration montre (processus,
ingrédients, résultat, scène d'utilisation, émotion).
--listaraffiche avant de télécharger. - Bibliothèque locale d'abord : tout téléchargement va dans
~/Documents/Ofertas/_biblioteca(videos/,fotos/,indice.jsonavec les tags de la banque + termes déjà cherchés). Chaque recherche regarde d'abord là et n'appelle l'API que pour ce qui manque — économise les requêtes. Les fichiers entrent dans l'offre par hardlink (sans occuper d'espace dupliqué).--sem-apiutilise uniquement la bibliothèque ;--forcar-apiignore la bibliothèque. Pour cela, utilisez des termes en anglais cohérents entre les offres ("stretching", "back pain", "yoga mat"…). - Par défaut : préfère la verticale et complète avec l'horizontale (le kit recadre), vidéos jusqu'à 40 s,
--qtdéléments nouveaux de chaque type. Les vidéos vont dans02_brutos/, les photos dans04_imagens/, les crédits dans02_brutos/creditos.csv(colonneorigem: bibliothèque ou banque). - Après le téléchargement, choisissez les médias appropriés pour chaque création dans
midias/midias_baixoplutôt que de laisser le tirage au sort — un b-roll qui correspond à la parole convertit mieux. - N'utilisez pas de banque d'images pour simuler un témoignage : une personne reconnaissable ne peut pas sembler approuver l'offre.
- Clés gratuites dans
~/.config/editar-criativo/.env(PEXELS_API_KEY,PIXABAY_API_KEY). Si elles manquent, le script avertit ; proposez d'ouvrir le fichier dans le Bloc-notes pour que l'utilisateur les colle. Fonctionne avec une seule. (En nov/2026, Pexels a suspendu l'émission de nouvelles clés ; l'utilisateur utilise uniquement Pixabay jusqu'à la réouverture.)
- Effectuez 3–5 recherches avec des termes en anglais qui couvrent ce que la narration montre (processus,
ingrédients, résultat, scène d'utilisation, émotion).
- Références de réseaux sociaux (pour modélisation/variation), avec des liens approuvés par
l'utilisateur :
python "$KIT/baixar.py" "<pasta_oferta>" <url1> <url2> ... --pasta 08_validados. Utilisez uniquement du matériel que l'utilisateur a le droit d'utiliser.
Enregistrement d'écran de l'application web / page : l'utilisateur enregistre (Win+Alt+R) et sauvegarde dans
02_brutos.
4. Scripts par mode
Écrivez en portugais du Brésil (ou du Portugal si l'offre est PT), ton UGC parlé, phrases courtes.
- hook : 1 phrase, 6–14 mots, ≤ 3 s parlé. Brise le schéma, curiosité, douleur ou résultat.
- gancho_tela : texte de la bande rouge, ≤ 7 mots, complète (ne répète pas) l'accroche.
- body : 15–35 s parlés (~40–90 mots) : problème → mécanisme/démonstration → preuve → CTA.
- cta_tela (optionnel) : texte court de la bande verte dans les 3 dernières secondes ("LIEN DANS LA DESCRIPTION").
- Variez les angles dans le lot : douleur, curiosité, avant/après, preuve sociale, objection, démonstration, prix/ancrage, urgence saisonnière, "erreur courante", liste. Ne répétez pas la même ouverture.
- Respectez les politiques publicitaires : pas de promesse de guérison, de revenu garanti, ou "vous êtes [attribut personnel]".
Créations neuves : N scripts avec des angles différents.
Modélisation de créations : la création de référence se trouve dans 08_validados (ou téléchargez-la
par le lien). Transcription :
python "$KIT/transcrever.py" "<arquivo>" — et, si la partie visuelle compte, regardez avec la skill watch.
Cartographiez la structure (type d'accroche, blocs et durée de chacun, CTA) et écrivez N scripts avec la
même structure pour cette offre. Ne copiez pas le texte. Aucun plan ni audio de la vidéo de référence
n'entre dans les nouvelles vidéos.
Checklist de modélisation (notez dans le lot dans estrutura_modelada) :
- Durée et blocs de parole — ex. : accroche 0–3,5 s → présente le produit → bénéfices → CTA avec prix.
- Format visuel — plein écran ou divisé ; ce qui apparaît tout le temps (démonstration, présentatrice, écran).
- Éléments fixes qui vendent — reproduisez avec le kit :
- bande avec nom + prix fixe en haut →
faixa_fixa(entre après l'accroche, pour ne pas faire pub dès la 1ère seconde) ; - compteur sur l'exercice/étape ("12 reps", "8 x lado") →
rotulos; - style de sous-titres et genre de la voix →
legendaetvozidentiques à ceux de la validée.
- bande avec nom + prix fixe en haut →
- Prix et offre exactement comme dans la validée (c'est ce qu'elle vend), sauf demande contraire.
- Si la validée a un faible CTR et une bonne vente : le corps fonctionne et l'ouverture n'arrête pas
le doigt. Gardez la structure du corps et investissez dans l'accroche : tension, test ("essaie de
toucher le sol…"), nombre/compte ("117 exercices pour moins de 10 R$"), rupture de croyance. Bande
d'accroche dès 0 s, images propres de l'accroche dans
midias_gancho(pièces, squelette, salle de sport), coupes toutes les ~1,8 s, etencaixe: "desfoque"quand le b-roll est horizontal en plein écran.
Variations de validées (uniquement quand l'utilisateur veut conserver la vidéo originale) : transcrivez la création qui vend déjà, trouvez où se termine l'accroche originale
(fin de la 1ère phrase, généralement 2–5 s) et écrivez N nouvelles accroches. Chaque création ne prend que
hook (sans body) et "base": {"video": "08_validados/arquivo.mp4", "a_partir_de": <secondes>} —
le kit monte une nouvelle accroche narrée + le corps original avec l'audio original.
- Coupez à
a_partir_dejuste avant le 1er mot après l'accroche (sautez le silence — ex. : accroche se termine à 3,56 s, mot suivant à 4,16 s → 4,05). Utiliseztranscrever.pypour avoir le temps de chaque mot. - Utilisez une voix du même genre que la narration originale (la jonction sonne étrange avec un changement de voix) et les mêmes sous-titres que la validée, si elle en a de similaires. Le kit égalise le volume de la nouvelle accroche à celui de la validée (LUFS) tout seul.
- CTR faible avec bonne vente = le corps vend et l'ouverture n'arrête pas le doigt : changez uniquement
les 3–6 premières secondes (accroche avec tension/teste/nombre, bande d'accroche dès 0 s, coupe toutes
les ~1,3 s avec
"ritmo": 1.3).
5. Lot de scripts
Enregistrez dans <oferta>/07_roteiros/lote_NN.json (prochain numéro libre) :
{
"modo": "novos",
"legenda": "variar",
"narracao": {"motor": "edge", "voz": "pt-BR-AntonioNeural", "velocidade": "+8%"},
"criativos": [
{
"id": "c01",
"angulo": "curiosidade",
"layout": "dividida",
"hook": "Ninguém acredita que essa vela foi feita em casa.",
"gancho_tela": "Ninguém acredita que foi feita em casa",
"body": "Eu comecei com uma panela comum e um pote de vidro...",
"cta_tela": "Link na bio",
"midias": ["02_brutos/x.mp4", "04_imagens/y.jpg"],
"midias_baixo": ["02_brutos/z.mp4"]
}
]
}
Champs :
legenda:variar|caixa_roxa|palavra_amarela(par création aussi acceptelegenda).narracao.motor:edge(gratuit) |eleven|existente(lit05_audios/<id>.mp3et transcrit). Voix edge :pt-BR-AntonioNeural,pt-BR-FranciscaNeural,pt-BR-ThalitaMultilingualNeural,pt-PT-DuarteNeural,pt-PT-RaquelNeural. Alternez voix masculine/féminine entre créations avec"voz"dans la création.layout:dividida(écran divisé avec ligne rouge, par défaut) |cheia.midias/midias_baixo: optionnels. Sans eux, le kit tire au sort depuis02_brutos,04_imagens,03_apresentadora(moitié en haut, moitié en bas). Choisissez manuellement quand il y a un média correspondant à la parole.ritmo: secondes par coupe (par défaut 2.2).sfx: false désactive les effets.musica: false désactive la bande-son.gancho_duracao: force la durée d'affichage de la bande d'accroche (par défaut : jusqu'à la fin de l'accroche parlée).midias_gancho(plein écran) : médias utilisés uniquement pendant l'accroche ; le corps utilise seulementmidias. Empêche que l'image d'impact de l'accroche (pièce, squelette) revienne au milieu de la vidéo. Le kit coupe toujours à la fin de l'accroche.faixa_fixa:{"texto": "117 Exercícios de\nMobilidade e Estabilidade\nApenas R$ 9,90", "cor": "#F97316", "cor_texto": "#111111", "desde": "fim_hook", "y": 0.07, "tamanho": 66, "caixa_alta": false}— bande qui reste de la fin de l'accroche jusqu'à la fin (ou jusqu'à lafermeture).\nsaute une ligne ; seultextoest obligatoire.rotulos:["12 reps", "8 x lado", "30 seg"]— étiquette petite sur chaque coupe après l'accroche, en cycle.encaixe:corte(par défaut, recadre le centre) |desfoque— en plein écran, la vidéo horizontale apparaît dans une large bande sur elle-même floutée, sans perdre le mouvement (bon pour la démonstration d'exercice).
IDs : c01…cNN en créations neuves, m01… en modélisation, v01… en variations — uniques par offre, car
05_audios/<id> et 01_prontos/<id>.mp4 utilisent l'id. Dans les nouveaux lots, continuez la numérotation.
Montrez à l'utilisateur un court tableau (id, angle, accroche) et passez au rendu, à moins qu'il n'ait demandé de réviser avant.
6. Rendu
python "$KIT/montar.py" "<oferta>/07_roteiros/lote_NN.json"
Réseau : la voix gratuite (edge) et ElevenLabs nécessitent internet. Si le shell est en sandbox et que
la narration échoue avec getaddrinfo failed / ClientConnectorDNSError, exécutez la commande hors
sandbox. La voix gratuite échoue de manière intermittente ; le kit essaie déjà 5 fois avant d'abandonner
cette création (les autres continuent).
Narre ce qui n'a pas encore de narration et monte tout dans 01_prontos/<id>.mp4 (1080×1920, 30 ips,
H.264 + AAC), plus 01_prontos/lote_NN_resumo.csv. Les grands lots prennent du temps (≈20–60 s par
création) : exécutez en arrière-plan. --ids c03,c07 refait seulement quelques-uns ; narrar.py --refazer --ids c03 régénère la voix.
7. Vérification et livraison
Extrayez 1 image de 2–3 créations et regardez avec Read :
ffmpeg -ss 1.5 -i "01_prontos/c01.mp4" -frames:v 1 "_work/check_c01.jpg"
Vérifiez : bande d'accroche lisible, sous-titres synchronisés et dans l'écran, coupes sans écran noir.
Livrez : dossier 01_prontos, quantité, et le CSV pour nommer les annonces dans le Gestionnaire.