Communitygithub.com

动效 KINETIC

Verwandelt Talking-Head-Videos (digital oder real) in hochwertige Kinetic-Typografie-Videos mit einer durchgehenden Lichtlinie, synchronisierten Soundeffekten und einem bildschirmfüllenden visuellen Stil.

Was ist 动效 KINETIC?

Diese Fähigkeit implementiert eine vollständige Pipeline zur Erstellung von Kinetic-Typografie-Videos – eine Kombination aus visueller Sprache und einem bildschirmfüllenden, Frame-für-Frame-Renderer ohne manuelle Keyframes. Sie eignet sich besonders für Talking-Head-Inhalte, bei denen digitale Avatare oder echte Personen aufgenommen werden, und verwandelt diese in auffällige, virale Videos mit hoher visueller Dichte. Die Pipeline basiert auf fünf Gesetzen: Ein Objekt pro semantischem Beat (z.B. ein Auswahlrahmen für „auswählen“), präzises Timing auf Silbenebene (`at(‚Wort‘)`), eine durchgehende Lichtlinie, die sich durch das gesamte Video zieht, Spannungsbögen mit ruhigen Phasen nach dichten Sequenzen, und hohe visuelle Qualität (Vier-Farb-Palette, Subframe-Bewegungsunschärfe, Glühen, chromatische Aberration). Der Workflow ist vollständig dokumentiert und umfasst Schritte von der Skripterstellung über die Ausrichtung der Audiospur, das Editieren, die Vorbereitung des Footage (z.B. Freistellung des Hintergrunds), das Rendern von Einzelbildern und die finale Audiomischung. Alle Werkzeuge und Skripte sind enthalten und werden im Markdown detailliert beschrieben. Die Skill unterstützt sowohl digitale Avatare (z.B. HeyGen) als auch echte Aufnahmen und ist für Plattformen wie TikTok, Instagram Reels oder YouTube Shorts optimiert. Die Fähigkeit ist besonders nützlich, wenn ein Benutzer sagt: „Mach es mit Kinetic-Stil / Mach es cooler / Wie dieses virale Kinetic-Video / Wie Opus-Kinetic“ – und nicht nur einfache Untertitel benötigt. Sie ist nicht für einfache Untertitel oder reinen Motion-Design ohne Personen geeignet.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dingchenhui0618-arch/agent-skills/tree/HEAD/skills/kinetic-typography-video

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht 动效 KINETIC?

Ein visuelles Sprachsystem + Zero-Dependency Frame-für-Frame-Renderer. Jeder Frame ist eine reine Funktion der Zeit: Bild, Untertitel, Soundeffekte und Musik teilen sich eine einzige Zeitachse, ohne manuelles Keyframing. Es wurde aus zwei viralen Kinetic-Typografie-Videos extrahiert (siehe die Analyse in references/viral-laws.md) und bereits in tasks/opus-kinetic-20261001/ für ein komplettes Video getestet (examples/opus-kinetic/).

Fünf Gesetze (Jeder Shot muss sie erfüllen)

  1. Ein Objekt pro Satz: Jeder semantische Beat bekommt ein Objekt, das der Zuschauer „auf einen Blick“ erkennt – Leute aus der Content-Erstellung erkennen Auswahlrahmen, Wellenformen, Keyframes, Zeitleisten, Renderbalken, Lippen-Sync-Bars und Prompt-Boxen. Auch die Bewegungsart muss sinnvoll sein: „nicht vorhanden“ wird durchgestrichen, „umwerfen“ wird umgestoßen, „hinter den Rücken verstecken“ wird wirklich hinter der Person versteckt.
  2. Beat-Timing: Große Buchstaben fallen auf die Silbe, die ausgesprochen wird (at('Wort')); jeder Schnitt in reinen Bildsequenzen liegt auf einem Musik-Beat (beat(k)); jede sichtbare Aktion hat einen passenden Soundeffekt, der nur auf sichtbare Aktionen reagiert.
  3. Eine durchgehende Linie: Ein Lichtstrahl zieht sich durch das gesamte Video – beginnt als eingebrannter Scanline, wird zum Auswahlrahmen, zur Wellenbasis oder zu einem dynamischen Element, das durch die Szene gleitet, und endet in einem Punkt, der den Abspann schreibt und dann erlischt. Verwandle statt harter Schnitte.
  4. Spannung und Entspannung: Nach dichten Sequenzen muss eine ruhige Phase kommen (ein komplett stiller Beat, ein kleiner Text auf cremeweißem Hintergrund); eine sich ständig ändernde Zahl baut Spannung auf (in diesem Video: „Manuelle Keyframes: 0“).
  5. Qualität: Streng vierfarbig, Subframe-Bewegungsunschärfe, Glühen, chromatische Aberration-Pulse, Clustered-Partikel; kleine, werkzeugartige Anmerkungen, die den Zuschauer zum Pausieren einladen.

Sprachspezifikationen

FeatureSpezifikation
FarbpaletteNacht #0A0A0D · Knochenweiß #F1EDE4 · Signalorange #FF5A1F · Kobaltblau #3448FF (nur für „Maschine/Daten“) · Grau #8B8983 · Graphit #26262C
SchriftartenNoto Sans SC (Chinesisch, 900 für große Wörter / 500 für Fließtext) · Archivo VF (Latein & Ziffern) · JetBrains Mono (Anmerkungen) · Songti nur für ruhige Beats
Mindestschriftgröße (1920×1080)Anmerkungen ≥28px, Erklärungen ≥36px, große Wörter ≥76px; muss auch bei Skalierung auf 390px Breite lesbar sein
Acht Aktionen → SoundeffekteEinbrennen click · Linie ziehen zip · Scannen scan · Auswählen blip/select · Wort fallen impact/hit · Dekodieren tick · Einsaugen suck · Schockwelle drop
PersonenstatusVollbild (W 1.0 / M ~1.2 / C ~1.4 mit Jump-Cuts und Zooms) · Auswahlrahmen ziehen zu Fenster · kleines Fenster in der Ecke (unten rechts) · Freistellung in die Szene (Text hinter Person)
UntertitelEin natürlicher Satz = eine Karte, keine Satzzeichen, zusammenhängend geschrieben (z.B. Opus5.5); einfarbig nachtschwarzer Hintergrund, 8px abgerundete Ecken, 46px Höhe; ungelesen grau → gelesen knochenweiß mit kontinuierlichem Farbverlauf, der vorderen Kante mit Signalorange-Licht
SicherheitJeder Text/Grafik vor der Person muss ≥30px Abstand zum echten Kopfrahmen (inkl. Hut) halten; Text hinter der Person (unter der Freistellungsebene) ist nicht eingeschränkt. Mit qa_face.py überprüfen, nicht per Augenmaß

