Skip to content

abutun/claude-skill-aso-cosmicmeta-ss

Repository files navigation

ASO Screenshot Generator

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.

showcase

Check the whole set of the screenshots generated by this skill

Features

  • 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-code automatically 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}.png format (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-pro or nano-banana-2 for professional-grade output
  • No paywall rule — Enforced throughout the workflow (never includes subscription/IAP screens)

Requirements

  • 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)

Installation

1. Clone and install dependencies

git clone https://github.com/abutun/claude-skill-aso-cosmicmeta-ss.git
cd claude-skill-aso-cosmicmeta-ss
pip3 install Pillow

2. Install the font

The 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.

3. Generate device frames

python3 generate_frame.py

Creates 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

4. Configure Gemini API key

# 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.

Usage

Option A — Claude Code Skill (Recommended)

Install and invoke via Claude Code for a fully guided workflow.

Install via npx add-skill:

npx skills add abutun/claude-skill-aso-cosmicmeta-ss

Or 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.pngen_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...]

Option B — Standalone CLI

compose.py — Compose a single screenshot

# 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.png

Arguments:

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

gemini_enhance.py — AI enhancement, translation & cultural touches

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

showcase.py — Generate a preview gallery

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.png

generate_frame.py — Regenerate device frames

python3 generate_frame.py

Regenerates all four frames in assets/. Only needed if you modify frame constants.

Output Structure

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

Screenshot Dimensions

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

Updating

# 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

Uploading to Stores

Apple App Store Connect

  1. Go to My Apps > your app > App Store tab
  2. Scroll to Screenshots
  3. Upload iOS files (en_01.pngen_0N.png) under iPhone 6.9-inch Display
  4. Upload iPad files under iPad Pro 13-inch Display

Google Play Console

  1. Go to your app > Store presence > Main store listing
  2. Upload Android phone files under Phone screenshots
  3. Upload Android tablet files under Tablet screenshots (10-inch)

Design Principles

  • 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

Customization

Changing device frame appearance

Edit constants in generate_frame.py (corner radius, bezel, colours, etc.) and regenerate:

python3 generate_frame.py

Changing layout and typography

Edit the PLATFORMS dict in compose.py:

  • device_y — Vertical position of the device on canvas
  • text_top — Where headline text starts
  • verb_size_max / verb_size_min — Font size range for action verbs
  • desc_size — Font size for descriptors

Using custom fonts

Update FONT_CANDIDATES_BOLD and FONT_CANDIDATES_REGULAR in compose.py.

License

MIT

About

ASO Screenshot Generator - High-converting App Store & Google Play screenshots with device frames, benefit-driven headlines, and multi-language support

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages