with one click
prez-image
// Generate, search, and create images for prez presentations. AI generation via Pollinations, photo search via Unsplash/Pexels, and SVG-to-PNG rendering.
// Generate, search, and create images for prez presentations. AI generation via Pollinations, photo search via Unsplash/Pexels, and SVG-to-PNG rendering.
Create beautiful presentations from any codebase. Zero-opinion slide engine — you have full React/HTML/CSS freedom inside each slide.
Visually validate prez slides by generating screenshots and diffing them against a baseline. Use after editing slides.tsx to confirm slides render correctly.
| name | prez-image |
| description | Generate, search, and create images for prez presentations. AI generation via Pollinations, photo search via Unsplash/Pexels, and SVG-to-PNG rendering. |
| metadata | {"author":"Enriquefft","version":"1.0.0","argument-hint":"describe the image you need"} |
Get images into prez slides. Three capabilities, one CLI.
Slide numbering: 1-based externally everywhere. See skills/prez/SKILL.md#slide-numbering-convention.
Global flags (-h / --help / -V / --version): shared across every prez-* CLI. See skills/prez/SKILL.md#global-cli-flags.
-his--help, not--height. Use--height <px>for image height.-h 720will error with exit code 2.
bunx prez-image resolves @enriquefft/prez from the nearest package.json. If you don't have a deck yet, scaffold one with bunx @enriquefft/prez init — that adds the package as a dependency and installs all three prez skills via the skills CLI.
If you arrived here via bunx skills add Enriquefft/prez (skills-first flow), continue with bunx @enriquefft/prez init from the project root — re-running it is idempotent (skills CLI re-symlinks the same source).
When building slides with prez and you need:
gensearchrenderIf the user already has images in their repo, just reference them directly — no tool needed.
All commands use bunx prez-image from the project root.
| Command | Purpose |
|---|---|
gen <prompt> | AI image generation (Pollinations.ai) |
search <query> | Royalty-free photo search (Unsplash/Pexels) |
render <file.svg> | SVG-to-PNG rendering |
models | List available Pollinations AI models |
setup | Configure API keys (interactive or via flags) |
bunx prez-image gen "a dark futuristic cityscape, minimal, cinematic" -o deck/public/hero.png
Requires a Pollinations API key. Free to register — run prez-image setup or set POLLINATIONS_API_KEY in the environment. The CLI exits with a descriptive error if no key is present.
Options:
-o, --output <path> — output file (required)-w, --width <px> — width, default 1280--height <px> — height, default 720--model <name> — Pollinations model, default flux. Run bunx prez-image models to list; unknown names error out.--seed <n> — seed for reproducible output--enhance — AI-rewrite the prompt for higher-quality output--negative-prompt <s> — things to avoid (e.g. "blurry, text, watermark")--quality <level> — low | medium | high | hd (gptimage model only)--transparent — transparent background (gptimage model only)bunx prez-image search "team collaboration in modern office" -o deck/public/team.jpg
Searches Unsplash and Pexels for royalty-free, landscape-oriented photos. Requires at least one API key:
UNSPLASH_ACCESS_KEY — free at https://unsplash.com/developersPEXELS_API_KEY — free at https://www.pexels.com/api/Options:
-o, --output <path> — output file (required)--provider <name> — unsplash or pexels. Omit unless you have a reason to pin one provider — the default tries both and returns the first hit, which is what agents want.bunx prez-image render diagram.svg -o deck/public/diagram.png
Converts an SVG file to a PNG. Use this when you've written an SVG (diagram, flowchart, icon, pattern) and need a raster image.
Options:
-o, --output <path> — output file (required)-w, --width <px> — output width, default 1280bunx prez-image models
Prints the Pollinations model catalog. Run this before passing --model <name> so you don't guess a name the backend has removed.
bunx prez-image setup # interactive prompts
bunx prez-image setup --pollinations-key <key> # non-interactive
bunx prez-image setup --unsplash-key <key> --pexels-key <key>
Writes ~/.config/prez/config.json. Environment variables (POLLINATIONS_API_KEY, UNSPLASH_ACCESS_KEY, PEXELS_API_KEY) override the config file.
deck/public/<img src="/filename.png" />bunx prez-image gen "abstract dark gradient with subtle geometric shapes" -o deck/public/bg-hero.png
<Slide>
<div className="relative h-full w-full">
<img src="/bg-hero.png" className="absolute inset-0 w-full h-full object-cover" />
<div className="relative z-10 flex flex-col items-center justify-center h-full text-white">
<h1 className="text-8xl font-black">Launch Day</h1>
</div>
</div>
</Slide>
Write an SVG file, render it, use it:
bunx prez-image render /tmp/architecture.svg -o deck/public/architecture.png
<Slide>
<div className="flex items-center justify-center h-full bg-white p-16">
<img src="/architecture.png" className="max-h-full" />
</div>
</Slide>
If bunx prez-image gen exits non-zero with Error: No Pollinations API key configured, either run bunx prez-image setup (interactive) or set POLLINATIONS_API_KEY in the environment before retrying.
If --model <name> errors with unknown model, run bunx prez-image models and pick from the printed list.
deck/public/ so Vite serves them at the root path-w 1280 --height 720 for full-bleed slide backgrounds (these are the defaults)--seed with gen to get reproducible results while iteratingsearch, landscape orientation is automatically requested to match slide aspect ratio--enhance when the user's prompt is terse; skip it when they've given you a precise, composed prompt (it can drift off-brief)-h <number> expecting height. -h is help; use --height.bunx prez-image models first.--provider unless the user asked for a specific one — the default tries both Unsplash and Pexels.--quality or --transparent to the default flux model. Those flags only affect the gptimage model.prez — the presentation engine itself (skills/prez/SKILL.md)prez-validate — screenshot each slide and check for rendering issues (skills/prez-validate/SKILL.md). Image-heavy slides are a common visual-regression class: after swapping or regenerating an image, run bunx prez-validate --diff baseline/ to catch layout breakage the filename change alone doesn't reveal.