Communitygithub.com

Portfolio-Reel

Erstelle ein ~30-sekündiges Portfolio-Intro-Video (1080p60 MP4) im Stil einer modernen Motion-Design-Vorlage (Template „Skill 2“) – komplett in Code gezeichnet, mit animierten UI-Elementen und Soundtrack. Ein professioneller, visuell ansprechender „Hire me“-Reel für Kreative, Freelancer und Entwickler.

Was ist Portfolio-Reel?

Portfolio-Reel ist ein Skill für den AI-Coding-Assistenten (Claude Code, Cursor, Codex), der in einem Durchlauf ein etwa 30-sekündiges, animiertes Portfolio-Intro-Video im MP4-Format erzeugt. Der Skill basiert ausschließlich auf einer Konfigurationsdatei (`promo.json`) und zeichnet jedes Bild programmatisch in einem Headless-Chrome – ohne Stockmaterial, KI-Video oder externe Vorlagendienste. Dies reduziert Abhängigkeiten und ermöglicht eine vollständige Kontrolle über das finale Rendering. Unterstützt werden zwei UI-Stile: der klassische, scrollende Portfolio-Look und eine moderne „App“-Ansicht mit Suchleiste, Dashboard, Karussell und Chat-Fenster. Der Skill ist plattformübergreifend unter Node.js, Python und ffmpeg nutzbar und erzeugt bei typischer Eingabe (Foto, Clips, Name) in etwa 2 Minuten ein fertiges Video inklusive Sounddesign und Tonspur – normalisiert auf -14 LUFS. Er eignet sich für Content Creator, Freelancer, Cutter, Designer und Entwickler, die ein professionelles, automatisiertes „About Me“- oder Showreel-Video erstellen möchten.

Funktioniert mit~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/chydevit/Skill-create-videos/tree/HEAD/plugins/video-skills/skills/portfolio-reel

In Ihrer bevorzugten KI fragen

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

Dokumentation

Portfolio-Reel (Template: „skill 2“)

Dieser Skill erstellt aus einer einzigen Konfigurationsdatei promo.json ein fertiges ~30 s langes Intro-Reel. Eine Canvas-Szene zeichnet jedes Bild in einem Headless-Chrome und spielt die Clips des Benutzers in den Karten ab. Es gibt kein Stockmaterial, kein KI-Video und keinen Vorlagendienst. Der Aufbau folgt dem Timing des Referenz-Reels skill2.MP4 (ein TikTok-Creator-Intro). Es werden nur die Techniken kopiert, niemals dessen Filmmaterial, Wortlaute, Namen, Handles oder Wasserzeichen.

Zeit (3 Abschnitte)Szene
0–2,3 sSenfgelber Farbverlauf, zwei große weiche Kreise gleiten herein; hook[0] tippt Buchstabe für Buchstabe, dann erscheint hook[1] groß und fett
2,3–2,9 sEin weißer Kreis wischt von unten nach oben; der Avatar erscheint als kleine gelbe Scheibe
2,9–6,4 sProfilheld auf Weiß: Der Avatar wächst zu einem großen Kreis (mit gelbem Ring oder gelbem Duotone), dann die umrandete badge-Pille mit einem Stern, hello Wort für Wort, roles getrennt durch dünne Balken und eine schwarze button-Pille mit ↑ in einem weißen Kreis. Der Pfeil schießt nach oben und die Seite scrollt
6,4–20,5 sEine Seite pro Abschnitt (je 4,6 s) auf hellem Grau mit weichen Fensterlicht-Schatten: ein Verlaufstitel, dann 1–3 abgerundete Karten, die dem Scrollen folgen und schweben. Videos laufen, Bilder zoomen langsam. Porträtkarten stehen hoch, Landschaftskarten breit, gemischte Reihen staffeln
20,5–24,4 sEin gelbes Licht strahlt von links unten zurück zum Farbverlauf; cta[0], dann cta[1], Wort für Wort
24,4–30,3 sEine schwarze Profilkarte erscheint aus einem Punkt (Avatar oder logo, handle, name, bis zu 3 zählende stats, zwei Schaltflächen). Ein Cursor klickt die erste Schaltfläche, die grau wird und clicked anzeigt, dann dreht sich die Karte in 3D auf ihre back-Seite

Die Länge beträgt etwa 30 s mit 3 Abschnitten, je nach Abschnitt 4,6 s mehr oder weniger und etwas länger bei langen Texten.

Zwei UIs: "ui": "classic" (Standard) oder "app"

app behält denselben Zeitplan und dieselben Texte bei, aber jede Szene ist ein moderner App-Bildschirm auf einem sich bewegenden Mesh-Verlauf:

Zeitapp-Szene
hookEine Glas-Suchleiste tippt hook[0] hook[1]; ein Dropdown mit Ergebnissen listet die Person (Avatar, Name, Rollen) und die ersten beiden Abschnitte auf; der Cursor klickt auf die Person
heroDas angeklickte Ergebnis wächst zu einem Bento-Dashboard aus Glas-Kacheln: eine große Foto-Kachel (Name und Handle), die Begrüßungskachel (Badge, hello mit dem Textmarker, Rollen-Chips), eine Statistik-Kachel mit den profile.stats, eine button-Kachel, auf die der Cursor klickt, und eine Kachel, die die Abschnitte auflistet
sectionsEin horizontales Karussell, eine Folie pro Abschnitt: eine große Zahl, der Titel, „n Arbeiten“, ein Fortschrittsbalken oben. Arbeiten werden in Geräte-Mockups angezeigt: Landschafts-Clips in einem Browserfenster (Ampeln, Adressleiste site/abschnittstitel), Porträt-Clips in einem Telefon, die auf der rechten Seite kaskadieren
ctaEin Chat-Bildschirm: tippende Punkte, dann kommen cta[0] und cta[1] als Nachrichtenblasen von der Person an (die letzte in der Akzentfarbe)
cardEine Profilkarte mit einem Verlauf-Cover-Banner, überlappendem Avatar, Handle, Name, zählenden Statistiken und zwei Pillen-Schaltflächen; der Cursor klickt „Folgen“ (Konfetti), dann dreht sie sich zu einem QR-Code von profile.qr / profile.back (erstellt mit qrencode – falls installiert), mit der Adresse darunter

site (optional) legt die Adresse fest, die in den Browser-Mockups angezeigt wird, standardmäßig profile.back. Jeder Stil und jeder Effekt funktioniert in beiden UIs (in app werden orbit und ticker nicht verwendet).

Stile und Effekte

"style" wählt ein Farbthema. Dunkle Stile erhalten dunkle Seiten mit einem feinen Raster und leuchtenden Karten anstelle von Fensterschatten.

StilLook
mustard (Standard)Die Vorlage: Senfgelber Verlauf, weißer Held, hellgraue Seiten, schwarze Pille, blaue Schaltflächen
midnightIndigo bis Schwarz, Neon-Cyan und -Violett, dunkle Seiten, leuchtende Karten
sunsetPfirsich bis Rosa, warmweiße Seiten, Korallentitel und -schaltflächen
amberGold auf Fast-Schwarz (ein Entwickler- oder Portfolio-Look), dunkle Seiten, Bernsteinfarbene Pille und Schaltflächen
mintMinze bis Teal, weiße Seiten, grüne Titel

"colors" überschreibt eine einzelne Farbe des Stils.

Alle Effekte sind standardmäßig aktiviert. Schalte einen mit "effects": {"ticker": false} aus, oder alle mit "effects": false für den schlichten Vorlagen-Look:

EffektWas er tut
bokehWeiche Lichtpartikel steigen auf den Verlaufsszenen auf
shineEin Lichtschweif über der großen Frage, der Schaltfläche und der Profilkarte, plus Echo-Ringe auf dem Kreis-Wipe und ein Pulsring auf der Schaltfläche
markerEin Textmarker wischt unter dem Namen (text.highlight wählt die Wörter oder alles nach dem zweiten Wort)
orbitEin gestrichelter Ring mit drei Punkten dreht sich um den Avatar
blurVertikale Bewegungsunschärfe beim Scrollen der Seite
labels„01 / 03“ über jedem Abschnittstitel und einem Unterstrich, der sich einzeichnet
glareEine diagonale Blendung überquert jede Arbeitskarte, nachdem sie gelandet ist
tickerGroße umrandete Tags scrollen hinter den Schlusszeilen (text.tags, ansonsten die Rollen und Abschnittstitel)
confettiEin Konfetti-Ausbruch in den Farben des Stils, wenn die Schaltfläche geklickt wird
grainFilmkorn und eine sanfte Vignette über allem

Damit der Benutzer wählen kann, rendere dieselben 4 Momente in jedem Stil (ein „Style-Board“) vor dem vollständigen Render. Verwende render.mjs --times auf Kopien von promo.json, die sich nur im style unterscheiden.

Voraussetzungen: ffmpeg, Node 22+, Google Chrome oder Chromium (CHROME_PATH) und ein Python mit numpy und scipy (PROMO_PY; promo.sh findet eines von selbst).

Workflow

1. Sammeln, was der Reel braucht

  • Avatar: ein Porträtfoto, Gesicht und Schultern. Gib crop: [x, y, size] (Pixel) an, damit das Gesicht im Kreis sitzt, und überprüfe die Vorschau. Bei einem unruhigen oder hellen Hintergrund erzeugt "avatarStyle": "duotone" eine dunkle Figur auf Gelb, wie in der Vorlage.
  • Abschnitte (1–4): jeweils ein kurzer Titel (2–4 Wörter) und 1–3 Clips: Videos ({"file", "at"}, 5,5 s ab at werden in der Karte abgespielt) oder Bilder. Verwende die besten Arbeiten des Benutzers und mische Hoch- und Querformat für Abwechslung.
  • Texte: Halte sie kurz.
    • hook: eine kleine Zeile und eine große 1–2 Wort-Frage.
    • badge: ein Slogan von bis zu etwa 50 Zeichen.
    • hello: „Hello, I'm …“.
    • roles: 2–4 kurze Rollen.
    • button: das Schaltflächen-Label.
    • cta: zwei Schlusszeilen.
  • Profilkarte: handle, name, bis zu 3 stats, buttons, clicked und back. Verwende ausschließlich echte Zahlen (vom Benutzer, seiner Website oder seinem Profil). Ein String-Wert (wie "2023") wird ohne Zählen angezeigt.
  • Sprache: Für Khmer setze "lang": "km" und schreibe natürliches Khmer. Kantumruy Pro ist enthalten.
  • Optional: style, effects, logo (innerhalb des Kreises der Karte), colors, text.highlight, text.tags, music (+ musicStart), sfxDir.

2. Projekt schreiben

Erstelle einen Projektordner und kopiere examples/creator-reel.json als promo.json hinein, bearbeite es dann. Jeder Schlüssel ist in references/config.md beschrieben. Pfade sind relativ zum Projektordner.

3. Vorschau (etwa 10 s)

<skill>/scripts/promo.sh <project>/promo.json --preview

Dies schneidet die Clips und rendert etwa 13 Standbilder nach out/<name>-preview.png. Lies es und überprüfe:

  • den Avatar-Beschnitt;
  • dass keine Zeile gequetscht ist (lange Texte werden verkleinert);
  • dass die Karten jedes Abschnitts gute Frames zeigen: ändere at;
  • die Zahlen der Profilkarte.

4. Rendern (etwa 2 Minuten; im Hintergrund ausführen)

<skill>/scripts/promo.sh <project>/promo.json --jobs 4

Die Phasen laufen in dieser Reihenfolge: assets, plan, render, mix, encode. --from mix mischt den Ton neu, ohne die Frames erneut zu rendern.

Ausgabe: out/<name>-1080p60.mp4 und out/<name>-contact.png.

5. Vor der Übergabe prüfen

  • Lies das Kontaktblatt.
  • ffprobe sollte die Länge anzeigen, die build/cues.json angibt. Der Mix ist auf -14 LUFS / -1 dBTP normalisiert.
  • Du kannst das Ergebnis nicht hören, also sag dem Benutzer, was du geprüft hast, und bitte ihn, zuzuhören.

Feinabstimmung

  • Timing: plan() in scripts/scene.mjs. SEC ist die Länge eines Abschnitts und SCROLL die Länge eines Seiten-Scrolls. Die Cues in buildCues() folgen automatisch.
  • Look:
    • Themes sind STYLES und Effekte sind EFFECTS in scene.mjs; Farben können auch von colors kommen.
    • Das Karten-Layout ist layout().
    • Die Fensterschatten sind buildShade().
    • Der Flip ist drawFlip(), Streifen mit Perspektive.
  • Sound: SFX in scripts/audio.py listet die Dateinamen auf, die in sfxDir versucht werden. make_bed() ist der Lo-Fi-Beat.

Individual skills in this repo

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

brand-loop

Make a seamless looping background video of glossy 3D liquid blobs in a brand's colours. Two colour families float slowly in zero gravity, each merging and pinching off like mercury, on a soft off-white studio backdrop with a warm gradient, faint ripple rings, soft drop shadows and shallow depth of field. It renders in Blender EEVEE at 4K 60 fps as H.264, HEVC 10-bit and 1080p, and the last frame flows into the first. Use it whenever the user wants a looping background, brand backdrop, abstract 3D or liquid loop, motion background for a website, stream, event screen or presentation, a "seamless loop", or a background for their logo or text, or types /brand-loop.

brand-promo

Make a ~50-second dark, kinetic studio showreel / promo video from a brand's own videos, its logo animation and a few lines of text. It has a typed intro, a ring of 3D cards, a glitchy title drop, and 3-5 spotlights (each work on a tilted card or a phone, playing its own sound). Then "Your story… next.", a 3D rush of clips, and the liquid logo reveal with the name, chips and website. It comes with an original synthesised score, narration (VoxCPM2, English or Khmer) and sound effects, as a 1080p60 MP4. Use it whenever the user wants a showreel, studio reel, portfolio video, agency or brand promo, "demo video" of their work, a promo like a template video, or a Khmer version of one, or types /brand-promo, even if they only hand over a few videos and a logo.

generate-logo

Turn any logo image (PNG, JPG, WebP or SVG) into finished 5-second animated logo reveals in five styles (liquid, neon, bounce, lens, rise). Each comes as a 1080p60 MP4 with synthesised sound effects, a transparent WebM (optional ProRes 4444 .mov) for video editors, and a keyframe sheet. It can add a two-tone wordmark, render square or vertical versions for social media, and build a bespoke style for a particular logo. Use it whenever the user wants a logo animation, animated logo, logo reveal, intro, outro or sting, motion logo, a brand intro for a video, or "make my logo move", or types /generate-logo, even if they only attach a logo and say "animate this".

saas-promo

Make a kinetic SaaS / startup / product / developer promo video (1080p60 MP4) in one fixed, fast motion-design style: an ~11-second teaser, or a ~50-second version with chapters (one per product or project) cut on the beat of the user's own song. It opens with glyph flashes and purple/lime neon shapes, then types a word with a cursor while a 3D swirl of your screenshots orbits it. Cards slide onto a painted meadow and build a bento wall with words typing inside them, and the camera zooms into a card. A glowing gradient orb then reveals the headline word by word, and a glitch drops into a long-exposure flower on a blue-to-orange sky with flying symbols and "From … / To …". Every frame is drawn in code, with typing, whoosh, riser and impact sound effects and a synthesised ambient bed or your own song (its tempo and drop are measured, so every cut lands on the beat), mixed to -14 LUFS. English or Khmer. Use it whenever the user wants a SaaS promo, product or app teaser, a developer or...

Verwandte Skills