Communitygithub.com

site-motion

Erstelle animierte Website-Assets – Helden- und Feature-Illustrationen, Produkt-UI-Mikrogeschichten, isometrische und 2.5D-Szenen, 3D-Produkt/Markenobjekte (Three.js, glTF-Modelle, extrudierte Logos), App-Fenster-Komposite, physikbasierte und generative Visualisierungen – in SVG, Canvas, CSS-3D oder WebGL, thematisiert nur durch die Tokens eines Designsystems, und exportiere jedes als lebendiges, einbettbares HTML plus frame-genaues MP4, WebM, animiertes WebP, GIF, Poster-PNG und 9:16-Social-Cuts.

Was ist site-motion?

site-motion ist ein KI-gestütztes Tool zur Erstellung von Animationen für Websites, das den gesamten Workflow von der Konzeption bis zum Export abdeckt. Es ermöglicht Entwicklern, komplexe animierte Assets wie Heldenanimationen, Feature-Demos, Produkt-UI-Mikrogeschichten, isometrische Illustrationen und 3D-Markendarstellungen zu erstellen, ohne manuell Code schreiben zu müssen. Die Szenen sind reine Funktionen der Zeit (`render(t)`), was bedeutet, dass dieselbe Datei sowohl live auf einer Website abgespielt als auch frame-genau als Video exportiert werden kann. Es werden viele verschiedene Rendering-Engines unterstützt: SVG, Canvas (2D und WebGL), CSS 3D, Three.js, p5.js und Matter.js. Das Tool liest automatisch die Tokens eines Designsystems (Farben, Typografie), um sicherzustellen, dass alle Animationen konsistent mit der Markenidentität sind. site-motion ist ideal für jede Art von visueller Darstellung, die auf einer Website erscheint – von Helden- und Feature-Sektionen über Landing Pages bis hin zu Launch-Posts. Es exportiert die Animationen als einbettbare HTML-Dateien sowie als frame-genaue Videos und Animationen in den Formaten MP4, WebM, animiertes WebP, GIF und Poster-PNG.

Funktioniert mit✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Shivraj97/site-motion/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht site-motion?

Szenen, die mit Pro gekennzeichnet sind oder in diesen Notizen genannt, aber in scenes/ fehlen, sind site-motion Pro-Szenen. Lerne aus dem, was die Notizen über sie sagen; baue aus den Szenen, die hier sind (site-motion list).

Eine Szene ist eine reine Funktion der Zeit. render(t) zeichnet denselben Frame für dieselbe t, unabhängig davon, was zuvor passiert ist. Diese eine Regel ist der Grund, warum dieselbe Datei live auf einer Website abgespielt und frame-genau als Video gerendert werden kann: Der Exporter sucht einfach zu jedem Frame-Zeitpunkt und macht einen Screenshot.

