Communitygithub.com

Angles

Erstelle ruhige, fotografische Produktvideos (langsame Kamerafahrt, nah und schräg, echter Bildschirm-Look, weicher Fokus) aus einer Bildschirmaufnahme oder einem Screenshot, die lokal mit dem Angles-Studio gerendert werden. Ideal für Demovideos, Produktshots, Launch-Clips und Mockup-Videos.

Was ist Angles?

Angles ist ein CLI-Tool, das aus Bildschirmaufnahmen oder Screenshots ruhige, fotografische Produktvideos erstellt. Es funktioniert rein lokal, ohne dass die Studio-Oberfläche geöffnet oder bearbeitet werden muss: Ein kleines JSON-Spezifikationsdokument steuert alle Parameter – Stil, Kamerabewegung, Hintergrund, Schatten, Look, Fokus und Overlays – und das Tool validiert die Spezifikation, bevor es rendert. Der Workflow ist zweistufig: Zuerst wird mit dem Befehl `check` ein Raster von Vorschaubildern (eine Zeile pro Variante) erstellt, anhand dessen man die beste Komposition auswählt. Dann rendert `make` das finale MP4. Das Tool ist bewusst auf subtile Effekte ausgelegt und verzichtet auf Over-Engineering – es unterstützt Plattformen wie Chrome, `ffmpeg`, Node.js 18+ und Python3 mit numpy/pillow und ist ideal für Entwickler, die schnell hochwertige Demovideos oder Produktshots benötigen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/HansEngebretsen/angles/tree/main

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Angles?

Schreibe eine kleine JSON-Spezifikation, führe einen Befehl aus und lies eine JSON-Zeile zurück. Öffne oder bearbeite das Studio nicht; die Spezifikation erreicht alles, was es machen kann, und lehnt alles ab, was es nicht kann.

node <dieser Ordner>/angles.mjs check spec.json   # ~5s, kein Video: ein Blatt, eine Reihe von 4 Frames pro Variante
node <dieser Ordner>/angles.mjs make spec.json    # das mp4 (1920 breit, etwa 4s Arbeit pro Sekunde Video) + ein Blatt
  1. Prüfe, bevor du erstellst. Gib die Optionen, die du abwägst, in variants an. Ein check zeigt alle als beschriftete Reihen in einem einzigen kleinen Bild an. Sieh dir das Blatt an, wähle eine Reihe aus und führe dann make einmal aus mit den Feldern dieser Reihe, die in die Spezifikation eingefügt wurden (und variants wird entfernt). Rendere keine Videos, um Looks zu vergleichen.
  2. Betrachte ein Blatt, niemals das mp4. Lies den Pfad, den es für das sheet ausgibt. Das reicht, um Bildausschnitt, Winkel und Fokus zu beurteilen.
  3. Bei ok: false korrigiere nur das, was die warnings benennen. Sie listen die gültigen Optionen auf. node angles.mjs schema gibt alle Optionen aus, falls du sie brauchst. Rate nicht.
{ "source": "~/Desktop/demo.mov", "out": "~/Desktop/angles", "trim": { "in": 2, "out": 8 },
  "look": "bright", "background": "mist", "shadow": "soft",
  "variants": [{ "style": "close", "level": "gentle" }, { "style": "raking" }, { "style": "float" }] }
FeldWerte
sourceEine Aufnahme (.mov .mp4 .webm) oder ein Screenshot (.png .jpg). Aufnahmen werden einmal in Frames geschnitten und wiederverwendet (--fresh macht es erneut).
styleclose, raking (nah in einem echten Winkel); float, angle, flyby, focus, push, reveal, rise, tiltshift
levelstill, whisper (Standard), gentle, lively, bold. Jeder hat ein Geschwindigkeitsbudget, und die Bewegung schrumpft, um hineinzupassen. speed ≤ budget gilt als ruhig.
trim, loop, aspect{ "in": s, "out": s }; true blendet das Ende in den Start über; 16:9 (Standard), 1:1, 9:16, beliebiges B:H
beatsMehrere Stile in einem Clip: [{ "at": 0, "style": "float" }, { "at": 4, "style": "close" }]
look, lookAmountbright, crisp grain, glossy, sunlit, pixel macro, cool studio, film print, none; 0–1
background, shadowmist linen sky sage blush dusk oder #hex; none soft close float
focus{ "at": s, "u": 0–1, "v": 0–1, "size": 30 }. Lasse u/v weg, um auf den Bereich zu fokussieren, in dem sich die Aufnahme ändert.
overlays[{ "at": 1, "dur": 1.5, "keys": ["⌘", "K"] }] oder { "text": "…" }: Abzeichen oberhalb der Kamera
ease, dir, travelsteady soft settle constant; left right; 0–2 (Standard .8)

Geschmack: Subtilität gewinnt (whisper oder gentle), eine Idee pro Clip (ein Stil oder zwei oder drei beats) und ein Trim von 3–8 s, der auf der Aktion endet.

Benötigt Chrome, ffmpeg, node 18+ und python3 mit numpy und pillow; führe npm i einmal hier aus. Es stellt sich selbst auf Port 8790 bereit (setze ANGLES_PORT, um ihn zu ändern).

Verwandte Skills