editorial-short

Crée un vertical court Fringe Lines dans le style « editorial » (fond papier, intervention qui passe de plein écran à carte en passant par PiP circulaire, graphiques explicatifs, sous-titres caractère par caractère en police serif avec accroche, carte de fin et effets sonores). Utilisez cette compétence lorsque vous devez créer, restyler ou corriger un court à partir d'un épisode.

Qu'est-ce que editorial-short ?

Cette compétence permet de produire des vidéos verticales courtes pour le podcast Fringe Lines, dans un style « editorial » inspiré des shorts de Greg Isenberg, avec un fond de papier, des transitions dynamiques et un rendu soigné. Elle prend en charge l'ensemble du pipeline : sélection d'un extrait de 30 à 50 secondes dans les fichiers de transcription, nettoyage du dialogue, application d'un style visuel avec des graphiques explicatifs, sous-titres mot par mot en police serif, une accroche et une carte de fin. Le workflow s'appuie sur des scripts Python et Remotion pour la composition, puis génère un fichier vidéo MP4. Les utilisateurs peuvent spécifier des remplacements de sous-titres, des animations graphiques (statistiques, citations, tendances) et des règles de rythme (alternance entre plans pleins écran, cartes et PiP). La compétence inclut aussi des vérifications de qualité automatiques pour s'assurer de la lisibilité, de la cohérence sonore et de l'exactitude des chiffres affichés. Elle nécessite un environnement préconfiguré avec venv Python, modules Remotion et fichiers de transcription.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/qdevery/fringe-lines-video/tree/main/.claude/skills/editorial-short

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

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

Documentation

Court editorial (Fringe Lines)

Le style est calqué sur les shorts de Greg Isenberg. Tenez chaque court à ces règles :

  • Ne restez jamais sur un plan visage pendant plus de ~6 s.
  • Un changement graphique ou de mise en page se produit toutes les 3–5 s.
  • Les sous-titres apparaissent mot par mot, avec quelques mots-clés en italique orange.
  • Les graphiques suivent ce qui est dit, donc un graphique tombe sur le mot qu'il illustre.

0. Prérequis (par machine)

  • pipeline/setup.sh installe le venv ~/.shorts-skill et les modules Remotion node_modules dans ~/.cache/fringe-lines-video.
  • Les transcriptions de l'épisode doivent exister : work/<ep>/words-quinn.json et words-doom.json (provenant de pipeline/transcribe_verbatim.py).
  • Source Remotion : pipeline/remotion/src/ShortV2.tsx (mise en page) et Graphics.tsx (types de graphiques).

