Communitygithub.com

Film-Still-Finder

Wandelt "Ich brauche ein Standbild von zwei Menschen, die nach einem Streit schweigend dasitzen" in eine echte, quellenbelegte Bilddatei um. Funktioniert mit jedem KI-Agenten, jedem Betriebssystem – ohne Anmeldedaten.

Was ist Film-Still-Finder?

Das **Movie-Still-Finder**-Skill ist ein Werkzeug für KI-Agenten (z.B. Claude Code, Cursor, Codex), das die mühsame Aufgabe, exakte Film-Standbilder zu finden, automatisiert. Es löst das Problem, dass es keine zentrale, natürliche-Sprache-API gibt, indem es eine **Pipeline orchestriert**: Faktencheck, Quellenwahl, Batch-Download, visuelle Auswahl per KI-Modell, Zuschneiden von Untertiteln und finale Auslieferung mit Herkunftsnachweis. Unterstützt werden macOS, Linux, Windows – benötigt werden nur Python und eine funktionierende Internetverbindung. Der Skill ist **anmeldefrei**, respektiert Paywalls und protokolliert jede tote Quelle, damit der Agent sie nicht wiederholt anfragt. Profile für Minimal- oder Redaktionsworkflows steuern, ob ein Mensch oder ein vision-fähiges Modell die finale Bildauswahl trifft.

Funktioniert mit✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/Fitzfeichi/movie-still-finder/tree/master

In Ihrer bevorzugten KI fragen

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

Dokumentation

Movie Still Finder

Verwandle „Ich brauche ein Standbild von zwei Menschen, die nach einem Streit schweigend dasitzen“ in eine echte, quellenbelegte Bilddatei. Jeder KI-Agent, jedes Betriebssystem – keine Anmeldedaten erforderlich.

1. Lies dies zuerst: Was tatsächlich möglich ist

Es gibt keine kostenlose, öffentliche API, die einen Satz in natürlicher Sprache nimmt und den exakten Filmframe zurückgibt – vor allem keinen mit eingebrannten Dialog-Untertiteln. Die Jagd nach diesem „Allheilmittel“ verschwendet Zeit. Was funktioniert, ist eine Pipeline, bei der der Agent orchestriert und ein vision-fähiges Modell den Frame auswählt:

Anfrage -> Faktencheck -> Quelle wählen -> Batch-Download Kandidaten
        -> nummeriertes Kontaktblatt -> VISUELLE Frame-Auswahl -> hochauflösendes Original
        -> Untertitel zuschneiden / zusammensetzen -> visuelle Gegenprüfung
        -> Auslieferung + Quellenmanifest

Zwei nicht verhandelbare Konsequenzen:

  • Der visuelle Schritt kann nicht übersprungen werden. Das Erraten eines Frames anhand von Dateinamen oder Text allein scheitert. Zeige das Kontaktblatt einem vision-fähigen Modell (oder dem Menschen).
  • Zuerst Fakten prüfen. Weit verbreitete „Fakten“ über Filme sind oft falsch (siehe references/fact-check.md). Überprüfe die Zeile / Szene / Episode, bevor du suchst.

2. Schnellstart (Minimalprofil, die Standardeinstellung)

pip install -r requirements.txt
python scripts/still.py probe                       # Welche Quellen sind gerade erreichbar?
python scripts/still.py grab --out ./work \
  --page "https://movie-screencaps.com/avatar-2009/page/114" \
  --image-referer "https://movie-screencaps.com/" \
  --limit 40
# -> ./work/candidates/*.jpg, ./work/contact_1.jpg, ./work/manifest.json
# Zeige contact_1.jpg einem vision-fähigen Modell, notiere die Gewinnernummer, dann:
python scripts/still.py sheet ./work/candidates     # Nummeriertes Blatt neu generieren
python scripts/still.py crop ./work/candidates/p1_02.jpg --bottom 100 -o ./work/clean.jpg
python scripts/still.py deliver ./work --picks examples/sample-picks.json \
  --profile profiles/minimal.json --out ./delivery

Führe immer zuerst probe aus: Die Verfügbarkeit von Quellen ändert sich. Für eine vollständig offline Ausführung siehe Abschnitt D von examples/quickstart.md. --image-referer ist normalerweise die Site-Wurzel, nicht die Artikel-URL.

Für eine Dialogzeile liefert quote Film + Millisekunden-Zeitstempel:

python scripts/still.py quote "I see you" --title Avatar

Vollständige Anleitung: examples/quickstart.md. Befehlsreferenz: scripts/still.py --help.

3. Entscheide den Weg, bevor du das Netzwerk berührst

AnfrageErste WahlAusweichmöglichkeit
Szene / Stimmung („Stille nach einem Streit“, „zwei Menschen, die wegschauen“)Redaktioneller Artikel mit Bildunterschriften-Standbildern oder kuratierte Frames von FilmGrab (grab)Frame-für-Frame-Galerie + visuelle Auswahl
Eine zitierte Zeile / „der Frame, in dem X Y sagt“quote → Zeitstempel → Frame-Galerie → subtitle (als zusammengesetzt kennzeichnen)Screenshot mit nativen Untertiteln aus einem redaktionellen Artikel
Benötigt breites, sauberes, untertitelfreies Cover-ArtKuratierte Frames von FilmGrabcrop die unteren 95–100 px von einem Viewing-Screenshot abschneiden
Benutzer hat lokale VideodateienOptionale lokale semantische Suche, siehe references/optional-adapters.md—
Meme / 梗图 anstelle eines StandbildsOptionaler Anhang, references/meme-optional.md—