Repo-Root: Der Ordner, der diese Datei enthält (installiere sie mit git clone https://github.com/Shivraj97/site-motion ~/.claude/skills/site-motion, oder verlinke einen Klon dorthin). Node 22+, Chrome, ffmpeg. Kein npm install. Führe die CLI von einem beliebigen Projekt aus mit ihrem vollständigen Pfad aus; Builds und Renderings landen im out/-Verzeichnis des Projekts, und --tokens / --content akzeptieren Pfade relativ dazu:

SM=~/.claude/skills/site-motion/bin/site-motion.mjs
node $SM init card-story --tokens ledger          # schreibt ./brand.json (aus dem Preset) und ./card-story.json zum Bearbeiten
node $SM make card-story --tokens ./brand.json --content ./card-story.json --out public/motion/story.html

Um eine Szene in den eigenen Quellcode des Projekts zu integrieren, damit das Team sie bearbeiten kann, verwende add anstelle von make. Es kopiert scene.js, scene.css, content.json und tokens.json nach public/motion/<scene>/ (oder motion/<scene>/, wenn es kein public/ gibt), den Player und die Vendor-Bibliotheken nach runtime/ und schreibt <scene>.html, einen Ein-Datei-Embed. Der kopierte Ordner ist eine gültige Szene für build, render und make:

node $SM add ledger-stamp --tokens ./brand.json --content ./ledger.json          # → public/motion/ledger-stamp/ + ledger-stamp.html
node $SM make public/motion/ledger-stamp --tokens public/motion/ledger-stamp/tokens.json --formats png,sheet

Innerhalb des Repos selbst funktioniert die Kurzform:

node bin/site-motion.mjs list                                   # Szenen und Token-Presets
node bin/site-motion.mjs make iso-blocks --tokens mint          # baue + rendere mp4, webp, poster
node bin/site-motion.mjs make card-story --tokens ./brand.json --content ./my-story.json --formats mp4,webm,webp,gif,png,sheet
node bin/site-motion.mjs build window-stack --tokens night --out public/hero.html   # nur Live-Embed
node bin/site-motion.mjs render out/hero.html --formats mp4 --scale 2 --range loop        # exportiere einen bestehenden Build

Ausgaben landen in out/<content>-<tokens>/. --range loop exportiert nur die nahtlose Schleife (Standard für GIF und WebP); full ist Intro plus eine Schleife (Standard für MP4 und WebM). sheet schreibt ein 4×3-Kontaktblatt: Erstelle immer eines und lies es.

Workflow

Eine ganze Website (mehrere Abschnitte oder Seiten) beginnt mit einem Plan, nicht mit einer Szene. Führe node $SM plan im Projekt aus:

  • mit --brief brief.md, wenn du die Abschnitte kennst. Das ist der beste Input. Schreibe das Briefing aus dem echten Copy der Website:
    # Acme: Was das Produkt tut, in einem Satz
    ## startseite
    - hero: Die Hero-Überschrift
    - feature: Die Überschrift jedes Feature-Abschnitts und eine Zeile darunter
    ## preise
    - hero: …
    
  • oder mit --url https://ihre-website.de[,https://ihre-website.de/preise], um die Überschriften der Live-Seiten zu lesen;
  • oder mit --pages startseite,funktionen,preise --about "…", wenn es nichts anderes gibt (generische Auswahl; sage das).

Es ordnet jeden Abschnitt einer Szene zu, jede einmal verwendet, alle in einem Look. Der Look ist der der Home-Hero und wird in site-motion.json festgehalten. Es zeichnet site-motion-plan.png: Jeder Abschnitt als Frame seiner Szene in der Marke und im Look, mit der Bewertung des Scores oben drauf. Zeige dem Benutzer das Blatt und hole die Zustimmung ein, bevor du plan apply ausführst.

  • Eine mit ? gekennzeichnete Auswahl hatte keine starke Übereinstimmung. Lese ihre Notiz ("ledger-stamp passt besser, ist aber bei home.hero") und entweder tauschen (plan swap <slot> <scene>), die bessere Szene wiederverwenden oder dem Benutzer sagen, dass die Bibliothek noch keine Szene für diese Geschichte hat.
  • Wende niemals eine schwache Auswahl an, ohne es zu sagen.

plan apply fügt jede Szene hinzu und gibt den Embed-Code für jeden Abschnitt aus. Schreibe dann den Text jeder Szene in ihrem content.json, führe sync aus und schließe mit score --project ab.

Für eine einzelne Szene befolge die folgenden Schritte.

  1. Hole zuerst das Designsystem. Tokens sind die einzige Quelle für Farbe und Schrift. Finde sie in dieser Reihenfolge: die tokens/theme-Datei des Projekts (CSS-Variablen, Tailwind-Konfiguration, tokens.json), dann die Live-Website (messe berechnete Styles), dann frage nach. Schreibe sie als tokens/<marke>.json (Shape unten). Erfinde niemals eine Farbe, sobald die Palette existiert; leite Schattierungen mit h.mix(a, b, p) aus Tokens ab.
  2. Wähle den Archetypen, der die Geschichte des Produkts erzählt, oder schreibe eine neue Szene:
    SzeneGeschichte, die sie erzähltRenderer
    iso-blocksInfrastruktur, Plattformen, "viele Teile arbeiten zusammen": Blöcke mit Live-Daten auf ihren Flächen über einem gefliesten BodenSVG
    card-storyEin Workflow, der Arbeit entfernt: Eine Feature-Liste treibt eine Produktkarte durch ZuständeDOM
    window-stack"Funktioniert dort, wo du arbeitest": App-Fenster über einem gemalten Canvas-Hintergrund, ein Agent, der Schritte ausführtCanvas + DOM
    live-room ProMultiplayer: Benannte Cursor über einem App-Fenster, ein Vorschlag, eine Abstimmung, die bestanden wird, eine Änderung, die ausgeliefert wird, ein AktivitätstickerCanvas + DOM
    leaderboardAnerkennung und Rangliste: Beiträge landen auf Zeilen, Punkte zählen hoch, Zeilen sortieren neuDOM
    bloom-flowAutomatisierung: Ein Ereignis durchläuft einen Workflow-Graphen und jeder Schritt erblüht zu generativen BlumenCanvas + SVG
    signal-fieldUnordentlich → strukturiert: Verrauschte Stränge passieren ein Tor und verlassen es als saubere Spurenp5.js
    drop-pileViele → eins: Arbeitselemente fallen mit echter Physik in ein Tablett, ein Zähler zählt sieMatter.js (gebaked)
    galton-routerRouting, Genehmigungen, A/B: Zahlungen fallen durch ein Nagelbrett; eine Regel schaltet einen Schalter und der Flow bewegt sich zu den besten FächernSVG (gesäter Zufallsgang)
    receipt-printerUnordentlich → strukturiert: Dokumente füttern einen Schlitz, ein Bon druckt jedes extrahierte Feld mit seiner KonfidenzDOM + SVG
    score-sheetOrchestrierung, Multi-Agent: Ein Lauf, geschrieben als Partitur, Notenlinien vibrieren, während jeder Agent arbeitetSVG
    css3d-stackArchitektur, Schichten: Echte HTML-Boxen in CSS 3D heben sich auseinander, während eine Anfrage durchfälltCSS 3D
    loomViele → eins, Integrationen: Jedes Werkzeug ist ein Band aus Kettfäden, die zu einem Köpergewebe verwoben werden, das auf den Balken des Produkts rolltCanvas 2D
    domino-runAutomatisierung, Auslöser: Eine Kugel kippt eine Kette von Domino-Steinen, gruppiert in Schritte, jeder Schritt leuchtet auf, wenn die Welle ihn erreichtMatter.js (gebaked)
    weather-boardZuverlässigkeit, Failover: Ein Sturm (Shader-Wolken, Regen, Blitze) baut sich über einer Region einer Statuskarte auf, der Verkehr wird umgeleitet, es klart mit 0 fehlgeschlagenen AnfragenWebGL Shader + DOM
    ledger-stampGenehmigungen, Compliance, Vertrauen: Zahlungen reiten auf einem indizierten Band an einem Policy-Scanner vorbei, einem APPROVED-Stempel und einer Sign-and-Seal-Presse in einen Prüfpfad; eine über dem Limit wird als HELD gestempelt und wartet auf einen zweiten GenehmigerSVG + DOM
    grain-tallyMetriken, Skalierung: Tausende von Körnern (jedes ein fester Batch echter Ereignisse) atmen als Staubring, gießen sich in die Ziffern der Summe, sortieren sich dann in einen Balken pro Quelle mit ihrer genauen Anzahl; die Zahl wird aus ihren Daten gebaut, nicht hochgezähltCanvas 2D (Partikel, reines t)
    lens-of-orderUnordentlich → strukturiert, Klassifikation, KI, die sieht: Ein 1-Bit-gedithertes Feld von treibenden Blobs (noch nicht verstanden); eine Lupe füllt jeden Blob in seiner Klassenfarbe, umrandet ihn und beschriftet ihn mit einer Konfidenz, hinterlässt eine verblassende farbige SpurCanvas 2D (Pro-Zellen-Feld, Bayer-Dither)
    water-slide-funnelConversion-Funnel: Fahrer rutschen eine Rampe pro Stufe hinunter; der Pool jeder Lippe fängt die Drop-offs dieser StufeSVG
    gold-pan ProSearch-as-you-type: Jeder Tastendruck wirbelt die Pfanne, bis drei bepreiste Nuggets übrig sindCanvas 2D
    museum-heatmap ProProduktanalytik: Besucher-Fußabdrücke erwärmen den Boden um die Funktionen, an denen Leute anhalten; das Ranking kommt von der HitzeCanvas 2D
    cell-divisionDatenbank-Branching: Main teilt sich in Branches, einer wird verworfen, einer merged zurück mit seiner ÄnderungCanvas 2D (Metaballs)
    scratch-off ProVorhersage: Folie kratzt die tatsächliche Abfahrtszeit ab, bevor die Anzeigetafel der Airline aufholtCanvas 2D
    sieve-tray ProFrüherkennung: Marker fallen durch ein feines Sieb; die wenigen, die hängen bleiben, werden herausgehoben und markiertMatter.js (gebaked)
    rube-goldberg ProVorher / Nachher: Eine Quittungsmarmelade klemmt in fünf alten Apparaten, fällt dann in einer Sekunde einen Schacht hinunterSVG
    language-balloons ProLokalisierung: Wortblasen in acht Schriften schweben auf und setzen den Satz jeder Locale zusammen, inklusive RTLMatter.js (gebaked)
    balloon-deploy ProDeployments: Jeder Build-Schritt bläht die Hülle auf; bei 100% hebt die Veröffentlichung abSVG
    pufferfish ProAutoscaling: Ein Kugelfisch bläht sich auf, um jeder Verkehrswelle zu entsprechen, während ein Fisch mit fester Kapazität herumgeworfen wirdSVG
    gear-tiers ProPreise: Pläne dargestellt als Camping-Ausrüstung, vom Zelt bis zum Basislager, mit einem monatlichen / jährlichen UmschalterSVG
    permission-chessboard ProRollen und Berechtigungen: Jede Rollenfigur landet auf dem Brett und beleuchtet nur die Felder, die sie verwenden darfSVG
    tree-ringsJahresrückblick: Ein Ring pro Jahr, so breit wie das Jahr beschäftigt war, mit Kerben für die ersten MaleSVG
    parchment-changelogChangelog: Eine Schriftrolle entrollt eine Veröffentlichung nach der anderen, jede getuscht, während sie ausgeliefert wirdSVG + DOM
    moving-boxesMigration: Ein Sackkarren trägt die Kiste jedes alten Werkzeugs in das neue Gebäude, nichts geht verlorenSVG + DOM
    privacy-pebbles ProPII-Schwärzung: Ein Rakel verwandelt jedes persönliche Detail in einen identischen Kieselstein; der Satz bleibt lesbarSVG + DOM
    ant-trail ProAutomatische Kategorisierung: Ameisen tragen die Quittung, Notiz und Genehmigung jedes Swipe in den richtigen Ledger-SlotCanvas 2D
    sunrise-payroll ProGlobales Gehaltsabrechnung: Ein Sonnenaufgang durchquert acht Zeitzonen und bezahlt jede Stadt um ihre eigene 9 UhrSVG
    whiteout ProRuhe: Ein geschäftiges Dashboard löst sich in Nebel auf und lässt die eine Zahl zurück, die zähltWebGL Shader + DOM
    ink-flood ProTheming, White-Label: Ein Farbchip flutet das gesamte Produkt in einem neuen FarbschemaSVG
    integration-deck ProIntegrationen: Jedes Werkzeug ist eine Taste auf einem isometrischen Makro-Pad; ein Workflow spielt als Akkord, während ein Run-Log jeden Schritt eintipptThree.js
    margin-rails ProHerkunft: Eine Notiz schreibt sich selbst, während Passagen, die aus früheren Dateien übernommen wurden, auf Schienen hereingleiten, die ihre Quelle nennenSVG + DOM
    pigeonhole-wallGedächtnis: Dokumente archivieren in beschrifteten Fächern, und eine Anfrage zieht die drei Quellen, die sie brauchtSVG + DOM
    redline-front ProVertragsprüfung: Eine Prüffront überstreicht das Dokument und gibt es als fertige Redline mit verifizierten Behörden zurückSVG + DOM
    step-railSo funktioniert's, Onboarding: Ein Token reist nummerierte Schritte entlang; jede Karte öffnet sich zu dem, was ihr Schritt produziert hat, und der letzte landet das ErgebnisSVG + DOM
    pipeline-boardWorkflows, Pipeline: Karten rücken Spalte für Spalte auf einem Kanban-Board vor, während Zählungen und Summen ihnen folgenDOM
    account-healthKundenbindung, Customer Success: Eine Gesundheitstabelle spielt den Monat nach; ein Konto rutscht in Gefahr, ein Playbook wird ausgelöst und es erholt sichSVG
    split-wipeVorher / Nachher, Konsolidierung: Ein Teiler streift über verstreute manuelle Arbeit und jedes Fragment schnappt in eine ProduktoberflächeDOM
    roadmap-railRoadmap, Meilensteine: Ein Heute-Marker wandert auf der Zeitachse; ausgelieferte Meilensteine füllen sich und der wichtigste Launch öffnet sich zu einer KarteSVG
    trust-ringsSicherheit, Compliance: Anfragen passieren konzentrische Kontrollringe um die Daten; die Unbefugte wird gestoppt und protokolliertSVG
    balance-scalePreise, Qualität vs. Kosten: Drei Balkenwaagen, jede Neigung berechnet aus den Scores; unsere kippt zur QualitätSVG
    crate-discrepancyAbgleich: Tabletts heben sich aus einer Kiste und haken den Packzettel ab; das kurze schwebt mit seiner Notiz aufSVG + DOM
    press-qaTesten, CI: Builds rollen von einer Presse; ein Arm schnippt den mit einem fehlgeschlagenen Test einen Schacht hinunter und er besteht beim erneuten DurchlaufSVG
    radar-sweepObservability: Jeder laufende Job ist ein Blip auf einem Radarschirm; ein Cursor greift hinein und pausiert den fehlschlagendenCanvas 2D + DOM
    agent-checkoutProdukt-UI-Demo, Agent-Zahlungen: Eine Kaufanfrage, eine maskierte virtuelle Karte wird automatisch ausgefüllt, der Limit-Meter bewegt sich um den Betrag, die Quittung kommt zur ListeDOM + ui-kit
    click-to-doneProdukt-UI-Demo, jede Ein-Aktions-Funktion (einladen, senden, genehmigen, veröffentlichen): Ein echter Bildschirm in einem Browser-Frame, der Cursor tippt, wählt und klickt, die Kamera zoomt auf das Ergebnis und zieht sich zurückDOM + ui-kit
    dashboard-pushProdukt-UI-Demo, Analytik und Reporting: Die Hauptkennzahl baut sich aus dem Diagramm auf, während es gezeichnet wird, der Cursor wischt über einen Tooltip, die Kamera zoomt auf den Moment, der zählt, ein Bereichswechsel verwandelt jede SerieDOM + SVG + ui-kit
    phone-stackProdukt-UI-Demo, Mobilgeräte und Benachrichtigungen: Warnungen landen auf einem Sperrbildschirm mit jeweils einem Signalring, ein Tippen öffnet die neueste im App-Bildschirm, ein Wischen nach Hause löscht sieDOM + ui-kit
    shot-demoProdukt-UI-Demo aus einem Screenshot: Der eigene Screenshot des Kunden in einem Frame; der Cursor tippt in seine echten Felder und klickt auf seinen echten Button, Werte ändern sich im Gesicht der Marke, ein Spotlight und ein Callout landen auf dem ErgebnisDOM + Screenshot + ui-kit
    integration-deck ist der 3D-Standard: Ein taktiles Objekt, eine physische Aktion, flache Toon-Bänder, eine Tintenkontur, eine echte isometrische Kamera und Labels in der Schriftart der Marke. Die anderen Three.js-Objektszenen (ein Orbit-Hub, eine Sortierwand, ein extrudiertes Logo, eine glTF-Showcase) leben außerhalb des öffentlichen Satzes, bis sie überarbeitet werden; die 3D-Tooling (vendor/three-full.min.js, `ve

…

Verwandte Skills