Generate 3D GPX flyover videos locally, using CesiumJS in a headless Chrome.
- Install ffmpeg —
brew install ffmpegon macOS. - Get a free Cesium ion token.
- Copy the env example and paste the token:
cp .env.example .env # edit .env, set CESIUM_ION_TOKEN - Install deps:
npm install
npx tsx src/cli.ts render path/to/track.gpx \
-o out.mp4 \
--fps 30 \
--width 1280 --height 720 \
--duration 30 \
--trailing 400 --altitude 200Options:
| Flag | Default | Meaning |
|---|---|---|
-o, --output |
out.mp4 |
Output MP4 path |
--fps |
30 | Frames per second |
--width / --height |
1280 / 720 | Resolution in pixels |
--duration |
track time or 30s | Video duration override |
--trailing |
400 | Camera trailing distance (m) |
--altitude |
200 | Camera altitude above target (m) |
npm testThe E2E smoke test is skipped unless both CESIUM_ION_TOKEN is set and ffmpeg is on PATH.
See docs/superpowers/specs/2026-04-13-kintoun-design.md for the design and docs/superpowers/plans/2026-04-13-kintoun-mvp.md for the implementation plan.
Pipeline:
GPX → parse → resample (per fps) → Puppeteer+Cesium → screenshot per frame → ffmpeg → MP4