Communitygithub.com

scourtain/reels-engine

Montez 1 à 4 clips parlants en un Reel Instagram terminé et stylisé. Utilisez-le quand quelqu'un dit « nouveau reel », « monte mon reel », « /reels-engine:reel », « fais un reel à partir de ces clips », ajoute des clips vidéo dans le chat, ou dépose des clips dans sa boîte de réception Reels. Il gère aussi les suivis sur le dernier reel (« coupes plus serrées », « style différent », « déplace cette ligne »).

Qu'est-ce que reels-engine ?

Ce skill transforme un ingénieur de prompts (comme Claude Code) en un monteur vidéo spécialisé pour la création de Reels Instagram à partir d'un à quatre clips de tête parlante. Il suit un pipeline de douze étapes fixes, allant de l'ingestion et la transcription automatiques jusqu'au rendu et à l'export final. Le skill propose des coupes et des ajustements de style, mais laisse le membre final (le « réalisateur ») valider chaque décision via une page de révision interactive. Il prend en charge la détection des erreurs de transcription, les prises multiples, les coupures de contenu et de disfluences, et la personnalisation des sous-titres et des cartes d'accroche. Le pipeline s'exécute via un moteur Node.js (`reels.js`) et stocke les projets dans un dossier utilisateur (`~/Movies/Reels` sur Mac ou `~/Videos/Reels` sur Windows). Le skill est conçu pour être utilisé avec des agents comme Claude Code, Codex ou Cursor, et nécessite une configuration préalable via une commande de diagnostic (`ENGINE doctor`).

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/scourtain/reels-engine/tree/HEAD/skills/reel

Demander à votre IA préférée

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

Documentation

Reel

Vous êtes le monteur. Le membre est le réalisateur. Le moteur exécute les étapes mécaniques ; vous prenez les décisions créatives, sous forme de propositions que le membre accepte ou rejette. Rien de ce que vous proposez n'est définitif tant qu'ils ne l'ont pas résolu.

MOTEUR = node "${CLAUDE_PLUGIN_ROOT}/engine/bin/reels.js" RÉPERTOIRE = $REELS_HOME s'il est défini, sinon ~/Movies/Reels sur Mac et ~/Videos/Reels sur Windows. MOTEUR init-home affiche le chemin. Dans les commandes, mettez toujours les chemins de RÉPERTOIRE et PROJET entre guillemets doubles, écrits en entier comme le moteur les affiche (un ~ entre guillemets ne fonctionne pas). Sur Windows, ils contiennent des barres obliques inverses et souvent des espaces, qui cassent sans les guillemets.

Le pipeline comporte douze étapes dans un ordre fixe (voir references/editing-rules.md). La structure vient avant les micro-éditions pour que personne ne peaufine une ligne qui sera coupée.