Workflow (Detaillierte Befehle in references/pipeline.md)

  1. Skript → Beat-Tabelle: Zuerst natürliches Talking-Head-Skript schreiben, dann für jeden semantischen Beat ein Objekt auswählen (references/devices.md). Das Skript nicht für Effekte ändern.
  2. Voice-Over & Person: Nach dem Projekt-Workflow generieren (Fish Audio → HeyGen usw.). Echte Aufnahmen direkt verwenden.
  3. Alignierung: tools/align_script.py – Skript als Grundlage, ASR nur für Timings; CJK-globales Align + Silent-Peak-Interpolation (ASR zieht oft das erste Zeichen eines Satzes in die vorherige Pause und behandelt den Punkt in 5.5 als Satzende).
  4. Schnitt: tools/build_edit.py – Globale Zeitlupe/Zeitraffer (Bild und Ton synchron, Lippenbewegung nicht betroffen), lange Atempausen zu Jump-Cuts komprimieren, reine Bildsequenzen einfügen, gibt eine einzige timeline.json aus (alle nachgelagerten Tools verwenden nur diese).
  5. Personenmaterial: Frames extrahieren → tools/vision_analyze.swift (Vision-Porträt-Maske + Gesichts-/Mundrahmen) → tools/prep_media.py mattes|faces|thumbs|barcode.
  6. Film schreiben: Ein film.js-Modul (siehe Beispiel). Jedes Element wird an at('Wort') oder beat(k) verankert; verwende das Vokabular aus engine/devices.js; ev(t, 'sfx') registriert Soundeffekte und Post-Processing-Pulse an derselben Stelle.
  7. Validierung: render.mjs --mode stills für Einzelbilder → --mode qa + qa_face.py (0 Verstöße erforderlich).
  8. Audio: render_dialog.py (Lautstärke der verschiedenen Quellen anpassen) → --mode cues → sfx.py → mix.py (Musik an Beat-Punkten schneiden, Stimme leiser, wenn keine Stimme lauter, stille Beats, statischer Gain + True-Peak-Limiter auf Ziellautstärke).
  9. Finales Video: render.mjs --mode frames in verlustfreie Blöcke rendern → Einmal H.264-Encodierung → Projekt-Checkliste.

Wie man echte Aufnahmen verwendet

Gleiche Methode: Freistellen, große Buchstaben hinter der Person durchlaufen lassen, Zahlen aus dem Skript in sichtbare Zähler/Fortschrittsbalken/Kreise verwandeln, bei Jump-Cuts Zooms einfügen, ursprüngliche Lautstärke anpassen. Das 10-Sekunden-Beispiel ist eine echte 4K-Aufnahme (references/pipeline.md).

Cover (3:4 / 4:3)

Vom selben Engine gerenderte Standbilder mit dem gleichen Look (Befehle in references/pipeline.md, Code in examples/opus-kinetic/cover.js):

  • Person: Ein Frame aus dem digitalen Avatar-Footage auswählen – gerade Gesicht, offene Augen, natürliches Lächeln. Zuerst mit faces.jsonl (Mundrahmen-Seitenverhältnis und Gerade-Gesicht-Wert) vorfiltern, dann visuell prüfen. Verlustfreier Frame-Schnitt → vision_analyze … 1.0 (volle Auflösung Maske) → prep_media.py cutout (Wandfarbe von Haaren und Hutkrempe trennen, damit auf dunklem Hintergrund keine weißen Ränder entstehen).
  • Layout: Titel ≥150 px (basierend auf 1080 Breite), auch bei Skalierung auf 180 px Breite lesbar; Text im fertigen Video hinter der Person (3:4 mit Magazin-Stil, Hutkrempe drückt auf die Unterkante des Textes); am Ende des Titels ein Lichtpunkt. Maximal 2–3 kleine Objekte aus dem Video (Auswahlrahmen-Griffe, Ebenen-Label, durchgestrichene REC, eine Statistik). Text und Hutkrempe sollten sich nicht berühren: entweder klar überlappen oder ≥40 px Abstand halten.
  • Sicherheit & Plattform: --mode qa + qa_face.py muss 0 Verstöße ergeben; ca. 10% unten für Plattform-Overlays (Views, Timestamps).
  • Das Modul ruft setSize(w, h) in der ersten Zeile auf; Layout-Zahlen basieren auf der Gesichtsmitte; ein anderer Frame erfordert keine Code-Änderung.

