Communitygithub.com

robertomanfroi/videos-opus

Bearbeitet eine vertikale Aufnahme (eine Person spricht in die Kamera) zu einem Reel, das aussieht, als wäre es „am Handy selbst geschnitten“ – Untertitel ein Wort nach dem anderen, rohe Screenshots über dem Kopf, kleine Titel, harte Schnitte, ohne Pausen oder Wiederholungen, maximal 90 s.

Was ist videos-opus?

Diese Skill ist für den Fall gedacht, dass die Skill `editar` an den Stil „celular“ delegiert oder die Nutzerin einen Stil wie „celular“, „cru“ oder „wie im Instagram-Editor geschnitten“ wünscht. Sie produziert vertikale Videos (1080×1920, max. 90 s) mit einer Wort-für-Wort-Legende, echten Screenshots der Nutzerin über dem Kopf, kleinen weißen Titeln, harten Schnitten (ohne Fade, Zoom oder Motion Graphics) und vollständigem Entfernen aller Atempausen und Füllwörter. Die Skill hat eigene Regeln für Schnitt, Geschwindigkeit und Workflow – insbesondere nutzt sie den Launcher `$K`, um portable Tools zu steuern, und durchläuft neun Schritte von der Projekterstellung über die Schnittauswahl, Transkription, Print-Verarbeitung bis zur finalen Komposition und Auslieferung. Unterstützt wird die Erstellung von Reels, die absolut „handgemacht“ und nicht wie von einer Agentur oder KI wirken sollen; für andere Stile (Editorial, Erklärend, Anzeige) gibt es separate Skills.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/robertomanfroi/videos-opus/tree/HEAD/kit/.claude/skills/estilo-celular

In Ihrer bevorzugten KI fragen

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

Dokumentation

Stil Celular (Handy-Stil)

Die einzige Regel: Wer zuschaut, muss das Gefühl haben, dass die Creatorin selbst im Instagram-Editor auf dem Handy geschnitten hat. Es darf nie nach Agentur oder KI aussehen. Im Zweifel: weniger, roher, kleiner. Hübsche Motion Graphics sind hier ein Fehler.

Bevor du beginnst, lies ../perfil-criadora.md und lade (oder erstelle) das perfil.json im Stammverzeichnis.

Visuelles – nicht verhandelbar

ElementRegel
ScreenshotsEchte Screenshots aus dem Ordner „Meine Screenshots“ der Creatorin (Profilkopfbereich, Insights, Likes/Kommentare/Speicherungen, Aufrufe, DMs, Kommentare, Beiträge). Roher Zuschnitt: rechteckig, kein Rahmen, kein Schatten, keine Umrandung, keine abgerundete Karte. Über dem Kopf.
Text über dem KopfTitel-Schriftart (.tit), weiß, klein – Titel 48–70 px, Labels 40–48 px bei 1080 Breite. Linksbündig am linken Rand des Screenshots ausgerichtet. Akzentfarbe (.y) nur bei einem gelegentlichen Wort. Sans (.sans) nur für Labels wie „Schlecht / Gut / Viral“.
SchattenNur wenn die Wand dahinter hell ist (.sh). Niemals ein Kasten, Hintergrund oder Glas hinter dem Text.
BewegungKeine. Elemente erscheinen und verschwinden durch harten Schnitt (show()/hide()). Kein Fade, kein Slide, kein Zoom, kein Hüpfer.
EmojisEchte Zeichen in der Vorlage (✅ ❌ 🔥 ❤️ 👇 🚨 …); montar.mjs ersetzt sie durch Twemoji-Grafiken. Niemals Icons zeichnen.
UntertitelEin Wort nach dem anderen, 54 px, weiß mit weichem Schatten (niemals Kontur). Auf Brusthöhe zentriert, direkt unter dem Kinn (capTop in reel.json). Harter Schnitt Wort für Wort.
Dauerhafter TitelEin Thema-Titel kann über längere Abschnitte auf dem Bildschirm bleiben, während die Screenshots darüber wechseln.
ListenEmoji + Wort-Checklisten (✅ Untertitel / ❌ Titel), Element für Element beim gesprochenen Wort eingeblendet.
MockupsVermeiden. Echten Screenshot verwenden. Nur dann ein Mockup zeichnen, wenn kein Screenshot existiert UND die Creatorin darum bittet.

Schnittregeln

  • Kein Atmen und keine Pause: Alles unter −30 dB für ≥ 0,15 s wird entfernt (cortar.mjs macht das automatisch).
  • Entferne alle Wiederholungen, Fehlstarts und Neuansätze. Behalte die letzte, sauberste Version.
  • Der Transkriptor versteckt Wiederholungen und vertuscht Zeitpunkte. Nach dem Schnitt IMMER das clean.mp4 neu transkribieren und von Anfang bis Ende nach doppelten Sätzen, abgeschnittenen Wörtern und fehlenden Verben durchsuchen. So oft nachschneiden, bis es sauber ist.
  • Maximal 90 s, es sei denn, die Creatorin wünscht etwas anderes. Gib bei der Auslieferung an, was weggelassen wurde.
  • J/L-Cuts standardmäßig aktiviert (--jl 6 sanfter, --no-jl deaktiviert).

Geschwindigkeitsregeln (der PC der Creatorin kann langsam sein – sie gelten zusätzlich zu den obigen Schritten)

  • Die Transkription von novo-projeto.mjs erfolgt bereits mit --rapido (leichtes Modell, nur für die Schnittauswahl). Die Neotranskription von clean.mp4 (die für die Untertitel) verwendet das genaue Modell – führe sie einmal pro Schnittversion aus, nicht nach jeder Anpassung.
  • Überprüfe alle Schnittstellen in EINEM Aufruf (eine Modellladung): $K --em video-projects/<slug> node ../../$M/transcrever.mjs assets/clean.mp4 --janelas t1,t2,… (Zeiten auf der Timeline von clean). Niemals ein Fenster nach dem anderen.
  • Rendere keinen gesamten Entwurf nur, um Einzelbilder anzusehen. Verwende $K --em video-projects/<slug> hyperframes snapshot --at t1,t2,… -o snapshots (einmal pro Elementwechsel) und betrachte die PNGs. Rendere das Video EIN Mal, wenn die Snapshots stimmen. Nur auf Wunsch erneut rendern.
  • Der Encoder von raw.mp4 / clean.mp4 wird automatisch gewählt (NVIDIA / Intel / AMD / Apple, sonst CPU). Nicht ändern.
  • Vor jedem langsamen Schritt gibt eine kurze Zeile auf Portugiesisch an, was läuft und dass es einige Minuten dauern kann („Transcrevendo o vídeo — no seu PC pode levar uns minutos.“), damit die Wartezeit nie wie ein Absturz wirkt.

Ablauf (alle Befehle über den Launcher $K)

