Communitygithub.com

LIUFelix2004/github-promo-video-skill

Erstelle ein ≤28-sekündiges Video-Bewerbungsprofil für jeden GitHub-Account: echter Hauptseiten-Screenshot als Cover (Querschnitt flach liegend, von fern nach nah dynamisch aufrichtend) + weiße GitHub-Repo-Karten (Star-Zahlen scrollen, README-Zusammenfassungen gleiten einzeln ein) + Notizstreifen-Ende. Sämtlicher Text wird lokal gerendert, null KI-generierter Text, null Rechtschreibfehler. Geeignet für Anfragen wie „Mach ein Werbevideo für diesen GitHub“/„Lebenslauf-Video“/„Gleiches Video“.

Was ist github-promo-video-skill?

Dieses Skill erstellt automatisiert ein kurzes, professionelles Video-Portfolio (≤28 Sekunden) für jeden GitHub-Account. Es nutzt dabei ausschließlich lokale Rendering-Techniken (PIL, numpy, ffmpeg) und vermeidet jegliche KI-Textgenerierung, um Rechtschreibfehler und Halluzinationen auszuschließen. Der Video-Ablauf besteht aus einem dynamischen Hauptseiten-Screenshot (Cover), drei weißen GitHub-Repo-Karten mit animierten Star-Zahlen und README-Zusammenfassungen sowie einem Notizstreifen-Ende mit Avatar. Das Skill unterstützt die Plattformen Claude Code, Cursor und Codex und erfordert Python 3, Pillow, numpy, ffmpeg sowie die Schriftart Noto Sans CJK. Der Benutzer muss lediglich den GitHub-Benutzernamen angeben, ein config.json mit echten Daten befüllen (via Skripte und manuelle README-Analyse) und die Render-Pipeline ausführen. Das Ergebnis ist ein fehlerfreies, personalisiertes Werbevideo, das weder KI-Halluzinationen noch fremde Logos enthält.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add LIUFelix2004/github-promo-video-skill

In Ihrer bevorzugten KI fragen

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

Dokumentation

GitHub-Bewerbungsvideo (Gleiche Pipeline)

Video-Struktur (Gesamtlänge ≤28s, Standard ca. 24,5s):

  1. Dynamisches Cover (5,5s): Echter Screenshot der GitHub-Seite des Zielaccounts, mittels kontinuierlicher Perspektiventransformation von „Querschnitt flach liegend, weit entfernt“ zu „aufrecht geneigt, nah“ – heller Farbverlauf auf dem Boden + weicher Schatten, weißer Blitzübergang.
  2. Projektkarten ×3 (jeweils 6–6,5s): Weiße GitHub-Repo-Karten im gleichen Layout – Repo-Name, Untertitel, rote/blaue große Zahlen, die von 0 auf die tatsächliche Star/Fork-Anzahl hochzählen, 4 README-Zusammenfassungen gleiten einzeln ein, untere Technologie-Tags blenden ein. Karte 1 und 2 sind die beiden Projekte mit den meisten Stars; Karte 3 ist eine Übersicht „Weitere Projekte“ (große Zahl = Anzahl der Repos / Beiträge im letzten Jahr).
  3. Notizstreifen-Ende (4,5s): Notizstreifen werden einzeln eingefügt (Benutzername / @github / Spitzname / Vorzeigeprojekt · Star-Anzahl, letzter Streifen roter Hintergrund), rechtsseitig großes rundes Avatar (pinker Rand) zoomt herein.
  4. Musik: Vom Benutzer bereitgestellte Audiodatei (siehe Hinweise), kein Voice-Over.

Harte Regeln

  • Cover muss ein echter, erfasster Hauptseiten-Frame sein: Verwende scripts/capture_frame.py zur eigenen Aufnahme oder einen Headless-Browser-Screenshot. Es ist verboten, KI zur Generierung/Neuerstellung der Hauptseite zu verwenden (dies würde Repo-Namen erfinden, Daten fälschen) oder Screenshots anderer Personen ohne Angabe als Cover zu verwenden.
  • Der gesamte auf dem Bildschirm erscheinende Text stammt ausschließlich aus der Konfiguration: Zahlen, Repo-Namen, Zusammenfassungszeilen werden alle lokal gesetzt (PIL). Es wird KEINE KI-Videogenerierung verwendet, die Text enthält – dies ist der grundlegende Grund, warum diese Pipeline null Textfehler aufweist und das gesamte Video keine irrelevanten Markenlogos enthält.
  • Die Projektbeschreibungen müssen auf tatsächlichem Lesen der README basieren: Sortiere die Top 2–3 Projekte nach Stars, öffne die README, destilliere für jedes Projekt 4 einzeilige Zusammenfassungen und schreibe sie in die Konfiguration. Es ist nicht ausreichend, nur die Repo-Listenbeschreibungen zu verwenden. Wenn das Projekt auf Platz 3 inhaltlich dünn ist (z. B. README nur eine Zeile), wird es in Karte 3 integriert und bei der Auslieferung erläutert.
  • Vor Auslieferung eine Frame-Stichprobenkontrolle durchführen: Überprüfe mindestens den Startframe des Covers, den ausgereiften Frame jeder Karte und den Endframe. Wenn Text-/Zahlenprobleme gefunden werden, müssen diese vor Auslieferung behoben werden, und dem Benutzer müssen die verbleibenden Mängel offen mitgeteilt werden.

Schritte

1. Account recherchieren

  • Öffne https://github.com/<user>?tab=repositories&sort=stargazers, um die Star-Rangliste und -Anzahl zu erhalten.
  • Öffne die Hauptseite, um folgendes zu bestätigen: Anzeigename, Follower, Anzahl der Repos, Beiträge im letzten Jahr, angeheftete Repos.
  • Öffne nacheinander die README der Top 2–3 Repos (nach Stars) und schreibe für jedes Projekt 4 Zusammenfassungen (Funktion/Form/Technik/Eigenschaften), sowie 4–6 Technologie-Tags.

2. Material vorbereiten (assets/)

python3 scripts/capture_frame.py <user> assets/page_frame.png   # Hauptseiten-Screenshot (echter Frame)
curl -L https://github.com/<user>.png -o assets/avatar.png       # Avatar (oder aus Hauptseite ausschneiden)
# BGM: Lege die vom Benutzer bereitgestellte Audiodatei in assets/bgm.m4a (optional)

3. Konfiguration schreiben

Kopiere examples/config.example.json als config.json und fülle die echten Daten und Zusammenfassungen aus Schritt 1 ein (Pfade relativ zum Config-Verzeichnis oder absolut).

4. Rendern

python3 scripts/render_promo.py --config config.json --out out.mp4

Erfordert: Python 3 + Pillow + numpy, ffmpeg, Noto Sans CJK-Schriftart (das Skript sucht automatisch in üblichen Pfaden).

5. Frame-Stichprobenkontrolle und Auslieferung

Verwende ffmpeg, um jeweils einen Frame bei 0,4s / zur Mitte jedes Abschnitts / am Ende zu extrahieren und zu überprüfen: Zahlen stimmen mit der Star-Anzahl überein, Text ist nicht verschoben, Cover ist eine echte Seite, End-Streifen sind vollständig. Sende das fertige Video zusammen mit einer „Strukturbeschreibung + bekannte Mängel“ an den Benutzer.

Schnellübersicht der Config-Felder

FeldBeschreibung
username / display_nameAccountname / Anzeigename (für den End-Streifen)
page_frame / avatar / bgmDateipfade; bgm kann null sein (keine Musik)
cardsGenau 3 Karten: {name, sub, n1, l1, n2, l2, rows[4], chips[]}; n1/l1 = rote große Zahl + Label (z. B. 303 / Stars), n2/l2 = blaue (z. B. 33 / Forks); Karte 3 kann Repositories / Contributions verwenden
finale_strips4 Streifen-Textzeilen, der letzte automatisch roter Hintergrund
durationsOptional: {cover, cards[3], finale} in Sekunden; Summe abzüglich Übergänge sollte ≤28 sein

Hinweise

  • Musik-Copyright: Das Repository enthält keine BGM. Es dürfen nur vom Benutzer selbst bereitgestellte oder zur Nutzung berechtigte Audiodateien verwendet werden. Gib keine aus fremden Videos extrahierten Audiospuren weiter.
  • Framebezugsdienst (thum.io): Dass die erste Anfrage ein Platzhalterbild zurückgibt, ist normales Warteschlangenverhalten; das Skript behandelt dies mit „zweimal abrufen."
  • Dass im gesamten Video keine Logos von Apple oder anderen Marken erscheinen, ist ein Designmerkmal (lokales Rendering ohne externe Materialien) und erfordert keine zusätzliche Behandlung.

Verwandte Skills