Communitygithub.com

uday629/talking-head-short

Éditeur maître pour les vidéos verticales de type « talking head » (Reels, TikTok, Shorts). À partir d’un seul clip brut, il transcrit, supprime les mauvaises prises et les silences, détecte le créneau (matrice de 24 genres), demande à l’utilisateur de choisir les options de style, puis génère un montage professionnel et fluide avec sous-titres cinétiques au nombre d’or, animations graphiques guidées par le sens, images d’archives sous licence, musique, effets sonores et polices, correction colorimétrique et QA.

Qu'est-ce que talking-head-short ?

Ce skill transforme un enregistrement brut de « talking head » (podcast, coaching, UGC, vidéo explicative) en un court métrage vertical prêt pour les réseaux sociaux, avec un montage professionnel et des sous-titres animés. Il automatise l’analyse du contenu, la suppression des hésitations et silences, la détection du créneau (parmi 24 genres), et la génération d’un storyboard structuré en « beats ». L’utilisateur valide les choix de style (polices, palette, densité visuelle, musique, images d’archives) avant le rendu final. Le skill fonctionne avec une chaîne d’outils Python : transcription via Whisper, extraction d’images d’archives et de musique depuis Mixkit (avec miroir GitHub), téléchargement de polices depuis Google Fonts (avec fallback), et rendu via un moteur interne. Il est conçu pour les sandbox comme Claude.ai ou Codex, avec un système de fallback réseau en cas de blocage. Chaque étape produit un rapport compact que l’IA lit pour décider des actions suivantes. L’utilisateur peut l’invoquer en donnant un fichier vidéo brut, en tapant /talking-head-short, ou en demandant des sous-titres, animations ou un montage Reel. L’IA pose des questions de style avant de lancer le rendu, et peut itérer sur les styleframes avant la finalisation. Le résultat est une vidéo « final.mp4 » avec sous-titres cinétiques, animations signifiantes, musique adaptée, et QA automatique.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/uday629/talking-head-short-skill/tree/HEAD/talking-head-short

Demander à votre IA préférée

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

Documentation

Talking-Head Short — éditeur maître

Rédige des réponses concises. Ne répète pas les transcriptions ni les longs logs. Corrige les choses en modifiant spec.json avec l’outil Edit, jamais en le réécrivant complètement. Chaque script imprime un rapport compact ; lis-le, agis, passe à la suite.

S=<ce répertoire skill>/scripts, WD=<répertoire de travail à côté du fichier brut>/ths_<nom>.

0. Installation (une fois par machine/sandbox)

bash $S/setup.sh → utilise le PY= affiché. Il installe tout depuis PyPI, y compris un ffmpeg statique s’il n’existe pas. Chaque téléchargement dispose d’un repli automatique. Les sandbox (exécution de code de claude.ai, gratuit ou payant) bloquent généralement HuggingFace, Mixkit et l’API Google Fonts, mais autorisent GitHub :

  • modèle de transcription : HuggingFace → miroir GitHub (whisper-base, puis whisper-tiny)
  • musique/SFX : Mixkit → pack CC0 miroir GitHub (les IDs ressemblent à pack:lofi_chill)
  • polices : dépôt Google Fonts → jsDelivr → pack OFL miroir GitHub (32 familles) → police système
  • images d’archives : Mixkit → aucune (utilise des cartes, ou demande à l’utilisateur de télécharger des clips) Si l’installation affiche « pas de réseau » / pip échoue : le sandbox a l’accès réseau DÉSACTIVÉ. Préviens l’utilisateur exactement (un message) : « claude.ai → Paramètres → Capacités → Exécution de code → Accès réseau : Tous les domaines (ou ajoute : pypi.org, files.pythonhosted.org, github.com, objects.githubusercontent.com, release-assets.githubusercontent.com, api.github.com, raw.githubusercontent.com, cdn.jsdelivr.net, huggingface.co, mixkit.co, assets.mixkit.co), puis démarre une nouvelle conversation et exécute à nouveau /talking-head-short. » N’essaie pas le montage sans numpy/ffmpeg. Seulement si toutes les sources échouent : demande une transcription collée → $PY $S/align_text.py $WD transcript.txt. Les ressources sont mises en cache dans ~/.ths_assets.

1. Analyse

$PY $S/analyze.py RAW $WD Il affiche la résolution, le point de regard, la durée nette, les mots de remplissage/trébuchements/reprises supprimés automatiquement, CHECK (remplissages non supprimés, mots de faible confiance, longues pauses), et TEXT avec horodatage toutes les 8 mots.

  • Juge toi-même les mauvaises prises. Supprime les faux départs, les phrases inachevées, « tu vois comme ouais », « genre ». Conserve les répétitions rhétoriques. Relance avec --remove '[[s,e],...]' (secondes source). La transcription est mise en cache.
  • Regarde $WD/frames.jpg seulement si le point de regard ou le cadrage est douteux.

