Voici la méthode exacte que j’ai utilisée pour le carrousel sur les soirées salsa et bachata de Cabarete, pour Ninafrika Dance School et OJO. Ni Canva ni modèle : j’ai donné à l’IA un brief et des photos tirées de mes propres vidéos, puis je l’ai corrigée comme on briefe un graphiste. Voici chaque étape, avec les commandes et les prompts à copier.
Les outils
| Outil | À quoi il sert | Où | Prix |
|---|---|---|---|
| Claude Code | L’assistant IA qui écrit et exécute tout depuis le terminal | claude.com | Inclus dans les offres payantes de Claude |
| Open Carrusel | Éditeur de carrousels : l’IA conçoit chaque slide en HTML et l’exporte en PNG aux dimensions exactes d’Instagram | github.com/Hainrixz/open-carrusel | Gratuit, open source (MIT) |
| ffmpeg | Extraire des images de vos vidéos | ffmpeg.org | Gratuit |
| ImageMagick (facultatif) | Mesurer quelle image est la plus nette | imagemagick.org | Gratuit |
| Claude Banana (testé, pas utilisé) | Rédige des prompts pour générer des images par IA (via l’API de Google) | github.com/Hainrixz/claude-banana | Gratuit (MIT) ; clé Google AI nécessaire |
À propos des skills : je n’ai installé aucune skill supplémentaire. Open Carrusel fournit déjà ses commandes pour Claude Code (/start, /stop, /reset et /doctor) et des instructions internes qui expliquent à l’IA comment construire un carrousel (un arc de 8 slides avec accroche et appel à l’action final, dans src/lib/chat-system-prompt.ts). C’est le brief de l’étape 1 qui donne votre style. Open Carrusel et Claude Banana sont des projets de Hainrixz, de tododeia.
Étape 1
Rédigez le brief
Avant de toucher un outil, écrivez qui vous êtes, à qui vous parlez et ce que vous voulez obtenir. L’IA le lit avant chaque slide ; sans lui, tout sort générique. J’en écris un par marque et je le réutilise.
# Brief de marque pour carrousels
## Qui je suis
- Nom / marque :
- Ce que je fais (une phrase) :
- Où je suis :
- Compte Instagram :
## À qui je parle
- Public principal :
- Ce qu’il cherche ou ce qui l’inquiète :
- Langue des slides :
## Objectif de ce carrousel
- Objectif (enregistrements, partages, visites du site, messages) :
- Appel à l’action du dernier slide :
## Style
- Couleurs (hex) : fond / texte / accent
- Police :
- Logo (oui/non, où) :
- Photos : les miennes. Aucune image générée par IA de personnes ou de lieux réels.
- Ce que je ne veux PAS :
## Données
- Source des données (lien) :
- À vérifier avant de publier :
## Format
- 4:5 (1080 × 1350), de 6 à 9 slides
- Slide 1 : accroche de 8 mots maximum
- Une idée par slide, 10 à 20 mots
- Tout le texte dans les 80 % centraux
Le mien : fond #0C0C0C, crème #F0EDE8 et doré #C9A84C (les couleurs de mon site), Helvetica (la police de mes vidéos), sans mon visage, et des données tirées de mon propre article de blog, déjà vérifiées.
Étape 2
Tirez les photos de vos vidéos
Je n’avais pas de photos des soirées, seulement des vidéos 4K d’iPhone. Mettre une vidéo en pause et faire une capture d’écran donne des images floues et en basse résolution. ffmpeg extrait des images en pleine résolution. Sur Mac, installez-le avec brew install ffmpeg.
1. Une planche contact par vidéo, pour voir tous les moments d’un coup d’œil (ici, une image toutes les 2 secondes) :
ffmpeg -i video.mov -vf "fps=1/2,scale=360:-1,tile=4x6" -frames:v 1 -q:v 3 planche.jpg
2. Extrayez une rafale du moment qui vous plaît. S’il se trouve à la 14e seconde, prenez 4 images par seconde pendant 2 secondes :
ffmpeg -ss 14 -t 2 -i video.mov -vf fps=4 -q:v 2 cand_%02d.jpg
3. Choisissez la plus nette à l’œil ou, si vous avez ImageMagick, avec une mesure de netteté (plus le chiffre est élevé, plus l’image est nette) :
for f in cand_*.jpg; do echo "$f $(magick "$f" -resize 540x -colorspace Gray -morphology Convolve Laplacian:0 -format '%[fx:standard_deviation*10000]' info:)"; done
4. Recadrez-la en 4:5 :
ffmpeg -i cand_05.jpg -vf "crop=iw:iw*5/4,scale=1620:2025" -q:v 2 choisie_4x5.jpg
Inutile de taper tout cela : demandez-le à Claude Code.
J’ai des vidéos dans le dossier « videos/ ». Pour chaque vidéo, fais une planche contact avec ffmpeg (une image toutes les 1 ou 2 secondes, grille 4×6) et enregistre-les dans « _travail/planches/ ».
Ensuite je t’indique les moments que je veux (vidéo + seconde). Pour chacun : extrais 4 images par seconde pendant 2 secondes, garde les 3 plus nettes, recadre-les en 4:5 (1620×2025) et enregistre-les dans « _travail/images/<nom-du-slide>/ ».
Ne supprime ni ne déplace mes vidéos d’origine.
Attention aux personnes à l’image. En soirée, des gens qui ne sont pas votre client apparaissent dans le cadre. Demandez l’accord de l’organisateur, privilégiez les images centrées sur l’équipe et n’utilisez jamais d’images de mineurs. Et ne générez pas de personnes par IA pour « compléter ».
Étape 3
Installez Open Carrusel
Il vous faut Node.js 20 ou plus récent et Claude Code connecté. Puis, dans le terminal :
git clone https://github.com/Hainrixz/open-carrusel.git
cd open-carrusel
claude
Dans Claude Code, tapez :
/start
La première fois, il installe tout et télécharge environ 300 Mo de Chromium (utilisé pour exporter les PNG), ce qui prend quelques minutes. Ensuite l’éditeur s’ouvre sur http://localhost:3000 : le chat à gauche, l’aperçu au centre et les slides en bas.
Fermez une porte avant de l’utiliser. Le chat d’Open Carrusel lance Claude avec un accès illimité au terminal (Bash). Il n’en a besoin que pour envoyer les slides à sa propre API avec curl. Dans src/app/api/chat/route.ts, modifiez la ligne Bash pour qu’elle devienne :
"--allowedTools", "Bash(curl *)",
Si le chat ne crée plus de slides à cause d’une erreur de permissions, remettez-la comme avant. Et ne collez pas dans le chat de liens ou de textes de sources dont vous n’êtes pas sûr : un texte avec des instructions cachées pourrait lui faire exécuter des choses.
Étape 4
Configurez votre marque
Dans les réglages de marque de l’éditeur, indiquez le nom, les couleurs, la police, votre logo et quelques mots de style (par exemple : « sombre, éditorial, aéré, gros caractères »). L’IA les lit avant chaque slide. Importez aussi vos photos : elles vont dans /uploads/ et les slides les utilisent depuis là.
Astuce police : si vous utilisez une police système comme Helvetica, écrivez-la entre guillemets dans la marque ('Helvetica Neue', Helvetica, Arial, sans-serif) pour qu’Open Carrusel ne la cherche pas sur Google Fonts.
Étape 5
Générez les slides
Deux possibilités. La première : le demander dans le chat de l’éditeur.
Utilise ma marque (elle est déjà configurée). Crée un carrousel 4:5 de 7 slides sur [SUJET] pour [PUBLIC].
Données (utilise-les telles quelles, n’invente rien) :
[COLLE LES DONNÉES ICI]
Structure :
1. Accroche de 8 mots maximum qui ouvre une question
2. Contexte en une phrase
3–5. Une idée par slide
6. Un conseil pratique
7. Appel à l’action : [enregistrer / envoyer à un ami / commenter MOT]
Photos : utilise [/uploads/photo1.png, /uploads/photo2.png...] sur les slides 1, 3, 4, 5 et 7, avec un dégradé sombre en bas pour que le texte soit lisible.
Règles : 20 mots maximum par slide, tout le texte dans les 80 % centraux, un compteur 01/07 en haut à droite, le logo en haut à gauche.
À la fin, écris la légende (150 mots maximum) et 5 à 8 hashtags précis.
La seconde, c’est celle que j’ai utilisée : demander à Claude Code, depuis le terminal, un script qui crée le carrousel via l’API locale d’Open Carrusel. C’est un peu plus long la première fois, mais ensuite chaque correction revient à changer une ligne et relancer le script, et le design reste identique d’une version à l’autre.
Open Carrusel tourne sur http://localhost:3000. Écris un script Python (bibliothèque standard uniquement) qui crée mon carrousel via son API :
1. POST /api/carousels avec {"name": "...", "aspectRatio": "4:5"}
2. POST /api/carousels/{id}/slides avec {"html": ..., "notes": ...} pour chaque slide
3. PUT /api/carousels/{id}/caption avec la légende et les hashtags
Chaque slide est du HTML de corps (sans <html> ni <body>) avec des styles en ligne, en 1080×1350.
Utilise BRIEF.md pour les couleurs, la police et le logo, et COPY.md pour le texte exact de chaque slide.
Écris des fonctions réutilisables : un slide avec photo de fond et texte en bas, et un slide de liste numérotée.
Si je passe en argument l’id d’une version précédente, supprime-la avant de créer la nouvelle.
N’invente pas de données : si quelque chose n’est pas dans COPY.md, demande-moi.
Étape 6
Corrigez comme avec votre graphiste
La première version n’est jamais la bonne. La mienne est passée par huit versions. Ce qui marche, ce sont des consignes concrètes, une chose à la fois. Voici des corrections réelles :
Supprime tout ce qui concerne le vendredi : cette soirée est en pause. L’accroche devient « 2 nights. Zero cover. »
Utilise Helvetica partout, la même police que mes vidéos.
En haut à gauche, ajoute le co-branding : mon logo × Ninafrika × OJO, sur une ligne.
La photo du slide 4 est trop sombre : essaie les deux autres candidates de ce dossier.
Sur le slide de l’équipe, mets le logo Ninafrika en grand, au-dessus du titre.
Vérifie qu’aucun texte ne sort des 80 % centraux.
Avant d’exporter, vérifiez chaque donnée par rapport à la source. Dans mon cas, une des trois soirées venait d’être mise en pause cette semaine-là : sans cette vérification, j’aurais publié un horaire qui n’existait plus.
Étape 7
Exportez et publiez
Depuis l’éditeur, vous exportez un ZIP avec un PNG par slide, en 1080 × 1350. Publiez-les sur Instagram dans l’ordre. Voici la légende que j’ai rédigée, à publier en collaboration avec @ninafrikadance (en anglais, la langue de ce public) :
Cabarete has a dance floor two nights a week — and it's free. Tuesday at OJO, Thursday on the OJO rooftop. Salsa and bachata, led by the @ninafrikadance team. No partner needed. Save this and send it to the friend who "doesn't dance" 😉 Full guide: link in bio. 📍 Cabarete, DR
Pour savoir si ça a marché, ne regardez pas les likes. Regardez les enregistrements, les partages en message et combien de personnes arrivent au dernier slide par rapport au premier.
Problèmes fréquents
- « Node n’est pas installé » ou la version est trop ancienne : installez Node.js 20 ou plus récent et retapez
/start. - Le port 3000 est occupé :
/startvous demande s’il faut fermer l’autre processus ou utiliser un autre port. - Quelque chose ne démarre pas et vous ne savez pas pourquoi : tapez
/doctordans Claude Code ; il vérifie l’installation et vous dit ce qui manque. - Les photos sont petites ou pixelisées : tirez-les de la vidéo d’origine, pas d’une capture d’écran, et importez-les en bonne résolution.
- Le texte est coupé sur votre profil : la grille d’Instagram recadre le centre de l’image. C’est pour cela que le texte reste dans les 80 % centraux.
Vous voulez ça pour votre marque, sans le faire vous-même ?
Je crée des carrousels et des vidéos et je gère les réseaux sociaux d’entreprises de la Côte Nord. Voyez comment je travaille avec Ninafrika dans cette étude de cas (en anglais).