UpcutToutes les éditions

Édition #3 · 3 août 2026

Mode manuel : la zone n’est pas le clip

Sur une URL en mode manuel, j’avais choisi une durée cible 60–90 s. Le rendu est sorti à 1 min 45 — 105 secondes. Hors plage. Absurde. Mon hypothèse : le système ne choisissait plus un moment dans la fenêtre, il rendait toute la plage timeline. C’était ça.

En une phrase

En mode manuel sur une URL, tu choisis une zone de recherche + une durée cible. Upcut y cherche un bon moment — il ne te livre plus toute la plage comme un seul clip géant.

  1. 01 — Le moment où ça cloche

    60–90 à l’écran. 1:45 dans le fichier.

    Le déclic n’est pas venu d’un log obscur. Il est venu d’une vidéo courte, banale à tester : durée cible 60–90 secondes. Le clip livré faisait 1 minute 45 — cent cinq secondes. Impossible si le pipeline respectait vraiment la plage choisie.

    Quand un chiffre sort clairement hors de la case que tu as cochée, tu arrêtes de blâmer le « feeling » du rendu. Tu regardes le contrat produit : est-ce qu’on coupe un moment, ou est-ce qu’on exporte la fenêtre entière ?

    105 s > 90 s. Une seule observation, et l’hypothèse devient prioritaire.

  2. 02 — L’hypothèse

    Pas une durée auto. Tout le segment.

    L’intuition : en manuel URL, on ne cherchait plus un clip « dans » la timeline. On prenait la plage sélectionnée telle quelle — début → fin — et on la rendait d’un bloc. Sous-titres, format, le packaging habituel… mais zéro sélection de moment à l’intérieur.

    Ça peut sembler proche de l’upload (où l’extrait exact a du sens : tu as déjà tranché le contenu). Sur une VOD YouTube / Twitch, c’est autre chose : la fenêtre sert à dire « cherche ici », pas « livre-moi ces sept minutes en vertical ».

    • Si la fenêtre = le clip, une cible 60–90 ne peut jamais sortir 105 s… sauf si on ignore la cible
    • Les logs confirment ensuite : skip detectMoments → 1 clip = toute la plage
    • Upload garde l’extrait exact ; URL manuel ne doit pas copier ce comportement

    Hypothèse validée. Le bug n’était pas « l’IA choisit mal » — c’était « l’IA ne choisit plus ».

  3. 03 — Pourquoi c’était arrivé

    Aligner URL sur upload… un cran trop loin

    On avait voulu simplifier : dès que l’utilisateur désigne le contenu (upload, ou plage manuelle), traiter tel quel — sans chasse aux « meilleurs moments ». Juste pour l’upload, c’est le bon modèle.

    En étendant la même règle au manuel URL, on a cassé le produit. La timeline est devenue un trim brutal, plus une zone de recherche. D’où des clips aussi longs que la fenêtre, durée cible ou pas.

    Même bouton « Manuel », deux contrats : upload = extrait ; URL = zone + durée.

  4. 04 — Le correctif

    Zone + durée. Et un plafond dur.

    Retour au modèle clair. URL manuel : tu poses une zone (où chercher), tu choisis une durée cible (15–30 … 90–120). Upcut relance la détection de moments dans cette zone uniquement, puis borne chaque clip à duration_max — jamais plus long que ce que tu as demandé.

    Upload manuel : inchangé. La plage reste l’extrait exact. Pas de sélecteur de durée « pour décorer » : le fichier (ou la coupe) est déjà le brief.

    • Fenêtre URL ≥ durée max choisie (sinon la zone ne peut pas contenir le clip)
    • Clamp serveur : fin = début + duration_max si jamais ça déborde
    • Copy UI : « zone à analyser » vs « extrait à traiter » selon le mode

    Un 60–90 reste un 60–90. Plus de 1:45 fantôme hors plage.

  5. 05 — Ce que tu ressens

    Manuel utile à nouveau

    Sur une longue VOD, tu cadrés les dix minutes qui comptent, tu choisis 60–90, tu lances. Tu reçois des clips dans la bonne fourchette — pas un pavé vertical de toute la zone.

    Et si tu uploades déjà le bon extrait : tu gardes le rendu fidèle, sans détour IA.

    Le mode manuel redevient un outil de précision, pas un export de timeline déguisé.

Chronologie express

  • 03/08Symptôme : clip 105 s pour une cible 60–90
  • 03/08Hypothèse : skip detectMoments → 1 clip = toute la fenêtre
  • 03/08URL manuel = zone + durée cible + clamp duration_max
  • 03/08Upload manuel = extrait exact (inchangé)
  • 03/08Copy & validation API alignées sur les deux contrats

Pour les curieux

Sous le capot, sans jargon inutile

backend-clips : detectMoments réservé hors upload ; clamp end ≤ start + duration_max sur les clips URL.

API start : min fenêtre URL manuel = duration_max ; upload manuel min 5 s.

UI dashboard : sélecteur de durée visible en manuel URL ; masqué en upload manuel.

Prêt à générer ?

Colle un lien YouTube ou Twitch — Gaming, talk ou podcast, les clips suivent ce que tu as lancé.