Communitygithub.com

akachandan1/video-studio

Füge einem Sprechvideo stilvolle, wortsynchrone Untertitel und einen optionalen Aufmerksamkeit fangenden Hook hinzu. Der Benutzer liefert ein Video; du transkribierst es, zeigst jeden Untertitelstil auf dem eigenen Material, der Benutzer wählt einen Stil und Hook aus, und du renderst das untertitelte MP4.

Was ist video-studio?

Dieses Skill ermöglicht es einem KI-Agenten, einem hochgeladenen Sprechvideo vollständig automatisiert wortsynchrone Untertitel in verschiedenen Stilen hinzuzufügen – von knalligen Social-Media-Captions bis hin zu eleganten, redaktionellen Untertiteln. Der gesamte Workflow läuft lokal mit HyperFrames, ohne dass After Effects benötigt wird. Der Agent transkribiert das Video mit WhisperX, zeigt dem Benutzer alle verfügbaren Stile als Vorschau auf dem eigenen Video an und lässt ihn einen auswählen. Optional kann ein auffälliger Hook (ein kurzer, überraschender Satzanfang) generiert und eingebaut werden. Danach wird das Video mit den gewählten Einstellungen gerendert und als MP4 ausgegeben. Das Skill unterstützt auch Nachbearbeitung (Farbkorrektur, Rauschunterdrückung, Musik, Trimmung) und erlaubt flexible Anpassungen wie Schriftgröße, Position oder Farben. Es ist für Plattformen wie Claude Code, Cursor und Codex geeignet, die auf HyperFrames basieren.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/akachandan1/video-studio/tree/HEAD/.claude/skills/caption-video

In Ihrer bevorzugten KI fragen

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

Dokumentation

Ein Video untertiteln

Der Benutzer gibt ein Sprechvideo vor. Er wählt aus dem Untertitel-Stilkatalog, der auf seinem eigenen Material als Vorschau angezeigt wird, und du lieferst das untertitelte MP4. Alles läuft lokal mit HyperFrames. After Effects wird nie benötigt.

Kit: .claude/skills/caption-video/kit/ innerhalb des Studio-Repos. Projekte werden in videos/captions/<name>/ erstellt und fertige Videos landen in out/captions/<name>.mp4 (beides relativ zum Studio-Root).

Vom Studio-Root aus setze K="$PWD/.claude/skills/caption-video/kit" und führe python3 "$K/caption.py" … aus (Pfade in Anführungszeichen; Ordner können Leerzeichen enthalten). Verwende das Studio-Venv-Python (.venv/bin/python), falls numpy/scipy im System-Python fehlen – setup/setup.sh erstellt es.

Ablauf

1. Das Video holen

Wenn kein Videopfad angegeben wurde, frage nach einem. Prüfe, dass es existiert und eine sprechende Person enthält. Führe aus:

python3 "$K/caption.py" new "<Videopfad>" <Kurzname>

Dies kopiert das Video, kodiert es in H.264 um und transkribiert es Wort für Wort mit WhisperX. Der erste Durchlauf nach einer Weile kann eine Minute dauern. Lange Videos benötigen ungefähr Echtzeit ÷ 4.

2. Das Transkript anzeigen

Gib das Transkript aus der Befehlsausgabe in einem lesbaren Block aus. Weise auf wahrscheinliche Fehler hin, insbesondere Markennamen und Fachjargon (Produktnamen, „HyperFrames“, Akronyme), und frage den Benutzer, ob er sie bestätigen oder korrigieren möchte. Korrekturen kommen beim Bauen in --fix "falsch=richtig,…". Wenn das Transkript Kauderwelsch ist oder das Audio keine Sprache enthält, brich ab und sage das. Erfinde keine Wörter für Untertitel.

3. Jeden Stil auf ihrem Material zeigen

Führe python3 "$K/caption.py" styles für die Liste aus und python3 "$K/caption.py" preview <name> für das visuelle Blatt. Das Blatt liegt unter videos/captions/<name>/previews/styles.png. Sieh es dir selbst an, sende es dann mit SendUserFile (Anzeige render). Daneben gib die nummerierte Liste mit der „geeignet für“-Zeile jedes Stils:

  1. Lime Hook: der Vorlagen-Look (Anton-Großbuchstaben, limettengrünes gesprochenes Wort)
  2. Karaoke Pop: große 2-Wort-Ausbrüche, gelbes gesprochenes Wort
  3. One Word: ein riesiges Wort nach dem anderen
  4. Clean Box: dunkler Text auf weißer Karte, Textmarker auf dem gesprochenen Wort
  5. Editorial: ruhige Satzschreibung, Schlüsselwörter in kursiver Serife
  6. Subtitle: kleine vollständige Satzuntertitel
  7. Neon: cyanfarbenes Leuchten auf dem gesprochenen Wort

Empfehle einen in einer einzigen Zeile basierend auf dem Inhalt: Hype oder Social → 1 oder 2, Erklärvideo oder Werbung → 4, Gründergeschichte oder Premium → 5, Interview oder Podcast → 6, Tech oder KI → 7. Frage dann, ob der Benutzer eine Nummer wählen möchte. Wenn sich der Katalog in caption.py geändert hat, gib das aus, was styles ausgibt, anstatt dieser Kopie.

4. Hook (optional)

Schlage 3 Hooks vor, die aus dem tatsächlichen Gesagten des Sprechers stammen. Beginne mit der überraschendsten Zahl, dem Ergebnis oder Widerspruch, verwende 4–8 Wörter und behalte den Höhepunkt bei einem großen Wort. Formatiere jeden in Hook-Syntax und frage dann mit AskUserQuestion: drei Hook-Optionen plus „Kein Hook“ (der Benutzer kann auch einen eigenen eingeben).

Die Hook-Syntax verwendet eine Zeile pro |, jede beginnt mit ihrem Stil:

  • s: kursive Serifen-Einleitung („Wie“, „Warum“)
  • c: weiße kondensierte Großbuchstaben-Aufbau
  • b: das große umrahmte Höhepunkt-Wort oder die Zahl (1–2 Wörter)
  • l: limettengrüne Großbuchstaben-Wendung
  • r: kleine kursive Markierung

Beispiel: s:Wie|c:Ich erreichte|b:300k+|l:ohne Werbung|r:Aufrufe. Der Hook muss dem entsprechen, was das Video in den ersten 10 Sekunden liefert.

4b. Polieren (anbieten; ausführen, wenn der Benutzer nach Benotung, saubererem Audio, Trimmen oder Musik fragt)

python3 "$K/polish.py" <name> [--grade clean|cinematic|none] [--music calm|none] [--music-level 1.0] [--denoise 100]
  • Trimmen: Schneidet tote Luft vor dem ersten Wort und nach dem letzten weg (behält 0,3 s bzw. 0,9 s) und verschiebt das Transkript entsprechend.
  • Benotung: clean (Standard) sorgt für warme, gesunde Haut, sanften Kontrast und eine weiche Vignette. cinematic ist tiefer und kühler. Vergleiche vor der Auswahl einen Frame von jedem mit dem Original und schau ihn dir an.
  • Stimme: DeepFilterNet3-Rauschentfernung (~/.venvs/dfn, erstellt von setup.sh; niemals global installieren, es benötigt numpy<2), dann ein Hochpass, Präsenzanhebung, De-Esser und sanfte Kompression.
  • Musik: ein synthetisiertes ruhiges Klavier- und Pad-Bett. Bei Stufe 1 liegt es etwa 20 dB unter der Stimme in Pausen und etwa 25 dB unter ihr, während gesprochen wird. Verwende --music-level 0.6 für leiser oder 1.5 für präsenter.
  • Originale bleiben als source_orig.mp4 / transcript_orig.json erhalten, sodass das Polieren mit beliebigen Einstellungen wiederholt werden kann. Führe nach dem Polieren erneut build und render aus.
  • Erwähne Stolperer oder Fehlstarts in der Eröffnung („im Moment, im Augenblick…“). Das Wegschneiden erzeugt einen kleinen Sprungschnitt, frage also vorher nach.

5. Bauen, prüfen, rendern

python3 "$K/caption.py" build <name> --style <key> [--hook "…"] [--hot "Wort,Wort"] [--fix "a=b"]
cd "videos/captions/<name>" && npx --yes [email protected] check
python3 "$K/caption.py" render <name>
  • --hot listet Wörter auf, die in der Akzentfarbe bleiben. Wähle 2–5 Höhepunkt-Wörter; Zahlen sind automatisch hot.
  • check-Kontrastwarnungen im Moment des Hook-Ausblendens sind zu erwarten. Behebe echte Fehler vor dem Rendern.
  • Erstelle vor dem Rendern eines Hooks einen Schnappschuss (npx --yes [email protected] snapshot . --at 1.6 --no-end --describe false) und prüfe, dass er das Gesicht nicht verdeckt. Wenn das Gesicht hoch im Bild ist (sitzend oder amerikanische Einstellung), verschiebe den Hook auf die Brust mit --hook-y 0.43; die Schattierung folgt automatisch.
  • Ziehe vor dem Senden 3–4 Frames aus out/captions/<name>.mp4 und schau sie dir an. Untertitel dürfen Mund oder Augen nicht verdecken. Wenn doch, baue mit --cap-y neu (höhere Zahl = tiefer auf dem Bildschirm).
  • Seitlich gefilmtes Material (eine Kamera auf die Seite gedreht, ohne Rotationsmetadaten) zeigt die Person im Kontaktblatt auf der Seite liegend. Drehe es zuerst (ffmpeg -vf transpose=2 = 90° gegen den Uhrzeigersinn, oder transpose=1 = im Uhrzeigersinn; prüfe einen Frame) nach videos/_caption-inputs/ und führe dann new auf dieser Datei aus.
  • Sende das MP4 mit SendUserFile und gib den Pfad als Link an.

