Communitygithub.com

KaustubhUpadhyaya/Clip-Picker

Extrahiert die besten kurzen Clips aus langen, unstrukturierten Videos. Verwende es, wenn der Nutzer ein oder mehrere lange Videos bereitstellt und Highlights, die besten Momente oder Clips haben möchte – funktioniert durch Sampling von Frames in Zeitstempel-Kontaktabzüge, die Claude lesen kann (kein Video-Streaming), Bewertung der Schärfe und Ausgabe einer sortierten Auswahlliste + zugeschnittener Clips.

Was ist Clip-Picker?

Das Skill „Clip Picker“ von KaustubhUpadhyaya ist ein systematischer Workflow, um aus langen, unstrukturierten Videos die besten Momente zu extrahieren. Es umgeht die Einschränkung, dass Claude kein Video streamen kann, indem es das Filmmaterial in zeitgestempelte Bildkontaktabzüge umwandelt, diese visuell bewertet und schließlich die Clips zuschneidet. Der gesamte Prozess ist in vier Phasen unterteilt: Erstens wird das Filmmaterial mit ffmpeg in regelmäßigen Abständen bebildert (Survey), zweitens bewertet Claude diese Bilder anhand einer Rubrik (was macht einen guten Clip aus?), drittens werden die besten Kandidaten in voller Auflösung auf Schärfe geprüft (Score), und viertens erhält der Nutzer eine sortierte Auswahlliste (Board). Das Skill unterstützt alle Arten von Footage, enthält aber eine Standard-Rubrik für POV-Motorradfahrten. Es ist in Python geschrieben und nutzt ffmpeg/ffprobe, numpy und pillow. Der Nutzer kann jederzeit die Bewertungskriterien anpassen, um die Auswahl zu personalisieren. Achtung: Die Dekodierung von HEVC/HDR ist der Engpass – das Skill gibt Hinweise, wie man diesen umgeht.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kaustubhupadhyaya/editor-pack/tree/HEAD/skills/clip-picker

In Ihrer bevorzugten KI fragen

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

Dokumentation

Clip Picker – Auswahl der besten Clips aus langem Filmmaterial

Finde die Highlights in langen Aufnahmen. Die gesamte Methode existiert, um eine harte Grenze zu umgehen:

Claude kann kein Video sehen. Es liest Standbilder. Daher bedeutet „gute Clips auswählen“: Das Filmmaterial in ausreichend dichter Folge bebildern, um zu sehen, was passiert, diese Bilder anhand einer Rubrik bewerten, in voller Auflösung bestätigen und dann zuschneiden. Das Trimmen ist trivial und nahezu augenblicklich; 30+ Minuten Filmmaterial zu sehen ist der eigentliche Aufwand – kalkuliere diesen ein und entschuldige dich nicht dafür.

Skripte befinden sich in scripts/ (survey.py, score.py, board.py). Sie übernehmen die mechanischen Teile; Claude erledigt die visuelle Beurteilung dazwischen. Abhängigkeiten: ffmpeg/ffprobe im PATH, numpy, pillow (alle auf diesem Rechner installiert – siehe [[editor-pack-video-editing-stack]]).

Pipeline

Wähle ein WORKDIR im Scratchpad (z.B. .../scratchpad/clippick). Dann:

1. Rubrik bestätigen. Wenn das Filmmaterial keine POV-Motorrad/Fahrrad-Aufnahme ist (die eingebaute Standard-Rubrik unten), frage den Nutzer 1-2 Fragen: Was macht für ihn einen guten Clip aus? Gewünschte Cliplänge, Ausgabeformat (16:9 vs. 9:16) und Selektivität (einige Perlen vs. alles). Ein guter Satz Kriterien verändert jede Auswahl – hole ihn ein, bevor du mit dem Survey beginnst.

2. Survey – Filmmaterial in lesbare Kontaktabzüge umwandeln.

python scripts/survey.py "C:\pfad\zu\videos_oder_verzeichnis" --out WORKDIR --interval 4

Ein Thumbnail alle 4s, 6x6 gekachelt, Quell-Zeitstempel auf jedem Bild. Für schnelle/ereignisreiche Aufnahmen verwende --interval 2-3; für langsame Aufnahmen --interval 6-8. Das Skript gibt die Spezifikationen jedes Clips aus und markiert HDR (HLG/PQ)-Quellen. Bei vielen/langlaufenden HEVC-Clips ist dies langsam (Software-Dekodierung ist der Engpass) – führe es im Hintergrund aus und betrachte die Blätter, sobald sie eintreffen.

