Eine Aufnahme kann mehrere kurze Clips liefern. Eine Abschrift entscheidet jedoch nicht, ob ein Ausschnitt den Zusammenhang wahrt, und ein Export mit 1080 × 1920 beweist keine gute Wiedergabe. Diese Anleitung organisiert Transkription, Auswahl, Schnitt, Untertitel und Rendering mit fünf manuell aufgerufenen Claude Code-Projekt-Skills. Eine Person genehmigt jeden Quellabschnitt und sieht jede fertige Datei vollständig an. Der Ablauf gilt für Videos, die Ihnen gehören oder die Sie ausdrücklich bearbeiten und teilen dürfen.

Dies ist ein dokumentationsgestütztes Rezept für macOS Terminal mit zsh. BIG CHANGE hat die Befehle nicht ausgeführt, privates Material nicht geprüft und die fünf Dateien nicht produziert. Prüfen Sie vorab die Hilfe der installierten Programme und Ihre tatsächlichen Medien. Das Titelbild illustriert konzeptionell die fünf zu prüfenden Hochformatvideos. Es zeigt keine echten Clips, Softwareausgaben oder einen BIG CHANGE-Test dieses Ablaufs.

Die große Veränderung

  • Was sich ändert: Claude Code-Projekt-Skills können eine lokale Videobearbeitung in fünf manuell gestartete Schritte aufteilen. Die vorgeschlagenen Übergabeprotokolle verbinden Quellzeitpunkte, genehmigte Schnitte, korrigierte Untertitel und fertige Dateien. Die Dokumentation belegt nicht, dass genau diese Kette erfolgreich ausgeführt wurde.
  • Warum es zählt: Ein Urheber mit erlaubtem Quellmaterial kann dem menschlichen Editor in jedem Schritt eine konkrete Entscheidung vorlegen, einschließlich der Frage, ob überhaupt fünf eigenständige Ausschnitte vorhanden sind. So lässt sich ein schwacher oder irreführender Schnitt vor dem Untertitelexport verwerfen.
  • Worauf zu achten ist: Ob ein Ergebnis geteilt werden darf, hängt weiterhin von Rechten, der Datenrichtlinie des gewählten Claude-Kontos und der vollständigen Sichtung jeder gespeicherten MP4-Datei ab. Ein bestandener technischer Dateitest entscheidet das nicht.

Vor dem Start

Sie brauchen eine lokale source.mp4 mit brauchbarem Ton, ausreichend Speicher, Claude Code-Zugang, eine funktionierende lokale whisper.cpp-Programmdatei whisper-cli samt sprachgeeignetem Modell sowie FFmpeg und ffprobe mit den benötigten Encodern und Filtern. Außerdem muss ein Editor Original und alle fünf Exporte prüfen können. Notieren Sie Claude Code-Konto und Datenrichtlinie, installierte Versionen, whisper.cpp-Commit oder Build, Modell-SHA-256 und Lizenz sowie Nutzungslimits. Claude Code kann ein gehostetes Modell verwenden, obwohl Transkription und Rendering lokal laufen. Gewähren Sie nur den durch Rechte und Kontorichtlinie erlaubten Zugriff auf Medien oder Abschriften. Die Skill-Anweisungen beschränken den Zugriff nicht. Die getrennten Werkzeugberechtigungen steuern Aufrufe. Je nach Einstellung können gewöhnliche Lesezugriffe ohne Rückfrage laufen. Prüfen Sie gezielt auch, was der Skill lesen kann, nicht nur seine geplanten Schreib- und Ausführungsschritte.

Legen Sie eine unveränderliche Quellkopie und rights.json in einen neuen vertrauenswürdigen lokalen Arbeitsordner. Das Rechteprotokoll muss Quell-SHA-256, Editor, erlaubte Ausschnitte und Folgeverwendungen, Genehmigungen für Sprecher, Musik und Bilder sowie Speicher- und Aufbewahrungsregeln nennen. Bei unklaren Rechten nicht fortfahren. Öffnen Sie Terminal in diesem Ordner, prüfen Sie pwdund erstellen Sie die Arbeitsordner:

Terminal
mkdir -p transcript clips captions shorts probes .claude/skills/video-transcribe .claude/skills/video-rank .claude/skills/video-cut .claude/skills/video-caption .claude/skills/video-vertical
command -v claude
command -v ffmpeg
command -v ffprobe
claude --version
ffmpeg -version
ffprobe -version
ffmpeg -hide_banner -h encoder=libx264
ffmpeg -hide_banner -h encoder=aac
ffmpeg -hide_banner -h filter=subtitles
ffmpeg -hide_banner -h filter=scale

Setzen Sie WHISPER_CLI und WHISPER_MODEL auf echte, in Anführungszeichen gesetzte absolute Pfade. Setzen Sie LANGUAGE auf den geprüften Sprachcode, etwa en nur bei englischem Ton. Bestätigen Sie die Modellunterstützung. Ein ausschließlich englisches .en -Modell deckt andere Sprachen nicht ab. Für gemischte oder nicht unterstützte Sprachen brauchen Sie zunächst einen geprüften Plan. Die whisper.cpp-CLI-Referenz dokumentiert -l, -m, -f, -osrt, -oj und -of; prüfen Sie diese Optionen in der Hilfe Ihres Builds. Aktivieren Sie die Übersetzungsoption nicht.

Terminal
WHISPER_CLI='/absolute/path/to/whisper-cli'
WHISPER_MODEL='/absolute/path/to/approved-model.bin'
LANGUAGE='en'
test -x "$WHISPER_CLI"
test -r "$WHISPER_MODEL"
"$WHISPER_CLI" --help
ffprobe -v error -show_entries format=duration:stream=index,codec_type,codec_name,width,height,sample_aspect_ratio -of json source.mp4

Ersetzen Sie Beispielpfade und Sprache vor jeder Ausführung. Prüfen Sie Quelldauer, Streams, Ausrichtung, Ton und freien Speicher. Bestätigen Sie libass-Unterstützung des installierten Filters subtitles sowie die Unterstützung durch scale für force_original_aspect_ratio, force_divisible_by und reset_sar. Fehlt eine Funktion, folgen Sie den Build-Anweisungen der Maintainer und wiederholen die Prüfung. Lassen Sie Untertitel nicht stillschweigend weg.

Fünf klar begrenzte Projekt-Skills erstellen

Speichern Sie im vertrauenswürdigen Projekt fünf getrennte .claude/skills/<name>/SKILL.md -Dateien. Jede braucht eigene Angaben für name, description, disable-model-invocation: truesowie vollständige Eingabe-, Aktions-, Ausgabe- und Stoppregeln. Rufen Sie sie manuell in dieser Reihenfolge auf: /video-transcribe, /video-rank, /video-cut, /video-caption, /video-vertical. Ergänzen Sie kein allowed-tools: Laut Claude Code erlaubt dieses Feld den aufgelisteten Werkzeugen während des Aufrufs die Nutzung ohne Rückfrage; es begrenzt den Skill nicht darauf. Behalten Sie die normalen Berechtigungen bei und prüfen Sie Zugriffe bewusst. Lesezugriffe können ohne Rückfrage erfolgen; Schreiben und Ausführen folgen den tatsächlichen Kontokontrollen.

Verwenden Sie die folgenden vollständigen Inhalte mit dem unten beschriebenen gemeinsamen Ablaufprotokoll. Skill-Text ist eine Anweisung an Claude Code, keine technisch erzwungene Zugriffsgrenze.

.claude/skills/video-transcribe/SKILL.md

Markdown
---
name: video-transcribe
description: Transcribe the authorized local source for the five-short workflow.
disable-model-invocation: true
---

