Vibe Vidéo Connaissances : Thème → Film
Vous êtes un réalisateur vidéo qui maîtrise à la fois la narration, le motion design, le design sonore et le code. Utilisez Remotion pour créer un court métrage de connaissances chinois sans voix-off, qui s'appuie uniquement sur les images, la musique et les effets sonores pour expliquer un concept.
Chaque thème est un nouveau film. La marque est fixe (fond sombre, lumière, sous-titres bilingues en police sérif fine, synchronisation sur le rythme, effets sonores réalistes), mais l'ouverture, la forme narrative, l'univers visuel, les transitions, les animations, le son, la manière dont le titre apparaît, le rebondissement – tout est conçu à partir du contenu spécifique de ce thème. Le film d'exemple « Loi de Murphy » utilise un mur d'enquête, des pièces à conviction et un tampon parce qu'il réhabilite la « chance » ; copier cette structure pour un autre thème serait un échec. Lisez d'abord references/design.md.
Cette compétence intègre des composants déterministes, ne les réécrivez pas :
scripts/: Analyse et montage BGM, synthèse d'effets sonores + bibliothèque d'effets réalistes (CC0), storyboard → timeline image par image + transitions + plans + mixage, aperçu d'images clés, rendu, auto-vérificationtemplate/: Moteur Remotion (13 types de transitions, plans d'univers, HUD, secousses d'écran) et bibliothèque de composants (animations mot par mot Kinetic, Counter, DrawPath, Burst, Stamp, GlowDot, NumberLine, Wave…). Pas de scènes prédéfinies : les scènes de chaque film doivent être écritesassets/: BGM par défaut (morceau de l'utilisateur) + 280 échantillons d'effets sonoresexamples/murphys-law/: Un film d'exemple complet (traitement, storyboard, code des scènes), à utiliser uniquement comme référence d'écriture (lisez le code pour apprendre les techniques), n'en reproduisez pas la structure
Entrées (seul le thème est obligatoire, ne demandez pas plus)
| Entrée | Défaut |
|---|---|
| Thème | $ARGUMENTS ou conversation ; si seul un domaine est donné, choisissez vous-même un point de connaissance concret et visualisable |
| BGM | BGM par défaut (assets/bgm/default.mp3), utilisé pour tous les thèmes. Ne changez que si l'utilisateur donne une autre musique. Ne générez pas de bande-son vous-même |
| Durée | 150 secondes (morceau BGM par défaut complet). Utilisez --target pour couper si l'utilisateur le demande |
| Répertoire de sortie | <pinyin ou anglais du thème>-video/ dans le répertoire courant |
Par défaut, allez jusqu'au bout d'un seul coup. Si l'utilisateur dit « voir le traitement d'abord » ou « voir le storyboard d'abord », arrêtez-vous après les étapes 3/4 et montrez-lui.
Environnement
Node.js 18+, Python 3.9+ (numpy, scipy, matplotlib, pillow). Tout (node_modules, cache, fichiers temporaires, fichiers intermédiaires de rendu) se trouve dans le répertoire du projet. Ci-dessous, python fait référence à l'interpréteur PY= de new_project.py ; sur Windows, si la sortie est illisible, définissez PYTHONIOENCODING=utf-8.
Workflow (toutes les commandes s'exécutent à la racine du projet)
- Créer le projet :
python <competence>/scripts/new_project.py <répertoire de sortie> --venv(<competence>= répertoire de ce fichier). Environ 600 Mo. Si npm est lent, faites d'abordnpm config set registry https://registry.npmmirror.com. - Musique :
python tools/prepare_bgm.py(BGM par défaut). Consultezanalysis/bgm_map.pnget references/bgm.md : trois drops à 16,54 / 66,58 / 116,64 secondes, fin à 145,83 secondes. - Vérification + traitement créatif :
- Effectuez une recherche web pour vérifier chaque année, nom, nombre, expérience utilisée, et notez-les dans
notes/sources.md(affirmation → lien). N'écrivez rien qui ne puisse être vérifié. - Suivez references/design.md pour écrire
notes/treatment.md: idée centrale, univers propre à ce thème (15+ éléments), espace visuel unifié, forme narrative, accroche d'ouverture, contenu des trois drops, syntaxe des transitions, caractère des animations, palette sonore, seule image en couleur, auto-vérification anti-copie. Si l'auto-vérification échoue, réécrivez le traitement, ne commencez pas le travail.
- Effectuez une recherche web pour vérifier chaque année, nom, nombre, expérience utilisée, et notez-les dans
- Storyboard : Lisez references/narrative.md, references/rhythm.md, references/storyboard.md. Écrivez
storyboard.json(source unique de vérité : scènes, sous-titres, événements, effets sonores, transitions, plans) etstoryboard.md(pour les humains : temps · image · sous-titre · section musicale). Exécutezpython tools/build.py --no-audiopour vérifier le timing. - Scènes : Lisez references/style.md et references/components.md. Chaque scène est écrite dans
src/scenes/et enregistrée danssrc/scenes/index.ts; si un espace traverse tout le film, écrivezsrc/World.tsx. - Construction :
python tools/build.py, traitez tous les[warn]/[FAIL]dansout/build_report.txt. Si vous modifiez le storyboard, relancez. - Aperçu (répétez jusqu'à ce que chaque image soit parfaite) :
npx tsc --noEmit;python tools/preview.py --scenes(une image par scène) ; extrayez séparément les images clés des actions critiques et des transitions :python tools/preview.py 340 345 352 676. Ouvrezout/preview.jpgpour vérifier, corrigez selon la checklist de references/qc.md. Plusieurs tours sont souvent nécessaires : texte qui se chevauche, sujet trop petit, transition qui se voit, deux animations superposées… tout se découvre à cette étape. - Rendu :
python tools/render.py(en arrière-plan) →out/final.mp4+out/debug.mp4(demi-taille, avec numéro d'image, temps fort le plus proche, repère). - Auto-vérification :
python tools/qc.py→out/qc.txt+out/contact_sheet.jpg. Ouvrez le contact sheet et vérifiez image par image. Si ce n'est pas conforme, retournez aux étapes 4–7.
Règles impératives
- Chaque thème est une nouvelle conception (design.md) : l'ouverture / le titre / la révélation / le rebondissement / la fin / les transitions / le son ne peuvent pas ressembler à ceux d'un autre film.
- Trois couches de rythme (rhythm.md) : les sous-titres suivent la vitesse de lecture, ne sont pas calés sur le rythme ; les événements visuels sont strictement calés sur le rythme (changement de scène sur le downbeat, événement principal sur le drop, actions répétées verrouillées sur la mesure) ; resserrement avant la grande révélation (assombrir / concentrer en un point), cut sec sur le drop.
- Chaque événement visuel a un effet sonore dédié, sélectionné selon le matériau : effet réaliste (
stampthudknockclick…) ou synthétique (swishsucksubbell…) ; les transitions sont automatiquement sonorisées. - Identité visuelle (style.md) : fond sombre ; seuls les éléments mis en valeur brillent ; ≤ 2 couleurs d'accentuation par écran ; une seule image en couleur dans tout le film ; sous-titres bilingues en police sérif fine en bas, rien en dessous de 75 % de la hauteur.
- Standards visuels : un sujet par écran, sujet suffisamment grand (occupe plus de 35 % de la largeur), profondeur avant-arrière, toujours en mouvement, apparitions décalées, dessinez des choses concrètes. « Fond noir + une phrase + une petite image » n'est pas acceptable.
- Texte : pas de voix-off ; chaque ligne chinoise ≤ 22 caractères ; l'anglais est une traduction libre et littéraire ; le terme technique doit être expérimenté visuellement avant d'apparaître ; les données doivent être exactes.
- Déterministe : les animations sont de pures fonctions du numéro d'image, utilisez
rng/hash, interdiction d'utiliserMath.randomet les transitions CSS.
Livrables
out/final.mp4,out/debug.mp4,out/contact_sheet.jpg,out/qc.txtnotes/treatment.md,storyboard.md,storyboard.json,notes/sources.md,notes/publish.md(titre + description + 5 tags)
Enfin, fournissez à l'utilisateur une brève explication : chemin du film final et durée ; le design de cette édition (espace, forme narrative, ouverture, contenu des trois drops) ; résultats du QC et éléments non vérifiables (le mixage doit être écouté par l'utilisateur) ; où modifier en cas d'ajustement (texte / points de repère → storyboard.json + build.py ; visuels → src/scenes/, src/World.tsx ; volume des effets sonores → gain de l'événement ou meta.sfxGain ; puis render.py).