Skip to main content

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

  1. A detailed screenshot spec (JSON) is obtained — from your --spec file, or generated by OpenAI (GPT-4.1) from --prompt.
  2. fal.ai generates a grid of 8 screenshots (nano-banana-2, or nano-banana-2/edit with reference images).
  3. 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):

  1. kappmaker spec-template screenshots --output Assets/screenshots/spec.json — writes the canonical skeleton. Its _instructions key explains the fill rules and is stripped before generation.
  2. 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.
  3. Fill the skeleton (exactly 8 screenshots entries — 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

FlagDescriptionDefault
--spec <path>Pre-authored spec JSON — skips OpenAI entirely
--print-promptPrint the spec-authoring instructions and exit (no API calls)
--prompt <text>App description (required unless --spec is given)
--input <dir>Reference screenshot directoryAuto-detect Assets/screenshots
--style <id>Style preset (1-8)1
--output <dir>Output base directoryAssets/screenshots
--resolution <res>AI resolution (1K, 2K, 4K)2K

Screenshot Styles

StyleDescription
1Rich multi-device marketing (bold text, shadows & reflections)
2Minimal Apple-style (single centered device, clean whitespace)
3SaaS conversion-focused (feature bullet callouts)
4Bold geometric color blocks (vibrant split backgrounds)
5Full-bleed UI, no device frames (edge-to-edge with blur overlay)
6Cinematic depth (layered devices, depth-of-field)
7Editorial lifestyle (soft neutral backgrounds, serif type)
8Floating 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.