Command Line

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:

VariableProviderGet a key
OPENROUTER_API_KEYOpenRouter — one key, many models (recommended)openrouter.ai/keys
ANTHROPIC_API_KEYAnthropic (Claude)console.anthropic.com
OPENAI_API_KEYOpenAI (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 16

The 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 --vision to 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.mp4

AI 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

EffectWhat it doesPresets
zoom3dA 3D camera move that tilts and pushes in on a pointtour, push, orbit, flat
spotlightDims (and optionally blurs) everything around a focus areafocus, soft, blur
blurBlurs a region itself, to hide or soften an elementmedium, light, strong
calloutA bordered, dimmed highlight box around an elementhighlight, spotlight, neon
followA camera that glides along with the cursorgentle, loose, tight
establishAn opening camera move across the framecorners, 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.