Communitygithub.com

niruvai/storytelling

Transforme un clip de tête parlante en un reel narratif. Superpose trois cartes illustrées, un titre en boîte noire et un sous-titre blanc sur une prise continue, avec des sous-titres style TikTok.

Qu'est-ce que storytelling ?

Ce skill transforme un clip vidéo 9:16 d'une personne parlant face caméra en un reel narratif au style « storytelling ». Il superpose trois cartes d'image en haut (statistiques, couverture carrousel, commentaires ou texte), un titre en boîte noire gras (1 à 2 lignes) et un sous-titre blanc subtil, le tout apparaissant simultanément dans le premier tiers de seconde. La vidéo reste une prise continue, légèrement zoomée, avec des sous-titres TikTok (blanc, contour noir, 1 à 3 mots). Le skill est destiné aux créateurs de contenu, marketeurs ou anyone souhaitant produire rapidement un reel de type « preuve sociale » ou « lead magnet ». Il supporte les clips en anglais et bengali (avec gestion des corrections manuelles de transcription). Il nécessite Python 3, ffmpeg, Node.js et une clé API Groq. Le processus comprend : découpage d'un segment de 4 à 8 secondes, transcription, écriture d'un fichier de spécification JSON, construction via un script dédié, puis vérification d'une planche contact avant rendu final MP4.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/niruvai/claude-editing-skills-bangla/tree/main/skills/storytelling

Demander à votre IA préférée

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

Documentation

/storytelling

┌──────────────────────┐
│ [4:12] [couverture] [commentaires] │  trois cartes, toutes en même temps
│  J'ai fait ce carrousel │  titre en boîte noire, 1-2 lignes
│   en quelques minutes  │
│ et il marche super bien │  petit sous-titre blanc
│        (visage)        │  une prise continue, légèrement zoomée
│     carrousel complet  │  sous-titres TikTok
└──────────────────────┘

Première utilisation

Le dossier de ce skill est le « Répertoire de base » que Claude Code affiche lorsqu'il le charge.

SKILL_DIR="<répertoire de base de ce skill>"   # le chemin que Claude Code a affiché comme « Répertoire de base pour ce skill »
KIT=$(python3 -c 'import os,sys;print(os.path.realpath(os.path.join(sys.argv[1],"..","..","kit")))' "$SKILL_DIR")
PY="$KIT/.venv/bin/python"; [ -x "$PY" ] || bash "$KIT/setup.sh"

Clips en bengali. Si l'intervenant parle bengali, assurez-vous que REEL_LANGUAGE=bn est défini avant le premier appel à words (exportez-le, ou préfixez la commande) pour que Whisper transcrive en bengali au lieu de traduire. Rédigez également tout texte à l'écran (titres, étiquettes, éléments) en bengali, et ancrez les temps sur les mots bengalis exactement comme words les imprime. Le bengali s'étale plus large que l'anglais à taille égale, donc limitez les titres à 2–4 mots et vérifiez la planche contact pour les débordements. Whisper écrit souvent mal le bengali (ex. « ধাকার মেওর » pour « ঢাকার মেয়র ») : avant d'écrire le cahier des charges, lisez les mots du segment choisi et corrigez les fautes directement dans <clip>.transcript.json (modifiez uniquement word, conservez start/end), puis relancez words pour que les sous-titres et les ancres utilisent les mots corrigés. Si un long segment de parole manque dans words, supprimez la transcription et relancez words ; le transcodeur re-vérifie les segments ignorés. Si le clip n'est pas en 9:16 (par exemple une vidéo carrée 1080x1080), vérifiez la première image : un recadrage direct peut faire que le visage remplisse l'écran et cache les visuels, donc prévenez l'utilisateur et suggérez un enregistrement en 9:16.

GROQ_API_KEY doit être définie pour la transcription. Nécessite ffmpeg et Node.

Étapes

  1. Clip. N'importe quelle tête parlante en 9:16.
  2. Mots. Exécutez "$PY" "$KIT/reel.py" words <video>. Cela imprime une phrase par ligne avec [se termine …] (quand son dernier mot se termine), utilisez donc cela comme end. Choisissez UN segment continu de 4 à 8 secondes qui raconte une petite histoire ou montre une preuve. Ne reliez pas des morceaux, car les coupures brusques paraissent étranges ici.
  3. Cahier des charges. Écrivez <clip>.storytelling.json (ci-dessous). Les chemins dans un cahier des charges sont relatifs au fichier du cahier des charges. Les trois cartes sont l'histoire en images : l'effort, la chose et le résultat.
  4. Construction. Exécutez "$PY" "$SKILL_DIR/build.py" <spec.json>.
  5. Vérification. Regardez <out>.sheet.jpg :
    • Les cartes et le titre dégagent les 220 px du haut.
    • Les sous-titres ne couvrent pas la bouche (déplacez caption_top, 1385 par défaut).
    • Le titre tient sur ses lignes.
  6. Remettez le chemin du mp4.

Spécification

{
  "video": "mon-clip.mp4", "start": 42.3, "end": 47.8,
  "zoom": 1.3,
  "cards": [
    {"type": "stat", "label": "TEMPS PASSÉ", "value": "4:12", "unit": "minutes"},
    {"type": "cover", "image": "ma-photo.jpg", "text": "les meilleurs *outils d'ia*\nà utiliser quand\ntu es *jeune et fauché*"},
    {"type": "comments", "title": "Commentaires", "rows": [["sarah.creates", "CARROUSEL"], ["mike.builds", "CARROUSEL!!"]]}
  ],
  "title": ["J'ai fait ce carrousel", "en quelques minutes"],
  "subtitle": "et il marche extrêmement bien"
}

cards prend exactement 3, chacun étant :

  • image : {"src": "photo.jpg"}, une photo carrée.
  • cover : une couverture de carrousel, image plus text (*mot* devient jaune, \n saute une ligne). Elle dérive lentement.
  • stat : label, value, unit et un cercle.
    • La value s'incrémente si c'est un nombre ("250", "10,000") ou une durée ("4:12").
    • ring (0 à 1) indique le remplissage du cercle.
  • comments : jusqu'à 4 lignes [pseudo, texte].
  • text : {"big": "3×", "small": "plus de sauvegardes"}.

Les autres champs :

  • title : 1 ou 2 lignes, chacune d'environ 22 caractères maximum.
  • subtitle : une ligne courte.
  • zoom : à quel point la prise est zoomée. 1,3 par défaut, 1 pour aucun.

Goût

  • Tout apparaît en même temps, dans le premier tiers de seconde. Jamais un par un.
  • Le titre est l'histoire en une respiration. Le sous-titre est la récompense.
  • Les cartes montrent des choses réelles : la propre publication de l'utilisateur, des chiffres, des captures d'écran. Les lignes de commentaires et les pseudos doivent être réels, donnés par l'utilisateur. S'il n'en a pas, utilisez une carte text ou stat plutôt que d'inventer des personnes.

Skills associés