3. Jedes Blatt visuell begutachten. Lies jedes WORKDIR/montages/*_sheet_*.jpg. Ordne Kandidatenfenster anhand des Zeitstempels gemäß der Rubrik zu. Ein Ereignis, das zwischen zwei Samples „blinzelt und verschwindet“, kann übersehen werden – wenn ein Blatt auf etwas hindeutet (ein aufblitzender Winkel, eine Figur), notiere es und taste diesen Abschnitt später dichter ab.

4. WORKDIR/candidates.json erstellen – ein Objekt pro Kandidatenfenster (Schema unten). Halte jedes Fenster auf 15-30s (oder die Länge, die der Nutzer wünscht). Gib jedem einen pick-Code (P01, P02, ... in deiner sortierten Reihenfolge), einen einzeiligen title (warum es qualifiziert ist) und tags.

5. In voller Auflösung + Schärfe bestätigen.

python scripts/score.py --work WORKDIR

Holt ein Vollauflösungs-Hero-Frame pro Kandidat, bewertet die Varianz des Laplace-Operators (ein Schärfemaß) und kachelt sie in review.jpg. Lese es. Verwerfe alle, die wirklich unscharf/uninteressant sind; verschiebe start/end, um den besten Moment zu treffen. Geringe Schärfe = Bewegungsunschärfe im gesamten Frame – bei Flow-Aufnahmen erwünscht, kein Grund zur Ablehnung. Nach Bearbeitungen erneut ausführen.

6. Eine sortierte Auswahlliste präsentieren (der Nutzer wählt).

python scripts/board.py --work WORKDIR --mode thumbs     # -> WORKDIR/pickboard.html (als Artifact veröffentlichbar)

Oder, wenn der Nutzer die Clips vor der Auswahl sehen möchte, ein abspielbares Board, das die Clips auch zuschneidet:

python scripts/board.py --work WORKDIR --mode play --out "%USERPROFILE%\Downloads\clips"

play schneidet jeden Kandidaten in browserfreundliches H.264 (automatisches HDR->SDR-Tone-Mapping für HLG/PQ), erstellt review_player.html mit nativen <video>-Playern neben den MP4s (in Chrome/Edge für lokale Wiedergabe öffnen). Standardausgabe ist 16:9, nur Trimmen, kein Zuschneiden.

7. Die vom Nutzer ausgewählten Gewinner zuschneiden / fertigstellen. Für pixelgenaue oder Format-Wahlmöglichkeiten leite über das Skill [[editor-pack-video-editing-stack]] video-tool-router weiter (Stream-Kopie vs. Neucodierung, die HLG-Absicherung, Resolve für Grading/Stabilisierung/Upscaling). Biete Folgeschritte an: Bewegungsunschärfe-Boost bei Flow-Clips, 9:16-Vertikale, Farbe, Untertitel, eine Montage.

Die Auswahlrubrik (das ist die eigentliche „Auswahlmethode“)

Ein Clip ist behaltenswert, wenn er die Qualitätshürden nimmt UND mindestens ein „besonderes“ Signal trägt.

Qualitätshürden (alle müssen erfüllt sein)

  • Ausschnitt von 15-30s der Quelle (Standard; die Länge des Nutzers respektieren).
  • Motiv klar und stabil – das Hauptmotiv (Motorrad/Lenker, Gesicht, Spieler) ist scharf und stabil im Bild. Verwerfe globale Unschärfe durch Stöße/Wackeln, unscharfe Bereiche, überbelichtete oder zu dunkle Stellen, Objektiv verdeckt.
  • Es passiert etwas – Bewegung oder Veränderung. Verwerfe Stillstand/Geparktes/Warten und eintöniges Nichts.

„Besondere“ Signale (benötigt >=1; mehr + stärker = höhere Rangfolge)

  • Geschwindigkeit / Bewegung – die Umgebung verschwimmt durch Bewegungsunschärfe, während das Motiv scharf bleibt. Dies ist ein positives Signal und das Hauptausgangsmaterial für eine Bewegungsunschärfe-Verstärkung.
  • Interaktion – andere Personen/Fahrer/Fahrzeuge/Tiere; Überholmanöver, Gruppefahren, jemand reagiert.
  • Aktion / Dynamik – Kurvenfahrt & Schräglage, Abbiegemanöver, Höhenunterschied, ein Trick, ein Beinahe-Moment.
  • Licht & Umgebung – Sonnenaufgang/Sonnenuntergang, goldene Stunde, dramatische Wolken, Nebel/Dunst, Tunnel, eine Aussicht oder Enthüllung, Wasser. Tageszeitlicht ist der größte „kinematografische“ Hebel – markiere es immer.
  • Neuheit – ein Szenen-/Geländewechsel, ein Ein-/Ausgang, alles visuell Neue im Vergleich zu den umliegenden Minuten.

Abwägung von „klar, nicht unscharf“ mit „Bewegungsunschärfe ist gut“

Halte das Motiv scharf und den Moment beabsichtigt; betrachte periphere Geschwindigkeitsunschärfe als Merkmal. Verwerfe nur globale Unschärfe (das gesamte Bild durch einen Stoß verschmiert). Eine Brust-/Lenkerkamera hält das Motorrad scharf, während die Umgebung verschwimmt – das ist der gewünschte Look, kein Fehler.

Rangfolge

Ordne nach: Stärke & Seltenheit des besonderen Signals, dann Klarheit, dann Vielfalt (ordne nicht fünf nahezu identische Fenster in die Spitzenplätze – verteile die Stimmung: eine Aussicht, eine Bewegungsunschärfe, ein Überholmanöver, eine atmosphärische Einstellung). Sei ehrlich, wenn ein Kriterium einfach nicht vorhanden ist (z.B. kein Sonnenaufgang/-untergang irgendwo) – sag es, anstatt eine schwache Auswahl zu erzwingen.

POV-Fahrtprofil (eingebaute Standardeinstellung für das Filmmaterial dieses Nutzers)

Motorrad-/Fahrrad-Helm- oder Lenkerkamera. Konkret: Behalte Geschwindigkeitsunschärfe-Übergänge, Kurvenfahrt/Schräglage, Überholmanöver & Gruppefahren, Szenen am Straßenrand, Nebel/Dunst und Bergpässe, Tunnel/Baumalleen. Überspringe: Stopps, Blinker, Parken, am Telefon herumfingern, lange gerade Strecken ohne etwas. (Dies ist genau die Rubrik, die den vom Nutzer gemochten Clip-Satz erzeugt hat.)

candidates.json-Schema

[
  {"pick":"P01","clip":"clip_6318","file":"%USERPROFILE%/Downloads/clip_6318.mov",
   "start":96,"end":120,"hero":104,"title":"Tunnel mit hohen Bäumen, Fahrer voraus, starke Bewegungsunschärfe",
   "tags":["speed-blur","scenery"]}
]
  • start/end/hero sind Sekunden. hero ist ein repräsentativer Moment innerhalb des Fensters (wird für das Vorschaubild und den Schärfewert verwendet) – wähle den charakteristischsten Moment, nicht unbedingt den Mittelpunkt.
  • pick-Codes dienen gleichzeitig als Bezeichner des Nutzers für die Auswahl („cut P01, P03, P10“).
  • tags (frei, aber diese erhalten hübsche Bezeichnungen): speed-blur, corner, vista, interaction, overtake, atmosphere, scenery, action, light, wildlife.

Effizienz & Stolperfallen

  • HEVC/HDR-Dekodierung ist der Engpass, nicht die Bearbeitung. Ein Survey von ~30 min HEVC dauert Minuten der Dekodierung. Taste nur so dicht ab, wie es das Filmmaterial erfordert; führe den Survey und die Kodierung im play-Modus im Hintergrund aus.
  • HLG/HDR-Filmmaterial erscheint grau bei einer naiven SDR-H.264-Ausgabe – board.py play erkennt und wandelt automatisch um, aber jeder manuelle Schnitt dieses Materials muss dies ebenfalls tun. Siehe die HLG-Absicherung in video-tool-router.
  • Auf Wunsch schneller: Wenn der Nutzer die Stimmung vorab nennt („nur die Bergkurven und den Tunnel-Blur“), führe den Survey mit gröberem Intervall durch, erstelle eine Kurzliste nur dieser und kodiere nur die wenigen, die er möchte – das verkürzt einen 20-minütigen Durchlauf auf wenige Minuten.
  • Nichts erfinden. Gib nur an, was ein Sample-Frame tatsächlich zeigt. Wenn du unsicher bist, ob ein 1-2s-Ereignis existiert, taste diesen Abschnitt dichter ab, bevor du es behauptest.
  • Windows-Schriftartenpfad ist in den Skripten fest codiert (C:/Windows/Fonts/...); auf anderen Betriebssystemen anpassen.

Individual skills in this repo

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

Verwandte Skills