Communitygithub.com

LIUFelix2004/github-promo-video-skill

Génère une vidéo promotionnelle de CV de ≤28 secondes pour n'importe quel compte GitHub : capture d'écran réelle de la page d'accueil en couverture (transition de vue lointaine inclinée à vue rapprochée verticale) + cartes de dépôt GitHub blanches (compteurs d'étoiles animés, résumé README défilant) + fin en forme de bande de papier. Tout le texte est rendu localement, zéro texte généré par IA, zéro faute d'orthographe.

Qu'est-ce que github-promo-video-skill ?

Ce skill permet de générer une vidéo promotionnelle de CV professionnelle pour tout compte GitHub, d'une durée maximale de 28 secondes (par défaut environ 24,5 secondes). La vidéo se compose de trois parties principales : une couverture dynamique réalisée à partir d'une capture d'écran réelle du profil GitHub, trois cartes de dépôt blanches mettant en avant les projets les plus populaires, et une fin en forme de bande de papier avec le nom d'utilisateur et les informations clés. Le skill est conçu pour les agents IA comme Claude Code, Cursor ou Codex, et repose sur un pipeline local utilisant Python, Pillow, numpy et ffmpeg. Il lit les données réelles des dépôts (étoiles, forks, résumé README) et les rend localement, garantissant l'absence d'erreurs textuelles et de logos non souhaités. L'utilisateur peut personnaliser la musique et ajuster la durée de chaque segment.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add LIUFelix2004/github-promo-video-skill

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Vidéo promotionnelle de CV GitHub (même pipeline)

Structure de la vidéo (durée totale ≤ 28s, par défaut environ 24.5s) :

  1. 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.
  2. 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).
  3. 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.
  4. 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.py pour 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=stargazers pour 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

ChampDescription
username / display_nameNom du compte / nom d'affichage (utilisé pour la bande de papier de fin)
page_frame / avatar / bgmChemins des ressources ; bgm peut être null (pas de musique)
cardsExactement 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_strips4 textes de bandes de papier, la dernière aura automatiquement un fond rouge
durationsOptionnel : {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).

Skills associés