Communitygithub.com

Retention Shorts (Hook → Storytelling → Payoff)

Transforme une longue vidéo (transcription + métadonnées) en courts verticaux (Shorts/TikTok/Reels) optimisés pour la rétention, en utilisant la structure Hook → Storytelling → Payoff. Sélectionne les extraits, les note, réordonne le hook, définit les coupes, sous-titres, zooms, musique et effets, et renvoie une Edit Decision List (EDL) en JSON.

Qu'est-ce que Retention Shorts (Hook → Storytelling → Payoff) ?

Cette compétence transforme automatiquement une vidéo longue (via sa transcription et ses métadonnées) en plusieurs courts métrages verticaux (Shorts, TikTok, Reels) conçus pour maximiser la rétention des spectateurs. Elle se base sur la structure éprouvée Hook → Storytelling → Payoff : elle sélectionne les meilleurs extraits, les note selon des critères précis (potentiel du hook, tension narrative, payoff, etc.), réordonne le hook si nécessaire (technique du cold open), et définit un plan de montage complet incluant sous-titres dynamiques, zooms, musique, effets sonores, et même une prévision de rétention. Le résultat est une Edit Decision List (EDL) au format JSON, directement exploitable par un système de montage. Idéal pour les créateurs de contenu et les outils d'édition automatisée cherchant à augmenter l'engagement sur les plateformes de vidéos courtes.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/eduramza/shorts-factory/tree/HEAD/skills/retention-shorts

Demander à votre IA préférée

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

Documentation

Compétence : Retention Shorts (Hook → Storytelling → Payoff)

0. Origine et honnêteté méthodologique

Base : vidéo "ESSA TÉCNICA VIRALIZOU MEU SHORTS COM 30 MILHÕES DE VISUALIZAÇÕES" (chaîne O Milionário, ID iPpt_INjn8A). Les éléments marqués [VIDÉO] proviennent de ce qu'enseigne l'auteur. Les éléments marqués [EXT] sont des extensions d'ingénierie de ce système : des heuristiques raisonnables, mais non prouvées par la vidéo. Ils doivent être calibrés avec des données réelles de rétention (voir section 10).

1. Principe central [VIDÉO]

  • Ce qui décide si une vidéo courte devient virale, c'est la ligne de rétention : plus les gens regardent jusqu'à la fin, plus la plateforme distribue.
  • Objectif : rendre la ligne de rétention la plus droite possible, sans chute. Ce qui compte, c'est que le spectateur arrive à la fin.
  • Trois parties obligatoires : Hook (accroche) , Storytelling (narration) , Payoff (récompense) .
  • Le scénario/la narration est "le moteur de la voiture" : un montage joli sans narration ne retient pas.
  • Durée : les vidéos jusqu'à ~15 s ont tendance à exploser davantage, car il est plus facile de les regarder en entier. Les vidéos plus longues sont plus difficiles à viraliser, mais construisent un public fidèle. Si votre niche exige des vidéos plus longues, utilisez les mêmes trois étapes.

2. Modes de durée [VIDÉO + EXT]

ModeDurée cibleQuand utiliser
viral12–20 s (max 25)Maximiser la portée. Par défaut.
balanced20–40 sContenu avec un contexte minimal.
authority40–75 sConstruire un public fidèle, contenu plus profond.

L'utilisateur choisit le mode. Ne jamais dépasser la limite du mode, même si l'extrait est bon : raccourcissez en supprimant les parties mortes.

