Que fait Depth POV Explainer ?
Produit une vidéo d'environ 10 min « Pourquoi tu ne voudrais jamais rencontrer un [ANIMAL] » : graphiques animés vectoriels plats avec Remotion (tout bouge ; pas de diapositives statiques), narration avec ElevenLabs Eleven v4, une idée visuelle par phrase. Parle toujours à l'utilisateur en anglais, quelle que soit la langue dans laquelle il écrit ; le script, les étiquettes et les invites sont également en anglais américain. Écris tous les fichiers JSON/TXT/.env en UTF-8 sans BOM.
Étape 0 - Espace de travail sur D: (exécuter à chaque fois, créer ce qui manque)
Racine : D:\DepthPOV (si D: n'existe pas, demande à l'utilisateur un autre lecteur).
D:\DepthPOV\.env
D:\DepthPOV\studio\ Projet Remotion (npx create-video@latest studio, modèle Blank)
D:\DepthPOV\studio\src\lib\ Bibliothèque visuelle partagée (core.tsx, sets.tsx, art.tsx, ui.tsx)
D:\DepthPOV\tools\ voice.py stock.py stock_pick.py sfx.py
D:\DepthPOV\videos\<slug>\ facts.json script.txt script_tagged.txt beats.json timing.json stock.json packaging.md voice.mp3 out.mp4 FINAL\
D:\DepthPOV\assets\stock\ music\ sfx\ thumbnails\
D:\DepthPOV\brand\brand.json
Fourni avec cette compétence (copier dans l'espace de travail lorsqu'il manque, ne jamais écraser les copies locales plus récentes) : scripts/*.py -> D:\DepthPOV\tools\ ; remotion-lib/lib/*.tsx et brand.ts -> studio\src\lib\ ; remotion-lib/stills.mjs -> studio\ ; remotion-lib/example-blue-whale/ est une vidéo complète et terminée par l'auteur de la compétence (13 fichiers de chapitre, ~66 scènes persistantes, Main.tsx, Thumb.tsx) à lire en tant qu'implémentation de référence, pas à copier scène par scène. La bibliothèque prend le nom de la chaîne, les couleurs d'accentuation et les couleurs des personnages de studio\src\lib\brand.ts, que tools\sync_brand.py génère à partir de brand.json ; ne jamais coder en dur un nom de chaîne ou une couleur dans une scène. Après avoir créé le studio, exécute npx remotion add @remotion/media @remotion/google-fonts. Python a besoin de requests.
Si .env est manquant, crée-le avec des valeurs vides et ARRÊTE, en disant à l'utilisateur de l'ouvrir dans le Bloc-notes et de remplir les clés :
ELEVENLABS_API_KEY=
ELEVENLABS_VOICE_ID=
ELEVENLABS_MODEL_ID=eleven_v4
PIXABAY_API_KEY=
PIXABAY_API_KEY est gratuit : connecte-toi sur pixabay.com et copie la clé affichée sur https://pixabay.com/api/docs/ (une clé couvre à la fois les vidéos et les photos). Ignore toutes les clés supplémentaires qu'un ancien .env pourrait contenir.
N'affiche jamais les valeurs des clés. Vérifie que Node.js LTS est installé ; installe les compétences de l'agent Remotion une fois avec npx skills add remotion-dev/skills et charge-les avant d'écrire du code Remotion. Si l'utilisateur dit « Rétention », il veut dire Remotion. Mentionne une fois que Remotion est gratuit uniquement pour les particuliers et les très petites entreprises (/remotion-license).
Étape 1 - Marque (première exécution uniquement, sauvegardée dans brand.json ; passer si brand.json existe)
Demande dans l'ordre, un message à la fois, toujours avec une recommandation :
- Nom de la chaîne. Demande si l'utilisateur a déjà un nom. Sinon, propose 8 noms dans 3 styles (mystérieux ex. « Abyss Files », explorateur ex. « Into The Deep », direct ex. « Why You'd Never ») : 1-3 mots, faciles à prononcer, pas de noms de grandes chaînes existantes, pas de ressemblance avec « Depth Theory », fonctionne si la chaîne quitte plus tard l'océan. Pour chacun, donne un @handle correspondant. Dis à l'utilisateur de rechercher le nom + le handle sur YouTube avant de s'engager (Claude ne peut pas confirmer la disponibilité). Sauvegarde channel_name, handle, tagline.
- Le personnage « vous », recommande-en un :
- Plongeur sous-marin (combinaison orange, lampe frontale rouge) - océan ; le plus proche de Depth Theory, le moins distinctif.
- Pilote de mini-sous-marin - grands fonds ; vidéo entière encadrée par un hublot rond + HUD (profondeur, oxygène). Recommandé pour une chaîne uniquement océanique.
- Survivant de radeau après un naufrage - surface océanique ; vue du dessus du radeau.
- Explorateur avec lampe frontale - jungle, grottes, rivières, glace ; cercle de lumière dans l'obscurité. Recommandé si la chaîne s'étend au-delà de l'océan.
- Ranger / biologiste de terrain - animaux terrestres ; jumelles + carnet de notes.
- Voyageur temporel - créatures préhistoriques ; compteur d'années (-66 000 000).
- Couleur d'accentuation + police, et le propre style d'ouverture de la chaîne (montre 3 exemples d'ouverture à froid, l'utilisateur choisit).
Sauvegarde {channel_name, handle, tagline, character, look, signature_frame, accent {threat, safe, danger}, character_colors {suit, suit2, stripe, fins, fins_dark, lamp} (les palmes dans une couleur haute visibilité), font, opening_style} dans brand.json, puis exécute python D:\DepthPOV\tools\sync_brand.py pour écrire studio\src\lib\brand.ts, et réutilise-le pour chaque vidéo. La bibliothèque d'art fournie dessine le plongeur sous-marin ; pour tout autre personnage (pilote de sous-marin, explorateur, ranger, voyageur temporel), construis un nouveau composant dans art.tsx avec les mêmes règles d'anatomie (references/visual-style.md). N'utilise jamais l'ouverture « Picture this. » de Depth Theory, sa palette exacte ou son design de plongeur.
Utilise channel_name dans : la ligne de rappel entre vidéos (« si vous regardez [channel_name] depuis un moment... »), la ligne CTA/écran de fin, la description, et un petit logo filigrane dans les 10 dernières secondes de la vidéo.
Étape 2 - Faits (avant tout script)
Recherche sur le web l'animal. facts.json : 25-35 éléments {id, claim, number, unit, everyday_comparison, source_url, confidence}. Pas de superlatif (le plus grand/le plus profond/le seul/jamais) à moins qu'une source consultée ne le dise. Liste les mythes populaires et la vérité.
Étape 3 - Script (structure fixe ; lire references/script-patterns.md d'abord)
Utilise script-patterns.md pour les budgets de sections, les dispositifs et les règles d'originalité : apprends le rythme de la référence, jamais son libellé. Chaque script est écrit de toutes pièces à partir des faits de cet animal ; si l'animal a déjà été couvert par la référence (cachalot), évite les angles listés là-bas.
- Ouverture à froid 0:00-0:25. La ligne 1 est TOUJOURS la phrase d'ouverture signature de la marque, courte (moins de 3 s), pour que les spectateurs l'apprennent : « Journal de plongée, entrée [n]. [profondeur]. Air : [PSI]. » La ligne 2 et suivantes sont le HAMEÇON, toujours dans les 7 premières secondes : mets le spectateur en danger immédiatement - quelque chose touche, attrape, encercle ou bloque la lumière, une forme de requin, une ombre, une chose invisible - présent, inexpliqué, et montré à l'écran à l'instant même (silhouette, tentacule, ombre, œil). Ce n'est qu'ensuite que viennent le cadre (plongée de nuit, longe, profondeur en dessous), une RÈGLE en laquelle le spectateur a confiance, et un signe sensoriel qui la brise et monte vers toi. Ne passe jamais les 7 premières secondes sur un paysage calme ou de la logistique. Plante le détail sensoriel pour une récompense à mi-vidéo et fais écho au danger d'ouverture plus tard (la véritable rencontre, le moment fatidique). Pas d'introduction.
- Recontextualisation : les animaux que les gens craignent habituellement, concède, puis trois affirmations pour [ANIMAL] ; termine par « ...pourquoi tu ne voudrais jamais en rencontrer un. »
- Cinq chapitres : TAILLE, NOURRITURE, COMMENT IL CHASSE/SENT, CERVEAU/COMPORTEMENT, A-T-IL JAMAIS ATTAQUÉ DES HUMAINS. Chacun se termine par une question à laquelle le suivant répond. Chaque chiffre reçoit une comparaison de la vie quotidienne.
- Récompense du détail planté vers 3:30.
- « Que ferais-tu vraiment ? » : 4 options éliminées une par une, une blague sèche chacune, verdict.
- Rebondissement 1 : il ne cible presque jamais les humains. Rebondissement 2 : le vrai danger est dans l'autre sens.
- Rôle dans l'écosystème. 8. Fin : répète la RÈGLE avec un nouveau sens. 9. CTA : demande quel créature couvrir ensuite, dans les propres mots de la chaîne depuis brand.json (ne copie jamais « I do actually read them » de Depth Theory).
Voix : deuxième personne (35+ « tu »), phrases de moins de 20 mots, 5-7 métaphores humoristiques sèches, 1 600-1 800 mots à ~170 mots/min. Pas de « c'est parti », pas d'emoji. Sauvegarde sous script.txt (sans balises).
Étape 4 - Scènes et rythme (lire references/visual-style.md d'abord)
La vidéo comporte environ 60 SCÈNES persistantes, pas une carte par phrase. scenes.json : {scene_id, chapter, setting (deep|mid|surface-split|paper|radar|xray|black|stock), camera (drift|push-in|follow-dive|tilt|top-down|macro), cast (sujets illustrés), beats:[...]}. Une scène dure 6-20 s et couvre 2-6 phrases ; chaque phrase AJOUTE un élément à la scène (le sujet entre, la ligne de mesure se trace, le compteur s'incrémente, l'étiquette apparaît, le tampon frappe, l'effet spécial se déclenche) au lieu de la remplacer.
Beat = {id, scene_id, text, add (ce qui apparaît/change), label (0-5 mots ou vide ; ne répète jamais la narration), label_pos (top|under-subject|near:), accent, fact_ids, stock_query?}.
Utilise la boîte à outils de référence par type de phrase : nombre -> diagramme dans la scène (ligne de mesure, compteur, compteur d'icônes, grille, camembert) ; comparaison -> objet qui entre à côté du sujet (un bus arrive, des éléphants apparaissent) ; histoire -> accessoires papier/sépia et décors de surface ; blague -> accessoire ou bonhomme (reçu, formulaire, tableau blanc, tampon, boîte de dialogue UI) ; danger -> étiquette rouge + effet d'impact ; sensation -> mode radar/rayons X. Le personnage « vous » apparaît dans l'ouverture à froid, la récompense, le chapitre des options et la fin, toujours minuscule à côté de l'animal.
Étape 5 - Vérification des faits (bloquant)
Tableau : phrase | fact_id | source | OK/FIX pour chaque phrase contenant un chiffre ou un superlatif. Corrige toutes les lignes FIX et montre le tableau à l'utilisateur avant d'utiliser des crédits ElevenLabs.
Étape 6 - Voix (Eleven v4 + balises audio)
- Crée script_tagged.txt en ajoutant des balises audio v4 comme le fait ElevenLabs Auto-tag : [thoughtful], [curious], [uneasy], [dry], [whispers], [short pause], [long pause]. Maximum une balise toutes les 2-3 phrases ; chuchotement/pause autour des révélations et de la récompense ; [dry] avant les blagues ; pas de balise à l'intérieur d'une phrase contenant une statistique. Montre un échantillon de 10 lignes à l'utilisateur une fois par chaîne pour approuver la densité de balises.
- Appelle
POST https://api.elevenlabs.io/v1/text-to-speech/{ELEVENLABS_VOICE_ID}/with-timestampsavec model_id depuis .env (eleven_v4). Limite de 10 000 caractères par requête : sépare aux limites des chapitres (généralement 2 requêtes), passe previous_text/next_text pour la continuité, concatène avec ffmpeg. - Si with-timestamps est rejeté pour v4, utilise le point de terminaison simple, puis ElevenLabs Forced Alignment (
POST /v1/forced-alignment) avec l'audio + script.txt (balises supprimées). - Mappe les minutages des mots aux phrases -> timing.json {beat_id, start_s, end_s, start_frame, end_frame} à 30 ips.
Étape 6b - Effets sonores (ElevenLabs Sound Effects, pas besoin de CapCut)
Conserve une bibliothèque SFX réutilisable dans D:\DepthPOV\assets\sfx\ générée avec POST https://api.elevenlabs.io/v1/sound-generation {text, duration_seconds, prompt_influence 0.6} en utilisant la même ELEVENLABS_API_KEY (tools/sfx.py ; seuls les fichiers manquants sont générés, donc les crédits sont dépensés une fois). Ensemble de base : whoosh_soft, whoosh_deep, pop_soft, tick_ui, counter_roll, stamp, paper_slide, impact_heavy, splash_big, bubbles, sonar_ping, low_hum, whale_moan, heartbeat_slow, riser_tension, scan_beep, warning_beep, strike_line, gulp, boat_motor ; ajoute des sons spécifiques à la créature si nécessaire. Normalise les copies à -20 LUFS dans studio/public/sfx/. Place chaque SFX sur l'action à laquelle il appartient (entrée d'élément, compteur, tampon, impact, changement de scène) avec <Sfx at=... vol=...> à l'intérieur de la scène, volume 0.3-0.6, jamais plus d'un par seconde ; la voix reste au premier plan.
Étape 7 - Images libres de droits (cible 6-10 clips, 3-6 s chacun, aux pics émotionnels ; max 8% de la durée)
Sources, dans cet ordre (uniquement celles-ci ; jamais de captures YouTube/TikTok, de séquences documentaires, ou de tout ce qui est marqué « usage éditorial uniquement ») :
- Pixabay (automatique, API). Une PIXABAY_API_KEY sert les vidéos
https://pixabay.com/api/videos/?key=...&q=...et les photoshttps://pixabay.com/api/?key=...&q=.... Max 100 requêtes/60 s ; met en cache chaque réponse pendant 24 h dans assets/stock/_cache ; pas de téléchargement en masse. Outils : tools/stock.py, tools/stock_pick.py. - NOAA (manuel, meilleur pour la véritable espèce). NOAA n'a pas d'API de vidéo libre de droits. Claude trouve les clips (pages d'espèces NOAA Fisheries et galerie vidéo, NOAA Ocean Exploration, NOAA Photo Library, les propres téléchargements de NOAA sur Wikimedia Commons) et donne à l'utilisateur une liste numérotée : lien direct de la page, ce que montre le clip, l'emplacement qu'il remplit, la ligne de crédit exacte, et le fichier à choisir (le plus grand MP4, idéalement 1080p). L'utilisateur télécharge dans assets/stock//noaa/. Les séquences réalisées par le personnel de NOAA sont généralement dans le domaine public, mais lis chaque page : de nombreux clips de baleines sont filmés sous un permis de recherche ou par un entrepreneur et nécessitent une ligne de crédit telle que « NOAA Fisheries, permis #XXXX » ou le nom du photographe ; si une page restreint la réutilisation, ignore le clip. Après le téléchargement, lis TOUJOURS le générique d'ouverture et le générique de fin du fichier : les génériques B-roll de NOAA Fisheries disent « Toutes les séquences sont une gracieuseté de NOAA... Veuillez créditer NOAA Fisheries » plus tout numéro de permis (sûr) ; les films éducatifs (par ex. Ocean Today) listent souvent des contributeurs externes tels que des maisons de production ou des agences de stock dans le générique de fin, donc leurs plans ne sont PAS dans le domaine public et doivent être rejetés ; rejette également les fichiers avec des sous-titres ou logos incrustés. Utilise uniquement les segments dont le générique nomme l'espèce cible (les packages B-roll mélangent les espèces), et dis « NOAA n'approuve pas cette chaîne » dans la description. N'utilise jamais le logo NOAA.
- Pexels (liens manuels). La délivrance de clés API était en pause lors de la dernière vérification (nov. 2026), donc Claude recherche pexels.com/videos (Claude dans Chrome ou recherche web) et donne à l'utilisateur des liens directs vers les pages de clips avec quoi télécharger (Full HD 1920x1080) dans assets/stock//pexels/. Télécharger quelques clips à la main pour une vidéo est acceptable selon la licence Pexels (utilisation commerciale autorisée) ; pas de scraping en masse ou scripté. Si une PEXELS_API_KEY apparaît plus tard dans .env, utilise l'API à la place (en-tête
Authorization: <key>,GET https://api.pexels.com/v1/videos/search?query=...&orientation=landscape&size=medium&per_page=.., 200 requêtes/heure). - Wikimedia Commons (manuel, occasionnel). Uniquement les fichiers avec une licence claire PD / CC BY / CC BY-SA ; enregistre l'auteur + la licence.
Place les clips là où la référence le fait : juste après l'ouverture à froid (le véritable animal ou un plongeur), sur les affirmations « monde réel » (brèche, groupe, navire, chasse à la baleine, aérien), et au rebondissement/écosystème ; répartis-les (jamais 3 à la suite). Pour chaque emplacement, cherche 3-5 synonymes, conserve uniquement les résultats dont les balises/titres contiennent le sujet, puis extrais une image par candidat avec ffmpeg et REGARDE-la ; rejette les mauvaises espèces (une baleine à bosse n'est pas une baleine bleue) et les plans hors sujet. Un clip d'une espèce différente ne peut être utilisé que pour une phrase générale (« grandes baleines ») avec une note à l'écran « (montré : baleine à bosse) ». Assombris/refroidis les clips pour correspondre à la palette, fondu enchaîné flouté de 8 images.
Les crédits sont obligatoires pour chaque source. Chaque clip montre un petit crédit à l'écran en bas à gauche pendant toute sa durée (noir/jaune, taille 24 px, police de la chaîne, par ex. « Vidéo : NOAA Fisheries, permis #... ») ; la description de la vidéo inclut une section Crédits. Au cas où des clips seraient abandonnés pour cause de droits non vérifiables, le rendu principal ne doit jamais planter : la vidéo est toujours exportée sans le clip.
Étape 8 - Montage (Remotion)
Les règles du référentiel s'appliquent : l'animal est un dessin vectoriel SVG animé, pas une vidéo de l'animal réel. Les plans vidéo sont un calque de fond qui apparaît uniquement lorsque stock.json le définit. La scène est une pile : fond (gradient, motifs, image fixe ou fond vidéo) -> calque de l'animal (SVG, avec ses propres ombres et lumières) -> calque de l'interface utilisateur (mesures, étiquettes, compteurs, légendes) -> le personnage « vous » -> SFX. Un sous-titre n'est jamais nécessaire car la narration est en anglais, mais les phrases clés importantes écrites sur l'écran sont sous-titrées en anglais avec le sous-titre correspondant dans la langue de l'utilisateur juste en dessous en police plus petite. Pour les chapitres, Main.tsx est ~13 compositions de chapitre, chacune composée de plusieurs scènes persistantes. Les files d'attente de rendu ne sont jamais utilisées (Remotion Studio les désactive par défaut). Le composant Thumb.tsx produit la miniature (écran partagé supérieur/inférieur ou boîte à lettres, animal + personnage + titre + accroche). La durée totale est de 9:00 à 11:00 avec un avertissement si elle dépasse 11:30.
Étape 9 - Conditionnement
python tools/packaging.py (fourni) écrit packaging.md avec la vignette YouTube, la description, les balises, la section crédits et un chapitre de la version courte. Montre-le à l'utilisateur pour approbation.
Règles
- Les dialogues suivants sont interdits dans tous les fichiers de la compétence : ne jamais utiliser le mot anglais « Dive » ou tout mot français équivalent comme « plongée », « immersion », « descente », « profond » dans les scripts, les descriptions, les légendes ou le branding, sauf s'il fait partie du nom de chaîne choisi par l'utilisateur à l'étape 1. À la place, utilise des descripteurs contextuels comme « exploration », « rencontre », « observation » ou des termes spécifiques à l'environnement (ex. « sous la canopée », « dans les abysses »). Les métaphores aquatiques (ex. « couler », « flotter », « marée », « surface », « abysse ») sont également interdites. Le générique d'ouverture de la marque ne doit jamais contenir le mot « Dive » ou « Plongée ». Cette règle garantit que la chaîne peut évoluer au-delà du thème océanique et rester originale par rapport aux concurrents comme Depth Theory.
- La règle précédente s'applique également au français : dans tous les textes en français, évite « plongée », « immersion », « profond », etc., sauf s'il s'agit du nom de la chaîne.
Références (lire d'abord)
Chaque fichier de référence doit être lu par Claude avant d'écrire du contenu vidéo :
- references/script-patterns.md : Schémas de scripts, budgets de sections, règles d'originalité
- references/visual-style.md : Règles du style visuel, anatomie des personnages, utilisation des couleurs
Ces fichiers sont fournis dans la compétence et doivent être chargés avant les étapes 3 et 4.
Frais API & crédits
La compétence utilise des services payants pour la voix (ElevenLabs) et optionnellement pour les images (Pixabay est gratuit avec clé API, Pexels est gratuit). Les crédits ElevenLabs sont utilisés pour la génération vocale (environ 2 requêtes par vidéo) et pour les effets sonores (génération unique par son, puis réutilisation). Toujours demander la confirmation de l'utilisateur avant de consommer des crédits payants.
Dépannage
- Si le rendu échoue, vérifie que Node.js LTS est installé et que les compétences Remotion sont chargées.
- Si la voix ne se synchronise pas, vérifie que le fichier timing.json a été généré correctement et que les images correspondent.
- Si les clips vidéo ne s'affichent pas, vérifie que les chemins dans stock.json sont corrects et que les fichiers existent.
- Si le script contient plus de 10 000 caractères, il sera automatiquement divisé en 2 requêtes ElevenLabs.
- N'oublie pas de créditer toutes les sources dans la description.