Führe probe zuerst aus. Es ist kostenlos, benötigt kein Login, und sagt dir, welche Quellen in deiner Umgebung 403 / nicht erreichbar sind, damit du keinen toten Host wiederholt anfragst.

4. Regeln, die für jeden Agenten gelten

  1. Keine Anmeldedaten. Fordere keine API-Schlüssel an, logge dich nicht im Namen des Benutzers ein, umgehe keine Paywalls oder Anti-Bot-Schutzmaßnahmen. Ein 403 bedeutet „Quelle wechseln“, festgehalten im Ausführungsprotokoll.
  2. Lade nur URLs herunter, die tatsächlich zurückgegeben wurden. Erfinde niemals eine Bild-URL. Eine erreichbare Seite bedeutet nicht, dass ihr Bild-CDN erreichbar ist: Überprüfe ein Bild, bevor du einer ganzen Galerie vertraust. Wenn Bilder nach einer Referer-Korrektur 403 ergeben, wechsle die Quelle – variiere nicht ständig die Header.
  3. Dokumentiere die Herkunft. Jedes ausgelieferte Bild benötigt Quellseite, direkte Bild-URL, Filmtitel/Jahr, und ob Untertitel zugeschnitten oder zusammengesetzt wurden. grab schreibt dies automatisch in manifest.json.
  4. Kennzeichne zusammengesetzte Untertitel. Wenn du einen Untertitel hinzufügst, der nicht im Originalframe war, gib dies in der Bildunterschrift an. Präsentiere ihn niemals als nativen Frame.
  5. Überprüfe, nimm nicht an, die Auflösung (standardmäßig >= 1000 px breit) und öffne die endgültige Datei mit einem Viewer, bevor du sie auslieferst.
  6. Respektiere das Profil. Verhalten über das oben Genannte hinaus (Mensch-im-Kreis-Auswahl, Dual-Folder-Auslieferung, obligatorischer Faktencheck, Cover-Crop-Vorschau) wird durch profiles/*.json gesteuert. Aktiviere keine zusätzlichen Regeln ohne Zustimmung.

5. Profile (optionales Verhalten)

Das Standardprofil profiles/minimal.json ist eine einfache, universelle Pipeline: Kandidaten finden, einen auswählen, mit Herkunftsnachweis ausliefern. Alles andere ist optional.

python scripts/still.py rules --profile profiles/editorial-wechat.json
python scripts/still.py deliver ./work --picks picks.json \
  --profile profiles/editorial-wechat.json --out ./delivery

editorial-wechat.json bündelt den Workflow eines menschlichen Redakteurs: nummerierte Vorschauen und menschliche Auswahl (niemals automatisch finalisieren), Dual-Folder-Auslieferung ohne Löschen von Kandidaten, obligatorischer Faktencheck, obligatorische Untertitel-/Quellenkennzeichnung und eine 2,35:1 Cover-Crop-Vorschau. Siehe profiles/README.md für das vollständige Schema.

6. Referenzindex (fortschreitende Offenlegung)

Lies nur das, was der aktuelle Schritt benötigt.

DateiLesen, wenn …
references/workflow.mdDu die vollständige End-to-End-SOP und Akzeptanzcheckliste benötigst
references/sources.mdDu eine Quelle auswählst oder eine Quelle nicht mehr funktioniert
references/pitfalls.mdEtwas fehlgeschlagen ist; enthält die bekannten toten Hosts und genauen Fehlermodi
references/image-ops.mdKontaktblätter, Zuschneiden, Untertitel-Zusammenstellung, Schriftarten
references/fact-check.mdJede Anfrage, die eine Zeile zitiert oder eine bestimmte Szene beschreibt
references/delivery.mdHerkunftsschema, Dual-Folder-Layout, Urheberrechtsgrenzen
references/meme-optional.mdDer Benutzer ein Meme anstelle eines Standbilds angefordert hat
references/optional-adapters.mdLokale Videobibliothek oder andere Login-/CLI-basierte Tools

7. Akzeptanz-Checkliste

  • Die Zeile / Szene wurde vor der Suche faktengeprüft
  • Ein nummeriertes Kontaktblatt wurde von einem vision-fähigen Modell oder dem Menschen angesehen
  • Das endgültige Bild öffnet sich korrekt und entspricht der Anfrage, nicht nur der Abfrage
  • Quellseite + direkte URL + Film/Jahr in manifest.json festgehalten
  • Zugeschnittene / zusammengesetzte Untertitel explizit gekennzeichnet
  • Breite >= 1000 px (oder die Abweichung wird angegeben)
  • Tote Hosts und Workarounds festgehalten, nicht stillschweigend wiederholt
  • Kein Kandidat wurde gelöscht; Zwischenprodukte bleiben erhalten

8. Umfangsbegrenzung

Dieses Skill findet und bereitet Bilder vor. Es veröffentlicht nichts, bearbeitet nicht das Manuskript des Benutzers, entscheidet nicht über das endgültige Cover im Namen des Benutzers (es sei denn, das Profil besagt, dass der Mensch bereits gewählt hat) und gewährt kein Recht zur Weiterverteilung von Film-Standbildern. Siehe references/delivery.md für die Urheberrechtsgrenze.

Verwandte Skills