---
name: canvas-gen
description: Generate Spotify Canvas / Apple Music Motion / IG Reel format vertical videos from a clip. Output is 9:16 (1080x1920), 3-9s, perfect-loop with seamless first-to-last frame match. Built-in modes — boomerang, ping-pong, fade-loop, freeze-extract — and auto-detects optimal loop length. Use when the user wants a Spotify Canvas, Apple Motion poster, IG Reel loop, vertical loop, or seamless 8s vertical video for streaming platforms.
---


# canvas-gen

3-9s vertical perfect-loop generator. Spec-correct for Spotify Canvas (3-8s, 9:16, ≤2.3MB hopefully).

## Run

```bash
python3 ~/.claude/skills/canvas-gen/scripts/canvas_gen.py \
  --input footage.mp4 --out canvas.mp4 --mode boomerang --duration 8
```

## Modes

- `boomerang` — forward then reverse, seamless reverse loop
- `pingpong` — forward, hold, reverse, hold
- `fade` — fades to black at loop seam
- `freeze` — extracts a 0.3s slice and crossfades it to itself for a hypnotic motion-still
- `cut` — straight cut (only good if first/last frames already match)

## Output spec

- 9:16 portrait, 1080x1920
- 30fps, libx264 CRF 22
- ~1-3MB at 8s — fits Canvas size limits
- Audio stripped (Canvas has no audio anyway)

## Tips

- Pick a 1-2s window where the source has consistent motion vector
- `--start` to seek into the source (default 0)
- For Spotify, target 8s at 24fps (`--fps 24`) for smaller file size
