Generate high-converting App Store & Google Play screenshots with device frames, benefit-driven headlines, multi-language support, and cultural visual touches. Works as a standalone CLI tool or as a Claude Code skill with a guided 6-phase workflow.
Check the whole set of the screenshots generated by this skill
- 4 platforms — iOS phone (1320×2868), Android phone (1080×1920), iPad Pro 13" (2064×2752), Android tablet (1600×2560)
- 6–8 screenshots per platform with benefit-driven action headlines
- English-first multi-language — Generate in English, then translate to any language via Gemini with one command
- Cultural visual touches —
--lang-codeautomatically weaves culturally resonant aesthetics into the visuals (Ottoman tiles for Turkish, Bauhaus geometry for German, cherry blossoms for Japanese, etc.) - Standardised output naming — Files follow
{lang_code}_{n:02d}.pngformat (e.g.,en_01.png,tr_05.png,de_03.png) - Device frames — Realistic iPhone 16 Pro Max, Pixel-style Android, iPad Pro 13", and Android tablet frames
- High CTR design — Action verbs, visual hierarchy, bold brand colours, subtle gradients
- Smart text colour — Automatically picks white or dark text based on background luminance
- Gemini AI enhancement — All screenshots are polished with
nano-banana-proornano-banana-2for professional-grade output - No paywall rule — Enforced throughout the workflow (never includes subscription/IAP screens)
- Python 3.8+
- Pillow (PIL fork)
- macOS recommended (uses SF Pro Display font; falls back to system fonts on Linux)
- Gemini API key (required for AI enhancement)
git clone https://github.com/abutun/claude-skill-aso-cosmicmeta-ss.git
cd claude-skill-aso-cosmicmeta-ss
pip3 install PillowThe skill uses SF Pro Display Black for headline text. On macOS, download and install it from Apple's developer fonts. Expected path after installation:
/Library/Fonts/SF-Pro-Display-Black.otf
Falls back to Helvetica (macOS) or DejaVu Sans (Linux) if SF Pro is unavailable.
python3 generate_frame.pyCreates four frame PNGs in assets/:
| File | Device | Size |
|---|---|---|
iphone_frame.png |
iPhone 16 Pro Max (Dynamic Island) | 1054×2870 |
android_frame.png |
Pixel-style phone (punch-hole) | 900×1980 |
ipad_frame.png |
iPad Pro 13" (front camera) | 1600×2400 |
android_tablet_frame.png |
Android 10" tablet (punch-hole) | 1280×2200 |
# Option 1: Environment variable
export GEMINI_API_KEY="your-api-key-here"
# Option 2: Save to config file (persists across sessions)
python3 gemini_enhance.py --save-key "your-api-key-here"
# Option 3: Pass directly each time
python3 gemini_enhance.py --api-key "your-api-key-here" ...Get your key from Google AI Studio.
Install and invoke via Claude Code for a fully guided workflow.
Install via npx add-skill:
npx skills add abutun/claude-skill-aso-cosmicmeta-ssOr manually:
# Personal (all projects)
cp -r claude-skill-aso-cosmicmeta-ss ~/.claude/skills/
# Project-specific
cp -r claude-skill-aso-cosmicmeta-ss .claude/skills/Restart your Claude Code session, then ask Claude to generate store screenshots.
The skill walks through 6 phases:
| Phase | What happens |
|---|---|
| 1. Configuration | Choose platforms (phone / tablet / all), screenshot count, language, source, brand colour, Gemini model & API key |
| 2. Benefit Discovery | Analyzes your codebase (or asks you) to craft action-verb headlines |
| 3. Screenshot Pairing | Matches app screenshots to benefits, quality-checks, enforces no-paywall rule |
| 4. Generation | Runs compose.py + Gemini enhancement; outputs en_01.png … en_0N.png per platform |
| 5. Showcase | Generates a side-by-side preview; provides upload instructions |
| 6. Multi-language | Translates English screenshots to any language via Gemini, with cultural touches per locale |
Example interaction:
You: Generate store screenshots for my app
Claude: [Phase 1 — asks for platforms, count, language...]
You: All platforms, 6 screenshots, English first then Turkish and German
Claude: [Analyzes codebase, proposes headlines, generates en_01–en_06 for all 4 platforms,
then tr_01–tr_06 with Ottoman tile cultural accents,
then de_01–de_06 with Bauhaus geometry accents...]
# iOS phone
python3 compose.py \
--platform ios \
--bg "#E31837" \
--verb "TRACK" \
--desc "YOUR DAILY MOOD" \
--screenshot path/to/shot.png \
--output output/en/ios/en_01.png
# iPad Pro 13"
python3 compose.py \
--platform ipad \
--bg "#E31837" \
--verb "TRACK" \
--desc "YOUR DAILY MOOD" \
--screenshot path/to/shot_tablet.png \
--output output/en/ipad/en_01.png
# Android phone
python3 compose.py \
--platform android \
--bg "#1A73E8" \
--verb "DISCOVER" \
--desc "NEW FEATURES" \
--screenshot path/to/shot.png \
--output output/en/android/en_01.png
# Android tablet
python3 compose.py \
--platform android_tablet \
--bg "#1A73E8" \
--verb "DISCOVER" \
--desc "NEW FEATURES" \
--screenshot path/to/shot_tablet.png \
--output output/en/android_tablet/en_01.pngArguments:
| Argument | Required | Description |
|---|---|---|
--platform |
Yes | ios, android, ipad, android_tablet |
--bg |
Yes | Background hex colour (e.g., #E31837) |
--verb |
Yes | Action verb headline (e.g., TRACK) |
--desc |
Yes | Benefit descriptor (e.g., YOUR DAILY MOOD) |
--screenshot |
Yes | Path to the app screenshot PNG/JPG |
--output |
Yes | Output file path |
--no-gradient |
No | Disable subtle background gradient overlay |
This transforms plain mockups into premium, high-converting visuals. Handles enhancement, translation, cultural localisation, and output renaming in one step.
# Enhance English screenshots (phone)
python3 gemini_enhance.py \
--input-dir output/en/ios/ \
--output-dir output/en/ios/ \
--model nano-banana-pro \
--app-desc "mood tracking app" \
--bg-color "#E31837" \
--lang-code "en"
# → outputs en_01.png, en_02.png, ...
# Translate to Turkish with Ottoman cultural touches
python3 gemini_enhance.py \
--input-dir output/en/ios/ \
--output-dir output/tr/ios/ \
--model nano-banana-pro \
--translate-to "Turkish" \
--lang-code "tr"
# → outputs tr_01.png, tr_02.png, ... with subtle tile/tulip motifs
# Translate to Japanese with wabi-sabi aesthetic
python3 gemini_enhance.py \
--input-dir output/en/ios/ \
--output-dir output/ja/ios/ \
--model nano-banana-pro \
--translate-to "Japanese" \
--lang-code "ja"
# → outputs ja_01.png, ja_02.png, ... with cherry blossom / ink-wash touches
# Tablet platforms — same pattern
python3 gemini_enhance.py \
--input-dir output/en/ipad/ \
--output-dir output/tr/ipad/ \
--model nano-banana-pro \
--translate-to "Turkish" \
--lang-code "tr"
# Single file
python3 gemini_enhance.py \
--input output/en/ios/en_01.png \
--output output/tr/ios/tr_01.png \
--model nano-banana-2 \
--translate-to "Turkish" \
--lang-code "tr"
# Custom enhancement prompt
python3 gemini_enhance.py \
--input shot.png \
--output enhanced.png \
--model nano-banana-2 \
--prompt "Add warm lighting, floating music notes, and glass reflections"Arguments:
| Argument | Required | Description |
|---|---|---|
--input |
Yes* | Input screenshot path (single file mode) |
--output |
Yes* | Output path (single file mode) |
--input-dir |
Yes* | Input directory (batch mode) |
--output-dir |
Yes* | Output directory (batch mode) |
--model |
Yes | nano-banana-pro (higher quality) or nano-banana-2 (faster) |
--lang-code |
No | ISO 639-1 code (e.g., en, tr, de, ja). Renames batch output to {code}_{n:02d}.png and adds cultural visual hints |
--translate-to |
No | Translate headline text to this language (e.g., "Turkish"). Input must be English |
--app-desc |
No | Short app description for contextual decorative elements |
--bg-color |
No | Background hex colour for gradient guidance |
--index |
No | Screenshot index for prompt alternation (even=style A, odd=style B) |
--api-key |
No | Gemini API key (or use env var / config file) |
--save-key |
No | Save API key to .gemini_config.json |
--prompt |
No | Custom prompt (overrides built-in prompts) |
--platform |
No | Force ios, android, ipad, or android_tablet (auto-detected from dimensions) |
*Use either --input/--output or --input-dir/--output-dir.
Gemini models:
| Model | Quality | Speed | Best for |
|---|---|---|---|
nano-banana-pro |
Higher | Slower | Final production screenshots |
nano-banana-2 |
Good | Faster | Rapid iteration and previews |
Cultural touches by language code:
| Code | Aesthetic applied |
|---|---|
tr |
Ottoman geometric tiles, tulip motifs, terracotta & turquoise |
de |
Bauhaus geometry, cool steel blues, structured minimalism |
fr |
Art Nouveau curves, gold accents, Parisian elegance |
ja |
Cherry blossoms, wabi-sabi simplicity, ink-wash textures |
ko |
Hanji paper texture, bojagi colour geometry |
zh |
Cloud ruyi patterns, bamboo, red & gold accents |
ar |
Arabesque geometry, crescent motifs, lapis blue & gold |
ru |
Constructivist geometry, deep reds & golds |
es |
Moorish tile hints, sienna tones, Mediterranean vitality |
it |
Renaissance composition, terracotta & cobalt |
pt |
Azulejo tile patterns, deep indigo blues |
hi |
Mandala patterns, saffron & marigold, Mughal geometry |
uk |
Petrykivka folk florals, sunflowers, blue & gold |
nl, pl, th, id |
Additional supported locales |
python3 showcase.py \
--ios output/ios/en_01.png output/ios/en_02.png output/ios/en_03.png \
--android output/android/en_01.png output/android/en_02.png output/android/en_03.png \
--output showcase.pngpython3 generate_frame.pyRegenerates all four frames in assets/. Only needed if you modify frame constants.
output/
en/ ← English (default / source language)
ios/ (1320×2868)
en_01.png
en_02.png
...
android/ (1080×1920)
en_01.png
...
ipad/ (2064×2752)
en_01.png
...
android_tablet/ (1600×2560)
en_01.png
...
tr/ ← Turkish (translated from en/)
ios/
tr_01.png
...
android/
ipad/
android_tablet/
de/ ← German
ios/
de_01.png
...
android/
...
ja/ ← Japanese
...
showcase.png ← Side-by-side preview
| Platform | Width | Height | Store requirement |
|---|---|---|---|
| iOS phone (App Store) | 1320 | 2868 | iPhone 6.9" (16 Pro Max) |
| Android phone (Google Play) | 1080 | 1920 | Standard phone |
| iPad Pro 13" (App Store) | 2064 | 2752 | iPad Pro 13-inch |
| Android tablet (Google Play) | 1600 | 2560 | Large screen phone/tablet |
# Check if a new version is available
python3 update.py --check
# Update to the latest version
python3 update.py --update
# Show current version
python3 update.py --version- Go to My Apps > your app > App Store tab
- Scroll to Screenshots
- Upload iOS files (
en_01.png…en_0N.png) under iPhone 6.9-inch Display - Upload iPad files under iPad Pro 13-inch Display
- Go to your app > Store presence > Main store listing
- Upload Android phone files under Phone screenshots
- Upload Android tablet files under Tablet screenshots (10-inch)
- Benefit-first messaging — Headlines communicate user value, not feature names
- Action verbs — Bold verbs (TRACK, DISCOVER, BUILD, CREATE) drive engagement
- Visual hierarchy — Eye flows naturally: headline → device → app content
- Consistent branding — Same colour, typography, and layout across the entire set
- Real content — Screenshots show the app in action, never empty states
- Cultural authenticity — Each language version resonates visually with its target market
Edit constants in generate_frame.py (corner radius, bezel, colours, etc.) and regenerate:
python3 generate_frame.pyEdit the PLATFORMS dict in compose.py:
device_y— Vertical position of the device on canvastext_top— Where headline text startsverb_size_max/verb_size_min— Font size range for action verbsdesc_size— Font size for descriptors
Update FONT_CANDIDATES_BOLD and FONT_CANDIDATES_REGULAR in compose.py.
MIT