6. Überarbeitungen

Einstellungen bleiben in videos/captions/<name>/caption.json erhalten, eine Überarbeitung ist also nur build <name> --<option> … gefolgt von render <name>. Häufige Wünsche:

  • Anderer Stil: --style.
  • Größer oder kleiner: --size 1.2.
  • Höher oder tiefer: --cap-y 0.7.
  • Weniger Wörter pro Untertitel: --words 2.
  • Andere Farbe: --accent "#FF4D3D".
  • Hook ändern: --hook; --hook "" entfernt ihn.
  • Hook-Länge: --hook-dur 3.5.

Sie können das Projekt auch selbst in HyperFrames Studio öffnen mit cd videos/captions/<name> && npm run dev.

Setup-Fakten (falls etwas kaputtgeht)

  • Die Transkription ruft ~/.claude/skills/embedded-captions/scripts/transcribe.cjs mit HYPERFRAMES_ROOT=~/.hyperframes-root auf, eine HyperFrames CLI 0.8.147-Installation mit einem packages/cli/dist/cli.js-Symlink auf. Fehlt eines, installiere neu: npx hyperframes skills update embedded-captions, baue dann ~/.hyperframes-root neu (npm install [email protected] und symlinke node_modules/hyperframes/dist/cli.js nach packages/cli/dist/cli.js).
  • Schriftarten liegen in kit/fonts/ (alle SIL OFL) und werden in jedes Projekt kopiert.
  • setup/doctor.sh prüft jede Komponente unten; setup/setup.sh repariert sie.
  • Untertitel, die hinter der Person liegen, sind mit dem /embedded-captions-Workflow möglich, aber viel langsamer (etwa 4 Minuten pro 10 Sekunden) und benötigen HYPERFRAMES_ROOT. Biete es nur an, wenn danach gefragt wird.

Individual skills in this repo

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

akachandan1/video-studio

Painterly and illustrated animation — Kurzgesagt-style flat science explainers ("what's inside", scale, mechanisms), art-history styles (Van Gogh, Monet, Lichtenstein, Kusama, Matisse, cubism, ink wash, 8-bit, Roman mosaic, cave painting, Persian miniature…). Uses the huashu-art-motion canvas engine with CUSTOM scenes, renders MP4s, and assembles/scores them in HyperFrames. Also the claude-animation plugin for hand-drawn 2D.

akachandan1/video-studio

Fast CapCut-style chop-cut reel with a story — showreels, hype edits, launch teasers, "make it punchy". One canvas engine on a beat grid (punch-ins on cuts, flash frames, impact shakes, whip pans, speed ramps, freeze frames) rendered in HyperFrames, in 16:9 and 9:16 from one edit, with an original synthesized score locked to the cuts.

akachandan1/video-studio

Guided studio for narrated, fact-checked explainer videos in a Vox-style editorial look (bold collage, flat colour fields, marker annotations, big numbers) or a paper-diorama documentary look. One idea in → sourced script in 10-second blocks → style key + per-scene prompts (or free code-built collage scenes) → offline voiceover fitted to each block → HyperFrames cut with captions, animated number callouts and an original score, in 16:9 and/or 9:16. Use for "Vox-style video", "explainer", "animated explainer", "data-driven video", "make a video about X", "why does X happen".

akachandan1/video-studio

Apple / OpenAI-style product launch film or premium spec ad (30–60 s) — minimal supers, big product moments, signature transition, piano/pulse score, end-card lockup. Shots come from code (HyperFrames scenes), Higgsfield AI image→video, or real product footage, all assembled and rendered in HyperFrames. Includes the fold-cut builder (shots hinge shut/open on the centre line).

Verwandte Skills