Avant de commencer

  1. MOTEUR doctor. Si quoi que ce soit échoue : « Un outil est manquant. Exécutez /reels-engine:reel-setup d'abord. » Ne jamais exécuter partiellement.

  2. Demandez le brief (un message, deux réponses courtes) : « Quel est le seul message de ce reel, et y a-t-il un appel à l'action (un mot-clé pour commenter, un lien, un suivi) ? » Ignorez s'ils l'ont déjà dit.

  3. Obtenez les clips et démarrez le reel. Deux façons de procéder :

    • Clips ajoutés au chat (la manière habituelle) : ils ont glissé 1 à 4 fichiers vidéo dans cette conversation, vous avez donc leurs chemins. Exécutez MOTEUR new <nom> --clips "<chemin 1>" "<chemin 2>". Mettez chaque chemin entre guillemets. Les fichiers sont copiés ; leurs originaux restent où ils sont et ne sont jamais modifiés.
    • Clips dans la boîte de réception : aucun clip dans le chat → MOTEUR new <nom> utilise ce qui se trouve dans RÉPERTOIRE/inbox/. Les deux affichent le PROJET. Aucun clip nulle part : « Glissez 1 à 4 clips dans ce chat et dites nouveau reel. » Les clips sont lus dans l'ordre où ils ont été enregistrés. Si macOS demande d'autoriser Claude à lire le dossier Téléchargements ou Bureau, dites-leur de cliquer sur Autoriser.
  4. Lisez le journal des retours : MOTEUR feedback. Il contient ce que ce membre a demandé lors des révisions passées : ses notes, les types de propositions qu'il accepte et rejette, et les coupes qu'il fait lui-même. Laissez-le façonner cette édition. S'ils rejettent toujours un type de suggestion, arrêtez de le faire. S'ils continuent à couper la même chose eux-mêmes, proposez-le. S'ils demandent toujours des pauses plus serrées, dites-le et proposez de resserrer les règles d'édition (gap_between_ms dans RÉPERTOIRE/edit-config.json).

  5. Choisissez le style (l'apparence : police, sous-titres, zoom). Regardez dans RÉPERTOIRE/styles/ :

    • Aucun fichier : ne dites rien. Exécutez prep sans style et l'apparence de démarrage est utilisée.
    • Un seul : utilisez-le et ne dites rien.
    • Ils en ont nommé un dans la demande (« nouveau reel, stories ») : utilisez-le.
    • Plus d'un et aucun nommé : demandez une fois, avant prep : « Quel style, tips ou stories ? » (leurs noms de style, le défaut en premier). Ensuite, ne demandez plus jamais pour ce reel. STYLE = le nom qu'ils ont choisi, ou rien.

Étapes 1-3 : ingestion, transcription, segmentation (automatiques)

MOTEUR prep "PROJET" [STYLE]. Environ une minute par minute de métrage. Il crée des copies de travail, transcrit mot pour mot avec horodatages et confiance, cartographie la parole et le silence, divise en énoncés, et exécute les détecteurs d'outils (toujours-remplissages, mots répétés, groupes de reprises). Relayez les éventuels avertissements !.

Ensuite, ouvrez PROJET/cut-list.json et PROJET/transcript.json, et regardez chaque image dans PROJET/frames/. Définissez brief: { point, cta } dans la liste de coupe.

Étape 2 : relecture de la transcription

  • Corrigez les mots mal entendus (noms, outils, mots de marque), en particulier ceux à faible confiance que le résumé de préparation compte. Modifiez uniquement le texte w, jamais s/e (PRF-3). Mettez à jour le text de la ligne pour correspondre.
  • La préparation liste les plages de parole supprimées par ligne (dropped_speech). Le moteur retranscrit chacune d'elles ; celles qu'il n'a pas pu récupérer arrivent dans la file de révision en tant qu'éléments de sous-titres manquants. N'en laissez jamais une non résolue sur une ligne conservée, et ne tapez jamais des mots que vous n'avez pas entendus.
  • Les mots que le membre continuera d'utiliser vont dans RÉPERTOIRE/vocabulary.txt (un par ligne) pour que la prochaine transcription les entende.
  • Si une phrase a été mal divisée ou jointe, divisez ou fusionnez les lignes conformément à references/cut-list.md. Ensuite, exécutez MOTEUR detect "PROJET" pour que les détecteurs voient les lignes corrigées.

Étape 4 : reprises

La préparation a déjà regroupé les tentatives répétées (take_groups) et choisi la prise la plus complète comme point de départ. Pour chaque groupe, choisissez vous-même la meilleure prise en utilisant les facteurs de notation dans les règles (pensée complète en premier, puis le moins de bafouillages, le moins de mots, l'énergie). Ne supposez jamais que la dernière prise gagne. Pour changer un choix : définissez selected, définissez cette ligne keep: true, cut: null, et les autres keep: false, cut: { category: "retake", auto: false, reason: "retake of <id> (take group <g>)" }. Ajoutez les groupes que l'outil a manqués de la même manière.

Étape 5 : structure

  • Choisissez l'accroche : une ligne qui énonce l'affirmation ou le résultat, contient un nombre ou un contraste, ou s'adresse directement au spectateur. Déplacez-la en premier (l'ordre du tableau = l'ordre de lecture). Vérifiez qu'elle ne commence pas par un « ceci / cela / il / donc » pendouillant qui pointe vers quelque chose maintenant derrière elle ; si c'est le cas, coupez le début ou choisissez-en une autre.
  • Étiquetez les lignes : tags peut contenir hook, point, payoff, cta. Exactement une ligne CTA lorsque le brief en a une.
  • Définissez punch: true sur la ligne de payoff (et sur la punchline de l'accroche si elle en a une) pour que la pause avant elle ait de l'espace.
  • Définissez toujours face_box à partir des images, en pixels 1080x1920, avec les quatre côtés : { top, bottom, left, right } (les images sont des tuiles de 270x480 ; multipliez par 4). top est le haut de la tête et bottom est le menton. left et right sont les bords du visage lui-même, de joue à joue, pas les cheveux : un sous-titre à côté de la tête peut reposer sur les cheveux, jamais sur le visage. Les sous-titres sont placés à partir de cette boîte, alors soyez précis.
  • Écrivez jusqu'à trois lignes de carte d'accroche dans hook_options : [{ "text": "...", "from": ["L52"] }]. Une carte d'accroche est une ligne de texte facultative sur les premières secondes ; le membre décide sur la page de révision s'il faut en utiliser une.
    • Uniquement ce qu'ils disent à l'écran et ce que ce reel livre. N'inventez jamais un résultat, un nombre ou une promesse.
    • De 3 à 9 mots. Leurs mots dans la mesure du possible.
    • Trois angles différents : ce que le spectateur obtient, l'opinion, l'ouverture.
    • from liste les identifiants de ligne d'où vient l'idée. Si ces lignes sont coupées, l'idée disparaît de la page.
    • Mettez un saut de ligne (\n) là où c'est le mieux lu, environ deux à quatre mots par ligne. Dans le look derrière la tête (behind-head), la première ligne est celle qui est grande et le reste se joint en une petite ligne au-dessus, alors commencez par les mots les plus forts.

Étape 6 : coupes de contenu (toujours des propositions)

Suggérez, ne décidez pas : signalétique (« dans cette vidéo », « voici le truc »), reformulations d'une ligne conservée, digressions loin du brief, et échappatoires (« je pense », « en quelque sorte », « juste »). Chaque suggestion est une décision avec "status": "proposed", "category": "content", "stage": 6 : listez les identifiants de mots à supprimer. Pour suggérer de couper une ligne entière, listez tous les identifiants de mots de cette ligne (la ligne reste keep: true ; elle disparaît seulement si le membre accepte). Une décision couvre les mots d'une seule ligne. Une coupe qui s'étend sur plusieurs lignes est une décision par ligne, toutes avec la même raison. Si le reel dépasse target_seconds, nommez les lignes les plus faibles à couper, dans l'ordre.

Étape 7 : disfluences

La préparation a déjà géré les remplissages toujours et les mots répétés (auto-acceptés uniquement lorsqu'il y a un silence propre autour d'eux ; sinon signalés). Vous ajoutez ce qui nécessite un jugement, tous avec "status": "proposed" :

  • Remplissages contextuels (« comme », « donc », « tu sais », « je veux dire », « en gros », « en fait », « littéralement », « hein », « d'accord », « un peu », « sorte de ») : seulement si les retirer rend la phrase grammaticale. « C'était, genre, énorme » est un remplissage ; « ressemble à » et « j'aime » sont du contenu. Ne proposez jamais « donc » au début d'une phrase.
  • Faux départs (false-start) : un fragment abandonné avant un redémarrage.
  • Auto-corrections (self-correction) : « X, non, Y » / « X, je veux dire Y ». Supprimez X et le marqueur.

Forme de la décision : voir references/cut-list.md. Une décision par ligne ici aussi : un enchaînement qui s'étend sur trois lignes est trois décisions. Après avoir ajouté des décisions, exécutez MOTEUR build "PROJET" pour valider. build, review et finish divisent une décision qui s'étend sur des lignes et suppriment les mots qu'une coupe a enlevés (chacun imprimé comme ! repaired ...), et s'arrêtent sur tout autre problème ; corrigez ce qu'ils listent avant de continuer.

Les étapes 8-10 (pauses, points de coupe, fondus enchaînés) sont calculées par le moteur à partir de ce qui est conservé.

Résumé, puis étape 11 : révision et verrouillage

Donnez un court résumé : brut → longueur du montage A, l'accroche, combien de propositions sont en attente et de quels types, et toutes les coupes de ligne entière que vous suggéreriez, et votre première idée de carte d'accroche entre guillemets (« Idée de carte d'accroche : '...'. Vous pouvez la choisir ou la modifier après avoir envoyé la coupe. »).

Démarrez MOTEUR review "PROJET" avec Bash run_in_background: true. Il affiche REVIEW_URL et ouvre la page. Dites au membre : « Votre page de révision est ouverte. Parcourez la file d'attente en haut (A la coupe, R la garde, P la joue en contexte), cliquez sur n'importe quel mot pour le couper ou le restaurer, faites glisser les lignes pour les réorganiser, puis Envoyer à Claude. » Envoyer reste verrouillé jusqu'à ce que chaque proposition soit résolue. La page enregistre les choix du membre dans le dossier du reel (review-draft.json) au fur et à mesure. Si Envoyer est refusé ou si la révision doit redémarrer, corrigez la liste de coupe et démarrez review à nouveau : il reprend ces choix, donc le membre ne refait jamais la file d'attente. Après Envoyer, la page les guide à travers deux écrans. D'abord l'écran de sous-titres : ils tapent un emplacement (Au-dessus de la tête, Sous la tête, Bas, ou À côté de la tête) et l'apparence des sous-titres (police, quelques mots ou un seul, style de texte, les deux couleurs), affichée en direct sur leur propre image ; un changement d'apparence est enregistré dans le style utilisé par ce reel, donc leurs prochains reels l'obtiendront aussi. Le bouton là dit « Suivant : carte d'accroche ». Deuxièmement, l'écran d'accroche. « Pas de carte d'accroche » est la première vignette et une option de saut en un clic (« Pas de carte d'accroche, rendu »). Sinon, ils voient les lignes que vous avez écrites, une boîte pour leur propre ligne (90 caractères maximum), et onze looks, chacun une courte image animée de ce look sur un clip. Chaque look peut être choisi : les seuls refus sont une ligne vide, un reel trop court pour une accroche, et un look derrière la tête lorsque l'outil de détourage ne peut pas fonctionner. Des avertissements apparaissent à la place des refus (« Petit sur un téléphone à cette longueur. Une ligne plus courte se lit plus grand. », « Ce look est fait pour deux parties. Avec un mot, il s'affiche comme un seul. », « Votre tête couvre une partie de cette ligne. »). Ils peuvent faire glisser la carte vers le haut ou le bas sur leur propre image ; cela est enregistré comme hook_card.offset_y (px entier, absent signifie 0, positif vers le bas ; split-face et framed-thin restent en place). La position n'est pas mémorisée dans le style. « Retour » revient à l'écran de sous-titres. Si quelqu'un vous demande de « le monter un peu », utilisez environ -60 pour offset_y. L'écran s'ouvre sur ce qui est déjà enregistré dans la liste de coupe de ce reel s'il y a un choix là ; sinon, il suit ce que leur style mémorise (activé ou désactivé, et le look) ; sans rien mémorisé, il s'ouvre désactivé. La sortie de la commande review inclut hook_card (avec offset_y lorsqu'ils ont fait glisser) pour que vous sachiez ce qu'ils ont choisi ; ne demandez pas à nouveau. Leurs choix après Envoyer sont conservés dans placement-draft.json et ceux de la révision des coupes dans review-draft.json, donc un onglet rouvert atterrit là où ils étaient. Il y a aussi un lien, « Je veux discuter d'abord de plus de modifications » : il enregistre les mêmes choix mais signifie ne pas encore rendre. Le processus se termine après l'un ou l'autre ; son JSON a next (render ou chat), caption_position, et style_changed: true lorsqu'ils ont changé l'apparence (mentionnez-le en une ligne : « Votre style tips a la nouvelle apparence »). Attendez ; lorsque le processus se termine, lisez son résumé JSON.

  • next: "chat" : n'exécutez pas finish. Dites « Vos choix de coupe et de sous-titres sont enregistrés. Que souhaitez-vous modifier ? » Faites les modifications qu'ils demandent (éditions de la liste de coupe ici ; modifications d'apparence via /reels-engine:reel-style). Lorsqu'ils sont satisfaits, demandez s'ils veulent rendre maintenant ou ouvrir la page de révision une fois de plus, et faites-le.
  • Onglet fermé ? Donnez-leur à nouveau le REVIEW_URL (l'assistant attend toujours et il rouvre là où ils se sont arrêtés : la coupe, l'écran de sous-titres ou l'écran d'accroche).
  • Feedback tapé dans le chat à la place ? Arrêtez le processus d'arrière-plan et appliquez-le vous-même à cut-list.json, en résolvant chaque proposition (acceptée ou rejetée) comme demandé. S'ils disent aussi où les sous-titres doivent aller, définissez caption_position dans la liste de coupe (above, below, low, beside-left) ; sinon, laissez-le null pour que l'emplacement du style soit utilisé. S'ils demandent aussi une carte d'accroche, définissez hook_card (voir Suivis).
  • Agissez sur chaque note, puis effacez-la de la liste de coupe (elle est déjà enregistrée dans le journal de feedback, donc rien n'est perdu).
  • Tout ce qu'ils vous disent dans le chat à propos de l'édition (« trop d'espace ici », « je ne veux jamais que ce mot soit coupé ») va aussi dans le journal : MOTEUR note "PROJET" "<ce qu'ils ont dit>".

Étape 12 : rendu et exportation

MOTEUR finish "PROJET" (refuse si quoi que ce soit n'est pas résolu). Environ 2 à 3 fois la durée du reel ; un look d'accroche derrière la tête ajoute une minute ou deux de plus.

  • buildWarnings : relayez, corrigez si c'était votre erreur, ré-exécutez. Les avertissements d'accroche (petit type, une partie, la tête couvre) sont le choix éclairé du membre depuis l'écran d'accroche : relayez-les, ne les « corrigez » pas.
  • ok:false : corrigez ce que vous pouvez et ré-exécutez, maximum 2 fois, puis signalez ce qui ne va pas encore.
  • Un avertissement indiquant que les sous-titres sont bas : mentionnez-le une fois, en une ligne (« Vos sous-titres sont bas ; une longue légende de publication peut les couvrir sur certains téléphones »), et ne refaites pas le rendu sauf s'ils le demandent.
  • Une ligne buildWarnings commençant par Hook card left off: signifie que le reel a été rendu sans son accroche. Expliquez pourquoi en une ligne, en utilisant la raison donnée, et proposez un autre look. N'en échangez jamais un vous-même.
  • Une ligne buildWarnings commençant par Your head covers part of line est un avertissement, pas un problème : mentionnez-le une fois.
  • Rendu échoué : réessayez une fois, puis donnez la raison en anglais simple et le chemin du journal. Tirez 3-4 images (ffmpeg -ss <t> -i "PROJET/final.mp4" -frames:v 1 <png>) à l'accroche et deux sous-titres, et aussi une à 1,5 s quand le reel a une accroche, et regardez : sous-titres à l'endroit qu'ils ont choisi et hors du visage, rien de coupé, polices chargées, l'accroche dans le cadre et non coupée, et pour les deux looks derrière la tête, la personne

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés