Générateur de miniatures
Workflow agent + rendu déterministe, adaptable à n'importe quelle chaîne. Le package fournit les règles de style, les gabarits de mise en page, les polices, les outils de cadre et le moteur de rendu ; l'agent hôte fournit la compréhension et le jugement.
Workflow
- Brief vidéo (compréhension hôte, preuves package) : lire le titre, la description, les chapitres/transcription et les trames d'échantillonnage de la vidéo.
scripts/video_brief.py --video V --transcript subs.srt --scenes --out brief.jsonassemble les preuves : fréquences de termes dans la transcription (décomptes de mots simples, sans modèle) et horodatages de coupures de scènes via ffmpeg. L'hôte remplit ensuite les champsmain_question,showetavoid_implyingdu brief – ce que la miniature doit communiquer honnêtement et ce qu'elle NE DOIT PAS sous-entendre. Le package ne comprend pas le contenu vidéo par lui-même ; il a besoin d'un hôte qui sait lire les métadonnées vidéo, les trames et le texte. Trames candidates :scripts/extract_frames.py VIDEO --out frames/(échantillonnage uniforme) ou--scenes(trames aux coupures de scènes les plus fortes – moments où quelque chose a changé, pas une preuve du moment important). - Sélection de références (capacité de l'agent hôte) : depuis la bibliothèque de références privée du créateur, choisir 2-3 références dont la composition correspond au sujet de cette vidéo, et noter les motifs concrets (taille/emplacement du texte, contraste des couleurs, position du sujet).
scripts/analyze_references.py FOLDER [--labels sources.csv]donne des statistiques au niveau pixel (luminosité, contraste, part sombre/colorée) sur le dossier local du créateur pour étayer ces choix ; la bibliothèque ne quitte jamais le disque local et n'est jamais incluse dans ce package. Pour les grandes bibliothèques, l'hôte peut faire UN passage de vision sur le dossier et enregistrer les sujets/humeur/composition de chaque référence dans un fichier privéreference_tags.json(schéma dansexamples/example_reference_tags.json) ;scripts/match_references.py --tags reference_tags.json --topic ... --mood ...présélectionne alors les candidates par chevauchement de tags pour que l'hôte les examine. Le fichier de tags reste en dehors du dépôt, à côté de la bibliothèque, exactement comme les images. - Collecte des entrées manquantes : texte de la miniature (2-4 mots, honnête par rapport à la vidéo), le MOT accentué, la mise en page, l'ambiance de style (une des cinq dans
styles.json), la langue (Hindi/Anglais), et la trame choisie (un moment réel de la vidéo qui correspond au sujet, pas seulement l'image la plus nette). Un profil de chaîne (profiles.json) peut fournir des valeurs par défaut ; les choix explicites prennent toujours le dessus. Demander au créateur tout ce qui manque encore. - Édition de réaction du personnage et découpage (optionnel ; capacité d'édition d'image de l'hôte) : lorsque la miniature a besoin que le personnage de la vidéo montre une réaction spécifique (choc, joie, colère) qui correspond au moment de la vidéo, l'hôte peut éditer la trame choisie avec un modèle d'édition d'image : préserver l'identité du personnage, le style d'illustration et l'arrière-plan ; changer uniquement l'expression. Pour le look détouré (sujet séparé du fond avec un contour, motif dominant dans la bibliothèque de référence), faire placer le personnage sur un fond uniforme plat (fond vert fonctionne le mieux) par l'hôte et exécuter
scripts/make_cutout.py shot.png --out subject.png– le keying s'exécute entièrement en local ; seule la production du plan sur fond uniforme nécessite l'outil d'image de l'hôte. Composer avec--subject subject.png(empilement gauche/bas-gauche : sujet à droite avec contour et ombre, texte maintenu à l'écart). Ce package ne contient aucun modèle d'image – les éditions utilisent la capacité d'édition d'image que l'environnement hôte fournit, sans supposer de prestataire payant ni d'inscription. Lorsqu'une telle capacité n'existe pas, ignorer cette étape et choisir une trame dont l'expression existante convient déjà. Règles : n'éditer que des assets illustrés/avatars provenant de la propre vidéo du créateur ; ne jamais fabriquer l'expression d'une personne réelle pour une affirmation d'événement réel ; enregistrer chaque édition dans le manifeste d'exécution (--reaction-edit) pour que le créateur sache que l'expression a été éditée. - Concepts distincts, pas de rotations de couleurs : pour chaque vidéo, concevoir 2-3 concepts vraiment différents – accroche différente, trame/scène différente, composition différente – et les rendre en une seule exécution :
scripts/run_thumbnail.py --video V --concepts concepts.json --out set.jpg(chaque entrée du JSON a son propre titre, trame, mise en page, note de concept et éventuel sujet/réaction_edit ; un manifeste enregistre l'ensemble complet).--variants Nreste pour les rotations de style/mise en page du MÊME texte, ce qui est un choix plus faible pour les décisions réelles. - Rendu + manifeste :
scripts/run_thumbnail.py --video V --title T --accent A [--profile P] [--style S] [--layout L] [--variants N] [--label K] [--lang hi] [--reaction-edit "ce qui a été édité"] [--subject subject.png] [--brief brief.json] [--channel NOM] --frame F --frame-time SECONDES --concept "..." --refs ID --ref-notes "..." --out thumb.jpgécrit jusqu'à N variantes et un enregistrement d'exécution*.manifest.json(identité de la vidéo source, profil, références inspectées, concept, trame choisie, éventuelle édition de réaction, chaque sortie). Avec--brief, chaque sortie obtienthook_evidence: lignes de transcription partageant les mots de l'accroche plus un avertissement lorsque l'accroche fait une affirmation absolue (mort/fini/terminé/...) que la transcription ne fait jamais – preuve pour l'examen de véracité, PAS un verdict de vérité ; une accroche peut partager des mots et toujours déformer. Avec--channel, une mémoire de design par chaîne (.thumbnail-history/, en dehors du dépôt) avertit lorsque le nouveau rendu répéterait le motif récent de la chaîne (même famille de style ou mise en page 3 fois de suite, sujet détouré 3 des 4 derniers) – avertissements, jamais de blocages, et un style délibéré de série est acceptable ; l'exécution est ensuite enregistrée. Pour un rendu rapide sans manifeste, utiliser directementscripts/make_thumbnail.py;--mobile-previewajoute un rendu de 380 px de large pour la vérification de lisibilité sur téléphone. - Contrôle qualité, deux niveaux :
- Automatique (mesurable uniquement) :
run_thumbnail.pyexécute déjàscripts/check_thumbnail.pysur chaque sortie et enregistre les résultats dans le manifeste (quality_checks) ; les avertissements/échecs s'affichent pendant l'exécution. Vérifications : dimensions 1280x720, limite YouTube de 2 Mo, contraste de la zone de texte à la taille téléphone 380 px, et luminosité du détourage collé lorsqu'un découpage--subjecta été utilisé. La vérification du sujet lit l'emplacement CONNU du découpage – ce n'est pas un détecteur de visage et ne dit rien sur les visages à l'intérieur d'une trame de fond ; les rendus basés sur une trame nécessitent toujours vos yeux. Vous pouvez aussi l'exécuter seul :python3 scripts/check_thumbnail.py thumb.jpg --layout stack-left --subject subject.png(code de sortie 1 en cas d'ÉCHEC, donc peut bloquer un workflow). - Sémantique (jugement hôte, jamais garanti) : examiner ce que les pixels ne peuvent pas : (1) vérité de l'accroche – le texte doit être une question que la vidéo pose réellement ou une affirmation qu'elle soutient, jamais une invention absolue pour les clics (utiliser le
hook_evidencedu manifeste comme preuve de départ, puis juger) ; (2) correspondance image-sujet – la trame doit appartenir au sujet de la vidéo (une peinture religieuse ou historique derrière une accroche d'explication technique est un rejet) ; (3) adéquation style-ambiance – un texte géant condensé et tape-à-l'œil convient aux sujets dramatiques, les explications plus calmes peuvent mieux se lire avec une composition plus sobre ; (4) variété – pas la même mise en page + même expression sur chaque vidéo. Ouvrir ensuite l'image et l'aperçu mobile : le mot accentué est celui mis en évidence, pas de chevauchement avec le sujet de la trame, l'expression éditée ressemble toujours au même personnage.
- Automatique (mesurable uniquement) :
- Approuver : le créateur approuve avant tout téléversement. Éditions ciblées : relancer
make_thumbnail.py --spec thumb.spec.jsonavec seulement les indicateurs modifiés.
Portée – ce que ce package fait et ne fait pas
- Il FAIT : extraire/évaluer des images fixes vidéo, appliquer le système de style (polices, couleurs, 4 mises en page), générer des variantes en hindi ou anglais, analyser un dossier de référence local pour des choix stylistiques fondés, conserver une spécification éditable et un manifeste d'exécution par miniature.
- Il ne fait PAS : comprendre la vidéo sémantiquement, choisir l'accroche ou le concept tout seul, éditer les images tout seul (les éditions de réaction utilisent la propre capacité d'édition d'image de l'hôte ; le package les enregistre seulement), vérifier l'honnêteté du message, ou téléverser quoi que ce soit. Ce sont des jugements du créateur/agent hôte et des capacités de l'hôte, fournis comme entrées déclarées. L'apprentissage CTR nécessiterait un accès aux analyses de chaîne et des données contrôlées – cela ne fait pas partie de ce package.
Mises en page et styles
Quatre mises en page (bottom-left, stack-left, center-big, split), apprises des motifs dominants dans une bibliothèque de référence de 97 images : mots énormes empilés avec une barre de surbrillance, titres de destination centrés, séparations avant/après, et blocs en bas à gauche sur des trames dégradées. Cinq combinaisons de couleurs dans styles.json (documentaire, finance, tech, podcast, boldred) : un fond, une couleur de texte, un accent. Règles : 2-4 mots, UN mot accentué (mis en évidence), une famille de polices.
Prérequis
Python 3 avec Pillow et numpy ; ffmpeg dans le PATH pour l'extraction de trames et les métadonnées vidéo. Aucun réseau nécessaire au moment du rendu.
Bibliothèque de référence
Les motifs de design sont appris à partir de la bibliothèque de référence privée du créateur (97 miniatures couvrant les familles visage-réaction, typographie audacieuse, podcast, jeu vidéo, voyage et autres). La bibliothèque reste privée : ne jamais inclure ses images dans ce package ni dans aucune distribution. analyze_references.py lit uniquement un dossier local désigné par le créateur.