1. Choisir le moment (30–50 s)

  • Parcourez les fichiers de mots pour trouver une prise autonome qui a :
    • une phrase d'accroche forte (affirmation, chiffre ou confession) ;
    • une idée ;
    • une chute ou un punchline vers la fin.
  • Bon indicateurs :
    • des chiffres concrets (pourcentages, montants en dollars, effectifs) ;
    • des noms d'entreprises ou de produits ;
    • un avis contradictoire ;
    • une expérience personnelle (« J'ai laissé Codex… »).
  • Évitez les extraits qui dépendent du contexte précédent (« comme je disais », « cette chose »).
  • Plusieurs --range peuvent être assemblés. Coupez en fin de phrase et vérifiez que la jointure ne répète pas de mots.

2. Le couper

Ajoutez une ligne à work/<ep>/shorts.sh et exécutez-la :

b --name short-NN --range START:END [--range ...] --replace "27=>27%" --replace "claude=>Claude"
  • build_short.py fait ce qui suit :
    • supprime les remplissages, bégaiements et longues pauses ;
    • choisit la caméra active ;
    • écrit work/<ep>/short-NN/clip.mp4 et props.json ;
    • rend le court simple v1.
  • --replace corrige le texte des sous-titres. Un côté droit vide masque ce mot.
    • Toujours corriger : les chiffres ("27"→"27%"), les noms de produits (Claude, Codex, Descript, GTM, SQL) et les erreurs de Whisper.
  • Pour obtenir les timings de sortie exacts pour écrire le cahier des charges, imprimez-les : python3 -c "import json;p=json.load(open('work/<ep>/short-NN/props.json'));print(' '.join(f\"{w['text']}@{w['startMs']/1000:.1f}\" for w in p['words']))"

3. Écrire le cahier des charges stylistique : work/<ep>/short-NN/style.json

{
  "hook":  {"text": "Microsoft veut que *27%* de son personnel démissionne", "end": 2.8},
  "outro": {"text": "Grandir *sans* augmenter *l'effectif*", "hold": 2.0},
  "emphasis": ["microsoft", "27%", "leave"],
  "scenes": [
    {"at": 0.0,  "mode": "full"},
    {"at": 3.0,  "mode": "graphic", "graphic": {"type": "stat", "kicker": "Offre de rachat Microsoft", "value": 27, "suffix": "%", "label": "des employés se sont vu offrir un paiement pour *partir*"}},
    {"at": 6.2,  "mode": "card"}
  ]
}

Les temps sont en secondes dans l'extrait coupé, tirés des timings de mots à l'étape 2.

Règles pour rester cohérent :

  • Structure :
    • La scène 0 est toujours full, avec une hook de 4 à 8 mots qui se termine à ~2,5–3 s.
    • Énoncez l'affirmation ; ne résumez pas l'extrait.
  • Rythme :
    • Alternez les modes comme full → graphic → card → graphic → card … avec 3 à 6 graphiques dans un court de 40 s.
    • Utilisez à nouveau full pour une réaction percutante ou un rire dans la seconde moitié.
  • Timing :
    • Commencez chaque graphique 0,1–0,3 s avant le mot qu'il illustre et maintenez-le 2,5–5 s.
    • Deux graphiques peuvent se suivre directement, par exemple une carte à 20 $ puis une carte à 100 $.
  • Emphase : choisissez 10 à 18 mots-clés : chiffres, noms et les mots du punchline. La correspondance est en minuscules, en ignorant la ponctuation.
  • Accents : dans tout champ de texte, *mot* rend en italique orange. Utilisez-en un ou deux par chaîne.
  • Outro : une carte de fin de 2 s avec une courte ligne qui réaffirme le message clé, ou une question pour le spectateur.
  • Honnêteté :
    • Les chiffres à l'écran doivent correspondre à ce qui a été dit dans l'émission.
    • Les graphiques sont schématiques : utilisez des lines avec des formes, jamais d'axes ou de valeurs inventés.
    • Tempérez avec « environ » ou « ~ » lorsque l'intervenant le fait.

Types de graphiques (Graphics.tsx) :

typechampsutilisation
statkicker, prefix, value (nombre, compte à rebours), decimals, suffix, labelun chiffre titre
peoplekicker, value (chaîne), label, filled (0–1)effectif / part de personnes
lineskicker, series: [{label, shape: up|flat|down}], captiontendance vs tendance
quotetext, by?le punchline, dit à l'écran
headlinesource, title, highlightactualités, annonces, un « verdict »
listtitle, items[]étapes, produits, ce qui a mal tourné

Si un nouveau type de graphique est nécessaire, ajoutez-le à Graphics.tsx et à son type union. Conservez le style carte : carte blanche ou encre, rayon de 36px, une entrée ressort, et une animation qui s'exécute sur son cadre local f.

4. Rendu

~/.shorts-skill/bin/python pipeline/style_short.py --ep <ep> --name short-NN --spec work/<ep>/short-NN/style.json
  • La piste du visage (pipeline/face_track.py, YuNet) est calculée une fois et mise en cache dans short-NN/faces.json. Elle maintient le PiP rond et la carte centrés sur le visage ; supprimez le fichier si l'extrait est recoupé.
  • Les effets sonores sont synthétisés : un whoosh à chaque changement de scène et un pop lorsqu'un graphique atterrit. Ils sont mixés à --sfx-db -20.
  • Loudness : −14 LUFS.
  • Sortie : out/shorts/<ep>-short-NN-v2.mp4.

5. QA (toujours, avant de faire un rapport)

Extrayez des images et regardez-les :

for t in 1.5 5 10 15 20 25 30 35 40; do ffmpeg -v error -y -ss $t -i out/shorts/<ep>-short-NN-v2.mp4 -frames:v 1 -vf scale=270:-1 /tmp/q_$t.png; done

Vérifiez chacun de ces points :

  • Accroche : lisible et ne couvrant pas le visage.
  • Graphiques : ils ne chevauchent pas le bloc de sous-titres, qui se trouve à y≈1340–1600. Aucun texte ne déborde d'une carte. Les longues valeurs de statistiques comme "+$500K" se réduisent automatiquement.
  • PiP : le visage est centré dans le cercle.
  • Sous-titres : pas de * errant ; les mots-clés s'affichent en orange.
  • Loudness : ffmpeg -i out.mp4 -af ebur128 -f null - 2>&1 | grep " I:" donne environ −14.

Faites un rapport à l'utilisateur :

  • Le sujet du court et sa durée.
  • Les éventuels chiffres à vérifier.
  • Le cas échéant, le langage explicite restant.

Individual skills in this repo

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

carousel

Make a Fringe Lines image carousel (Instagram/LinkedIn, 1080x1350 PNG slides + PDF) — photo slides with big condensed caps headlines and accent words, large-type text-only slides, chart/screenshot slides, explainer-graphic slides and a follow CTA. Use when asked for a carousel, slide post, or "swipe" post from an episode or a topic.

engaging-monologue

Make a 16:9 FringeLines "engaging monologue" video from a solo talking-head take — jump cuts with punch-ins, the speaker shrinking into a portrait picture-in-picture while serif kinetic text, diagrams (pyramid stack, compare, roadmap, steps, big stat) and b-roll cards build on a paper canvas, plus callout cards, lower thirds, chips, a CTA pill and a green end card, all synced word by word to the speech. Use for YouTube explainers, solo commentary, newsletter-to-video and "one idea, told well" pieces.

infographic

Make a single-image editorial infographic (1080x1350) that explains one idea at a glance — two-tone headline, one-sentence dek, a hero visual with 2–4 numbered callouts and leader lines, an optional side note, a three-column "why it matters" row with icons, byline and sources. Use for "explain X in one graphic" posts about a company move, a framework, an architecture or a trend; the PNG can also be a carousel slide.

podcast-intro

Build the cold open for a long-form Fringe Lines episode — a 35–60 s highlight reel of the episode's best lines with explainer-graphic cutaways, keyword captions, whip transitions + SFX, ending on a title card with the topic list. Use when making or revising the intro of a full episode.

Skills associés