Que fait clip-anything ?
Objectif
Transforme un long enregistrement (un fichier, plusieurs fichiers, ou un dossier représentant une session) en un nombre défini de clips verticaux (9:16) en utilisant le CLI local gratuit clip-anything. La compétence pilote l'outil, affiche ce qui serait coupé avant de couper, et lit le rapport pour que l'utilisateur sache pourquoi chaque moment a été sélectionné. Elle ne télécharge, ne publie ni n'envoie jamais de séquences ; le CLI lui-même n'effectue aucun appel réseau, sauf un téléchargement unique facultatif du modèle Whisper qui demande une autorisation préalable.
Prérequis
uvx(provenant de uv) oupipxdans le PATH. Le CLI est un package Python ;uvx clip-anythingl'exécute sans installation.ffmpegetffprobedans le PATH. Le CLI se termine avec le code 3 et une ligne d'installation lorsqu'ils sont manquants.- Un enregistrement que l'utilisateur peut désigner :
.mp4 .mkv .mov .m4v .ts .m2ts .mts .webm .avi .flv, ou un dossier en contenant.
Instructions
Travaillez depuis le répertoire actuel de l'utilisateur. Utilisez les chemins exacts donnés par l'utilisateur ; mettez-les entre guillemets. Ne déplacez, renommez ou supprimez aucune séquence. N'installez rien au-delà de ce que les étapes ci-dessous impriment comme suggestion que l'utilisateur doit exécuter.
Workflow
(Utilisez les étapes dans l'ordre ; une étape qui ne peut pas être complétée est signalée, pas ignorée.)
- Vérifier les outils. Exécutez
command -v uvx || command -v pipxetcommand -v ffmpeg && command -v ffprobe. Siuvxetpipxsont tous deux absents, affichez et arrêtez :curl -LsSf https://astral.sh/uv/install.sh | sh(macOS/Linux) ouwinget install astral-sh.uv(Windows). Si ffmpeg est manquant, affichez et arrêtez :brew install ffmpeg/sudo apt install ffmpeg/winget install Gyan.FFmpeg. Utilisezpipx run clip-anythinglà où ce fichier indiqueuvx clip-anythingsi seul pipx existe. - Résoudre l'entrée. Si l'utilisateur a nommé un fichier ou un dossier, utilisez-le. S'il a dit « mon enregistrement » sans chemin, cherchez des fichiers vidéo dans le répertoire actuel (extensions ci-dessus, les plus récents en premier). Ne demandez que lorsqu'il y a plusieurs entrées plausibles ou aucune ; sinon poursuivez et indiquez quel chemin a été utilisé. Un dossier est passé tel quel : le CLI le traite comme une seule session.
- Exécuter d'abord une simulation (dry run), toujours. Exécutez
uvx clip-anything "<entrée>" --dry-run --json 2>/dev/null(ajoutez--count Nsi l'utilisateur a donné un nombre). Analysez le JSON de la sortie standard. Affichez un court tableau : rang,startàenden mm:ss,duration_s,score,titles'il est présent, et le principal composant parmicomponents. Siclipsest vide, dites-le clairement et lisezwarnings(un avertissementbelow_floorsignifie que rien n'a franchi la barre d'action) avant de suggérer--min-score 0ou une valeur inférieure. - Rendu. Sauf si l'utilisateur a demandé seulement un aperçu, exécutez
uvx clip-anything "<entrée>"avec les mêmes options, sans--dry-runet--json, afin que l'interface de progression s'affiche. Ajoutez--yesuniquement si l'utilisateur dit vouloir des légendes et a accepté le téléchargement unique du modèle ; sinon laissez le CLI demander. Signalez le dossier de sortie (./clipspar défaut, ou--out). - Expliquer les sélections. Lisez
clips/report.json(lisez le fichier, oupython3 -I -cdessus). Pour chaque clipok, donnez une ligne : l'intervalle de temps, le score et les signaux qui l'ont porté (components: loudness par rapport à la référence, attaques audio, mouvement, accord audio/mouvement, pénalité statique-cartes, bonus de parole lorsqu'il est présent). Mentionnezlayoutquand il s'agit defacecametcaptionsquand c'est vrai. Listez chaque entrée danswarningsen mots simples ; l'outil se dégrade bruyamment et l'utilisateur doit l'entendre. - Proposer les réglages, une ligne chacun, uniquement ceux qui correspondent à ce que l'utilisateur a vu :
--count Nplus ou moins de clips (c'est un maximum ; les sessions calmes en renvoient moins)--min-score 0.3abaisser la barre d'action ;--min-score 0classer le fichier par rapport à lui-même--min 20 --max 60limites de durée des clips en secondes--crop centerrecadrage centre statique au lieu de suivre l'action--no-captionsne jamais graver de légendes ;--facecam offpas d'incrustation webcam--visionreclassement local Ollama et titres (expérimental ; ne communique qu'avec127.0.0.1:11434)--forceécraser les clips de la dernière exécution ;--no-cacheignorer l'analyse en cache Une nouvelle exécution avec des réglages différents prend quelques secondes car l'analyse est mise en cache à côté de la vidéo.
- Divulgation. Lorsque des légendes ou des titres sont présents, dites une fois : les légendes sont une transcription automatique (faster-whisper, local) et les titres proviennent d'un modèle de vision local ; les deux peuvent être erronés et doivent être vérifiés avant publication.
Exemples
- « Fais 5 courts métrages du stream d'hier soir, il est dans ~/Videos/obs/ » → étape 1, passez le dossier,
--count 5simulation, affichez le tableau, rendu, expliquez. - « Pourquoi a-t-il sélectionné un écran de chargement ? » → ouvrez
report.json, montrez lescomponentsde ce clip (une valeurcardélevée signifie que la pénalité statique-cartes s'est déclenchée mais que les attaques fortes ont quand même gagné), suggérez--min-score 0.6ou une valeurw_cardplus élevée dans un TOML de config. - « Montre-moi juste ce qu'il couperait, ne rends pas » → étapes 1 à 3 seulement.
Limitations
- Les moments basés sur la transcription (une blague sans action) obtiennent un score faible par conception ; l'outil classe l'action, la parole est un bonus.
- La barre d'action a été calibrée sur deux jeux ; un jeu non vu peut renvoyer moins de clips que demandé. Dites-le plutôt que de forcer des clips avec
--min-score 0sans être sollicité. - Les sources 1080p60 s'analysent à environ 100 s par heure ; un fichier de plusieurs heures est une attente, pas un blocage.
- La compétence ne modifie pas les clips, ne sélectionne pas de vignettes et ne publie nulle part. La publication est une étape de l'utilisateur.
Dépannage
- Code de sortie 2 : mauvaise entrée (chemin manquant, fichier non pris en charge, dossier sans vidéos). Affichez le message du CLI.
- Code de sortie 3 : ffmpeg ou ffprobe manquant. Affichez la ligne d'installation pour le système d'exploitation de l'utilisateur depuis l'étape 1.
- Code de sortie 1 : rien rendu. Lisez
warningsdans le JSON de simulation ; généralementbelow_floor. - Légendes écrites dans un fichier
.asslatéral au lieu d'être gravées : la version de ffmpeg n'a pas libass (formule Homebrew standard). Une versionffmpeg-fulldans le PATH corrige le problème ; tout le reste fonctionne. --visionn'a eu aucun effet : Ollama ne tourne pas ou n'a pas de modèle de vision ; l'exécution continue avec uniquement l'action et laisse un avertissement.