store-screenshots
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese스토어 스크린샷 생성기
商店截图生成器
원본 앱 스크린샷을 받아 → 기기 프레임 + 브랜드 배경 + 홍보 문구를 얹은 스토어 등록용 이미지를 만든다.
接收原始应用截图 → 叠加设备边框 + 品牌背景 + 宣传文案,生成用于商店上架的图片。
에이전트 호환
Agent 兼容性
이 스킬은 Claude Code와 OpenAI Codex 어디서든 동작한다. 본문의 표현은 실행 중인 에이전트에 맞게 해석한다:
- "선택지로 묻는다" — 선택지 UI 툴이 있으면 그걸 쓰고(Claude Code: AskUserQuestion, multiSelect 지원), 없으면(Codex 등) 번호를 매긴 선택지를 텍스트로 제시하고 번호로 답하게 한다. 추천 항목에는 "(Recommended)"를 붙인다.
- "이미지를 열어 확인한다" — 에이전트의 이미지 열람 수단을 쓴다(Claude Code: Read, Codex: view_image).
- 원본 폴더 인자 — Claude Code는 , Codex는 스킬 호출 문장에 함께 적힌 경로를 쓴다.
$ARGUMENTS
本 Skill 可在 Claude Code 和 OpenAI Codex 中运行。正文中的操作描述会按当前运行的 Agent 进行解释:
- “用选项询问” — 如果有选项 UI 工具,则使用该工具(Claude Code:AskUserQuestion,支持 multiSelect);如果没有(Codex 等),则用文本提供带编号的选项,并要求用户按编号回答。推荐项要附加“(Recommended)”。
- “打开图像确认” — 使用 Agent 提供的图像查看能力(Claude Code:Read,Codex:view_image)。
- 原始文件夹参数 — Claude Code 使用 ,Codex 使用 Skill 调用语句中一并填写的路径。
$ARGUMENTS
절대 규칙
绝对规则
- 컨펌 전에는 전체 렌더링을 하지 않는다. 문구 초안 표 + 시안 1장(첫 슬라이드)을 보여주고 사용자 OK를 받은 뒤에만 나머지를 렌더링한다.
- 최종 PNG는 전부 픽셀 크기를 검증(또는 ImageMagick
sips)하고, 규격 표와 다르면 다시 렌더링한다.identify - 기기 프레임은 외부에서 다운로드하지 않고 HTML/CSS로 직접 그린다(라이선스·네트워크 문제 없음). 실사 프레임을 원하면 아래 "실사 프레임" 참고.
- 중간 작업 파일(html 등)은 임시 폴더(스크래치패드 등)에 두고, 출력 폴더에는 최종 PNG만 남긴다.
- 사용자에게 손을 쓰게 하지 않는다. 화면 전환·탭 같은 기기 조작은 에이전트가 adb/idb/AppleScript로 직접 한다(아래 "자동 캡처"). 사용자의 개입은 선택지 고르기나 짧은 타이핑까지만. "화면 띄우고 메시지 보내주세요" 같은 진행은 금지 — 자동화 수단이 전부 실패했을 때만 선택지로 수동 진행 여부를 묻는다.
- 获得确认前不得进行整体渲染。 先展示文案草案表 + 1 张设计稿(第一张幻灯片),只有收到用户的 OK 后才渲染其余内容。
- 必须使用 或 ImageMagick
sips验证所有最终 PNG 的像素尺寸;如果与规格表不一致,则重新渲染。identify - 设备边框不得从外部下载,应直接使用 HTML/CSS 绘制(避免许可证和网络问题)。如果需要逼真的设备边框,请参阅下文“逼真设备边框”。
- 中间工作文件(html 等)应放在临时文件夹(scratchpad 等)中,输出文件夹中只保留最终 PNG。
- 不要让用户手动完成工作。 屏幕切换、标签页切换等设备操作应由 Agent 通过 adb/idb/AppleScript 直接完成(见下文“自动捕获”)。只有选择选项或进行简短输入时才需要用户参与。禁止让用户执行“打开屏幕并发消息给我”之类的操作——只有当所有自动化手段均失败时,才用选项询问是否改为手动继续。
워크플로
工作流
1. 원본 수집
1. 收集原始素材
- 재실행이면 먼저 묻는다. 출력 폴더()나 이전에 쓰던 원본이 이미 있는 상태에서 "다시 해줘" 류의 요청이 오면, 작업 전에 선택지로 묻는다:
store-screenshots/- "기존 스크린샷 재활용해서 업데이트 (Recommended)" — 캡처를 생략하고 기존 원본으로 문구·디자인·규격만 다시 작업한다.
- "처음부터 새로 만들기" — 앱에서 원본 캡처부터 전부 다시 한다.
- 어느 쪽이든 렌더링 전에 대상 출력 폴더를 비워, 장수가 달라졌을 때 이전 파일이 섞이지 않게 한다.
- 인자로 폴더를 받았으면 거기서, 아니면 현재 디렉토리에서 png/jpg를 스캔한다:
find . -maxdepth 2 \( -iname '*.png' -o -iname '*.jpg' \) -not -path '*/store-screenshots/*' - 파일이 없으면 에이전트가 직접 기기를 조작해서 캡처한다(아래 자동 캡처). 사용자에게 화면 전환을 부탁하지 않는다.
- 각 원본 이미지를 열어 무슨 화면인지 파악한다. 문구는 실제 화면 내용에 근거해야 한다. 직접 캡처한 경우에도 캡처 직후 이미지를 열어 의도한 화면이 맞는지 확인하고, 아니면 다시 탐색해서 재캡처한다.
- 앱 이름·아이콘을 찾을 수 있으면 참고한다(Info.plist, strings.xml, ic_launcher, 앱 아이콘 파일 등).
- 캡처할 화면 목록(홈, 핵심 기능 화면 등)은 에이전트가 앱 구조를 보고 스스로 정하되, 애매하면 2단계 질문에 선택지로 끼워서 같이 묻는다.
- 重新运行时先询问。 如果输出文件夹()或之前使用的原始素材已经存在,而用户又提出“重新制作”之类的请求,则应在开始工作前通过选项询问:
store-screenshots/- “复用现有截图进行更新 (Recommended)” — 跳过捕获,使用现有原始素材重新制作文案、设计和规格。
- “从头重新制作” — 从应用原始捕获开始,重新完成全部内容。
- 无论选择哪一种,都应在渲染前清空目标输出文件夹,避免张数变化时混入之前的文件。
- 如果通过参数提供了文件夹,则从该文件夹读取;否则在当前目录中扫描 png/jpg:
find . -maxdepth 2 \( -iname '*.png' -o -iname '*.jpg' \) -not -path '*/store-screenshots/*' - 如果未找到文件,Agent 应直接操作设备完成捕获(见下文“自动捕获”),不要请用户切换屏幕。
- 打开每张原始图像,判断其显示的页面。 宣传文案必须以实际页面内容为依据。即使是直接捕获的,也要在捕获后立即打开图像,确认是否为预期页面;如果不是,则重新探索并重新捕获。
- 如果可以找到应用名称和图标,则将其作为参考(Info.plist、strings.xml、ic_launcher、应用图标文件等)。
- 需要捕获的页面列表(首页、核心功能页面等)由 Agent 根据应用结构自行决定;如果不明确,则在第 2 步的问题中作为选项一并询问。
자동 캡처 — Android (adb, 완전 자동)
自动捕获 — Android(adb,完全自动化)
- 로 기기/에뮬레이터 확인. 앱 실행:
adb devices또는adb shell monkey -p <package> 1.adb shell am start -n <package>/<activity> - 현재 화면의 UI 구조를 덤프해서 탭·버튼 좌표를 얻는다:
→ XML의
adb exec-out uiautomator dump /dev/tty에서 중심 좌표 계산.bounds="[x1,y1][x2,y2]" - 이동 → 안정화 → 캡처를 한 번에 (sleep은 기기 쪽에서 실행):
adb shell "input tap X Y; sleep 1" && adb exec-out screencap -p > 02-mypet.png - 화면마다 2~3을 반복. 스크롤이 필요하면 , 텍스트 입력은
adb shell input swipe.adb shell input text
- 使用 确认设备或模拟器。启动应用:
adb devices或adb shell monkey -p <package> 1。adb shell am start -n <package>/<activity> - 转储当前屏幕的 UI 结构,以获取标签页和按钮坐标:
→ 从 XML 的
adb exec-out uiautomator dump /dev/tty中计算中心坐标。bounds="[x1,y1][x2,y2]" - 将移动、等待稳定和捕获一次完成(sleep 在设备端执行):
adb shell "input tap X Y; sleep 1" && adb exec-out screencap -p > 02-mypet.png - 每个屏幕重复 2~3 次。需要滚动时使用 ,输入文本时使用
adb shell input swipe。adb shell input text
자동 캡처 — iOS 시뮬레이터
自动捕获 — iOS 模拟器
캡처는 . 화면 이동은 우선순위대로:
xcrun simctl io booted screenshot 01.png- 딥링크가 최우선. 앱 소스에서 URL scheme을 찾는다(Info.plist의 , 라우팅 코드). 있으면 탭이 아예 필요 없다:
CFBundleURLTypes→ 1초 대기 → 캡처. simctl만으로 100% 자동화되므로 아래 도구들이 전부 불필요. scheme이 없는 앱이면 "탭별 딥링크를 앱에 추가해줄까?"를 선택지로 제안해볼 것 — 몇 줄이면 되고 이후 재실행도 편해진다.xcrun simctl openurl booted "myapp://calendar" - idb가 있으면():
command -v idb로 요소 좌표를 얻고idb ui describe-all.idb ui tap X Y - Maestro가 있으면():
command -v maestro/tapOn으로 flow yaml을 만들어takeScreenshot.maestro test - 둘 다 없으면 AppleScript로 Simulator 창을 직접 클릭(손쉬운 사용 권한 필요):
System Events로 Simulator 창의 position/size를 얻고, 기기 해상도 → 창 좌표로 비례 변환해 , 사이사이
click at {x, y}.delay 1 - 전부 실패했을 때만 선택지로 묻는다: "idb 설치 후 자동 진행 (Recommended)" / "앱에 딥링크 추가하고 진행" / "내가 직접 화면을 넘길게". 수동을 골랐을 때만 사용자에게 화면 전환을 부탁한다.
捕获命令:。屏幕导航按以下优先级执行:
xcrun simctl io booted screenshot 01.png- Deep Link 优先级最高。 从应用源码中查找 URL scheme(Info.plist 的 、路由代码)。如果存在,则完全不需要切换标签页:
CFBundleURLTypes→ 等待 1 秒 → 捕获。仅使用 simctl 即可实现 100% 自动化,因此以下工具都不再需要。如果应用没有 scheme,可通过选项询问“是否为每个标签页添加 Deep Link,以便继续执行?”——只需几行代码,之后重新执行也会更方便。xcrun simctl openurl booted "myapp://calendar" - 如果存在 (
idb),使用command -v idb获取元素坐标,再使用idb ui describe-all。idb ui tap X Y - 如果存在 (
Maestro),使用command -v maestro/tapOn创建 flow YAML,并通过takeScreenshot运行。maestro test - 如果两者都不存在,则使用 AppleScript 直接点击 Simulator 窗口(可能需要辅助功能权限):使用 System Events 获取 Simulator 窗口的 position/size,按设备分辨率与窗口坐标的比例进行转换,然后执行 ,操作之间使用
click at {x, y}。delay 1 - 只有在所有方式都失败后才通过选项询问:“安装 idb 后自动继续 (Recommended)” / “为应用添加 Deep Link 后继续” / “由我手动切换屏幕”。只有用户选择手动方式时,才请用户切换屏幕。
캡처 전 상태바 정리 (스토어 품질)
捕获前清理状态栏(商店品质)
모든 캡처의 시계·배터리·안테나를 통일하면 결과물이 한 세트로 보인다. 캡처 시작 전에 걸고, 끝나면 해제한다.
- iOS:
bash
xcrun simctl status_bar booted override --time "9:41" --batteryLevel 100 --cellularBars 4 --wifiBars 3 # 캡처 끝난 뒤: xcrun simctl status_bar booted clear - Android (데모 모드):
bash
adb shell settings put global sysui_demo_allowed 1 adb shell am broadcast -a com.android.systemui.demo -e command enter adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 0941 adb shell am broadcast -a com.android.systemui.demo -e command battery -e level 100 -e plugged false adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi show -e level 4 # 캡처 끝난 뒤: adb shell am broadcast -a com.android.systemui.demo -e command exit
统一所有捕获中的时钟、电池和天线图标,可以让最终图片呈现为同一套视觉风格。应在捕获开始前设置,并在捕获结束后解除。
- iOS:
bash
xcrun simctl status_bar booted override --time "9:41" --batteryLevel 100 --cellularBars 4 --wifiBars 3 # 캡처 끝난 뒤: xcrun simctl status_bar booted clear - Android(演示模式):
bash
adb shell settings put global sysui_demo_allowed 1 adb shell am broadcast -a com.android.systemui.demo -e command enter adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 0941 adb shell am broadcast -a com.android.systemui.demo -e command battery -e level 100 -e plugged false adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi show -e level 4 # 캡처 끝난 뒤: adb shell am broadcast -a com.android.systemui.demo -e command exit
2. 질문 플로우 (전부 선택지로)
2. 提问流程(全部使用选项)
이미 대화에서 답이 나온 항목은 다시 묻지 않는다. 사용자가 타이핑 없이 선택만으로 답할 수 있게 선택지로 묻는다.
1차 — 플랫폼 (질문 1개):
- App Store (iOS) / Google Play (Android) / 둘 다
2차 — 세부 (질문 4개를 한 번에, 기종 선택지는 1차 답에 맞춰 구성):
| 질문 | 선택지 |
|---|---|
| 기종 (복수 선택) | iOS: iPhone(Recommended), iPad · Android: Galaxy 폰(Recommended), Fold, Flip, 태블릿 · 둘 다: iPhone, iPad, Galaxy 폰, Fold·Flip |
| 스타일 | 기존 앱 디자인에 맞추기(Recommended) / 모던·미니멀 / 밝고 팝하게 / 다크·세련 |
| 장수 | 4장 / 5장(Recommended) / 6장 / 스토어 최대 |
| 어필 방향 | 알아서 뽑아줘(Recommended) / 핵심 기능 직접 지정 — 직접 지정이면 자유 입력(Other)으로 기능을 적게 한다 |
对于对话中已经回答的问题,不要再次询问。应使用选项,让用户无需输入文字即可完成选择。
第一轮 — 平台(一个问题):
- App Store(iOS)/ Google Play(Android)/ 两者都要
第二轮 — 细节(一次询问以下 4 个问题,机型选项根据第一轮答案调整):
| 问题 | 选项 |
|---|---|
| 机型(多选) | iOS:iPhone(Recommended)、iPad · Android:Galaxy 手机(Recommended)、Fold、Flip、平板 · 两者:iPhone、iPad、Galaxy 手机、Fold·Flip |
| 风格 | 与现有应用设计保持一致(Recommended) / 现代简约 / 明亮活泼 / 深色高级 |
| 张数 | 4 张 / 5 张(Recommended) / 6 张 / 商店允许的最大张数 |
| 主打方向 | 由你挑选(Recommended) / 直接指定核心功能——选择直接指定时,通过自由输入 (Other) 写下功能 |
3. 배경 디자인 결정
3. 决定背景设计
스타일 답에 따라 배경·장식·톤을 정한다.
- 기존 앱 디자인에 맞추기 (기본): 앱의 실제 디자인 시스템에서 뽑는다.
- 색: Android는 ·
res/values/colors.xml, iOS는themes.xml의 Color Set, Flutter는Assets.xcassets, 웹 기반이면 CSS 변수·tailwind config. 소스가 없으면 앱 아이콘·스크린샷에서 주조색과 포인트색을 추출한다.ThemeData - 톤: 앱 UI가 라이트면 밝게, 다크면 어둡게. 앱의 코너 radius가 크면 배경 장식도 둥글게, 버튼이 각지면 장식도 각지게.
- 색: Android는
- 모던·미니멀: 밝은 단색 또는 아주 옅은 그라데이션, 여백 크게, 장식 없음. 헤드라인 볼드 + 서브카피 옅게.
- 밝고 팝하게: 채도 높은 그라데이션(주조색 ± 인접색), 큰 블롭·도형 장식 1~2개, 기울임 적극 사용.
- 다크·세련: 계열 어두운 배경 + 주조색 글로우·그라데이션 포인트, 프레임 그림자 강하게.
#0b0b0f
공통: 텍스트는 상단 12~18%에 배경과 대비 확실한 색, 폰트 . 슬라이드마다 같은 hue에서 명도만 살짝 바꾸면 세트 느낌이 난다. 기기는 하단 중앙 + bottom bleed(화면 아래로 살짝 잘리게) + , 홀수 장 -2도 / 짝수 장 +2도 기울이면 리듬감(기울임 여부는 컨펌 때 언급).
-apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serifbox-shadow根据风格选择确定背景、装饰和色调。
- 与现有应用设计保持一致(默认):从应用实际使用的设计系统中提取。
- 颜色:Android 使用 和
res/values/colors.xml,iOS 使用themes.xml中的 Color Set,Flutter 使用Assets.xcassets,基于 Web 的应用则使用 CSS 变量或 tailwind config。如果找不到源码,则从应用图标和截图中提取主色与强调色。ThemeData - 色调:应用 UI 为浅色时使用明亮背景,为深色时使用深色背景。应用的圆角较大时,背景装饰也使用较大的圆角;按钮为直角时,装饰也使用直角。
- 颜色:Android 使用
- 现代简约:使用明亮的纯色或非常浅的渐变,加大留白,不添加装饰。标题使用粗体,副标题使用较浅的颜色。
- 明亮活泼:使用高饱和度渐变(主色及其邻近色),加入 1~2 个大型斑块或形状装饰,并积极使用倾斜构图。
- 深色高级:使用 系列的深色背景,以主色光晕或渐变作为亮点,并强化设备边框阴影。
#0b0b0f
通用要求:文字放在顶部 12%~18% 的位置,并确保与背景有明显对比;字体使用 。每张幻灯片保持相同 hue,仅略微调整明度,使整套图片风格统一。设备位于底部中央,并应用 bottom bleed(让屏幕底部略微被裁切)和 。奇数张使用 -2° 旋转,偶数张使用 +2° 旋转,从而形成节奏感(是否旋转应在确认阶段告知用户)。
-apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serifbox-shadow4. 시안 + 문구 초안 ← 컨펌 게이트
4. 设计稿 + 文案草案 ← 确认门
- 슬라이드 구성 (2차 질문의 장수 답 반영, App Store 최대 10장·Play 폼팩터당 2~8장):
- 1장: 훅 — 앱의 핵심 가치 한 줄. 목록에서 1~2장만 보이므로 가장 중요하다.
- 중간: 자랑할 기능 하나씩 (어필 방향 반영).
- 마지막: 신뢰·마무리(리뷰, 다운로드 수, CTA) — 근거가 있을 때만.
- 문구 규칙:
- 헤드라인: 한글 6~14자, 혜택 중심. "할 일을 잊지 않게" > "알림 기능".
- 서브카피: 0~1줄, 20자 이내.
- "1위", "최고" 같은 표현은 근거가 있을 때만.
- 문구 표 + 시안 1장을 함께 제시한다:
- 표: | # | 원본 파일 | 헤드라인 | 서브카피 |
- 시안: 1번 슬라이드만 실제 규격으로 렌더링해서 macOS면 로 띄워 보여준다. 배경·프레임·문구를 실물로 확인시키기 위함.
open <파일>
- 수정 요청이 오면 반영해 다시 제시한다(시안도 다시 렌더링). OK를 받으면 전체 렌더링으로.
- 幻灯片构成(反映第二轮问题中的张数选择;App Store 最多 10 张,Play 每个版式规格为 2~8 张):
- 第 1 张:吸引点击的内容——用一句话表达应用的核心价值。由于商店列表中通常只显示 1~2 张,因此这一张最为重要。
- 中间部分:每张突出一个功能(根据主打方向调整)。
- 最后一张:建立信任并收尾(评价、下载量、CTA)——仅在存在相关依据时使用。
- 文案规则:
- 标题:6~14 个韩文字符,以用户收益为中心。“不会忘记待办事项”优于“提醒功能”。
- 副标题:0~1 行,不超过 20 个韩文字符。
- 只有存在明确依据时,才能使用“第 1 名”“最佳”等表述。
- 同时提交文案表和 1 张设计稿:
- 表格:| # | 原始文件 | 标题 | 副标题 |
- 设计稿:仅将第 1 张幻灯片按实际规格渲染;如果使用 macOS,则通过 打开并展示。通过实际效果确认背景、边框和文案。
open <文件>
- 如果收到修改请求,则应用修改后再次提交(设计稿也要重新渲染)。收到 OK 后才能进行整体渲染。
5. 렌더링
5. 渲染
-
타깃 × 슬라이드마다 HTML 파일을 생성한다(아래 템플릿). body 크기 = 스토어 규격 픽셀.
-
원본 이미지는 상대경로로 참조한다(data URI 불필요 — 같은 폴더에 복사해 두면 된다).
<img src="./01.png"> -
렌더 명령 (기본: 헤드리스 크롬):bash
# 크롬 실행 파일 찾기 (OS에 맞게) CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" # macOS command -v google-chrome >/dev/null 2>&1 && CHROME=google-chrome # Linux command -v chromium >/dev/null 2>&1 && CHROME=chromium "$CHROME" --headless=new --screenshot="$OUT" --window-size=1320,2868 \ --force-device-scale-factor=1 --hide-scrollbars --virtual-time-budget=2000 "$HTML" -
크롬이 없으면 폴백:(첫 실행 시
npx -y playwright screenshot --viewport-size=1320,2868 "$HTML" "$OUT"필요할 수 있음).npx playwright install chromium
-
为每个目标平台 × 每张幻灯片生成一个 HTML 文件(见下方模板)。body 尺寸 = 商店规格的像素尺寸。
-
原始图像通过相对路径引用(无需使用 data URI——将文件复制到同一文件夹即可)。
<img src="./01.png"> -
渲染命令(默认使用无头 Chrome):bash
# 크롬 실행 파일 찾기 (OS에 맞게) CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" # macOS command -v google-chrome >/dev/null 2>&1 && CHROME=google-chrome # Linux command -v chromium >/dev/null 2>&1 && CHROME=chromium "$CHROME" --headless=new --screenshot="$OUT" --window-size=1320,2868 \\ --force-device-scale-factor=1 --hide-scrollbars --virtual-time-budget=2000 "$HTML" -
如果没有 Chrome,则使用以下回退方案:(首次运行时可能需要执行
npx -y playwright screenshot --viewport-size=1320,2868 "$HTML" "$OUT")。npx playwright install chromium
6. 검증·보고
6. 验证与报告
- 픽셀 크기 전수 확인 후 규격 표와 대조: macOS는 , 그 외 OS는
sips -g pixelWidth -g pixelHeight <파일>(ImageMagick).identify -format '%wx%h\n' <파일> - 슬라이드 최소 1장을 이미지로 직접 열어 확인: 글자 잘림, 프레임 비율 왜곡, 스크린샷 상하단 잘림.
- 출력 구조를 보여주고, 스토어 어느 슬롯에 올리면 되는지 안내하며 마무리한다.
출력 구조:
store-screenshots/
├── appstore-iphone-69/01.png … # 1320×2868
├── appstore-iphone-65/ # 1284×2778 — iPhone은 항상 두 세트
├── appstore-ipad-13/
├── play-phone/
└── play-foldable/- 逐一检查所有像素尺寸,并与规格表进行对照:macOS 使用 ,其他操作系统使用
sips -g pixelWidth -g pixelHeight <文件>(ImageMagick)。identify -format '%wx%h\n' <文件> - 至少直接打开 1 张幻灯片进行图像检查:确认文字没有裁切、设备边框比例没有变形、截图上下区域没有错误裁切。
- 展示输出结构,并说明每组图片应上传到商店的哪个位置,最后完成交付。
输出结构:
store-screenshots/
├── appstore-iphone-69/01.png … # 1320×2868
├── appstore-iphone-65/ # 1284×2778 — iPhone은 항상 두 세트
├── appstore-ipad-13/
├── play-phone/
└── play-foldable/스토어 규격 (2026년 8월 기준, 공식 문서 검증 완료)
商店规格(截至 2026 年 8 月,已完成官方文档验证)
| 타깃 | 크기(px, 세로) | 장수 | 비고 |
|---|---|---|---|
| App Store iPhone 6.9" | 1320×2868 | 최대 10 | 1290×2796도 허용. iPhone Air·iPhone 17 Pro Max·16 Pro Max 포함 |
| App Store iPhone 6.5" | 1284×2778 | 최대 10 | 1242×2688도 허용 |
| App Store iPad 13" | 2064×2752 | 최대 10 | iPad 지원 앱이면 필수. 2048×2732 허용 |
| Play 폰 | 1080×1920 | 2~8 | 9:16. 피처링 조건: 최소 1080px, 4장 이상 |
| Play 태블릿 7"/10" | 1080×1920 또는 1920×1080 | 최대 8 | 태블릿 지원 시 |
| Play 폴더블 | 폰 슬롯에 포함 | — | 별도 슬롯 없음. Fold 펼침 화면은 태블릿 슬롯에도 활용 가능 |
- iPhone은 6.9"와 6.5" 두 세트를 모두 렌더링한다. App Store Connect는 앱의 기기 지원 범위에 따라 6.5" 규격(1284×2778 / 1242×2688)을 요구하기도 해서, 6.9" 한 세트만 만들면 업로드가 거부될 수 있다. 같은 HTML에서 body 크기만 바꿔 다시 캡처하면 되므로 비용이 거의 없다.
규격은 바뀔 수 있다. 확신이 없으면 렌더링 전에 공식 문서를 확인한다:
- App Store: developer.apple.com/help/app-store-connect/reference/screenshot-specifications
- Play: support.google.com/googleplay/android-developer/answer/9866151
| 目标平台 | 尺寸(px,纵向) | 张数 | 备注 |
|---|---|---|---|
| App Store iPhone 6.9 英寸 | 1320×2868 | 最多 10 张 | 也允许 1290×2796。包括 iPhone Air、iPhone 17 Pro Max 和 16 Pro Max |
| App Store iPhone 6.5 英寸 | 1284×2778 | 最多 10 张 | 也允许 1242×2688 |
| App Store iPad 13 英寸 | 2064×2752 | 最多 10 张 | 支持 iPad 的应用必须提供。也允许 2048×2732 |
| Play 手机 | 1080×1920 | 2~8 张 | 9:16。精选条件:最低 1080px,至少 4 张 |
| Play 平板 7/10 英寸 | 1080×1920 或 1920×1080 | 最多 8 张 | 支持平板时必须提供 |
| Play 折叠设备 | 包含在手机位置中 | — | 没有单独位置。Fold 展开画面也可用于平板位置 |
- iPhone 必须同时渲染 6.9 英寸和 6.5 英寸两套图片。 App Store Connect 可能会根据应用支持的设备范围要求提供 6.5 英寸规格(1284×2778 / 1242×2688),如果只生成 6.9 英寸一套,可能会导致上传被拒。由于只需更改同一 HTML 中的 body 尺寸并重新捕获,因此额外成本几乎为零。
规格可能会发生变化。如果无法确定,应在渲染前查阅官方文档:
- App Store:developer.apple.com/help/app-store-connect/reference/screenshot-specifications
- Play:support.google.com/googleplay/android-developer/answer/9866151
기기 프레임 스펙 (CSS로 그리기)
设备边框规格(使用 CSS 绘制)
| 기기 | 화면비(세로) | 코너 radius | 베젤 | 상단 요소 |
|---|---|---|---|---|
| iPhone | 1320:2868 | 프레임 폭의 ~14% | 균일 ~2% | Dynamic Island 알약 (폭 ~26%, 상단에서 ~1.8%) |
| iPad | 3:4 | ~4% | 균일 ~3.5% | 없음 |
| Galaxy S | 9:19.5 | ~7% | 균일 ~1.5% | 중앙 펀치홀 (지름 ~3%) |
| Galaxy Fold 펼침 | 1856:2160 (거의 정사각) | ~5% | ~2% | 우측 상단 펀치홀 + 중앙 세로 힌지 라인(아주 옅게) |
| Galaxy Flip | 9:22 | ~8% | ~1.5% | 중앙 펀치홀 |
- 프레임 = (배경
div,#101014,border-radius= 베젤,padding로 금속 테두리 느낌 한 줄).inset box-shadow - 화면 = .
img { object-fit: cover; object-position: top; border-radius: 바깥radius − 베젤 } - 원본 비율이 프레임과 다르면 cover로 채우되 상단 고정(상태바 쪽이 보이는 게 자연스럽다).
- Galaxy 펀치홀: 알약 대신 .
.hole { width:34px; height:34px; border-radius:50%; background:#000; top:40px; left:50%; } - Fold 힌지: 화면 위에 세로 1줄 오버레이(투명→살짝 어둡게→투명).
linear-gradient
| 设备 | 屏幕比例(纵向) | 圆角 | 边框 | 顶部元素 |
|---|---|---|---|---|
| iPhone | 1320:2868 | 约为边框宽度的 14% | 均匀约 2% | Dynamic Island 胶囊形(宽度约 26%,距离顶部约 1.8%) |
| iPad | 3:4 | 约 4% | 均匀约 3.5% | 无 |
| Galaxy S | 9:19.5 | 约 7% | 均匀约 1.5% | 居中打孔(直径约 3%) |
| Galaxy Fold 展开 | 1856:2160(接近正方形) | 约 5% | 约 2% | 右上角打孔 + 中央垂直铰链线(非常浅) |
| Galaxy Flip | 9:22 | 约 8% | 均匀约 1.5% | 居中打孔 |
- 边框使用 绘制(背景
div、#101014、border-radius= 边框宽度,并使用padding营造单行金属边缘效果)。inset box-shadow - 屏幕使用 。
img { object-fit: cover; object-position: top; border-radius: 外部圆角 − 边框宽度 } - 如果原始图像比例与边框不同,使用 cover 填充,但必须固定在顶部(这样状态栏区域能够自然显示)。
- Galaxy 打孔:不要使用胶囊形,而应使用 。
.hole { width:34px; height:34px; border-radius:50%; background:#000; top:40px; left:50%; } - Fold 铰链:在屏幕上覆盖一条垂直的 线条(透明 → 略微变暗 → 透明)。
linear-gradient
실사 프레임을 원할 때
需要逼真设备边框时
사용자가 "진짜 기기 사진 프레임"을 원하면 직접 다운로드하지 말고 안내한다:
- Apple 공식 베젤: developer.apple.com/design/resources (Product Bezels, 마케팅 가이드라인 확인 필요)
- Samsung: Samsung Developers / Samsung Newsroom의 공식 목업 검색 사용자가 파일을 받아 경로를 주면, CSS 프레임 대신 그 이미지를 겹쳐 쓴다.
如果用户希望使用“真实设备照片边框”,不要直接下载,而应提供以下指引:
- Apple 官方边框:developer.apple.com/design/resources(需要确认 Product Bezels 和营销指南)。
- Samsung:在 Samsung Developers / Samsung Newsroom 中搜索官方 mockup。
如果用户提供已下载的文件及路径,则使用该图像进行叠加,替代 CSS 边框。
슬라이드 HTML 템플릿 (iPhone 6.9" 예시)
幻灯片 HTML 模板(以 iPhone 6.9 英寸为例)
다른 기기는 body 크기, 의 ··상단 요소만 위 표대로 바꾼다.
.deviceaspect-ratioborder-radiushtml
<!doctype html>
<html><head><meta charset="utf-8">
<style>
:root { --c1:#4F46E5; --c2:#312E81; } /* 앱 주조색으로 교체 */
* { margin:0; box-sizing:border-box; }
body {
width:1320px; height:2868px; overflow:hidden;
background:linear-gradient(165deg,var(--c1),var(--c2));
font-family:-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
display:flex; flex-direction:column; align-items:center;
}
.copy { text-align:center; margin-top:220px; color:#fff; padding:0 90px; }
.copy h1 { font-size:118px; font-weight:800; letter-spacing:-2px; line-height:1.15; }
.copy p { font-size:52px; font-weight:500; opacity:.85; margin-top:36px; }
.device {
margin-top:170px; width:1010px; aspect-ratio:1320/2868;
background:#101014; border-radius:145px; padding:24px;
box-shadow:0 80px 160px rgba(0,0,0,.45), inset 0 0 0 5px #3c3c40;
position:relative; transform:rotate(-2deg);
}
.device img { width:100%; height:100%; object-fit:cover; object-position:top; border-radius:121px; }
.island { position:absolute; top:52px; left:50%; transform:translateX(-50%);
width:270px; height:78px; border-radius:44px; background:#000; }
</style></head>
<body>
<div class="copy"><h1>헤드라인</h1><p>서브카피</p></div>
<div class="device"><img src="./01-home.png"><div class="island"></div></div>
</body></html>对于其他设备,只需按照上表修改 body 尺寸、 的 、 和顶部元素。
.deviceaspect-ratioborder-radiushtml
<!doctype html>
<html><head><meta charset="utf-8">
<style>
:root { --c1:#4F46E5; --c2:#312E81; } /* 앱 주조색으로 교체 */
* { margin:0; box-sizing:border-box; }
body {
width:1320px; height:2868px; overflow:hidden;
background:linear-gradient(165deg,var(--c1),var(--c2));
font-family:-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
display:flex; flex-direction:column; align-items:center;
}
.copy { text-align:center; margin-top:220px; color:#fff; padding:0 90px; }
.copy h1 { font-size:118px; font-weight:800; letter-spacing:-2px; line-height:1.15; }
.copy p { font-size:52px; font-weight:500; opacity:.85; margin-top:36px; }
.device {
margin-top:170px; width:1010px; aspect-ratio:1320/2868;
background:#101014; border-radius:145px; padding:24px;
box-shadow:0 80px 160px rgba(0,0,0,.45), inset 0 0 0 5px #3c3c40;
position:relative; transform:rotate(-2deg);
}
.device img { width:100%; height:100%; object-fit:cover; object-position:top; border-radius:121px; }
.island { position:absolute; top:52px; left:50%; transform:translateX(-50%);
width:270px; height:78px; border-radius:44px; background:#000; }
</style></head>
<body>
<div class="copy"><h1>헤드라인</h1><p>서브카피</p></div>
<div class="device"><img src="./01-home.png"><div class="island"></div></div>
</body></html>문구 톤 가이드
文案风格指南
- 스토어 목록에서 실제로 보이는 건 1~2장 — 첫 장에 앱의 존재 이유를 담는다.
- 혜택 > 기능: "가계부가 자동으로 써진다" > "SMS 파싱 기능".
- 사용자가 "알아서"를 골랐으면: 스크린샷을 보고 차별점이 큰 순서로 4개를 뽑아, 왜 그걸 골랐는지 근거와 함께 제시한다.
- 로케일: 기본 한국어. 영어 스토어에도 올린다면 같은 레이아웃에 영어 문구 세트를 추가로 생성한다.
- 商店列表中通常只会实际看到 1~2 张图片,因此第一张必须传达应用存在的理由。
- 收益 > 功能:“账本会自动记录”优于“SMS 解析功能”。
- 如果用户选择“由你来挑选”,则查看截图后,按照差异化程度从高到低选出 4 项,并说明选择这些文案或功能的依据。
- Locale:默认使用韩语。如果还要上传到英文商店,则在相同布局中额外生成一套英文文案。