store-screenshots skill: gallery, variants, Play listing experiments and Product Page Optimization

This commit is contained in:
CRTkafa 2026-10-10 22:16:39 +08:00
parent 1f8ada248e
commit d36825e44f

View file

@ -1,6 +1,6 @@
---
name: store-screenshots
description: Produce store screenshots and the Play feature graphic for a mobile game in every required size and many languages - capture raw frames from the running game (web build via playwright, iOS Simulator via simctl, Android emulator or device via adb, or a folder of frames from any engine), write per-language marketing copy (incl. RTL Arabic and CJK fonts), render captioned scenes with device frames, JPEG copies for Play, and upload to both stores. Use when the user needs App Store / Google Play screenshots, preview images, a feature graphic, localized screenshot captions, or screenshot sizes.
description: Produce store screenshots and the Play feature graphic for a mobile game in every required size and many languages - capture raw frames from the running game (web build via playwright, iOS Simulator via simctl, Android emulator or device via adb, or a folder of frames from any engine), write per-language marketing copy (incl. RTL Arabic and CJK fonts), render captioned scenes with device frames, review them in a local gallery, A/B variants for store listing experiments / Product Page Optimization, JPEG copies for Play, and upload to both stores. Use when the user needs App Store / Google Play screenshots, preview images, a feature graphic, localized screenshot captions, or screenshot sizes.
---
# Store screenshots
@ -16,7 +16,7 @@ iOS Simulator capture needs macOS + Xcode (`xcrun`); Android capture needs `adb`
| ios65 | 1284 x 2778 | App Store 6.5" (`APP_IPHONE_65`) |
| ipad13 | 2064 x 2752 | App Store 13" iPad (`APP_IPAD_PRO_3GEN_129`), required when the app runs on iPad; only with `apple.ipad: true` |
| play | 1080 x 1920 | Play phone (2-8, ratio at most 2:1) |
| tab7 | 1080 x 1920 | Play 7" tablet (tablet frames) |
| tab7 | 1080 x 1920 | Play 7" tablet (tablet frames, Android tablet body) |
| tab10 | 1440 x 2560 | Play 10" tablet |
| feature | 1024 x 500 | Play feature graphic (required) |
@ -32,7 +32,8 @@ Sources (re-check before a release; Apple renames display classes often):
**iPad.** Set `apple.ipad: true` only if the app runs on iPad (iPhone-only apps skip the iPad set). Then the default
sizes include `ipad13` (3:4 layout), `apple screenshots` uploads it, `validate` requires it, and tablet frames default
to the 13" iPad screen (1032 x 1352 CSS px @2x below a 24 px bar), so an `iPad Pro 13-inch` / `iPad Air 13-inch`
simulator screenshot fits after the bar is cropped. Play tablet sizes (tab7 / tab10) reuse the same tablet frames.
simulator screenshot fits after the bar is cropped. Play tablet sizes (tab7 / tab10) reuse the same tablet frames, drawn
in a plain Android tablet body instead of the iPad one.
## Steps
1. **Game switches.** Give the game URL params for screenshots: language, fixed seed, no ads / analytics / purchase
@ -67,7 +68,8 @@ simulator screenshot fits after the bar is cropped. Play tablet sizes (tab7 / ta
the copy (CJK, Arabic, Hebrew, Devanagari, Thai, Cyrillic/Greek). Re-run after copy edits.
5. **Scenes.** `shots.scenes`: palette (fire, violet, blast, green, night, sky, gold, candy or custom), frames (one
front phone + optional back phones with x / dy / scale / rotate), badge slots (y, side, icon, hot, stars).
6. **Render.** `storebound shots render --lang en` first, review `store/renders/en/sheet.png` (contact sheet), then
6. **Render.** `storebound shots render --lang en` first, review `store/renders/en/sheet.png` (contact sheet, sizes
packed into a grid), then
all languages in the background: `storebound shots render > .storebound/render.log 2>&1 &`.
7. **JPEG for Play.** `storebound shots jpeg` (q92, about 4x smaller than PNG; App Store stays PNG).
8. **Check.** `storebound shots check` (read-only, exit 1 on errors): pixel sizes (Apple: a listed size, portrait or
@ -75,7 +77,33 @@ simulator screenshot fits after the bar is cropped. Play tablet sizes (tab7 / ta
24-bit PNG and 8 MB, counts per set (Apple 1-10, Play 2-8), text overflow flags (warnings). `--variants` also checks
A/B variant folders. `storebound validate` runs the same checks on the renders folder and lists errors as
blockers next to the store state (`--no-local` skips them).
9. **Upload.** `storebound play images` and `storebound apple screenshots` (both idempotent, background + log).
9. **Review.** `storebound shots gallery` writes `<renders>/index.html`: one self-contained page (no network, open it
from disk) with every language x size x scene, app previews with posters, variant tabs, filters (language, size,
only issues, search) and light / dark. Tiles with store check errors are outlined red, warnings amber, with the
message under the tile. Show the owner this page (or a screenshot of it) before uploading.
10. **Upload.** `storebound play images` and `storebound apple screenshots` (both idempotent, background + log).
## A/B variants and store experiments
`shots.variants.<id>`: `scenes` (order / subset), `copy` (a JSON merged over the base copy, only what changes),
`palettes` (per scene). `storebound shots render --variant b` (or `--variants` for all) writes
`<renders>/b/<lang>/...`; `shots check --variants`, `shots gallery` (tabs) and `shots jpeg --variant b` cover them.
`play images --variant b` / `apple screenshots --variant b` upload a variant to the MAIN listing (replacing the base
images there), so only do that after a test has a winner. What the stores offer, honestly:
- **Google Play store listing experiments** (Play Console > Grow users > Store listing experiments): up to 2 variants
against the current listing; one default-graphics experiment or up to 5 localized experiments at a time; icon,
feature graphic, screenshots (+ descriptions for localized ones); stops automatically after 6 months. Console only:
the Play Developer API has no experiments endpoint, so storebound renders and checks the variant images and you
upload them in the experiment form yourself.
https://support.google.com/googleplay/android-developer/answer/6227309
- **App Store Product Page Optimization** (App Store Connect > your app > Product Page Optimization): up to 3
treatments against the original, one test at a time, up to 90 days; icon, screenshots and app previews, localized
per treatment; new metadata goes through App Review; alternate icons must ship in the binary; shown on iOS / iPadOS
15+. https://developer.apple.com/app-store/product-page-optimization/
The App Store Connect API has the resources (`appStoreVersionExperiments` v2, treatments, treatment localizations
with their own screenshot / preview sets), but storebound does not create or start experiments: set the test up in
App Store Connect and upload the treatment screenshots there (the variant folder already has the right sizes).
- Test one thing per experiment (usually the first screenshot or the order), give it real traffic, and do not read
results early.
## Gotchas
- Output is 24-bit RGB PNG: Play rejects alpha / palette PNGs, Apple rejects alpha.