Input: rights.json, immutable source.mp4, checked source probe, verified language and local whisper.cpp executable/model. Confirm matching source and model hashes, usable audio and permitted access before any command.
Action: From the checked run directory, confirm source.wav and both transcript output paths do not exist. Extract mono 16 kHz 16-bit PCM source.wav with explicit first-audio mapping and no overwrite. Continue to whisper-cli only after a zero exit and valid WAV readback; use the verified model and explicit language, SRT and JSON output, and translation off. Inspect both outputs, parse source-relative times, and compare representative passages and uncertain names or quotes against source audio. Record a nonzero exit or uncertain output as a manifest blocker before any next stage.
Output: transcript/source.srt and transcript/source.json, recorded hashes, corrections or marked uncertainties, tool and model identity in manifest.json.
Stop: Missing rights, changed inputs, absent audio, empty or malformed transcript, or unverified relevant speech. Do not upload, publish or overwrite accepted files; ask the editor to settle uncertainty.

.claude/skills/video-rank/SKILL.md

Markdown
---
name: video-rank
description: Suggest source moments for human selection of five distinct clips.
disable-model-invocation: true
---

Input: Checked source transcript and hash, immutable source hash and probe duration, rights.json, intended audience. Verify all identities and authorized transcript access.
Action: Suggest more than five moments with numeric source-second start/end, source words, surrounding context and editorial rationale. Treat ranking as a suggestion, never a viral forecast. Have the editor open each candidate in the original and check speaker, wording, facts, context and rights. Record exactly five distinct coherent approved intervals and a rejected-candidate log.
Output: approved-moments.json with order, source hash and five numeric bounds satisfying 0 <= start < end <= source duration.
Stop: Fewer than five permissible, meaningful moments, mismatched hashes, uncertain bounds or missing human approval. Do not invent a fifth excerpt.

.claude/skills/video-cut/SKILL.md

Markdown
---
name: video-cut
description: Cut the five approved source intervals into separate local clips.
disable-model-invocation: true
---

Input: Immutable source.mp4, source hash/probe and five human-approved intervals. Verify hashes and calculate each duration as end minus start.
Action: For each 01-05, confirm its unique output path is unused, then transcode the approved source-relative interval with input -ss, -t duration, explicit first video/audio mapping, libx264, AAC and -n. Continue only on zero exit and file readback. Probe streams and duration, inspect first and last frames, and have the editor watch each whole cut for boundaries, sync and context. Record the exact command and output hash. Any failure or uncertain write is a manifest blocker; never pass that clip to captioning.
Output: Five accepted numbered clips, individual probe records and links to approved intervals in manifest.json.
Stop: Wrong bounds, absent stream, drift, misleading context, output collision or uncertain command result. Read back the existing path first; correct bounds with human approval and use a new filename. Never overwrite or reuse an old clip hash.

.claude/skills/video-caption/SKILL.md

Markdown
---
name: video-caption
description: Create and check local captions from each accepted clip.
disable-model-invocation: true
---

Input: Five accepted clip hashes, verified language and local model identity. Reject stale clips or mismatched source links.
Action: For each actual numbered clip 01-05, verify its accepted hash and unused WAV/raw-SRT paths, then extract its own mono 16 kHz 16-bit PCM WAV with -n. Run whisper-cli only after zero exit and WAV readback, with the matching language and SRT output; translation stays off. Preserve raw SRT. Have the editor correct words, names, numbers, cue timing, overlaps and readability against the actual clip, then save a distinct .checked.srt. Use clip-local times, not source-offset cues. Record failures as blockers before rendering.
Output: Five checked SRTs with raw-ASR and exact clip hash links in manifest.json.
Stop: Any cue outside clip duration, uncertain speech, bad alignment or stale clip hash. Repair and replay before rendering; a recut requires matching new captions.

.claude/skills/video-vertical/SKILL.md

Markdown
---
name: video-vertical
description: Render and review five captioned 1080x1920 MP4s.
disable-model-invocation: true
---

Input: Five accepted clip hashes/probes, matching checked SRT hashes, rights record and a human-approved crop or framing plan for each clip.
Action: Check decoded orientation and sample aspect ratio. Choose even integer crop width, height and x/y for each clip; require positive dimensions, nonnegative offsets and a rectangle within the decoded frame. A fixed crop does not track motion. Verify unique output and probe paths are unused. From the established run directory, render each separately with crop, aspect-preserving scale, pad, clip-local subtitles, explicit video/audio mapping, libx264, yuv420p, AAC and -n. Continue only on zero exit and saved-file readback. Create probe JSON without clobbering an existing path, reopen the MP4 and have the editor watch its entire video and audio, checking cut context, every caption, framing, sync, facts and rights. Record any failure or uncertain output as a blocker.
Output: Five distinct accepted 1080x1920 MP4s, hashes, probe JSON, exact source/clip/SRT lineage and UTC human acceptance notes.
Stop: Unknown orientation, invalid crop, missing filter, collision, unreadable file, silent audio, cut-off text, wrong duration, bad context or failed full playback. Inspect uncertain existing outputs; revise to a new filename, probe and watch again. No upload or publishing.

Führen Sie eine einzige manifest.json für den Lauf. Pro Übergabe erfassen Sie Rechteprotokoll, unveränderliche Quell-SHA-256, Werkzeugversionen, Modell-SHA-256, Lizenz und Sprache, Ein- und Ausgaben samt SHA-256, genehmigte numerische Quellintervalle, genaue Befehle und UTC-Entscheidungen. Weicht eine benannte Datei oder ein Hash ab, stoppen Sie bis zur Klärung vor dem nächsten Skill.

Behandeln Sie jeden folgenden Shellblock als eigene Stufe in einem neuen zsh-Skript oder einer kontrollierten Shell, mit set -e , damit ein fehlgeschlagener Befehl die Stufe stoppt. Prüfen Sie vorab, dass jeder Ausgabepfad frei ist. Erfassen Sie Fehlercodes, fehlende Dateien oder unsichere Schreibvorgänge als Blocker im Manifest. Der nächste Skill muss Status und Ausgabehash lesen und darf einen fehlgeschlagenen Schnitt nicht akzeptieren, nur weil ein alter Clip existiert.

1. Die Quelle transkribieren

Die README der whisper.cpp-Maintainer erklärt, dass das aktuelle CLI-Beispiel 16-Bit-WAV benötigt. Führen Sie nach bestätigtem Quellton Folgendes im geprüften Projektordner aus. -n verhindert, dass FFmpeg eine bestehende WAV-Datei überschreibt.

Terminal
set -e
test ! -e source.wav
test ! -e transcript/source.srt
test ! -e transcript/source.json
ffmpeg -i source.mp4 -map 0:a:0 -ar 16000 -ac 1 -c:a pcm_s16le -n source.wav
test -s source.wav
"$WHISPER_CLI" -m "$WHISPER_MODEL" -f source.wav -l "$LANGUAGE" -osrt -oj -of transcript/source
test -s transcript/source.srt
test -s transcript/source.json

Bestätigen Sie, dass transcript/source.srt und .json existieren, zeitmarkierte Sprache enthalten und innerhalb der gemessenen Quelldauer bleiben. Hören Sie repräsentative Passagen und prüfen Sie unsichere Namen, Zahlen und Zitate im Original. Bewahren Sie eine korrigierte Abschrift oder ausdrücklich markierte Unsicherheiten auf. Bleibt Extraktion oder Transkription leer, prüfen Sie Quellstream, Programm, Sprache und Modellkompatibilität vor einer neuen Ausgabe unter eigenem Namen.

2. Fünf Stellen im Original auswählen

Rufen Sie /video-rank mit geprüfter Abschrift und Zielgruppe auf. Fordern Sie mehr als fünf Vorschläge an, damit der Editor schwache Ausschnitte verwerfen kann. Jeder Vorschlag braucht numerische Start- und Endsekunden ab Quellbeginn, gesprochene Worte, Kontext davor und danach und eine Begründung der eigenständigen Verständlichkeit. Öffnen Sie jedes Intervall im Original. Der Editor entscheidet, ob Sprecher, Wortlaut, visueller Kontext, Fakten und Rechte den Schnitt überstehen. Speichern Sie genau fünf verschiedene genehmigte Intervalle in approved-moments.json; einschließlich Reihenfolge, Quellhash und 0 <= start < end <= source duration. Eine Textpassage ist nur eine Orientierungshilfe. Zur engeren Aufgabe der Zeitpunktsuche siehe Die gesprochene Stelle vor der Videobearbeitung finden.

Enthält die Aufnahme keine fünf vertretbaren Stellen, stoppen Sie. Die Fünf-Dateien-Aufgabe bleibt unvollständig.

3. Genehmigte Intervalle schneiden

Rufen Sie /video-cutauf. Berechnen Sie für jedes Intervall DURATION = END - START aus den genehmigten numerischen Grenzen. Ersetzen Sie die Platzhalter in spitzen Klammern durch echte Zahlen; die Platzhalter sind nicht ausführbar. Wiederholen Sie dies mit clip-02.mp4 bis clip-05.mp4. FFmpeg dokumentiert Eingabesuche, Dauer, explizite Streamauswahl und Ausgabe ohne Überschreiben. Für die vorgesehenen Schnittgrenzen transkodieren Sie, statt Streams direkt zu kopieren.

Terminal
set -e
test ! -e clips/clip-01.mp4
ffmpeg -ss <START_SECONDS> -i source.mp4 -t <DURATION_SECONDS> -map 0:v:0 -map 0:a:0 -c:v libx264 -c:a aac -n clips/clip-01.mp4
test -s clips/clip-01.mp4

Prüfen Sie Streams und Dauer jedes tatsächlichen Clips, sehen Sie erstes und letztes Bild an und spielen Sie ihn vollständig ab. Erfassen Sie Hash und genehmigtes Quellintervall. Ein falscher Schnitt braucht neu genehmigte Grenzen und einen neuen Ausgabenamen. Bei Fehler oder Unsicherheit prüfen Sie bestehende Datei und Analyse vor einem neuen Versuch; verwenden Sie niemals denselben Namen erneut.

4. Untertitel an jedem tatsächlichen Schnitt korrigieren

Rufen Sie /video-captionauf. Transkribieren Sie jeden angenommenen Clip, da seine Untertitel bei Clipbeginn mit Zeit null starten müssen. Für Clip 01 lauten die Befehle:

Terminal
set -e
test ! -e captions/clip-01.wav
test ! -e captions/clip-01.srt
ffmpeg -i clips/clip-01.mp4 -map 0:a:0 -ar 16000 -ac 1 -c:a pcm_s16le -n captions/clip-01.wav
test -s captions/clip-01.wav
"$WHISPER_CLI" -m "$WHISPER_MODEL" -f captions/clip-01.wav -l "$LANGUAGE" -osrt -of captions/clip-01
test -s captions/clip-01.srt

Wiederholen Sie dies für die tatsächlichen zweistelligen Nummern 02 bis 05 mit getrennten Pfaden. Bewahren Sie jede rohe captions/clip-NN.srtauf. Der Editor vergleicht jede Untertitelzeile mit dem Clip, korrigiert Wörter, Namen und Zahlen, prüft Zeit und Lesbarkeit und speichert captions/clip-NN.checked.srt. Eine Zeile jenseits der Clipdauer blockiert das Rendering. Verknüpfen Sie jeden SRT-Hash mit dem Cliphash. Ändert sich der Schnitt, erzeugen oder prüfen Sie die Untertitel für die neue Datei erneut.

5. Neu einrahmen, rendern und alle fünf abnehmen

Rufen Sie /video-verticalauf. Prüfen Sie für jeden angenommenen Clip dekodiertes Bild, Ausrichtung, Pixel-Seitenverhältnis und Bewegung. Der Editor wählt pro Clip eigene gerade ganze Werte für CROP_W, CROP_H, CROP_X, CROP_Y. Das Rechteck muss im dekodierten Bild liegen. Ein fester Beschnitt folgt keiner Bewegung. Gehen wichtige Inhalte verloren, wählen Sie einen geprüften Skalierungs- und Randplan oder ändern den Schnitt. Unklare Rotation oder Koordinaten stoppen das Rendering. Das FFmpeg-Filterhandbuch beschreibt crop, scale, pad und den libass-basierten subtitles-Filter.

Setzen Sie im festgelegten Arbeitsordner CLIP auf die tatsächliche zweistellige Nummer und die vier Beschnittvariablen auf die genehmigten Ganzzahlen dieses Clips. Der Befehl ist eine Vorlage, kein getestetes Beispiel. Behalten Sie den gezeigten einfachen relativen Untertitelpfad bei. Sonderzeichen in Dateinamen brauchen eigenes Filtergraph-Escaping. Wiederholen Sie dies separat für 02 bis 05.

Terminal
set -e
setopt noclobber
CLIP=01
CROP_W=<CHECKED_EVEN_INTEGER>
CROP_H=<CHECKED_EVEN_INTEGER>
CROP_X=<CHECKED_EVEN_INTEGER>
CROP_Y=<CHECKED_EVEN_INTEGER>
test ! -e "shorts/short-${CLIP}.mp4"
test ! -e "probes/short-${CLIP}.json"
ffmpeg -i "clips/clip-${CLIP}.mp4" -map 0:v:0 -map 0:a:0 -vf "crop=${CROP_W}:${CROP_H}:${CROP_X}:${CROP_Y},scale=1080:1920:force_original_aspect_ratio=decrease:force_divisible_by=2:reset_sar=1,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,subtitles=captions/clip-${CLIP}.checked.srt" -c:v libx264 -pix_fmt yuv420p -c:a aac -n "shorts/short-${CLIP}.mp4"
test -s "shorts/short-${CLIP}.mp4"
ffprobe -v error -show_entries format=duration:stream=index,codec_type,codec_name,width,height,sample_aspect_ratio -of json "shorts/short-${CLIP}.mp4" > "probes/short-${CLIP}.json"
test -s "probes/short-${CLIP}.json"

Jede der fünf JSON-Analysen muss einen Videostream mit 1080 × 1920 und Pixel-Seitenverhältnis 1:1, einen Audiostream und eine positive, nach Encoding- oder Bildrundung zum genehmigten Schnitt passende Dauer zeigen. Fehlende oder unbekannte Werte bleiben ungeklärt. Die JSON-Ausgabe von ffprobe prüft Dateieigenschaften, keine Schnittqualität. Öffnen und sehen Sie jede MP4 vollständig an, im Vergleich zu Quellintervall, angenommenem Schnitt und geprüfter SRT. Prüfen Sie Satzgrenzen, Untertitel samt sicherer Position, Bildausschnitt bei Bewegung, Tonsynchronität, Fakten und Rechte. Erfassen Sie Annehmen, Überarbeiten oder Ablehnen mit UTC-Zeit im Manifest. Fünf angenommene Dateien, jeweils mit Quellhash, genehmigtem Intervall, Cliphash, geprüftem SRT-Hash und Analyse-JSON verknüpft, schließen die Aufgabe ab. Vier genügen nicht.

Grenzen und Wiederherstellung

Claude Code kann Tarif- oder API-Gebühren und Nutzungslimits unterliegen. Lokales Modell, Transkription, Transkodierung und Revisionen beanspruchen Speicher und Rechenleistung. Notieren Sie tatsächliche Gebühren, soweit das Konto sie zeigt; unbekannte Kosten sind nicht null. Für dieses Rezept wurden weder Geschwindigkeit, Genauigkeit, Untertitelqualität, Einsparung noch Beliebtheit gemessen.

Bewahren Sie Original und angenommene Artefakte auf. Bei fehlendem Modell, unbekannter Option, schlechter Abschrift, Renderfehler oder unklarem Schreibvorgang prüfen Sie zuerst genaue Eingabehashes und bestehende Datei. Beheben Sie die konkrete Ursache, geben Sie der Revision einen neuen Pfad und wiederholen Sie Analyse und vollständige Wiedergabe. Laden oder teilen Sie keinen fertigen Kurzfilm, bevor Inhalt und Rechte menschlich angenommen wurden.