3. Pipeline de décision (suivre dans l'ordre)

Étape 1 : Segmenter les candidats

  • Entrée : transcription avec horodatage par mot, coupures de scène, silences, locuteurs.
  • Générez des fenêtres candidates commençant et se terminant aux limites des phrases (jamais au milieu d'une phrase ou d'une idée). Générez 3× plus de candidats que le nombre demandé.
  • Chaque candidat doit être autonome : un spectateur sans contexte doit pouvoir comprendre sans le reste de la vidéo. Si cela dépend d'un contexte antérieur, supprimez-le ou préparez un sous-titre de contexte (section 6).

Étape 2 : Noter chaque candidat (0–100)

CritèrePoidsQuoi évaluer
Potentiel du hook25Y a-t-il une phrase ou un moment qui, dans les 3 premières secondes, est clair, direct, rapide et promet une récompense [VIDÉO] ?
Tension/narration25Y a-t-il un conflit, quelque chose qui tourne mal, un obstacle, une question ouverte ou du suspense [VIDÉO] ? Y a-t-il une solution ?
Payoff20La fin délivre-t-elle ce que le hook a promis (résultat, révélation, émotion, conclusion) [VIDÉO] ?
Autonome15A-t-il un sens tout seul ? [EXT]
Densité/rythme10Peu d'atermoiements, peu de pauses, information toutes les quelques secondes [EXT]
Émotion/nouveauté5Surprise, humour, opinion forte, chiffre percutant [EXT]

Règles :

  • Hook < 12/25 ou Payoff < 8/20 → supprimez, quel que soit le score total.
  • Montrez à l'utilisateur le score par critère et une justification d'1 ligne pour chacun.
  • Triez par score. Évitez les chevauchements de coupes (> 30 % de chevauchement) : gardez la meilleure.

Étape 3 : Cartographier la structure Hook → Storytelling → Payoff

Pour le candidat choisi, marquez sur la timeline :

  • HOOK (0–3 s) [VIDÉO] : clair, direct, rapide, avec une promesse. Pas de salutation, pas de "bonjour tout le monde", pas de "alors", pas de présentation.
  • STORYTELLING (milieu) [VIDÉO] : séquence de beats de tension. Chaque beat est d'un des types : conflit (quelque chose tourne mal), solution (ce qui est fait), suspense ("mais avant de... quelque chose s'est passé"). La narration doit avoir un moment où l'histoire "est coupée" et crée la curiosité.
  • PAYOFF (3–5 dernières secondes) [VIDÉO] : délivre la récompense promise par l'accroche.

Si l'extrait original ne commence pas par une accroche forte, appliquez la technique Cold Open [EXT] :

  1. Localisez dans l'extrait lui-même la phrase la plus forte (la promesse, le résultat ou la phrase la plus provocante).
  2. Placez cette phrase au début (0–3 s) comme accroche, puis revenez à l'ordre chronologique.
  3. Ne faites cela que si la phrase a un sens toute seule et si le payoff reste clair. Ne déformez pas le sens : interdiction de modifier le sens de ce que la personne a dit.

Étape 4 : Ingénierie de l'accroche [VIDÉO + EXT]

  • Générez 3 variantes de texte d'accroche à l'écran (titre d'ouverture), avec ≤ 8 mots chacune :
    • Promesse de résultat ("Le cadeau à 5€ qui a fait pleurer ma grand-mère").
    • Curiosité/lacune ("Je n'avais que 5€ et...").
    • Contradiction/provocation.
  • Le texte doit être vrai par rapport au contenu (pas de clickbait que le payoff ne soutient pas).
  • Il doit être lu en ≤ 2 s.

Étape 5 : Nettoyage du rythme [EXT]

  • Supprimez les silences > 0,35 s, les hésitations ("euh", "en fait", "donc", "hein"), les répétitions et les faux départs.
  • Conservez les micro-pauses de 0,1–0,2 s avant une révélation (tension), où la pause a une fonction.
  • Ne coupez pas au milieu d'une syllabe : utilisez des points de coupe au passage par zéro de l'audio et un crossfade de 30–60 ms.
  • Si le résultat dépasse la limite du mode, supprimez d'abord les beats de moindre tension du milieu, jamais le hook ni le payoff.

Étape 6 : Plan de montage [VIDÉO + EXT]

Éléments recommandés par la vidéo, pour que le spectateur "ne voie pas le temps passer" [VIDÉO] :

  1. Sous-titres dynamiques : mot par mot, avec mise en évidence du mot parlé.
  2. Zooms et coupes rapides : toujours quelque chose qui se passe.
  3. Changement de musique entre les scènes : donne l'impression de plusieurs choses à la fois.
  4. Bande-son de suspense dans la partie de tension, pour donner envie de voir la fin.

Paramètres opérationnels suggérés [EXT], ajustables :

  • Cadence visuelle : un changement visuel (zoom, coupe, changement de cadre, mise en évidence, b-roll) toutes les 1,5–3,5 s. Jamais plus de 4 s sans changement.
  • Zooms : punch-in 105–115 % sur les mots d'emphase ; zoom lent (100→108 %) sur les passages de tension ; reset sur la coupe suivante. Alternez la direction pour ne pas fatiguer.
  • Sous-titres : 1–3 mots à la fois, ≤ 2 lignes, mot actif dans une couleur de mise en évidence, position dans le tiers inférieur (hors de la zone d'interface de l'application : gardez une marge inférieure d'environ 20 % et latérale d'environ 6 %). Émoji uniquement lorsqu'il renforce le mot.
  • Musique :
    • Beat 1 (hook et début) : énergie moyenne, commence à 0 s.
    • Beat de tension : bande-son de suspense, volume monte légèrement, basses plus présentes.
    • Payoff : résout (baisse de la tension ou swell + silence de 0,2 s avant la révélation).
    • Changement de musique : uniquement aux limites de beat/scène, avec crossfade de 200–400 ms.
    • Voix toujours au-dessus de la musique : ducking de −14 à −18 dB sous la parole.
  • SFX : whoosh sur les coupes/zooms, hit sur les révélations, risers avant le payoff. Max. 1 SFX toutes les ~2 s.
  • B-roll/image de support : lorsqu'un élément concret est cité (objet, lieu, nombre), montrez-le pendant 1–2 s.
  • Barre de progression discrète (optionnelle) : renforce l'attente d'arriver à la fin.

Étape 7 : Fin de la vidéo [EXT]

  • Le payoff doit être le dernier moment pertinent. Coupez immédiatement après la phrase finale (≤ 0,3 s de marge).
  • Optionnel, mode boucle : si la fin peut s'enchaîner visuellement ou verbalement avec l'accroche, gardez la dernière image proche de la première.
  • Pas de "merci d'avoir regardé" ou d'appel à l'action qui casse la fin. S'il y a un CTA, utilisez un texte discret sur le payoff.

4. Anti-patrons (rejetez ou corrigez)

  • Commencer par une salutation, un long contexte ou "aujourd'hui je vais parler de".
  • Hook qui promet quelque chose que le payoff ne livre pas.
  • Extrait qui se termine au milieu d'une idée.
  • Plus de 4 s sans changement visuel.
  • Musique forte qui concurrence la voix.
  • Sous-titre hors de la zone de sécurité ou illisible.
  • Coupes qui changent le sens de la parole.
  • Vidéo trop longue pour le mode choisi.
  • Effets qui ne servent pas la rétention (décoration).

5. Format de sortie : Edit Decision List (EDL) en JSON

La sortie doit être uniquement du JSON valide, conforme au schéma ci-dessous.

{
  "clip_id": "string",
  "mode": "viral|balanced|authority",
  "source": { "start": 0.0, "end": 0.0 },
  "scores": {
    "total": 0,
    "hook": 0, "tension": 0, "payoff": 0,
    "self_contained": 0, "density": 0, "emotion": 0,
    "rationale": { "hook": "", "tension": "", "payoff": "" }
  },
  "structure": {
    "hook":    { "start": 0.0, "end": 3.0, "technique": "native|cold_open", "text_overlay_options": ["", "", ""], "chosen_overlay": 0 },
    "beats":   [ { "start": 0.0, "end": 0.0, "type": "conflict|solution|suspense", "note": "" } ],
    "payoff":  { "start": 0.0, "end": 0.0, "note": "" }
  },
  "segments": [
    { "id": "s1", "src_start": 0.0, "src_end": 0.0, "out_start": 0.0, "role": "hook|body|payoff", "speed": 1.0 }
  ],
  "cuts_removed": [ { "src_start": 0.0, "src_end": 0.0, "reason": "silence|filler|repeat|low_tension" } ],
  "reframe": { "mode": "auto_face|split|center|manual", "keyframes": [ { "t": 0.0, "cx": 0.5, "cy": 0.4, "scale": 1.0 } ] },
  "captions": { "style": "string", "words": [ { "t0": 0.0, "t1": 0.0, "text": "", "emphasis": false } ] },
  "effects": [
    { "type": "zoom_punch|zoom_slow|shake|flash|overlay_text|broll|sticker|freeze", "t0": 0.0, "t1": 0.0, "params": {}, "reason": "" }
  ],
  "audio": {
    "voice": { "normalize_lufs": -14, "denoise": true },
    "music": [ { "track_id": "", "t0": 0.0, "t1": 0.0, "mood": "energetic|suspense|resolve", "gain_db": -16, "ducking": true, "fade_in": 0.2, "fade_out": 0.3 } ],
    "sfx": [ { "id": "", "t": 0.0, "gain_db": -10 } ]
  },
  "retention_forecast": { "curve": [ { "t": 0.0, "pct": 100 } ], "risk_points": [ { "t": 0.0, "why": "" } ] },
  "qa": { "passed": true, "violations": [] },
  "duration_out": 0.0
}

Règles du JSON :

  • Tous les temps en secondes, relatifs à la vidéo originale (src_*) ou à la vidéo finale (out_*, t0, t1, t).
  • segments décrivent le montage final dans l'ordre d'affichage (inclut le cold open, si utilisé).
  • Tout effect doit avoir une reason liée à la rétention (ex. : "évite 4 s sans changement entre 12 et 16 s").
  • retention_forecast est une estimation heuristique, pas une mesure. Étiquetez-la comme telle dans l'interface.

6. Contexte manquant

Si l'extrait nécessite un contexte qu'il n'explique pas lui-même, ajoutez un overlay_text court (≤ 8 mots) dans les 3 premières secondes, ou supprimez le candidat.

7. Checklist QA (à exécuter avant de renvoyer)

  1. Les 3 premières secondes ont-elles une accroche claire et une promesse ?
  2. Y a-t-il au moins 1 beat de tension et une résolution ?
  3. Le payoff livre-t-il la promesse du hook ?
  4. Durée dans les limites du mode ?
  5. Aucun passage > 4 s sans changement visuel ?
  6. Aucune coupe au milieu d'un mot/d'une idée ?
  7. Sous-titres en zone de sécurité, ≤ 3 mots à la fois ?
  8. Musique avec ducking sous la voix et changement uniquement aux limites de scène ?
  9. Sens original préservé ?
  10. La fin coupe-t-elle juste après le payoff ?

Si un élément échoue, corrigez et réévaluez (jusqu'à 2 itérations). Si l'échec persiste, renvoyez qa.passed=false avec les violations.

8. Règles de sécurité et d'intégrité

  • N'inventez jamais de phrases ou de faits qui ne figurent pas dans la transcription.
  • Ne modifiez jamais le sens d'une phrase en la réorganisant.
  • L'accroche textuelle doit être vraie par rapport au contenu.
  • Ne générez pas de coupes de contenu que l'utilisateur n'a pas déclaré posséder ou avoir la licence d'utiliser.

9. Variations A/B [EXT]

Lorsque demandé, générez jusqu'à 3 variations de la même coupe, en modifiant une variable à la fois (accroche textuelle, ordre du cold open ou style de sous-titre). Enregistrez quelle variable a été modifiée.

10. Calibrage avec des données réelles [EXT]

Les poids et paramètres de cette compétence sont des points de départ. Le système doit :

  • Enregistrer, pour chaque coupe publiée, la courbe de rétention réelle (lorsque l'utilisateur l'importe depuis YouTube Studio/TikTok).
  • Comparer la courbe réelle avec retention_forecast, et le score avec le résultat.
  • Suggérer des ajustements de poids lorsqu'il y a ≥ 30 coupes avec données.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés