AI director
Let an AI drive a web demo for you in plain language, then add cinematic effects — 3D camera moves, spotlights, callouts — to the moments that matter.
This is the most hands-off way to use the screenify CLI: it builds on web demos by letting an AI both drive the demo for you — no action script needed — and direct the cinematic effects on the moments that matter. You bring your own AI key; screenify does the rest.
Bring your own AI key
Agent features call a language model, so you bring a key from an AI provider — screenify doesn't resell AI. Set one of these environment variables and screenify auto-detects the provider:
| Variable | Provider | Get a key |
|---|---|---|
OPENROUTER_API_KEY | OpenRouter — one key, many models (recommended) | openrouter.ai/keys |
ANTHROPIC_API_KEY | Anthropic (Claude) | console.anthropic.com |
OPENAI_API_KEY | OpenAI (or any OpenAI-compatible endpoint via --base-url) | platform.openai.com |
You only pay your own provider for the tokens used — a typical demo is a few cents.
Setting the key
The key is read from your environment. Pick one of three ways:
# 1. Persist it (recommended) — add to your shell profile, then open a new terminal
echo 'export OPENROUTER_API_KEY="sk-or-..."' >> ~/.zshrc
source ~/.zshrc
# 2. For the current terminal only
export OPENROUTER_API_KEY="sk-or-..."
# 3. Inline, just for one command
OPENROUTER_API_KEY="sk-or-..." screenify web record https://your-app.com -p "demo it"Swap ~/.zshrc for ~/.bashrc if you use bash. Once set, screenify doctor --json reports that agent mode is ready, and any agent command picks the key up automatically.
Prefer not to touch your shell? In the desktop app, open Settings → Command Line → AI API key, paste your key, and Save. The CLI uses it automatically — no env var needed. An env var of the same name still takes priority if you set one.
Let the AI drive the demo
Instead of an action script, give a plain-language task with -p:
screenify web record https://your-app.com \
-p "demo the landing page: scroll through the main sections and click the primary call-to-action" \
--model openai/gpt-4o-mini \
-o demo.mp4 -- --wallpaper orange --padding 16The agent reads the page, decides the next action, performs it, and repeats — then screenify finishes it with the same smooth cursor, auto-zoom, and idle-trim as a scripted demo. As it goes, it can also emphasize the moments it judges important with a cinematic effect.
Model tip: pick a model that's reliable at tool use —
openai/gpt-4o-mini(via OpenRouter) is a good, cheap default. Add--visionto also send the agent screenshots of the page (slower and more tokens, but better on visually complex sites).
Useful options: --provider, --model, --max-steps <n>, --vision, and --no-agent-effects (let the agent drive but add no effects).
Add cinematic effects
The effects command layers cinematic moments onto any recording — most naturally a web demo, where the click points are already known. It's non-destructive: it renders a styled copy and leaves your project untouched unless you pass --save.
There are two ways to direct it.
Plain recipe
Spell out exactly what you want with --plan "<effect> [preset] [count|all] [param=value …]" — param=value tunes any knob listed in effects schema (e.g. follow amount=2 for a 2x follow-cursor zoom):
# A 3D camera tour across the 3 most important clicks
screenify effects demo.screenify --plan "zoom3d tour 3" -o cinematic.mp4
# A glowing callout on the 2 key moments
screenify effects demo.screenify --plan "callout neon 2" -o cinematic.mp4AI director
Add --ai and describe the intent — a language model reads what each moment is and picks which to emphasize and which effect fits each:
screenify effects demo.screenify --ai \
--plan "make this feel cinematic and draw attention to the main call-to-action" \
-o cinematic.mp4--dry-run shows what would be added without changing anything; --save writes the effects back into the project.
The effect catalog
| Effect | What it does | Presets |
|---|---|---|
zoom3d | A 3D camera move that tilts and pushes in on a point | tour, push, orbit, flat |
spotlight | Dims (and optionally blurs) everything around a focus area | focus, soft, blur |
blur | Blurs a region itself, to hide or soften an element | medium, light, strong |
callout | A bordered, dimmed highlight box around an element | highlight, spotlight, neon |
follow | A camera that glides along with the cursor | gentle, loose, tight |
establish | An opening camera move across the frame | corners, topdown, diagonal |
Run screenify effects schema --json for the full, always-current catalog — every effect, preset, and tunable parameter.
Two AI roles, one tool
It's worth separating the two ways AI shows up here:
web record -p— the AI performs the demo (clicks, scrolls) and can emphasize moments live.effects --ai— the AI directs the effects on an already-recorded demo, choosing which moments deserve a flourish.
Use them together (drive with -p, then refine with effects --ai) or on their own. And remember the whole CLI is itself drivable by an outer agent like Claude Code — see For agents & CI.
Web demos
Point screenify at a URL and it drives a real browser, adds a smooth cursor and auto-zoom, trims dead time, and hands you a finished demo video.
For agents & CI
screenify is built to be driven — by an AI agent like Claude Code, by your own scripts, or by a CI pipeline. Every command speaks JSON and the tool describes itself at runtime.