apple creative-assets: App Store Header and Search Results (PRODUCT_PAGE_HEADER_ASSET, APP_STORE_SEARCH_RESULTS_ASSET) through the App Asset Library: local size / alpha / video checks, upload once by MD5, select only approved assets, replace on a changed file; check / validate note, MCP tool, gallery and desktop Art row, docs, pitfall 75
This commit is contained in:
parent
14ffe3545a
commit
e5369090fa
17 changed files with 486 additions and 16 deletions
|
|
@ -911,3 +911,17 @@ that fails without the fix (see CONTRIBUTING.md).
|
|||
- **Guard:** `IPHONE_DUO_DISPLAY` in `cli/shots/spec.ts` (null = not in the API; regenerate with
|
||||
`bun tools/gen-api.ts` and fill in the exact names), `skippedDuoSets` in `cli/apple/screenshots.ts`, the
|
||||
`screenshots-duo` note in check / validate. `tests/ppo.test.ts`.
|
||||
|
||||
## 76. Header and Search Results assets are not uploaded like screenshots
|
||||
- **Symptom:** a header or search results image was "uploaded" but the version page still says "Browse approved
|
||||
assets to select a header asset", or a re-run uploaded the same file again.
|
||||
- **Cause:** these slots take assets from the app's Asset Library (`GET /v1/apps/{id}/assetLibrary`), not a set of
|
||||
their own. Each asset is reviewed by Apple first; only an APPROVED asset can be selected (an
|
||||
`appAssetLibraryPlacements` row with `PRODUCT_PAGE_HEADER_ASSET` or `APP_STORE_SEARCH_RESULTS_ASSET` and the version
|
||||
localization). Library assets carry no `sourceFileChecksum`, and the write-ups' name for the search slot is the
|
||||
API's `APP_STORE_SEARCH_RESULTS_ASSET` (`SEARCH_RESULTS_ADS_ASSET` is the Apple Ads one).
|
||||
- **Do:** `storebound apple creative-assets`: it keeps the file's MD5 in `referenceName` ("storebound <md5>"), reuses
|
||||
a library asset with the same MD5, selects only approved ones and says "waiting for Apple's approval" otherwise.
|
||||
Uploading and selecting are normal steps, not owner buttons; the version's Submit for Review stays the owner's.
|
||||
- **Guard:** `cli/apple/creative-assets.ts`, `tests/creative-assets.test.ts` (fake App Store Connect: dry run, upload,
|
||||
waiting, select, replace on a changed file, nothing on the same file).
|
||||
|
|
|
|||
|
|
@ -197,6 +197,25 @@ images there), so only do that after a test has a winner. What the stores offer,
|
|||
- Test one thing per experiment (usually the first screenshot or the order), give it real traffic, and do not read
|
||||
results early.
|
||||
|
||||
## Header and Search Results (App Store creative assets, iOS / iPadOS 27+)
|
||||
Since 5 Oct 2026 the App Store version page has a "Header and Search Results" tab next to "App Previews and
|
||||
Screenshots". Optional: without these assets the App Store uses in-app events, app previews and screenshots.
|
||||
- **Files** under the renders folder, per language: `<renders>/<lang>/creative/header.png` (3840 x 1646, 21:9),
|
||||
`search.png` (3:2, 1920 x 1280 up to 3840 x 2560), or one `universal.png` (5244 x 2950, 16:9) that fills either slot
|
||||
(also `<renders>/creative/universal.png` for every locale, or `apple.creativeAssets.universal`). JPEG / PNG without
|
||||
alpha. Videos instead: `header.mov|m4v|mp4` / `search.*`, 5-30 s, 30 or 60 fps, the same aspect ratio; search videos
|
||||
play muted. `apple.creativeAssets.header: false` / `search: false` skips a slot.
|
||||
- **Not rendered by `shots render`**: the scene templates are portrait device shots; make the wide art yourself (or from
|
||||
the feature graphic artwork at the larger size) and drop it in.
|
||||
- **Upload:** `storebound apple creative-assets --dry`, then without `--dry`. Files go into the app's Asset Library
|
||||
(API: `appAssetLibraryImages` / `appAssetLibraryVideos`, category `CREATIVE_ASSETS`); Apple reviews each asset, and
|
||||
only an approved one is selected for the slot (`appAssetLibraryPlacements`, `PRODUCT_PAGE_HEADER_ASSET` /
|
||||
`APP_STORE_SEARCH_RESULTS_ASSET`). Until then the run says "waiting for Apple's approval": re-run later. Same file
|
||||
(MD5) = nothing sent. MCP: `apple_creative_assets` (dry by default).
|
||||
- **Checks:** `storebound check` and `validate` print an info note when no locale has one.
|
||||
- **Play:** no such slot. The feature graphic (1024 x 500, `play images`) and the promo video (YouTube URL) are the
|
||||
closest equivalents.
|
||||
|
||||
## From an AI tool (MCP)
|
||||
`storebound mcp` exposes `shots_check` (read-only) and `shots_capture`, `shots_render`, `shots_gallery` (local files,
|
||||
`dry_run: true` by default: run it once dry, show the plan, then with `dry_run: false`). Uploads (`apple_screenshots`,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue