Communitygithub.com

Trudiemisanthropic314/tiktok-video-skill

Erstellen Sie aus einer einzigen Textzeile vollständige TikTok / Douyin (抖音) / YouTube Shorts / Reels-Kurzvideos – von der Skripterstellung über den kostenlosen Stock-Medien-Download bis hin zum TTS-Voiceover (Chinesisch & Englisch), wortgenauen Karaoke-Untertiteln, Hintergrundmusik und ffmpeg-Komposition zu einem fertigen 1080×1920 MP4.

Was ist tiktok-video-skill?

Diese Fähigkeit verwandelt eine einfache Idee in ein vollständiges Kurzvideo, das auf allen wichtigen Plattformen (TikTok, Douyin, YouTube Shorts, Instagram Reels) veröffentlicht werden kann. Der KI-Agent übernimmt die kreative Arbeit: Faktenprüfung, Skripterstellung mit optimierten Formaten (Hook, Szenenstruktur), Auswahl von Schlüsselwörtern für die Bildsuche und Qualitätskontrolle. Skripte in `scripts/` erledigen die mechanischen Schritte: Text-to-Speech (TTS) mit Edge-TTS für Chinesisch und Englisch (inklusive Wort-Zeitstempel für Karaoke-Effekte), kostenlosen Download von Bild- und Videomaterial aus Quellen wie Wikimedia, Openverse, NASA oder (mit API-Schlüsseln) Pexels/Pixabay, Auswahl und Beat-Synchronisation von lizenzfreier Hintergrundmusik (inklusive 卡点/Beat-Sync), Untertitel-Rendering mit wahlweise Karaoke- oder Pop-Stil, und finale ffmpeg-Komposition zu einem 1080×1920 MP4. Der Workflow ist darauf ausgelegt, schnell zu iterieren: Neben der vollständigen Pipeline können einzelne Schritte wie die Asset-Suche oder die Komposition wiederholt werden. Die obligatorische Qualitätskontrolle umfasst die visuelle Überprüfung der ausgewählten Medien anhand von Kontaktabzügen und die automatische Prüfung von Ton- und Zeitwerten. Das Ergebnis ist ein publikationsfertiges Video inklusive Quellenangaben.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add Trudiemisanthropic314/tiktok-video-skill

In Ihrer bevorzugten KI fragen

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

Dokumentation

TikTok / Douyin Kurzvideo-Generator

Sie (der Agent) übernehmen die kreative Arbeit – Skripterstellung, Szenenaufteilung, Suchbegriffe, Stilauswahl und Qualitätsprüfung. Die Skripte in scripts/ erledigen die mechanische Arbeit – TTS mit Wort-Zeitstempeln, Asset-Suche und -Download, Untertitel-Rendering, ffmpeg-Komposition, Lautstärkenormalisierung.

Alles läuft mit reinem ffmpeg (kein libass/drawtext nötig) plus einer Python-Venv. Funktioniert ohne API-Schlüssel; mit den Umgebungsvariablen PEXELS_API_KEY / PIXABAY_API_KEY werden echte Stock-Videoclips freigeschaltet (besser), sofern vorhanden.

Arbeitsablauf

0. Einmalige Einrichtung (überspringen, wenn .venv/ und assets/fonts/ existieren)

bash scripts/setup.sh

1. ZUERST FAKTEN PRÜFEN, dann Skript + Storyboard schreiben

Ihr internes Wissen kann veraltet oder falsch sein – setzen Sie niemals eine unbelegte Behauptung in ein Video. Bevor Sie Szenentext schreiben, prüfen Sie mit Ihrem Websuchwerkzeug jede konkrete Behauptung: Zahlen, Statistiken, Rekorde, Preise, Daten, Ranglisten und jede „erste / größte / einzige / schnellste“ Aussage – sowie alles Zeitkritische (Nachrichten, Produkte, Versionen, „今年/neueste“), unabhängig davon, wie sicher Sie sich fühlen. Regeln:

  • Eine Behauptung kommt nur so ins Skript, wie eine Quelle sie angibt – passen Sie Ihre Formulierung an die Quelle an, nicht umgekehrt.
  • Können Sie es nicht überprüfen? Ersetzen Sie es durch eine überprüfbare Behauptung oder streichen Sie es. Eine falsche Zahl in einem veröffentlichten Video ist schlimmer als ein schwächerer Aufhänger.
  • Notieren Sie die von Ihnen verwendeten URLs im Storyboard als "sources": [...] – sie werden in review/report.txt ausgegeben, damit der Benutzer das Video prüfen kann.
  • Wenn Sie wirklich keinen Webzugriff haben, halten Sie sich an langlebige Lehrbuchfakten, vermeiden Sie konkrete Zahlen und teilen Sie dem Benutzer mit, dass das Video ungeprüft ist.

Lesen Sie references/writing-guide.md für die Skript-Formeln (Hook-Typen, Tempo, Szenenstruktur). Erstellen Sie dann projects/<slug>/storyboard.json:

{
  "title": "深海里最诡异的5种生物",
  "lang": "zh",
  "aspect": "9:16",
  "voice": "zh-CN-YunjianNeural",
  "rate": "+10%",
  "caption_style": "karaoke",
  "bgm": {"mood": "mystery", "gain_db": -16},
  "hook": {"text": "深海禁区", "seconds": 2.3},
  "scenes": [
    {
      "text": "你知道吗?在阳光永远照不到的深海,藏着比科幻电影更诡异的生物。",
      "keywords": ["deep sea NOAA ocean exploration", "submarine dark ocean"],
      "providers": ["openverse", "wikimedia"],
      "badge": null,
      "effect": "kb_in"
    },
    {
      "text": "第一名,鮟鱇鱼……",
      "keywords": ["humpback anglerfish", "anglerfish museum"],
      "badge": "第1名"
    }
  ]
}

Feldreferenz:

FeldWerteHinweise
langzh | enLegt die Untertitel-Gruppierung + Standardstimme fest
aspect9:16 (Standard) | 16:9 | 1:1
voicebeliebige edge-tts-Stimmezh: zh-CN-YunjianNeural (männlich, magnetisch) zh-CN-XiaoxiaoNeural (weiblich) zh-CN-YunxiNeural (männlich, sonnig); en: en-US-ChristopherNeural en-US-AriaNeural en-US-GuyNeural
ratez.B. +10%Marketing-Kanal-Tempo: zh +8%+15%, en +5%+10%
caption_stylekaraoke | pop | nonekaraoke = Wort-für-Wort-Hervorhebung (empfohlen)
bgm{"mood": ...} | {"query": "Stilwörter"} | {"file": "pfad.mp3"} | {"mood":"none"}Standardmäßig einen mood verwenden: Die kuratierte Tabelle (upbeat, funny, inspiring, chill, tech, mystery, epic, sad, horror) enthält die MacLeod-Standardtitel, die unzählige Marketing-Kanäle verwenden – bewährt, sicher, abwechslungsreich pro Projekt. Greifen Sie nur dann auf query zurück, wenn kein Mood zum Stil des Inhalts passt (oder der Benutzer ein Genre nennt): Es durchsucht echte CC-Beats (ccMixter-Stil-Tags + Openverse/Jamendo; ND/NC ausgeschlossen), und jeder Kandidat wird vom Beat-Tracker geprüft – kein sicherer 75–175 BPM Groove, keine Auswahl. Stilwörter, die auf Tags abgebildet werden: Trap/Phonk, Hip Hop, Lofi/Chill, Edm/Dance, Epic/Cinematic, Quirky. Sie können beide setzen – query wird zuerst versucht, mood ist der Fallback. file = eigener Track des Benutzers
bgm.vibe"spedup" | "slowed" | nicht gesetztDer typische Douyin-Sound: spedup ≈ 1,25× mit erhöhter Tonhöhe (卡点/盘点 Video Standardverarbeitung), slowed = verlangsamt + Hall (情感/氛围 Stil). Wird auf jede BGM-Quelle angewendet, inkl. file; das Beat-Raster wird nach der Verarbeitung neu analysiert, sodass 卡点 genau bleibt
beat_synctrue (Standard) | falseDer BGM wird auf Beats analysiert, und jeder Szenen-/Shot-Schnitt wird auf das Beat-Raster ausgerichtet (卡点), wenn das Raster sicher ist; VO wird nie abgeschnitten, nur die Atempausen werden angepasst
hook{"text","seconds"}Große obere Titel-Karte, die am Anfang gezeigt wird, ≤ 8 Zeichen/Wörter
sticky_title{"text": ...}Optionaler dauerhafter Themenbalken oben; standardmäßig deaktiviert – nur hinzufügen, wenn der Benutzer danach fragt
sfxtrue (Standard) | falseWhoosh-Sound bei Szenenübergängen
Szenen-keywordsListe von englischen, konkreten Nomen-SuchbegriffenJeder Eintrag = ein Shot (visuell); das Video wechselt alle ~3s zu einem neuen Bild, also geben Sie 2–3 Suchbegriffe für Szenen länger als ~4s (zusätzliche Shots werden automatisch durch Rotation Ihrer Suchbegriffe hinzugefügt, wenn Sie weniger angeben)
Szenen-badgez.B. "第1名" / "TOP 1"Großer gestempelter Titel, der am Szenenanfang gezeigt wird – für Listen
Szenen-providersListeBilder ohne Schlüssel: openverse wikimedia nasa; echte Videos ohne Schlüssel: wikimedia_video (Commons-Clips, Server-Transcodes) nasa_video (PD Weltraum/Wissenschaft) archive_video (Prelinger Public-Domain-Archivfilme); mit Schlüsseln: pexels_video pexels_photo pixabay_video
Szenen-effectauto kb_in kb_out pan_left pan_right staticKen-Burns-Bewegung des ersten Shots; spätere Shots rotieren automatisch
Szenen-emphasisListe von TeilzeichenfolgenDauerhaft hervorgehobene Wörter (Pop-Stil)
Szenen-mediaDateipfadSuche überspringen, eigene Datei verwenden (z.B. eine, die Sie selbst heruntergeladen haben)

Faustregeln (Veröffentlichungsstandard): Gesamt 45–75s, 6–9 Szenen, eine Idee pro Szene, 2–3 Shots pro Szene. Szenentext 20–45 chinesische Zeichen / 14–30 englische Wörter. Alles unter ~40s oder mit durchgängig Ein-Shot-Szenen wirkt dünn – liefern Sie es nicht aus.

2. Pipeline ausführen

.venv/bin/python scripts/pipeline.py projects/<slug>

Oder Schritt für Schritt: tts.py → assets.py → bgm.py → compose.py → check.py.

3. PRÜFEN – das macht den Unterschied (obligatorisch)

Die Suche nach freien Bildern ist nicht perfekt. Betrachten Sie diese beiden Dateien immer mit Ihrem Bildwerkzeug und beurteilen Sie sie wie ein menschlicher Redakteur:

  1. projects/<slug>/media/assets_sheet.jpg – nach dem Asset-Schritt. Shots sind beschriftet (01a 01b 02a …). Für jeden Shot, der nicht klar zur Erzählung passt, holen Sie ihn erneut:

    .venv/bin/python scripts/assets.py projects/<slug> --scene 3 --shot 2 --keywords "bessere englische Nomen"
    

    (Erneutes Holen blacklistet das abgelehnte Asset automatisch. Wiederholen Sie dies, bis alle Szenen passen. Sie können auch selbst ein Bild mit Ihren eigenen Werkzeugen herunterladen und im Szenen-media-Feld angeben.)

    Die Pipeline prüft auch automatisch den Quellentitel jedes Shots gegen seine Suchanfrage und gibt [!] OFF-TOPIC-Flags aus. Wenn Sie visuell bestätigt haben, dass ein markierter Shot tatsächlich richtig ist (z.B. ein unbetiteltes, aber perfektes Foto), setzen Sie "approved": true für diesen Shot in media/manifest.json, um ihn freizugeben – Ihre Augen sind besser als die Textprüfung. Niemals blind freigeben.

  2. projects/<slug>/review/contact_sheet.jpg – nach Komposition + Prüfung. Überprüfen: Untertitel lesbar & synchron, keine falschen/hässlichen Einzelbilder, Hook sichtbar. Probleme beheben (Storyboard bearbeiten → Komposition erneut ausführen, das geht schnell), bis es aussieht wie ein Video, das ein Marketing-Kanal-Redakteur tatsächlich veröffentlichen würde.

review/report.txt enthält Dauer-/Lautstärkeprüfungen und einen direkt einfügbaren Quellenangaben-Block (CC-BY-Quellen + Musik-Credit) – geben Sie ihn dem Benutzer immer zusammen mit final.mp4.

Tipps zur Asset-Suche (größter Qualitätshebel)

  • Suchbegriffe müssen englisch sein, 1–4 Wörter, konkrete sichtbare Nomen („humpback anglerfish“, „scuba diver silhouette“), nie abstrakte Konzepte („mystery“, „success“).
  • wikimedia ist am besten für Tiere/Wissenschaft/Geschichte/Orte; openverse (Flickr etc.) für Lifestyle/Szenen/Stimmung; nasa für Weltraum; Schlüssel entsperren pexels_video/pixabay_video echte Aufnahmen – bevorzugen Sie diese, wenn verfügbar.
  • Fügen Sie ein Kontextwort zur Disambiguierung hinzu: „NOAA“, „museum“, „aquarium“, „macro“.
  • Wenn eine Szene immer wieder fehlschlägt, ändern Sie das visuelle Konzept, nicht nur die Wörter (z.B. für „5% erforscht“ zeigen Sie eine Taucher-Silhouette, nicht „Statistiken“).
  • wikimedia_video-Suchen unterstützen negative Begriffe – Commons-Wetter/Weltraum-Abfragen ertrinken in Satellitenschleifen, schreiben Sie also z.B. "lightning storm -CIRA -satellite -JPSS". Nicht-englische Wörter entsperren zusätzliches Filmmaterial („Blitz Gewitter“, „tormenta rayos“). Bevorzugen Sie benannte Subjekte („Fagradalsfjall lava drone“) vor generischen Nomen und überprüfen Sie immer die Video-Thumbnails im Blatt: Achten Sie auf eingebrannte Untertitel, Wasserzeichen, Tutorials und CGI-Werbung.

Fehlerbehebung

  • edge-tts-Netzwerkfehler: Es wiederholt 4×; führen Sie tts.py erneut aus, falls es immer noch fehlschlägt.
  • BGM-Download fehlgeschlagen: Führen Sie bgm.py erneut aus (Wiederholungen + Cache), oder --mood none, oder legen Sie eine mp3 in assets/bgm/ ab und setzen Sie bgm.file.
  • BGM-Stil passt nicht: Verfeinern Sie die Suchanfrage (bgm.py <dir> --query "..." dann Komposition mit --skip-tts --skip-assets wiederholen). Für einen 真正の当下热门 Sound liefern Sie mit mood: none (oder niedriger Verstärkung) aus und sagen Sie dem Benutzer, er solle den Trend-Track aus der integrierten lizenzierten Musikbibliothek von TikTok/抖音 zum Zeitpunkt des Hochladens hinzufügen – das ist sowohl legal als auch algorithmusfreundlich. Der Schnitt-Takt bleibt sauber, da das Szenentempo unverändert ist.
  • check.py gibt eine Zeile „Schnitte landen auf dem Beat“ aus – wenn der Beat-Sync übersprungen wurde (geringe Raster-Sicherheit, z.B. bei beatloser Ambient-Musik), wählen Sie einen gleichmäßigeren Track (--query "trap beat" etc.) und wiederholen Sie die Komposition.
  • Ein Anbieter, der einen Fehler ausgibt oder leer ist, ist in Ordnung – andere decken es ab; überprüfen Sie die szenenspezifischen Logs.
  • Erneutes Komponieren nach einer Storyboard-Änderung ist günstig (--skip-tts --skip-assets über pipeline.py, oder compose.py direkt ausführen). Das Ändern von Szenen-Text erfordert ein erneutes Ausführen von tts.py.
  • Emojis in Untertiteln werden auf macOS (Apple Color Emoji) gerendert; auf Linux werden sie weggelassen, wenn NotoColorEmoji nicht installiert ist. Verlassen Sie sich niemals auf Emojis für die Bedeutung.

Ausliefern

Geben Sie dem Benutzer: final.mp4, den Quellenangaben-Block aus review/report.txt und (falls gewünscht) review/cover.jpg als Titelbild.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills