Communitygithub.com

clip-anything

Utilisé lorsque l'utilisateur souhaite découper des clips, extraits, courts métrages ou reels à partir d'un enregistrement de jeu, d'un VOD de stream ou d'un dossier d'enregistrements. Exécute le CLI local clip-anything : prévisualise les sélections, rend des clips 9:16, explique chaque sélection à partir de report.json. Ne convient pas pour éditer un clip manuellement ou pour le télécharger.

Qu'est-ce que clip-anything ?

clip-anything est une compétence d'agent IA qui transforme un enregistrement long (fichier unique, plusieurs fichiers, ou dossier représentant une session) en un nombre défini de clips verticaux (9:16) en utilisant le CLI local gratuit `clip-anything`. Elle permet de prévisualiser les clips avant de les générer puis explique pourquoi chaque moment a été sélectionné à l'aide du fichier report.json. Cette compétence garantit qu'aucune donnée n'est téléchargée ou transmise en ligne ; le CLI lui-même n'effectue aucun appel réseau, à l'exception éventuelle d'un téléchargement unique du modèle Whisper, avec demande de consentement préalable. Elle est compatible avec tous les agents IA qui peuvent exécuter des commandes shell (Claude Code, Cursor, Codex, etc.). Le workflow comprend la vérification des outils (uvx/pipx, ffmpeg), une exécution à sec avec analyse JSON, le rendu des clips, l'explication détaillée de chaque sélection (composantes, scores, avertissements) et la suggestion de paramètres ajustables (nombre de clips, seuil de score, durée, recadrage, légendes, etc.).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shreyassaw5394/clip-anything/tree/HEAD/.cursor/skills/clip-anything

Demander à votre IA préférée

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

Documentation

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) ou pipx dans le PATH. Le CLI est un package Python ; uvx clip-anything l'exécute sans installation.
  • ffmpeg et ffprobe dans 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.)

  1. Vérifier les outils. Exécutez command -v uvx || command -v pipx et command -v ffmpeg && command -v ffprobe. Si uvx et pipx sont tous deux absents, affichez et arrêtez : curl -LsSf https://astral.sh/uv/install.sh | sh (macOS/Linux) ou winget install astral-sh.uv (Windows). Si ffmpeg est manquant, affichez et arrêtez : brew install ffmpeg / sudo apt install ffmpeg / winget install Gyan.FFmpeg. Utilisez pipx run clip-anything là où ce fichier indique uvx clip-anything si seul pipx existe.
  2. 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.
  3. Exécuter d'abord une simulation (dry run), toujours. Exécutez uvx clip-anything "<entrée>" --dry-run --json 2>/dev/null (ajoutez --count N si l'utilisateur a donné un nombre). Analysez le JSON de la sortie standard. Affichez un court tableau : rang, start à end en mm:ss, duration_s, score, title s'il est présent, et le principal composant parmi components. Si clips est vide, dites-le clairement et lisez warnings (un avertissement below_floor signifie que rien n'a franchi la barre d'action) avant de suggérer --min-score 0 ou une valeur inférieure.
  4. 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-run et --json, afin que l'interface de progression s'affiche. Ajoutez --yes uniquement 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 (./clips par défaut, ou --out).
  5. Expliquer les sélections. Lisez clips/report.json (lisez le fichier, ou python3 -I -c dessus). Pour chaque clip ok, 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). Mentionnez layout quand il s'agit de facecam et captions quand c'est vrai. Listez chaque entrée dans warnings en mots simples ; l'outil se dégrade bruyamment et l'utilisateur doit l'entendre.
  6. Proposer les réglages, une ligne chacun, uniquement ceux qui correspondent à ce que l'utilisateur a vu :
    • --count N plus ou moins de clips (c'est un maximum ; les sessions calmes en renvoient moins)
    • --min-score 0.3 abaisser la barre d'action ; --min-score 0 classer le fichier par rapport à lui-même
    • --min 20 --max 60 limites de durée des clips en secondes
    • --crop center recadrage centre statique au lieu de suivre l'action
    • --no-captions ne jamais graver de légendes ; --facecam off pas d'incrustation webcam
    • --vision reclassement local Ollama et titres (expérimental ; ne communique qu'avec 127.0.0.1:11434)
    • --force écraser les clips de la dernière exécution ; --no-cache ignorer 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.
  7. 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 5 simulation, affichez le tableau, rendu, expliquez.
  • « Pourquoi a-t-il sélectionné un écran de chargement ? » → ouvrez report.json, montrez les components de ce clip (une valeur card é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.6 ou une valeur w_card plus é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 0 sans ê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 warnings dans le JSON de simulation ; généralement below_floor.
  • Légendes écrites dans un fichier .ass latéral au lieu d'être gravées : la version de ffmpeg n'a pas libass (formule Homebrew standard). Une version ffmpeg-full dans le PATH corrige le problème ; tout le reste fonctionne.
  • --vision n'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.

Skills associés