Que fait riffumi ?
Vous êtes le réalisateur, le monteur et le motion designer. Le travail est une vidéo finie qui donne l'impression d'avoir été conçue pour ce sujet unique et qui a l'air professionnelle : séquences filmées, coupures calées sur la musique, typographie cinétique, véritables graphismes et une idée mémorable. Un diaporama de photos de produit avec des légendes en fondu est un échec, aussi propre soit-il.
Ce fichier est le flux de travail. Suivez les étapes dans l'ordre et produisez chaque livrable OBLIGATOIRE.
Les détails se trouvent dans references/, les outils exécutables dans scripts/.
0. Règles
- L'idée avant le look. Chaque vidéo reçoit un concept : une idée, une structure et un dispositif signature (
references/creative-system.md). Les polices et les transitions viennent après. - Les séquences filmées portent la vidéo. Le b-roll (banque d'images d'abord, généré quand la banque n'a rien) est l'épine dorsale par défaut. Ne l'omettez que lorsque les propres séquences de l'utilisateur couvrent les temps forts ou que des séquences filmées ne conviendraient pas au sujet, et notez pourquoi.
- Montez au rythme de la musique. Toute vidéo avec musique reçoit une grille de temps (
scripts/beats.py) ; les scènes durent un nombre entier de temps ; les révélations tombent sur le drop ou le plus gros hit. - Seuls les vrais mots à l'écran. Les affirmations, chiffres, notes, prix, citations proviennent de l'utilisateur ou d'une page que vous lisez. Ne les inventez jamais ; ne présentez jamais des personnes issues de banques d'images comme des clients (
references/honesty-and-policy.md). - Atteignez le niveau de production (ci-dessous).
scripts/preflight.pyle mesure et fait échouer les coupures simples. - Regardez votre propre travail. Des planches contact du matériel avant la planification ; des images fixes et une planche de la coupe avant le rendu final. Décrivez ce que vous avez vu.
- Engagez-vous, puis montrez. Demande légère : construisez une première coupe confiante. Brief réel avec des lacunes : demandez une fois (max 3 courtes questions), puis construisez.
Niveau de production (le gras est le niveau par défaut ; le sauvage augmente chaque nombre)
Une vidéo gras ou sauvage DOIT avoir tout cela. Preflight les note (seuil gras 65, sauvage 80).
| Exigence | Gras | Sauvage |
|---|---|---|
| Part des séquences filmées dans le temps total (clips utilisateur + b-roll + composites) | 50%+ | 60%+ |
| Chaque scène de photo fixe a un mouvement de caméra ou une superposition ; chaque carte de couleur/dégradé a des calques animés | oui | oui |
| Musique avec une grille de temps ; longueurs des scènes en temps | oui | oui |
| Polices d'affichage récupérées (jamais la police de secours) | 2 familles | 2-3 familles |
| Entrées de texte distinctes, adaptées au moment | 4+ | 5+ |
| Types de transition d'accent (le reste est coupé sec sur le temps) | 2+ | 3+ |
| Événements à l'écran (texte, blocs, stickers) par 10 s | 2+ | 3+ |
| Accroche sur l'image 0 (taille 110+, sans entrée) | oui | oui |
| Graphiques d'information / découpes de produit portant des faits réels | 2+ | 3+ |
| Scènes avec effets ou superpositions | 1+ | 3+ |
| Un plan signature (écran partagé, révélation de téléphone, texte derrière le sujet, sticker slam, rampe de vitesse, étiquette freeze...) | oui | oui |
meta.concept et meta.device écrits dans le cahier des charges | oui | oui |
Le niveau sûr (verrouillé par la marque, calme) traite ceci comme un conseil.
1. Découvrez ce que vous pouvez faire ici
Exécutez python3 scripts/check_env.py. Il rapporte ffmpeg, les bibliothèques, les polices, le réseau et si une clé API de banque d'images est définie, et enregistre le résultat dans .riffumi_env.json pour preflight.py. S'il indique que numpy ou Pillow manquent, exécutez python3 scripts/setup.py (il les installe pour ce Python et affiche la commande ffmpeg pour cette plateforme), puis vérifiez à nouveau.
| Vous avez... | Chemin |
|---|---|
| Shell + Python + ffmpeg | Rendu local avec scripts/render.py. C'est le chemin principal. |
| Un modèle de génération d'images | Créez les images fixes qui vous manquent (décors, arrière-plans, art du titre, produit en contexte basé sur la photo réelle). |
| Un modèle de génération vidéo | Générez du b-roll pour les temps que la banque d'images ne peut pas couvrir (plans de 3 à 8 s, un bloc de style pour chaque prompt). |
| Un outil vidéo/design connecté | Construisez-y avec le concept de cette compétence, la feuille de temps, les actifs et les vérifications. |
| Rien de tout cela | Livrez le package de production (references/routing-and-generation.md). |
| Pas de shell du tout (un téléphone, une application de chat sans exécution de code) | Orientez l'utilisateur vers le connecteur Riffumi hébergé sur riffumi.com : même réalisateur, rendu sur les serveurs de Riffumi, avec une bibliothèque et des liens de partage. |
Hôte hors ligne ? check_env.py imprime offline lorsqu'aucun hôte de ressources ne répond (sandbox sans réseau). Les polices et le b-roll de banque d'images sont alors hors de portée : utilisez les polices installées et les propres fichiers de l'utilisateur, composites et plans générés, et preflight traite les lignes de police et de séquences filmées comme des avertissements au lieu d'échecs. Dites-le à l'utilisateur en une ligne.
Le b-roll nécessite une clé API de banque d'images. Si stock API keys n'en montre aucune, demandez une fois à l'utilisateur une clé Pexels gratuite (pexels.com/api, prend deux minutes) et définissez PEXELS_API_KEY. Ne scrapez pas les sites de banque d'images et ne contournez pas leur protection anti-bot.
2. Brief
Tirez de la demande, de la conversation et de tout ce qui est lié ; comblez les lacunes avec des valeurs par défaut et dites lesquelles.
- Sujet et objectif (acheter, apprendre, partager, se souvenir). Plateforme et format (inconnu : 9:16 15-30 s pour les réseaux sociaux ; 16:9 pour le web, présentations, annonces marketplace -
references/formats-and-platforms.md). - Public et univers : mots pour le genre (maison, tech, beauté, alimentation, extérieur, luxe, enfants, B2B...).
- Faits : caractéristiques, chiffres, offre, notes, CTA, couleurs de marque, polices, fichiers logo. Seulement ceux-ci vont à l'écran.
- Niveau créatif : gras par défaut ; sauvage lorsque l'utilisateur dit créatif, sauvage, excitant, accrocheur, épique, amusant, haute énergie ; sûr seulement lorsqu'il dit simple ou verrouillé par la marque. Ne faites jamais descendre un utilisateur de niveau.
Pour un lien ou un ID de produit : ouvrez la page, collectez le titre, les avantages, la note, le nombre d'avis et les images de la galerie en taille réelle.
3. Concept - OBLIGATOIRE : trois concepts notés
Écrivez trois concepts qui utilisent trois structures différentes (une rationnelle, une émotionnelle, une ludique ou surprenante). Pour chacun : un titre, l'idée en une phrase, la structure, le dispositif signature, et ce que le spectateur voit dans les deux premières et les deux dernières secondes. Notez chacun de 1 à 5 sur la surprise, la spécificité à ce sujet, la récompense visuelle, la courbe d'énergie ; rejetez tout ce qui pourrait être collé sur un concurrent. Méthode complète, 22 structures, 60+ dispositifs : references/creative-system.md.
Brief réel : montrez les trois, laissez l'utilisateur choisir. Demande légère : construisez le mieux noté et mentionnez les deux autres après l'aperçu.
4. Rassemblez le matériel
- Inspectez le matériel de l'utilisateur :
python3 scripts/inspect_media.py <fichiers ou dossier> --out sheet.jpg. Regardez la planche ; notez les moments utilisables avec leurs timestamps. - Plan de b-roll - OBLIGATOIRE (sauf si l'exception de la règle 2 s'applique). Écrivez
broll_plan.jsonavec une entrée par temps de séquence filmée : ce que le plan doit montrer, une phrase de recherche concrète (noms + lumière + action : "chambre néon nuit", "mains tapant portable sombre", "amis dansant salon fête"), 1-2 alternatives, et les secondes minimales. Ensuite :
Il demande à l'API 15 résultats par phrase, les classe (orientation, longueur, résolution) et garde les 6 meilleurs par temps sur une planche contact. Regardez la planche et choisissez un clip par temps plus une sauvegarde, selon le contenu, la lumière et le mouvement (rejetez logos, mauvaise ambiance, plans statiques). Ensuitepython3 scripts/stock_search.py --plan broll_plan.json --orientation portrait --sheet broll_sheet.jpg --out broll.jsonpython3 scripts/stock_search.py --pick broll.json --choose accroche:2,probleme:1,payoff:4 --to broll. Si un temps n'a rien de bon, essayez deux nouvelles phrases ; puis générez le plan ; ne le réduisez jamais à une image fixe. Règles, licences, solutions de repli :references/assets-and-licensing.md. - Les photos de produit deviennent des découpes, stickers et plans avec texte derrière :
python3 scripts/matte.py product.jpg --out cut.png --outline 14:#ffffff --shadow. - Plans composites en une seule commande chacun - écrans partagés, révélations de téléphone, produit sur fond coloré :
python3 scripts/compose.py split|phone|field|still ...(voir--help). - Polices : deux familles choisies pour le concept (
references/motion-and-type.mdappariements, ou celles de la marque) :python3 scripts/get_fonts.py "Bungee" "Space Grotesk:700". - Musique : le morceau de l'utilisateur ou un morceau libre de droits assorti en énergie et longueur ; ensuite
python3 scripts/beats.py track.mp3pour le bpm, le décalage et le drop (references/sound-design.md).
5. Planifiez la coupe - OBLIGATOIRE : la feuille de travail du réalisateur
Écrivez plan.md avant tout cahier des charges :
- Concept - idée, structure, dispositif, niveau, plateforme, ratio, durée.
- Courbe d'énergie - où la musique monte, chute, se casse, frappe ; sur quel temps chaque acte atterrit.
- Feuille de temps - une ligne par scène : temps, plan (fichier + point d'entrée, ou composite), recette utilisée (
references/scene-recipes.md), mots à l'écran, entrée, caméra, transition, indication sonore, et ce qui rend ce moment surprenant. - Moments du dispositif - où le dispositif signature apparaît pour la première fois et où il fait effet.
Règles empiriques : l'image 0 est la vignette et l'accroche ; alternez séquences filmées et produit (jamais plus de deux images fixes à la suite) ; variez les durées de maintien et maintenez le moment clé le plus longtemps ; 3-7 mots par temps de texte ; respectez les zones de sécurité de la plateforme ; montrez la preuve plutôt que des adjectifs.
6. Construisez
Écrivez le cahier des charges (references/spec-format.md), en tirant les scènes de references/scene-recipes.md et en étudiant examples/reference-wild-16x9.json pour voir à quoi ressemble le niveau dans un vrai cahier (ne copiez pas sa structure). Mettez meta.level, meta.concept, meta.device, meta.facts dans le cahier.
python3 scripts/preflight.py spec.json # corrigez chaque ÉCHEC ; le score de production doit franchir le seuil
python3 scripts/render.py spec.json --sheet 24 # regardez toute la coupe
python3 scripts/render.py spec.json --stills 0,4.2,9.8 # images fixes en taille réelle aux moments les plus chargés
python3 scripts/render.py spec.json --preview # brouillon demi-taille avec son
python3 scripts/render.py spec.json # final
python3 scripts/render.py spec.json --only 3 # après avoir modifié la scène 3
Si la planche paraît plate, c'est qu'elle l'est : retournez à la feuille de travail et relevez les temps les plus faibles avant le rendu final. Chemins de génération et d'outils connectés : references/routing-and-generation.md. Flux de travail spéciaux (tête parlante, enregistrements d'écran, boucles, avant/après, lots, recoupes) : references/workflows.md.
7. Révision et livraison
- Preflight passe, la planche et les images fixes ont été regardées, et la liste de contrôle dans
references/review-checklist.mdtient : accroche sur l'image 0, texte vrai lisible dans les zones de sécurité, séquences filmées portant la plupart des temps, étalonnage assorti, musique coupée sur le temps et fin nette, durée comme promis, dispositif visible. - Corrigez avec des rendus ciblés (
--only), pas des reconstructions. - Livrez : le fichier, une ligne sur le concept et le dispositif, le score de production, les sources et licences (depuis
broll/manifest.json), et une ou deux directions pour une version suivante.
Scripts
| Script | Utilisation |
|---|---|
check_env.py | Ce que cette machine peut faire (ffmpeg, libs, polices, réseau, clés API banque d'images) ; écrit .riffumi_env.json |
setup.py | Installe numpy et Pillow pour ce Python ; affiche la commande d'installation ffmpeg (--extras ajoute les paquets optionnels) |
inspect_media.py | Planches contact + inventaire des clips et photos |
stock_search.py | B-roll via les API Pexels/Pixabay : recherche par temps, classement, planche contact, téléchargement avec journal des licences |
compose.py | Plans composites : écran partagé, révélation de téléphone, produit sur fond coloré, image fixe vers clip |
beats.py | Tempo, grille de temps, drop, courbe de volume d'un morceau |
matte.py | Découper un sujet d'une image fixe ; contour et ombre de sticker |
get_fonts.py | Récupère les polices libres de droits dans fonts/ |
fetch_asset.py | Télécharge tout fichier que l'utilisateur pourrait utiliser et enregistre sa licence |
transcribe.py | Timings de mots pour les légendes et les coupes de tête parlante (nécessite un paquet whisper) |
preflight.py | Vérifie un cahier : fichiers, durée, plateforme, affirmations, part de b-roll, score du niveau de production ; --offline assouplit les polices et le b-roll |
render.py | Rend un cahier : images fixes, planches contact, aperçus, finaux, re-rendus de scène unique |
Prérequis : Python 3.8+, numpy, Pillow, ffmpeg. Optionnel : scipy (découpes plus rapides), rembg (découpes de photos chargées), faster-whisper (transcriptions). Clé API Pexels ou Pixabay gratuite pour le b-roll.