2. Brief (dans ta tête, puis 4 lignes pour l’utilisateur)

Écris : sujet · message principal · arc émotionnel (accroche → … → conclusion) · ligne de créneau (depuis NICHES) · ton (calme/équilibré/énergique) · cadrage brut (large ou serré). Puis exécute $PY $S/style.py RAW "<créneau>" --out $WD/style.json. Cela donne la palette adaptée avec justifications, polices, direction pour les animations graphiques/images d’archives/musique/SFX et notes importantes. Lis references/craft.md une fois (les règles) et references/spec.md (le format du spec).

3. Demander avant de construire (ne jamais rendre d’abord)

Utilise AskUserQuestion si disponible ; sinon un seul message numéroté compact. Recommande l’option 1 à chaque fois.

  1. Style : créneau détecté + ton (ex. « Développement personnel · calme-réfléchi ») vs 1–2 alternatives.
  2. Polices : la paire de la ligne vs 2 alternatives avec un contraste de style clair (sans sérif principal + sérif/italique accent, ou sans sérif gras principal + sérif italique accent).
  3. Palette : palette de la ligne adaptée à l’image vs palette dérivée de l’image vs une couleur de marque donnée par l’utilisateur.
  4. Densité visuelle : Minimal (sous-titres + 2–3 cartes) · Équilibré (sous-titres + 4–6 cartes / images d’archives) · Riche (plus d’animations graphiques + images d’archives).
  5. Musique : 3 candidates sous licence depuis $PY $S/assets.py music "<ambiance>" (id · titre · tags), ou aucune.
  6. Images d’archives : oui (stock sous licence correspondant à des répliques littérales) / non. Saute toute question à laquelle l’utilisateur a déjà répondu. Attends les réponses.

4. Rassembler les ressources

  • Polices : $PY $S/assets.py font "Famille" ...
  • Musique, SFX, vidéo : exécute assets.py music|sfx|video "<requête>" pour lister, puis assets.py get <kind> <id> $WD.
    • SFX par ton : calme → « air woosh », « chime » ; équilibré → « whoosh », « pop » ; énergique → « swoosh », « impact » (utilisé une fois).
  • Les sources bloquées passent automatiquement en repli (IDs de pack). assets.py pack liste l’intégralité du pack CC0 hors ligne.

5. Écrire spec.json, planifier, styleframes

  1. Écris $WD/spec.json (voir references/spec.md) : sous-titres dans l’ordre parlé, cartes sur les clauses appropriées, audio.
  2. $PY $S/engine.py $WD --plan → corrige chaque PROBLÈME en modifiant le spec (raccourcir ou fusionner des temps, déplacer ou supprimer des sous-titres sous les cartes), puis re-planifie jusqu’à ce qu’il n’y en ait plus ou seulement des acceptable.
  3. $PY $S/engine.py $WD --frames t1,... avec 10–15 instants : chaque milieu de carte et fin−0,3 s, et chaque sous-titre à sa fin−0,1 s. Regarde $WD/styleframes.jpg et corrige tout ce qui est coupé, surchargé, mal aligné ou hors palette.
  4. Montre les styleframes à l’utilisateur avec une seule ligne (« ok pour le rendu ? »). Itère seulement sur ce qu’il signale.

6. Rendu, mixage, QA

  • bash $S/render.sh $PY $WD rend les parties en parallèle et les concatène (≈5 min par minute de vidéo sur un portable). Dans un sandbox avec une limite de temps par commande, exécute $PY $S/engine.py $WD --render --part i/N une fois par partie, puis --concat N.
  • $PY $S/mix.py $WD → final.mp4 (nettoyage vocal, musique atténuée avec alignement sur la conclusion, SFX, -14 LUFS).
  • $PY $S/qa.py $WD → regarde qa_endframes.jpg. Chaque fin de temps et de carte doit afficher le texte et l’animation terminés. Pas d’images flash.
  • Fournis le chemin du fichier, plus 3 lignes sur ce que tu as choisi et pourquoi. Mentionne les ressources que tu n’as pas pu télécharger.

Non-négociables (pourquoi : chacun a été signalé comme amateur)

  • Les sous-titres ne sont jamais coupés. Le texte principal est ≤ largeur de la clé et placé près. Deux styles de police contrastés selon le nombre d’or. Ne jamais sous-titrer des mots de remplissage isolés.
  • Les animations graphiques montrent le sens, se terminent avant le changement de scène, et restent dans un système visuel cohérent. Pas de figures bâtons ni de clip art.
  • Fluide : un zoom verrouillé sur l’œil avec easing entre les coupes ; pas d’images flash ; transitions variées.
  • Correction colorimétrique uniquement. Ressources sous licence uniquement (Mixkit / Google Fonts OFL), avec LICENSES.txt conservé dans $WD.

Skills associés