Communitygithub.com

clip-anything

Verwendet das lokale clip-anything CLI, um aus Spielaufnahmen, Stream-VODs oder einem Ordner mit Aufnahmen Clips, Highlights, Shorts oder Reels im 9:16-Format zu schneiden. Bietet eine Vorschau der Auswahl, rendert die Clips und erklärt jede Auswahl aus der report.json.

Was ist clip-anything?

Diese Fähigkeit ermöglicht es KI-Agenten (wie Claude Code, Cursor oder Codex), das lokale, kostenlose CLI-Tool `clip-anything` zu steuern, um aus langen Gameplay-Aufnahmen oder Stream-VODs die besten vertikalen Highlight-Clips zu extrahieren. Der Agent führt zunächst einen Trockenlauf durch, zeigt eine Tabelle mit den potenziellen Clips (Rang, Start/Ende, Dauer, Bewertung) und rendert diese erst nach Bestätigung. Nach dem Rendern liest der Agent die report.json, um dem Nutzer zu erklären, welche Signale (z.B. Lautstärke, Bewegung, Sprache) für jeden Clip ausschlaggebend waren. Das Tool ist vollständig lokal und benötigt nur `uvx` (oder `pipx`) und `ffmpeg` auf dem System. Es sendet keine Daten an externe Server und erfordert nur optional einen einmaligen Whisper-Modell-Download für Untertitel. Die Fähigkeit unterstützt verschiedene Videoformate und Ordner mit mehreren Dateien, bietet aber keine manuelle Clip-Bearbeitung oder Upload-Funktion.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht clip-anything?

Zweck

Wandelt eine lange Aufnahme (eine Datei, mehrere Dateien oder einen Ordner, der eine Sitzung darstellt) in die besten N vertikalen Highlight-Clips um, mit dem kostenlosen, lokalen CLI clip-anything. Die Fähigkeit steuert das Tool, zeigt eine Vorschau, bevor es schneidet, und liest den Bericht, damit der Nutzer weiß, warum jeder Moment ausgewählt wurde. Es werden niemals Aufnahmen hochgeladen, gepostet oder versendet; das CLI selbst führt keine Netzwerkaufrufe durch, außer einem optionalen, einmaligen Whisper-Modell-Download, der vorher nachfragt.

Voraussetzungen

  • uvx (von uv) oder pipx im PATH. Das CLI ist ein Python-Paket; uvx clip-anything führt es ohne Installation aus.
  • ffmpeg und ffprobe im PATH. Das CLI beendet sich mit Code 3 und einem Installationshinweis, wenn sie fehlen.
  • Eine Aufnahme, auf die der Nutzer verweisen kann: .mp4 .mkv .mov .m4v .ts .m2ts .mts .webm .avi .flv oder ein Ordner mit solchen Dateien.

Anweisungen

Arbeiten Sie vom aktuellen Verzeichnis des Nutzers aus. Verwenden Sie die genauen Pfade, die der Nutzer angegeben hat; setzen Sie sie in Anführungszeichen. Verschieben, umbenennen oder löschen Sie keine Aufnahmen. Installieren Sie nichts, das nicht in den folgenden Schritten als Vorschlag für den Nutzer zum Ausführen ausgegeben wird.

Arbeitsablauf

(Verwenden Sie die Schritte in der Reihenfolge; ein Schritt, der nicht abgeschlossen werden kann, wird gemeldet, nicht übersprungen.)

  1. Werkzeuge prüfen. Führen Sie command -v uvx || command -v pipx und command -v ffmpeg && command -v ffprobe aus. Fehlen sowohl uvx als auch pipx, geben Sie Folgendes aus und stoppen Sie: curl -LsSf https://astral.sh/uv/install.sh | sh (macOS/Linux) oder winget install astral-sh.uv (Windows). Fehlt ffmpeg, geben Sie Folgendes aus und stoppen sind: brew install ffmpeg / sudo apt install ffmpeg / winget install Gyan.FFmpeg. Verwenden Sie pipx run clip-anything wo immer diese Datei uvx clip-anything sagt, wenn nur pipx vorhanden ist.
  2. Eingabe auflösen. Wenn der Nutzer eine Datei oder einen Ordner benannt hat, verwenden Sie diese. Wenn der Nutzer „meine Aufnahme“ ohne Pfad sagt, suchen Sie nach Videodateien im aktuellen Verzeichnis (suchen Sie nach den obigen Erweiterungen, neueste zuerst). Fragen Sie nur nach, wenn es mehrere plausible Eingaben gibt oder keine; andernfalls fahren Sie fort und sagen, welcher Pfad verwendet wurde. Ein Ordner wird unverändert übergeben: das CLI behandelt ihn als eine Sitzung.
  3. Zuerst immer einen Trockenlauf durchführen. Führen Sie uvx clip-anything "<input>" --dry-run --json 2>/dev/null aus (fügen Sie --count N hinzu, wenn der Nutzer eine Zahl genannt hat). Parsen Sie das JSON von stdout. Zeigen Sie eine kurze Tabelle: Rang, start bis end als mm:ss, duration_s, score, title falls vorhanden und die oberste Komponente aus components. Wenn clips leer ist, sagen Sie dies deutlich und lesen Sie warnings (eine below_floor-Warnung bedeutet, dass nichts die Aktionsleiste überschritten hat), bevor Sie --min-score 0 oder einen niedrigeren Wert vorschlagen.
  4. Rendern. Sofern der Nutzer nicht nur eine Vorschau angefordert hat, führen Sie uvx clip-anything "<input>" mit denselben Optionen, ohne --dry-run und --json, aus, sodass die Fortschrittsanzeige erscheint. Fügen Sie --yes nur hinzu, wenn der Nutzer Untertitel wünscht und dem einmaligen Modell-Download zugestimmt hat; andernfalls lassen Sie das CLI fragen. Melden Sie den Ausgabeordner (standardmäßig ./clips oder --out).
  5. Die Auswahl erklären. Lesen Sie clips/report.json (lesen Sie die Datei oder python3 -I -c darüber). Geben Sie für jeden ok-Clip eine Zeile aus: den Zeitraum, die Bewertung und welche Signale ihn getragen haben (components: Lautstärke über Grundlinie, Audio-Anfänge, Bewegung, Audio/Bewegungs-Übereinstimmung, Standbild-Strafe, Sprachbonus falls vorhanden). Erwähnen Sie layout, wenn es facecam ist, und captions, wenn wahr. Listen Sie jeden Eintrag in warnings in einfachen Worten auf; das Tool degradiert laut und der Nutzer sollte es hören.
  6. Die Stellschrauben anbieten, eine Zeile pro Stück, nur diejenigen, die zum Gesehenen passen:
    • --count N mehr oder weniger Clips (es ist ein Maximum; ruhige Sitzungen liefern weniger)
    • --min-score 0.3 senkt die Aktionsleiste; --min-score 0 bewertet die Datei gegen sich selbst
    • --min 20 --max 60 Clip-Längen-Grenzen in Sekunden
    • --crop center statischer zentrierter Zuschnitt anstatt der Bewegung zu folgen
    • --no-captions niemals Untertitel einbrennen; --facecam off kein Webcam-Overlay
    • --vision lokales Ollama zur Neubewertung und Titelvergabe (experimentell; kommuniziert nur mit 127.0.0.1:11434)
    • --force überschreibt Clips aus dem letzten Durchlauf; --no-cache ignoriert zwischengespeicherte Analysen Ein erneuter Durchlauf mit anderen Stellschrauben dauert Sekunden, da die Analyse neben dem Video zwischengespeichert ist.
  7. Offenlegung. Wenn Untertitel oder Titel vorhanden sind, sagen Sie einmal: Untertitel sind maschinelle Transkription (faster-whisper, lokal) und Titel stammen von einem lokalen Vision-Modell; beide können falsch sein und sollten vor dem Posten überprüft werden.

Beispiele

  • „Erstelle 5 Kurzfilme aus dem Stream von letzter Nacht, er ist in ~/Videos/obs/“ → Schritt 1, Ordner übergeben, --count 5 Trockenlauf, Tabelle zeigen, rendern, erklären.
  • „Warum hat es einen Ladebildschirm ausgewählt?“ → report.json öffnen, die components dieses Clips zeigen (ein hoher card-Wert bedeutet, dass die Standbild-Strafe ausgelöst wurde, aber laute Audio-Anfänge dennoch gewonnen haben), --min-score 0.6 oder einen höheren w_card in einem --config TOML vorschlagen.
  • „Zeig mir nur, was es schneiden würde, rendere nicht“ → nur Schritte 1 bis 3.

Einschränkungen

  • Transkriptionsbasierte Momente (ein Witz ohne Aktion) werden von Natur aus niedrig bewertet; das Tool bewertet Aktion, Sprache ist ein Bonus.
  • Die Aktionsleiste wurde an zwei Spielen kalibriert; ein unbekanntes Spiel kann weniger Clips als angefordert zurückliefern. Sagen Sie dies, anstatt unaufgefordert Clips mit --min-score 0 zu erzwingen.
  • Analysen von 1080p60-Quellen laufen mit etwa 100 s pro Stunde; eine mehrstündige Datei bedeutet eine Wartezeit, keinen Absturz.
  • Die Fähigkeit bearbeitet keine Clips, wählt keine Miniaturansichten aus und postet nirgendwo. Das Posten ist der Schritt des Nutzers.

Fehlerbehebung

  • Exit 2: Falsche Eingabe (fehlender Pfad, nicht unterstützte Datei, Ordner ohne Videos). Zeigen Sie die Meldung des CLIs.
  • Exit 3: ffmpeg oder ffprobe fehlen. Geben Sie die Installationszeile für das Betriebssystem des Nutzers aus Schritt 1 aus.
  • Exit 1: Nichts gerendert. Lesen Sie warnings im Trockenlauf-JSON; normalerweise below_floor.
  • Untertitel werden als Sidecar .ass statt eingebrannt geschrieben: Der ffmpeg-Build hat kein libass (Standard-Homebrew-Formel). Ein Build von ffmpeg-full im PATH behebt das; alles andere funktioniert trotzdem.
  • --vision hatte keine Wirkung: Ollama läuft nicht oder hat kein Vision-Modell; der Lauf wird nur aktionsbasiert fortgesetzt und hinterlässt eine Warnung.

Verwandte Skills