Génération d'image
Cette compétence transforme le message d'un post en un fichier image finalisé à la taille exacte souhaitée par chaque plateforme. Elle possède la méthode de production : comment la scène est choisie, comment le titre est intégré dans l'image, comment le visage d'une personne réelle reste réaliste, comment le rapport hauteur/largeur est contrôlé, comment le fichier est vérifié et comment le texte alternatif est rédigé. Elle délègue à brand/brand-profile.md pour les constantes de marque (palette, polices, règles de logo, règles de ressemblance), à la compétence writing pour les mots du titre, à la compétence video-editing pour les couvertures construites à l'intérieur d'un montage vidéo, et à la compétence review-loop pour la vérification indépendante avant toute publication.
Ordre d'autorité : brand-profile.md l'emporte sur les constantes de marque et la formulation de conformité ; cette compétence possède la méthode.
Avant de commencer
- Trouvez l'espace de travail marketing (par défaut
marketing/). S'il n'y en a pas, dites-le en une ligne et proposez d'exécuter la compétencebrand-setup; si l'utilisateur souhaite continuer, demandez uniquement la palette (deux ou trois codes hexadécimaux), une police de titre et si une personne réelle apparaît. - Lisez dans
brand/brand-profile.md:## Identité visuelle(palette, polices, utilisation du logo, style d'image),## Ressemblance(chemins des images de référence et règles),## Plateformes(destination),## Conformité(tout ce qui doit ou ne doit pas apparaître dans une image),## Limiteset## Outils(quel modèle d'image est disponible). - Lisez
brand/voice-learnings.mdavant de verrouiller la formulation du titre : les titres sont des textes publicitaires, et les textes doivent ressembler à la personne. - Lisez
brand/performance-learnings.mdpour tout ce que le compte a appris sur les images qui génèrent de la portée. - Travaillez dans le dossier de la pièce,
content/<aaaa-mm-jj>-<slug>/. Les images vont dans un sous-dossierimages/. - Connaissez le format avant de produire : statique simple, carrousel, couverture de courte vidéo, couverture de longue vidéo, ou statique animée. Si personne n'a choisi, prenez le plus simple qui convient et dites pourquoi en une ligne.
La norme
- Le titre est intégré dans la scène par le modèle d'image, jamais collé par-dessus dans le code. Demandez au modèle de restituer le titre et le sous-titre comme faisant partie de l'image, éclairés et placés comme le ferait un designer. Pourquoi : du texte ajouté après coup avec PIL, des superpositions de style Canva ou du HTML se trouve sur un plan différent de la photographie et donne l'impression d'un modèle bon marché, ce qui est la raison la plus courante pour laquelle les gens rejettent les images IA. Le modèle d'image est désormais compétent pour les textes courts affichés ; laissez-le faire le travail.
- Le titre est l'élément principal. Grand, gras, condensé, environ 40 % de la hauteur visible et jamais moins d'un tiers, deux ou trois lignes courtes, un mot d'accroche dans la couleur d'accent. S'il ressemble à une légende, c'est un échec. Pourquoi : la grille et le fil d'actualité sont jugés à la taille d'une vignette sur un téléphone, et seul un grand titre survit à cela.
- Tout le texte vit dans la zone de sécurité de la grille. Le carré 1:1 centré du canevas, réduit de 7 à 8 % supplémentaires sur chaque côté, avec un espace libre au-dessus du titre et rien d'important dans les 12 % inférieurs. Pourquoi : les grilles de profil, les aperçus de liens et les recadrages dans le fil coupent les bords. Ouvrez
references/grid-safe-zone.mdpour les chiffres par format. - Chaque image est une scène distincte et réaliste, construite pour ce message. Une personne faisant quelque chose dans un lieu réel, ou une forte métaphore visuelle, en couleur naturelle avec l'accent de marque utilisé avec parcimonie. Jamais le même portrait sur le même fond avec seulement les mots changés. La seule exception est une série hebdomadaire délibérée, qui peut répéter sa mise en page à dessein.
- Les personnes réelles restent réelles. Lorsqu'une personne réelle apparaît, son visage provient de ses photos de référence, à son âge et sa morphologie réels. N'inventez jamais un visage, ne publiez jamais les photos de référence elles-mêmes.
- Taille exacte, vérifiée. Chaque fichier est finalisé à la taille en pixels exacte dans
references/asset-sizes.mdet ses dimensions sont vérifiées, pas supposées. - Ne bricolez jamais la forme dans le code. Ne rembourrez pas, ne formatez pas en lettre, ne miroitez pas, n'étirez pas et ne composez pas une image générée pour forcer un rapport hauteur/largeur. Relancez plutôt avec un ancrage de rapport (ci-dessous). Pourquoi : une image rembourrée a un espace mort qui semble inachevé, et c'est évident au premier coup d'œil.
- Une ligne de texte alternatif par image. Description simple de la scène et du titre intégré, pas de hashtags, pas de liens, pas de vente.
La méthode
1. Décider de l'image (nouvelle pour chaque image)
- Nommez le message central unique du post en une phrase.
- Décidez de l'émotion : rassurant, intelligent, calme, drôle, joyeux, ou un avertissement doux. Par défaut, chaleureux. Jamais de fatalité.
- Inventez une idée visuelle qui le porte : une personne dans un moment réel (au téléphone dans une rue animée, à une table de cuisine avec un café, déballant des cartons), ou une métaphore lisible (un filet de sécurité sous une devanture de magasin, une chaîne avec un maillon fissuré, un calendrier avec un jour encerclé).
- Rédigez le titre (2 à 5 mots est idéal, jamais plus de trois lignes courtes) et un sous-titre facultatif d'une ligne. Menez avec la ligne littérale et simple qui dit ce que c'est ; proposez un accroche plus intelligente comme alternative étiquetée. Pourquoi : les titres simples ont tendance à gagner en clarté et en recherche, et les gens les choisissent lorsqu'on leur donne le choix.
- Planifiez la zone vide pour le titre dès le départ, généralement une zone plus sombre de ciel, de mur ou d'ombre à l'intérieur du carré sûr de la grille.
2. Générer la scène avec le titre dedans
Écrivez une invite qui décrit ensemble la scène, la lumière, le cadrage et le texte. Épelez le titre exactement, entre guillemets, dites quel mot est la couleur d'accent, demandez un texte "énorme, gras, condensé, taille d'affiche" dans la zone réservée, et gardez le sous-titre assez court pour ne pas se renvoyer à la ligne. Laissez le bas très clair.
Protections contre les erreurs, car les modèles d'image échouent de manière prévisible :
- Un sous-titre qui se renvoie à la ligne double souvent un mot au saut de ligne ("premier premier"). Limitez-le à une ligne.
- Un petit texte fixe (un nom, un pseudo, une adresse web) est souvent mal orthographié. Si la marque utilise une petite étiquette de nom, estampez cet élément après coup (
scripts/cover_from_frame.py --wordmarkmontre comment) plutôt que de le demander au modèle. - Les titres longs rétrécissent et deviennent confus. Moins de mots, plus grands.
Ouvrez references/prompting-and-aspect.md pour la structure de l'invite, les astuces de rapport hauteur/largeur et l'exemple fil rouge Gemini. La version courte : si votre outil expose un paramètre de rapport hauteur/largeur, utilisez-le ; s'il ne renvoie que des carrés, éditez sur un canevas vierge du rapport cible (scripts/aspect_scaffold.py) et ne transmettez jamais une image de référence carrée à côté.
3. Verrouillage de la ressemblance (toute image avec une personne réelle)
Lisez references/likeness-lock.md avant la première image centrée sur un visage d'une session. En bref :
- Construisez à partir des photos de référence dans
brand/reference-images/: éditez un portrait net de face dans la scène plutôt que de décrire la personne avec des mots, et fournissez deux ou trois recadrages serrés du visage (pas des selfies de scène entière, dont les arrière-plans se mélangent) comme références d'identité. Redressez d'abord les photos de téléphone prises de côté. - Vérifiez le résultat élément par élément par rapport à une photo couleur fournie (couleur des cheveux, coiffure, barbe, forme du visage et morphologie, lunettes, âge). Ne jugez jamais une ressemblance par rapport à une autre image IA.
- Prévoyez environ trois ou quatre nouvelles tentatives honnêtes. Si ce n'est toujours pas eux, reconstruisez la pièce comme une scène sans visage (la métaphore plus le titre). Si cela ne fonctionne pas non plus, mettez-la en attente et dites-le. Un mauvais visage est pire que pas d'image.
- Ne publiez et ne recadrez jamais les photos de référence directement dans l'image. Ce sont uniquement des références d'identité.
4. Couvertures d'images réelles pour vidéo filmée
Lorsque la personne a filmé une vidéo en plan poitrine, la couverture est construite à partir d'une image réelle de cette séquence, pas d'une ressemblance générée. Le visage est véritablement le sien et la couverture correspond à la vidéo. C'est le seul endroit où une superposition de titre conçue sur une photo est la bonne décision, car il s'agit de titrer une photographie réelle, exactement comme le ferait un designer de miniatures.
- Extrayez des images candidates (
ffmpeg -ss <t>) ou laissez le script trouver l'image de visage la plus nette dans une plage de temps, et choisissez-en une avec un contact visuel, une expression chaleureuse (pas en milieu de mot), une mise au point nette et aucun sous-titre incrusté. - Exécutez
scripts/cover_from_frame.py(voir son--help) : il recadre la couverture à la taille, ajoute un voile doux, ajuste automatiquement le titre principal avec un mot d'accent et un souligné à l'intérieur du carré sûr de la grille, ajoute un ruban de sous-titre facultatif et une étiquette de nom facultative, puis vérifie chaque zone de texte par rapport à la zone de sécurité. - Faites correspondre la forme de la vidéo : une courte 9:16 obtient une couverture 9:16 1080x1920 avec le texte dans le carré central ; un long format 16:9 obtient une couverture 1280x720. Si le montage est effectué avec la compétence
video-editing, sa propre étape de couverture le fait à l'intérieur du montage.
5. Statiques animées (la seule exception à "pas de superpositions")
Une statique animée est un MP4 en boucle de 4 à 6 secondes qui remplit un emplacement fixe et est traité comme une vidéo par la plupart des flux. Le texte doit être une couche séparée pour bouger, donc ici, et seulement ici, un texte cinétique conçu repose sur une scène générée. Il est soumis à la même exigence : une scène réelle, titre principal, couleurs de la marque, placement sûr dans la grille, et le titre complet déjà visible à l'image 0, car la grille affiche une vidéo à partir de sa première image. Ouvrez references/animated-statics.md pour savoir quand en utiliser une, la configuration pour scripts/animate_render.js, la règle des droits sur le fond sonore et les points de révision.
6. Aucun modèle d'image disponible : la voie HTML
Si aucun modèle d'image n'est connecté, ou si la pièce est une mise en page de type pur (une carte de citation textuelle, une carte de statistique, un carrousel de diapositives de texte, une bannière de profil), concevez-la en HTML et CSS et restituez-la avec Playwright. Règles importantes : la zone d'affichage est la taille de sortie réelle, pas de transformations d'échelle CSS, les polices chargées avant la capture d'écran, et les dimensions du PNG vérifiées après coup. Ouvrez references/html-fallback.md et utilisez scripts/render_html.js. Une carte de citation est également la bonne voie lorsqu'un témoignage doit être reproduit mot pour mot, car le texte généré peut dévier.
7. Finaliser, classer et décrire
- Finalisez à la taille exacte pour chaque destination (
references/asset-sizes.md). Un maître 4:5 dessert généralement Instagram, Facebook, LinkedIn et Threads ; dérivez un 1:1 par recadrage central uniquement si tout le texte se trouve à l'intérieur du carré central, sinon générez un carré séparé. - Exécutez
python3 scripts/check_image.py <fichier> --expect LxH --gridpour confirmer les dimensions et écrire une feuille d'aperçu de la grille (le carré central et les recadrages 3:4 à la taille de vignette, avec la zone de sécurité dessinée). - Enregistrez dans
content/<aaaa-mm-jj>-<slug>/images/avec un nom qui dit ce que c'est (<slug>-feed-4x5.png,<slug>-cover-9x16.png). - Écrivez une ligne de texte alternatif par image dans le
PACKAGE.mdde la pièce, par exemple : "Une femme dans un tablier fariné retournant le panneau d'une porte de boulangerie sur OUVERT, avec le titre 'Ouvert avant la course à l'école' en haut." Chaque diapositive de carrousel obtient sa propre ligne. Les couvertures vidéo n'ont pas besoin de texte alternatif. - Conservez l'invite finale (et toutes les notes de nouvelle tentative) dans le dossier de la pièce, afin qu'une future nouvelle tentative parte de ce qui a fonctionné.
Vérifications avant publication (la boucle de révision)
Chaque génération et chaque nouvelle tentative est une nouvelle image, elle obtient donc la vérification complète sur le fichier déposé, ouvert et regardé, jamais jugé à partir de l'invite :
- Orthographe de chaque mot du titre, du sous-titre et de toute étiquette estampée ; aucun mot dupliqué.
- Primauté du titre : dominant, se lit en premier, lisible à la taille de vignette de la grille de profil.
- Sécurité de la grille : tout le texte à l'intérieur du carré centré avec les marges ; rien ne touche un bord ; rien dans la bande inférieure. Pour toute vidéo, jugez la première image.
- Ressemblance (pièces centrées sur le visage) : la grille par rapport à une photo couleur fournie. L'incertitude compte comme un échec.
- Forme : les dimensions réelles correspondent à la cible ; rien n'est rembourré ou étiré.
- Marque : palette et polices du profil, accent utilisé avec parcimonie, couleur naturelle.
- Distinct : pas une copie proche des dernières images du compte.
- Vérité et conformité : tout chiffre ou affirmation dans l'image remonte à une source ; les étiquettes requises de
## Conformitésont présentes ; rien de## Limitesn'apparaît.
Si cela échoue, corrigez la cause et relancez, puis jugez le nouveau fichier de la même manière. Ensuite, transmettez l'ensemble à la compétence review-loop pour la passe indépendante. Si une pièce ne peut pas être réalisée proprement, conservez l'invite, dites ce qui a échoué et mettez-la en attente. N'expédiez jamais un visage de remplacement ou un repli de texte collé.
L'adapter
- Personne réelle devant la caméra ? Ignorez le verrouillage de ressemblance et appuyez-vous sur les scènes et les métaphores ; le reste de la norme est inchangé.
- Une entreprise de produits ? Traitez le produit comme le "visage" : utilisez de vraies photos de produit comme références afin que le modèle conserve sa forme, son étiquette et sa couleur honnêtes.
- Modèle d'image différent ? La méthode tient. Seuls les mécanismes dans
references/prompting-and-aspect.mdchangent (comment le rapport hauteur/largeur est défini, si les images de référence sont acceptées). - Un format de série (point hebdomadaire, astuce de la semaine) : fixez une mise en page composée pour la série et variez tout le reste entre les séries.
- Industries réglementées : vérifiez
## Conformitépour tout ce qui doit apparaître sur une image ou ne doit jamais apparaître (chiffres, garanties, témoignages). En cas de doute, gardez les affirmations hors de l'image et dans la légende où se trouve la clause de non-responsabilité. - Vos propres leçons : lorsque l'utilisateur rejette ou échange une image, notez quoi et pourquoi dans
brand/performance-learnings.md(leçons visuelles) oubrand/voice-learnings.md(formulation du titre), afin que la prochaine image commence plus près.
Fichiers de cette compétence
| Fichier | Ouvrez-le quand |
|---|---|
references/asset-sizes.md | finaliser un fichier ; vérifier la taille actuelle d'une plateforme |
references/grid-safe-zone.md | placer du texte sur n'importe quel format |
references/prompting-and-aspect.md | écrire une invite, lutter contre le rapport hauteur/largeur, utiliser Gemini |
references/likeness-lock.md | toute image avec une personne réelle |
references/animated-statics.md | faire un MP4 en boucle pour un emplacement fixe |
references/html-fallback.md | aucun modèle d'image, ou une mise en page de type pur |
scripts/aspect_scaffold.py | faire un canevas vierge au rapport cible pour les outils basés sur l'édition |
scripts/cover_from_frame.py | construire une couverture à partir d'une image vidéo réelle |
scripts/animate_render.js | restituer une statique animée |
scripts/render_html.js | restituer une mise en page HTML |