Étape 4 : Métadonnées YouTube, Vignette Composite et Téléversement Multilingue (/publish-youtube)
Objectif
Transforme tout export 4K .mp4 et projet .fcproj terminé en un package de publication YouTube complet (youtube_metadata.json, captions.en.srt, captions.ua.srt, captions.ru.srt, et thumbnail.jpg / thumbnail_ua.jpg / thumbnail_ru.jpg) et le publie sur YouTube via l'API YouTube Data v3.
Règles Clés du Studio v2
- Titres Accrocheurs (Optimisés Mobile et Algorithme) : Par défaut, privilégier l'accroche narrative à forte curiosité comme titre principal (ex.
Sauvée par les Yeux Perçants de Nina ! Escorte vers Zumba et Boucle de 21,5 mi à Pollença) plutôt que d'afficher la date en premier (AAAA-MM-JJ · ...), qui est tronquée sur mobile. Les titres avec date d'archive sont conservés danstitle_alternativesetrecordingDetails.recordingDate. - Commentaire Épinglé Automatique de Commutation Linguistique : Lors du téléversement de projets multilingues (
--option-b),upload_youtube_api.pypublie automatiquement un commentaire de commutation linguistique de premier niveau sur la version anglaise principale, avec des liens directs vers les éditions ukrainienne et russe, afin que les spectateurs mobiles y aient accès en un clic sans avoir à développer la description. - Code ISO Strict
uapour l'Ukraine en Local : Utiliser toujoursua(UA) dans tous les noms de fichiers locaux (captions.ua.srt,voiceover_ua_part1.wav,thumbnail_ua.jpg,_UA.mp4) et les clés deStoryboard.md/youtube_metadata.json.upload_youtube_api.pytraduit automatiquement"ua" -> "uk"uniquement lors de l'envoi à l'API YouTube Data v3. - Règle d'Analyse des Chapitres YouTube : YouTube utilise le dernier bloc de timestamp
00:00dans la description d'une vidéo pour étiqueter les chapitres dans la barre de défilement. Par conséquent, les blocs en ligne🇺🇦 УКРАЇНСЬКОЮet🇷🇺 ПО-РУССКИdans la description anglaise ne doivent jamais inclure de listes de chapitres00:00(les chapitres localisés appartiennent strictement àlocalizations["ua"]etlocalizations["ru"]). - Date d'Enregistrement Obligatoire (
recordingDetails.recordingDate) : Chaque vidéo téléversée ou mise à jour (y compris les éditionsEN,UAetRU) DOIT définirrecordingDetails.recordingDate(AAAA-MM-JJT00:00:00.000Z, dérivé derecording_datedansyoutube_metadata.jsonou du préfixeAAAA-MM-JJdu dossier du projet) viapart="snippet,status,localizations,recordingDetails". - Héritage d'Environnement (Zéro Dépendances d'Encapsulation) : Définir
GEMINI_API_KEY,GOOGLE_OAUTH_CLIENT_IDetGOOGLE_OAUTH_CLIENT_SECRETà l'aide de votre gestionnaire d'environnement préféré (par ex.direnv+ 1Password, profil shell ou fichier.envlocal) et démarrer Antigravity à partir de cette session shell afin que tous les processus enfants les héritent automatiquement. Une fois autorisé,~/.config/antigravity_youtube/token.jsonmet en cache le jeton d'actualisation OAuth pour des téléversements futurs sans invite.
Étape 1 : Générer le Package de Métadonnées, les Pistes .srt et la Vignette Composite
Exécuter generate_youtube_metadata.py :
./.venv/bin/python ./.agents/skills/publish-youtube/scripts/generate_youtube_metadata.py \
--project-dir "./04_Project_Catalog/YEAR/<project_name>" \
--mp4 "~/Movies/Exports/YEAR/<project_name>.mp4" \
--thumb-mode preserve \
--thumb-text "SAUVÉ À LA PORTE" \
--thumb-text-ua "ВРЯТОВАНИЙ БІЛЯ ВОРІТ" \
--thumb-text-ru "СПАСЁН У ВОРОТ"
- Modes de Vignette (
--thumb-mode) :preserve(par défaut) : Conserve une vignette personnalisée/composite existante dans le répertoire du projet et génère automatiquementthumbnail_ua.jpgetthumbnail_ru.jpgsi elles sont absentes.composite_ai: Utilise Gemini 3 Pro Image (gemini-3-pro-image-preview) avec--thumb-hero <hero.jpg>,--thumb-prop <prop.jpg>et--thumb-text "<ACCROCHE 3-4 MOTS>"pour générer une vignette composite de style YouTube Studio (arrière-plan panoramique flouté + cycliste souriant à gauche + découpe autocollante à bordure blanche de l'accessoire clé à droite + titre en gras jaune/blanc en haut).frame: Extrait une image nette en 1920×1080 à--thumb-sec.
Étape 2 : Téléverser sur YouTube (en_only, option_a ou option_b)
Mode 1 : Téléversement d'une Seule Vidéo (en_only ou option_a — Par Défaut Quotidien)
Téléverse le Master Anglais 4K (private), définit les titres et descriptions localisés EN/UA/RU, téléverse captions.en.srt, captions.ua.srt et captions.ru.srt, et définit thumbnail.jpg :
./.venv/bin/python ./.agents/skills/publish-youtube/scripts/upload_youtube_api.py \
--metadata "./04_Project_Catalog/YEAR/<project_name>/youtube_metadata.json" \
--privacy private
(Pour mettre à jour les métadonnées/légendes/vignette d'une vidéo déjà téléversée sans retéléverser le MP4, ajouter --update-video-id <VIDEO_ID>).
Mode 2 : Téléversement Multilingue Complet en 3 Éditions (option_b — Occasions Spéciales et Histoires Familiales)
Téléverse l'édition 4K 🇺🇦 Ukrainienne (_UA.mp4, Non répertoriée, avec thumbnail_ua.jpg) et l'édition 4K 🇷🇺 Russe (_RU.mp4, Non répertoriée, avec thumbnail_ru.jpg) avec leurs pistes vocales natives répliquées et leurs légendes .srt, puis téléverse/met à jour le Master Anglais 4K 🇺🇸 (Privé, avec thumbnail.jpg) avec des liens cliquables vers les deux éditions localisées :
./.venv/bin/python ./.agents/skills/publish-youtube/scripts/upload_youtube_api.py \
--metadata "./04_Project_Catalog/YEAR/<project_name>/youtube_metadata.json" \
--privacy private \
--option-b