Screenshot Generation
Generate marketing screenshots from a JSON spec (or a text description via OpenAI) using fal.ai for image generation.
Looking for screenshot translation to other locales? That moved to the ASO section — see Screenshot Translation.
generate-screenshots
kappmaker generate-screenshots --prompt "A fitness tracking app with workout plans"
kappmaker generate-screenshots --prompt "A meditation app" --input ./my-screenshots
kappmaker generate-screenshots --prompt "A recipe app" --style 3 --resolution 4K
The --prompt flow above uses OpenAI (GPT-4.1) to write the screenshot spec for you. Alternatively,
supply the spec yourself and skip OpenAI entirely:
kappmaker spec-template screenshots --output Assets/screenshots/spec.json
# fill the skeleton, then:
kappmaker generate-screenshots --spec Assets/screenshots/spec.json
Flow
- A detailed screenshot spec (JSON) is obtained — from your
--specfile, or generated by OpenAI (GPT-4.1) from--prompt. - fal.ai generates a grid of 8 screenshots (
nano-banana-2, ornano-banana-2/editwith reference images). - The grid is split into individual screenshots.
Authoring the spec yourself (--spec)
OpenAI's only role in this command is turning your description into a JSON spec — you can write that JSON yourself (or let a coding agent like Claude Code write it, which is what the bundled Claude Code skill does):
kappmaker spec-template screenshots --output Assets/screenshots/spec.json— writes the canonical skeleton. Its_instructionskey explains the fill rules and is stripped before generation.kappmaker generate-screenshots --print-prompt --prompt "<one-line description>" --style <id>— prints the full spec-authoring instructions (schema + the chosen style's visual direction) without calling any API.- Fill the skeleton (exactly 8
screenshotsentries — the 2×4 grid is fixed) and run with--spec.
The template is a proven baseline, not a rigid schema — richer specs are welcome as long as the 2×4-grid/8-entry contract holds. Editing one field and re-running is the fastest way to iterate.
Output
Assets/screenshots/appstore/ + Assets/screenshots/playstore/ (+ Fastlane dirs if MobileApp/distribution exists).
Options
| Flag | Description | Default |
|---|---|---|
--spec <path> | Pre-authored spec JSON — skips OpenAI entirely | — |
--print-prompt | Print the spec-authoring instructions and exit (no API calls) | — |
--prompt <text> | App description (required unless --spec is given) | — |
--input <dir> | Reference screenshot directory | Auto-detect Assets/screenshots |
--style <id> | Style preset (1-8) | 1 |
--output <dir> | Output base directory | Assets/screenshots |
--resolution <res> | AI resolution (1K, 2K, 4K) | 2K |
Screenshot Styles
| Style | Description |
|---|---|
1 | Rich multi-device marketing (bold text, shadows & reflections) |
2 | Minimal Apple-style (single centered device, clean whitespace) |
3 | SaaS conversion-focused (feature bullet callouts) |
4 | Bold geometric color blocks (vibrant split backgrounds) |
5 | Full-bleed UI, no device frames (edge-to-edge with blur overlay) |
6 | Cinematic depth (layered devices, depth-of-field) |
7 | Editorial lifestyle (soft neutral backgrounds, serif type) |
8 | Floating product reveal (Apple keynote aesthetic) |
Requirements
Requires falApiKey, and imgbbApiKey if using reference images. openaiApiKey is only needed for
the --prompt-without---spec flow.
Next: translate and localize
Once you have generated screenshots, run Screenshot Translation to fan them out to 48+ locales, and Metadata Localization to write the matching text metadata.