GitHub-Bewerbungsvideo (Gleiche Pipeline)
Video-Struktur (Gesamtlänge ≤28s, Standard ca. 24,5s):
- 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.
- 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).
- 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.
- Musik: Vom Benutzer bereitgestellte Audiodatei (siehe Hinweise), kein Voice-Over.
Harte Regeln
- Cover muss ein echter, erfasster Hauptseiten-Frame sein: Verwende
scripts/capture_frame.pyzur 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
| Feld | Beschreibung |
|---|---|
username / display_name | Accountname / Anzeigename (für den End-Streifen) |
page_frame / avatar / bgm | Dateipfade; bgm kann null sein (keine Musik) |
cards | Genau 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_strips | 4 Streifen-Textzeilen, der letzte automatisch roter Hintergrund |
durations | Optional: {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.