Vidéo promotionnelle de CV GitHub (même pipeline)
Structure de la vidéo (durée totale ≤ 28s, par défaut environ 24.5s) :
- Couverture dynamique (5,5s) : capture d'écran réelle de la page d'accueil du compte GitHub, avec une transition perspective continue d'une "vue lointaine inclinée" à une "vue rapprochée verticale", sol en dégradé clair + ombre douce, transition flash blanc.
- Cartes de projet ×3 (6–6,5s chacune) : cartes blanches de dépôt GitHub, même mise en page — nom du dépôt, sous-titre, grands nombres rouges/bleus qui défilent de 0 au nombre réel d'étoiles/forks, 4 lignes de résumé README qui glissent une par une, étiquettes techniques en bas qui apparaissent progressivement. Les cartes 1 et 2 sont les deux projets avec le plus d'étoiles ; la carte 3 est un aperçu "plus de projets" (grand nombre = nombre total de dépôts / contributions de l'année dernière).
- Fin en forme de bande de papier (4,5s) : les bandes de papier se collent une par une (nom d'utilisateur / @github / pseudo / projet phare · nombre d'étoiles, la dernière bande a un fond rouge), avec un grand avatar rond à droite (contour rose) qui apparaît en zoomant.
- Musique : fichier audio fourni par l'utilisateur (voir notes), pas de voix off.
Règles strictes
- La couverture doit être une image réelle de la page d'accueil : utilisez
scripts/capture_frame.pypour la capturer vous-même, ou faites une capture d'écran avec un navigateur headless. Il est interdit d'utiliser l'IA pour générer ou redessiner la page d'accueil (cela inventerait des noms de dépôts et des données fictives), et il est interdit d'utiliser une capture d'écran fournie par quelqu'un d'autre sans l'indiquer. - Tout le texte affiché à l'écran provient uniquement de config : les nombres, les noms de dépôts et les lignes de résumé sont entièrement mis en page localement (PIL). N'utilisez pas la génération vidéo IA pour porter du texte — c'est la raison fondamentale pour laquelle ce pipeline n'a aucune erreur textuelle et n'affiche aucun logo de marque non pertinent.
- La description des projets doit être basée sur la lecture réelle du README : prenez les 2–3 premiers projets classés par étoiles, ouvrez le README, résumez chaque projet en 4 lignes d'une phrase, puis écrivez-les dans config ; se contenter de la description de la liste des dépôts est insuffisant. Si le 3ème projet en nombre d'étoiles a un contenu pauvre (par exemple, un README d'une seule ligne), intégrez-le dans la carte 3 et indiquez-le lors de la livraison.
- Auto-vérification par échantillonnage avant livraison : vérifiez au moins l'image de début de la couverture, l'image finale de chaque carte et l'image de fin ; si des problèmes de texte ou de nombres sont détectés, corrigez-les avant la livraison et signalez honnêtement les défauts résiduels à l'utilisateur.
Étapes
1. Recherche sur le compte
- Ouvrez
https://github.com/<user>?tab=repositories&sort=stargazerspour obtenir le classement et le nombre d'étoiles. - Ouvrez la page d'accueil pour confirmer : nom d'affichage, followers, nombre total de dépôts, contributions de l'année dernière, dépôts épinglés.
- Ouvrez un par un les README des 2–3 premiers dépôts classés par étoiles, et écrivez 4 lignes de résumé pour chaque projet (fonctionnalité / forme / technologie / caractéristiques), avec 4–6 étiquettes techniques.
2. Préparation des ressources (assets/)
python3 scripts/capture_frame.py <user> assets/page_frame.png # Capture d'écran de la page d'accueil (image réelle)
curl -L https://github.com/<user>.png -o assets/avatar.png # Avatar (ou extrait de la page d'accueil)
# BGM : placez le fichier audio fourni par l'utilisateur dans assets/bgm.m4a (optionnel)
3. Écrire le fichier config
Copiez examples/config.example.json en config.json, puis remplissez-le avec les données réelles et les résumés de l'étape 1 (les chemins sont relatifs au répertoire de config ou absolus).
4. Rendu
python3 scripts/render_promo.py --config config.json --out out.mp4
Nécessite : Python 3 + Pillow + numpy, ffmpeg, police Noto Sans CJK (le script la cherchera automatiquement dans les chemins courants).
5. Auto-vérification par échantillonnage puis livraison
Utilisez ffmpeg pour extraire une image à 0.4s / au milieu de chaque segment / à la fin, et vérifiez : les nombres correspondent aux nombres d'étoiles, le texte n'est pas décalé, la couverture est une page réelle, la bande de papier de fin est complète. Envoyez la vidéo finale accompagnée d'une "explication de la structure + défauts connus" à l'utilisateur.
Aperçu des champs de config
| Champ | Description |
|---|---|
username / display_name | Nom du compte / nom d'affichage (utilisé pour la bande de papier de fin) |
page_frame / avatar / bgm | Chemins des ressources ; bgm peut être null (pas de musique) |
cards | Exactement 3 cartes : {name, sub, n1, l1, n2, l2, rows[4], chips[]} ; n1/l1 sont les grands nombres rouges et leurs étiquettes (ex. 303 / Stars), n2/l2 en bleu (ex. 33 / Forks) ; la carte 3 peut utiliser Repositories / Contributions |
finale_strips | 4 textes de bandes de papier, la dernière aura automatiquement un fond rouge |
durations | Optionnel : {cover, cards[3], finale} en secondes ; la somme moins les transitions doit être ≤ 28 |
Notes
- Droits musicaux : le dépôt ne fournit aucun BGM. Utilisez uniquement des fichiers audio fournis par l'utilisateur ou dont vous avez le droit d'utilisation ; ne redistribuez pas les pistes audio extraites de vidéos d'autres personnes.
- Le service de capture d'écran (thum.io) peut renvoyer une image de substitution lors de la première requête (c'est normal, le script gère cela en effectuant deux requêtes).
- L'absence de logos de marque non pertinents (comme Apple) dans toute la vidéo est un résultat de conception (rendu local, pas de ressources externes, aucune action supplémentaire nécessaire).