M=.claude/skills/_motor · K = der Launcher der Skill videos-opus: "<VO>\bin\node.exe" "<VO>\scripts\video.mjs" kit, wobei <VO> der Ordner der Skill videos-opus ist (der die SKILL.md enthält, die dich angewiesen hat, diese Anleitung zu lesen). Er fügt die portablen Programme zum Pfad hinzu und arbeitet im Arbeitsordner des Kits ($K pasta zeigt welcher; Projekte liegen in <pasta>\video-projects\<slug>). $K --em <unterordner> … führt innerhalb dieses Ordners aus. Kein npx, Python oder node direkt: alles läuft über $K.

  1. Projekt + schnelle Transkription: $K node $M/novo-projeto.mjs "<video>" <slug> .claude/skills/estilo-celular → video-projects/<slug>/ mit assets/raw.mp4 (1080×1920, 30 fps), assets/raw.json, assets/palavras.txt, Schriftarten und src/index.template.html. Der Slug ist kurz, klein, mit Bindestrichen (promo-engrene).
  2. Einrahmung: Erstelle einen Kontakt-Snapshot des raw ($K --em video-projects/<slug> ffmpeg -i assets/raw.mp4 -vf "fps=1/4,scale=180:-1,tile=12x1" -frames:v 1 assets/contato.png) und SCHAU: Wo ist der obere Kopfrand und das Kinn. Elemente leben zwischen y≈100 und dem oberen Kopfrand; Untertitel unter dem Kinn → schreibe reel.json im Stammverzeichnis des Projekts: {"capTop": <px>} (Standard 1380).
  3. Schnittauswahl: Lese assets/palavras.txt und schreibe assets/keeps.json ({"fps":30,"keeps":[{"from":0,"to":9.38,"why":"…"}]}). Jedes why erklärt auf Portugiesisch, was drin blieb und warum.
  4. Schnitt: Innerhalb von assets/: $K --em video-projects/<slug>/assets node ../../../$M/cortar.mjs → clean.mp4 + edit-decisions.json.
  5. Überprüfung: Im Stammverzeichnis des Projekts: $K --em video-projects/<slug> node ../../$M/transcrever.mjs assets/clean.mp4 assets/transcript.json --nomes "<Begriffe aus dem Profil>". Wiederholung oder abgeschnittenes Wort → zurück zu Schritt 3. Falsch erkanntes Wort → assets/caption-fixes.json ({"cloud":"Claude"}). $K --em video-projects/<slug> ffmpeg -i assets/clean.mp4 -af silencedetect=noise=-30dB:d=0.25 -f null - → es darf keine Pause übrig bleiben.
  6. Screenshots: Liste die Bilder aus dem pasta_prints des Profils (neueste zuerst) und SIEH dir jede Kandidatin an, bevor du sie verwendest. Schneide mit ffmpeg in assets/prints/ zu (-vf crop=w:h:x:y) und notiere die Herkunft in assets/prints/ORIGEM.md. Kein passender Screenshot → sag, welche Ansicht helfen würde, und arbeite OHNE Screenshot (sie kann später als Anpassung nachfordern). Erfinde niemals einen Screenshot.
  7. Komposition: Bearbeite src/index.template.html – Elemente im Block ELEMENTOS und Zeiten im Block TEMPOS. Zeiten ermittelst du mit $K --em video-projects/<slug> node ../../$M/ancoras.mjs "Satz" "anderer Satz" (Stammverzeichnis des Projekts) beim gesprochenen Wort. Nur harter Schnitt.
  8. Montage + Prüfung: $K --em video-projects/<slug> node ../../$M/montar.mjs → $K --em video-projects/<slug> hyperframes lint → Snapshots von jedem Elementwechsel ($K --em video-projects/<slug> hyperframes snapshot --at …) und SCHAU: Gesicht nie verdeckt, Text lesbar, Screenshot am Titel ausgerichtet. Dann rendern und ausliefern (über den Launcher, im Arbeitsordner des Kits): $K node $M/renderizar.mjs <slug> – prüft die Sperren, rendert im Hintergrund, validiert und kopiert bereits in prontos/. Ausgabe 3 = noch am Rendern: führe $K node $M/renderizar.mjs <slug> --esperar aus, bis FERTIG erscheint. Niemals $K --em video-projects/<slug> hyperframes render direkt oder prontos.mjs von Hand ausführen.
  9. Auslieferung: Antworte auf Portugiesisch, kurz: wo das Video liegt, was geschnitten wurde, verwendete Screenshots, was unklar blieb. Niemals veröffentlichen oder versenden.

Anpassungen nach der Auslieferung

„Nimm den Preisteil raus“ → bearbeite keeps.json, wiederhole Schritt 4–5, berechne mit ancoras.mjs alle ZEITEN von allem, was nach dem Abschnitt kommt, und wiederhole Schritt 8. „Untertitel weiter nach unten“ → reel.json und wiederhole Schritt 8. „Screenshot austauschen“ → nur Schritt 6–8. Niemals von Grund auf neu machen, was die Creatorin nicht geändert haben möchte.

Individual skills in this repo

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

Verwandte Skills