Communitygithub.com

trend-explainer-video

Chaîne de production complète pour créer des vidéos de commentaire oral en chinois sur les tendances GitHub / classements, dans un style technologique sombre avec Remotion.

Qu'est-ce que trend-explainer-video ?

Ce skill fournit une chaîne de production complète pour réaliser des vidéos de commentaire oral (口播) en chinois, axées sur les classements (comme le Top 10 GitHub Trending). Il est conçu pour les ingénieurs souhaitant automatiser la création de contenu vidéo de type 'liste' avec narration, effets visuels et contrôles qualité. Le skill couvre toutes les étapes : capture instantanée des données (snapshot), rédaction du script de commentaire (35 phrases structurées), synthèse vocale avec edge-tts incluant les timestamps, reconstruction de la timeline, rendu via Remotion, et une série de vérifications automatisées (beat lint, motion check, SFX check, contrat). Visuellement, il utilise un design dark tech avec des pages de classement indépendantes, des cartes d'illustration animées (OgiCard, DemoPanel), des scènes en trois étapes avec icônes emoji, et des effets d'ambiance lumineux. Le pipeline est robuste, incluant la gestion des erreurs fréquentes (rate limiting, synchronisation des ancres, problèmes de fps) et une livraison finalisée avec loudnorm et génération de couverture verticale.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/daxian942-tech/trend-explainer-video/tree/main

Demander à votre IA préférée

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

Documentation

trend-explainer-video : Chaîne de production de vidéos de commentaire sur les classements

Utilise C:/Users/<votre nom d'utilisateur>/.workbuddy/skills/video-talkcraft (le skill TalkCraft) comme moteur de rendu. Ce skill fournit le squelette d'ingénierie, les scripts complets, les repères visuels et le dépannage pratique pour les contenus de type classement. La théorie vidéo et les vérifications générales sont dans TalkCraft lui-même, ce skill ne les répète pas.

Étapes de la chaîne (commandes et pièges dans references/pipeline.md)

  1. Capture instantanée : Capture unique de la page de classement (curl avec user-agent), sauvegardée dans data/snapshot.md/.json comme seule source de vérité – classement, étoiles, description, langue doivent provenir de cette seule capture, toute invention est interdite.
  2. Script de commentaire script.json : Structure de 35 phrases fixe = 1 introduction + 10 projets × (phrase de classement + phrase détaillée / nombre total d'étoiles + phrase "comment l'utiliser" + phrase du total d'étoiles) + 3 sections de fin (résumé / citation / CTA). Règles strictes : les nombres en caractères chinois ; chaque projet doit commencer par « Premier / Deuxième… » ; ajouter une phrase « comment l'utiliser » pour chaque projet (commence par un verbe, explique l'utilisation / comment faire / quel problème résout). L'introduction commence directement par « Aujourd'hui, dans ce GitHub Trending de la semaine, je vais vous présenter les dix premiers d'un coup ».
  3. Synthèse vocale : synth_voice.py (VOICE/RATE en haut, edge-tts nécessite HTTP_PROXY) → assemble_voice.py (full.wav + timestamps.json) → cp audio/full.wav remotion/public/narration.wav.
  4. Reconstruction de la timeline : make_timing.py → gen_beats.py (inclut la génération d'anchors.json) → gen_cues.py. Les trois tables d'ancres doivent être synchronisées : REPO_ANCHORS de gen_beats, REPO_CFG de gen_cues, REPO_CFG de all.tsx, plus sceneFor dans scenes/index.ts (les numéros de scènes de fin chart/quote/cta sont décalés après insertion de phrases). Tout changement de paramètres de voix = reconstruction complète de la chaîne, jamais un simple remplacement de piste audio.
  5. Mise en œuvre du projet : Copier le squelette depuis assets/remotion-template/ ; modifier src/data.ts (données de la capture), les cinq tableaux REPO_CFG/USES/STEPS/ICONS/DETAILS dans src/scenes/all.tsx + RANK_LIST (table des scènes de classement). Le reste du code des scènes est réutilisé tel quel. npx tsc --noEmit pour vérification.
  6. Rendu : node <video-talkcraft>/scripts/render_shots.mjs --all --concat out/assembled.mp4 --audio out/full-mix.wav --mux out/v?.mp4 (full-mix est automatiquement re-rendu selon l'empreinte du timing).
  7. Vérifications automatisées (livraison seulement si tout vert) : beat_lint → motion_check (immobilité + tremblement) → sfx_check solo+mix → workbench_contract_lint. Seuils et traitements en cas d'échec dans pipeline.md.
  8. Livraison : loudnorm en deux passes (mesure → normalisation linéaire) → delivery.mp4 → relancer sfx_check --mix → present_files.
  9. Couverture : gen_cover.py génère une couverture verticale générique 1080×1920 (sans projet spécifique, réutilisable sur le long terme), produit cover_vertical.png/.jpg.

Visuels différenciés de cette chaîne (version v16, voir references/style-guide.md)

  • Page de classement indépendante RankPage : La scène lors de l'énonciation du rang est plein écran avec une page indépendante « N-ième » (gros caractères dorés 240px + RANK #N + nom du dépôt + nombre d'étoiles + barre de progression en 10 segments), ne partage pas l'écran avec le contenu du projet.
  • Trois éléments de scène de contenu : IllBg (arrière-plan d'illustration plein écran, blur30+assombrissement) + OgiCard (carte d'illustration animée, EFFECT PREVIEW + Ken Burns + points lumineux + balayage lumineux) + DemoPanel (démonstration terminal/grille), accompagnés de 3 USES (emoji) + DetailBlock (carrousel détaillé).
  • Scène d'illustration en trois étapes « Comment utiliser » HowScene : Trois étapes, chacune avec une carte d'illustration StepIcon (fond dégradé + grand emoji + badge STEP), pilotée par les deux tableaux STEPS/ICONS.
  • Effets d'ambiance plein écran : Trois bandes lumineuses avec phases décalées pour balayer l'écran, pour traiter les segments immobiles détectés par motion_check (obligatoire sur les petites cartes / scènes de texte).
  • Palette sombre : Voir style-guide.md ; étoiles en doré #FFC94D, augmentation hebdomadaire en vert #63E6A4.

Pièges fréquents (voir references/pipeline.md)

  • La génération d'images ImageGen peut subir un rate limiting 429 → utiliser des cartes d'icônes emoji (StepIcon) pour les illustrations, et PIL programmatique (gen_cover.py) pour les couvertures, zéro coût, stables et pertinentes ; dès que le service revient, on peut repasser aux images AI.
  • Segments immobiles motion_check (freezedetect noise=0.003) : les petites cartes / textes statiques / arrière-plans flous, les effets sinusoïdaux lents ne suffisent pas → les trois bandes lumineuses Ambient avec phases décalées (≥3 bandes, 2 bandes créent un vide).
  • Le rendu serveur de <Video> plante toujours → utiliser OffthreadVideo + muted.
  • fps des médias ≠ fps de sortie → motion_check détecte des « images doublons » ; utiliser minterpolate=mi_mode=blend pour l'interpolation par flot optique.
  • Windows : les liens symboliques sont tous refusés → copier les répertoires ; ffmpeg 7+ n'a pas -vsync → utiliser -fps_mode passthrough.
  • edge-tts nécessite un proxy : HTTP_PROXY/HTTPS_PROXY=http://<votre proxy>.
  • Modifier all.tsx : utiliser une réécriture atomique en Python (les races EBUSY de Windows peuvent faire échouer une édition); la transmission de code Python contenant des backticks via heredoc bash est tronquée → écrire un .py avec Write puis exécuter.

Références rapides sur l'environnement

  • bash PATH à compléter à chaque session : PortableGit usr/bin + ffmpeg-bin ; python dans un venv : C:/Users/<votre nom d'utilisateur>/.workbuddy/binaries/python/envs/default/Scripts/python.exe ; node en version managée directe ; tsc via node_modules/typescript/lib/tsc.js (bin/tsc est détourné par fnm shim).

Skills associés