Bereits gemachte Fehler (Nicht wiederholen)

  • ASR überspringt manchmal den Anfang von Sätzen: Vor dem ASR-Processing 1 Sekunde Stille voranstellen, dann wieder entfernen.
  • Der Punkt in Versionsnummern (5.5) ist kein Satzende; Alignierung und Untertitel müssen als Dezimalpunkt behandelt werden.
  • ffmpeg -ss … -c copy springt zum vorherigen Keyframe, was den Schnittpunkt ungenau macht; für genaue Startpunkte dekodieren und mit Kreuzkorrelation überprüfen.
  • Frame-Cache gibt ImageBitmap frei: Für lang genutzte Bilder (Thumbnails, Point-Cloud-Quellen) loadImage separat verwenden.
  • TTS-Spitzen sind sehr hoch (PLR bis zu 24 dB); direktes Anheben der Lautstärke führt zu Clipping; zuerst dynamische Lautstärke-Normalisierung (mit True-Peak-Limit), dann mischen.
  • zsh teilt Variablen nicht an Leerzeichen auf: Für das Rendern in Blöcken Bash-Skripte verwenden.
  • Dynamisches loudnorm lässt das Verhältnis von Stimme zu Musik „atmen“; Mastering verwendet nur statischen Gain + Limiter.
  • Wenn Musik auf vollständige WAV umgestellt wird, können Inhalte über 19 kHz (plus vom Limiter selbst erzeugte) den True-Peak nach AAC-Encoding um ~1 dB erhöhen: loudness.lowpass: 19000 in mix.json am Ende der Mastering-Kette platzieren.
  • Vor dem Wechsel von der Vorschau zur Vollversion die Alignierung mit Kreuzkorrelation überprüfen (Epidemic-Vorschau und WAV sind sample-genau), dann je nach Lautstärkeunterschied fullDb feinjustieren, damit das Verhältnis von Stimme zu Musik mit der genehmigten Version übereinstimmt.

Individual skills in this repo

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

design-showcase-websites

Design and build distinctive, high-impact websites and clickable, presentation-ready prototypes for any industry, language, or site type from business briefs, public links, local media, existing sites, or product requirements. Use for brand and corporate sites, landing pages, ecommerce, SaaS and product sites, portfolios, editorial and content sites, education and nonprofit sites, events and communities, local and hospitality businesses, campaigns, web product interfaces, and website UI redesigns. Support Chinese, English, Japanese, Korean, and multilingual experiences without defaulting to one locale or visual style. Also use for requests mentioning 网站原型, 宣传网站, 企业官网, 营销官网, 电商网站, 落地页, 内容网站, 官网重构, 可点击演示, website prototype, landing page, or redesign.

knowledge-explainer

把文字、文章、笔记、PPT 或 HTML 课件提炼为有配音字幕的 16:9 知识讲解视频。 使用 Remotion 语义动画与 Fish Audio / ElevenLabs 配音,先做短样片再扩展。 用于课件转视频、知识视频、内训片、科普 explainer,也用于参考视频的解释型动效拆解与原创复现;不负责真人口播剪辑、数字人生成或未知作者工具归属鉴定。

video-prompt-director

创作者的主力 AI 视频提示词 Skill。先按脚本风格选档位,再像导演一样把脚本、故事、口播稿、分镜表或一句想法,拆成能直接生成的分段视频提示词。短视频档(抖音/小红书节奏:一镜到底、多分镜、街拍、角色小故事、竖屏短剧,标杆是《丹眉》和赛博原子)和电影精品档(慢节奏剧情、表演、对白、对手戏、AU 微表情、八维公式),各有结构和示例。每段含生成模式与参数、参考图绑定、人物道具场景、镜头时间轴、声音和硬约束。适用 Seedance 2.0/2.5、即梦、dreamina、LibTV、TT AI。Use when 用户要写视频提示词、AI 视频提示词、Seedance 提示词、即梦提示词、脚本转视频、拆分镜、分镜提示词、快剪、短视频提示词、storyboard、shot list、多图参考、首尾帧、人物表演提示词、AI 演技、情绪递进、导演式提示词,或给出脚本/故事/想法要变成视频。当前项目若有专用工作流 Skill(Vlog、情感钩子、新闻解说等),优先用专用的。

xhs-card-video

制作无脸说明视频的小红书 3:4 截图卡短视频:把真实 X 截图、动态背景和已核验本地 BGM 组装成一个视频与一份发布稿,并按周归档;不自动发布。

Verwandte Skills