#Screenshot Tools (ν•œκ΅­μ–΄)

App Store λ‘œμ»¬λΌμ΄μ œμ΄μ…˜μ„ μœ„ν•œ μ•± μŠ€ν¬λ¦°μƒ· λ²ˆμ—­ 및 리사이징 λ„κ΅¬μž…λ‹ˆλ‹€.

#κ°œμš”

μŠ€ν¬λ¦°μƒ· μ›Œν¬ν”Œλ‘œμš°λŠ” 두 개의 별도 λ„κ΅¬λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€:

  1. translate-screenshots: Gemini APIλ₯Ό μ‚¬μš©ν•˜μ—¬ μŠ€ν¬λ¦°μƒ·μ˜ ν…μŠ€νŠΈ λ²ˆμ—­
  2. resize-screenshots: λ²ˆμ—­λœ μŠ€ν¬λ¦°μƒ·μ„ App Store 규격으둜 리사이징

μ΄λ ‡κ²Œ λΆ„λ¦¬ν•˜λ©΄:

  • μ΅œμ’… 처리 전에 원본 λ²ˆμ—­ 이미지 κ²€ν†  κ°€λŠ₯
  • μž¬λ²ˆμ—­ 없이 λ¦¬μ‚¬μ΄μ§•λ§Œ λ‹€μ‹œ μ‹€ν–‰ (API λΉ„μš© μ ˆμ•½)
  • λ‘œμΌ€μΌλ³„λ‘œ λ‹€λ₯Έ 리사이징 μ„€μ • μ‚¬μš© κ°€λŠ₯

#μ›Œν¬ν”Œλ‘œμš°

1. translate-screenshots β†’ raw/ 폴더에 μ €μž₯
2. resize-screenshots   β†’ raw/μ—μ„œ μ½μ–΄μ„œ μ΅œμ’… μœ„μΉ˜μ— μ €μž₯

#디렉토리 ꡬ쑰

public/products/{app-slug}/screenshots/
β”œβ”€β”€ en-US/                    # μ†ŒμŠ€ (κΈ°λ³Έ λ‘œμΌ€μΌ)
β”‚   └── phone/
β”‚       β”œβ”€β”€ 1.png
β”‚       └── 2.png
β”œβ”€β”€ ko-KR/
β”‚   └── phone/
β”‚       β”œβ”€β”€ raw/              # λ²ˆμ—­λ¨ (리사이징 μ•ˆλ¨)
β”‚       β”‚   β”œβ”€β”€ 1.png
β”‚       β”‚   └── 2.png
β”‚       β”œβ”€β”€ 1.png             # μ΅œμ’… (리사이징됨)
β”‚       └── 2.png
└── ja-JP/
    └── phone/
        β”œβ”€β”€ raw/
        └── ...

#translate-screenshots

Gemini APIλ₯Ό μ‚¬μš©ν•˜μ—¬ μ•± μŠ€ν¬λ¦°μƒ·μ˜ ν…μŠ€νŠΈλ₯Ό μ—¬λŸ¬ μ–Έμ–΄λ‘œ λ²ˆμ—­ν•©λ‹ˆλ‹€.

#μš”κ΅¬μ‚¬ν•­

  • GEMINI_API_KEY λ˜λŠ” GOOGLE_API_KEY ν™˜κ²½ λ³€μˆ˜
  • μ†ŒμŠ€ μŠ€ν¬λ¦°μƒ·: public/products/{slug}/screenshots/{locale}/phone/ 및 /tablet/
  • λ‘œμΌ€μΌ 파일: public/products/{slug}/locales/

#λͺ¨λΈ 선택

  • imageModel: "flash" (κΈ°λ³Έκ°’): gemini-3.1-flash-image-preview μ‚¬μš© (속도/λΉ„μš© 효율)
  • imageModel: "pro": gemini-3-pro-image-preview μ‚¬μš© (μ§€μ‹œ 좩싀도 μš°μ„ )

#μž…λ ₯ νŒŒλΌλ―Έν„°

νŒŒλΌλ―Έν„°νƒ€μž…ν•„μˆ˜κΈ°λ³Έκ°’μ„€λͺ…
appNamestring예-μ•± 이름, slug, bundleId, λ˜λŠ” packageName
targetLocalesstring[]μ•„λ‹ˆμ˜€μ „μ²΄ λ‘œμΌ€μΌλ²ˆμ—­ν•  νŠΉμ • λ‘œμΌ€μΌ
deviceTypes("phone" | "tablet")[]μ•„λ‹ˆμ˜€["phone", "tablet"]μ²˜λ¦¬ν•  λ””λ°”μ΄μŠ€ νƒ€μž…
dryRunbooleanμ•„λ‹ˆμ˜€falseμ‹€μ œ λ²ˆμ—­ 없이 미리보기
skipExistingbooleanμ•„λ‹ˆμ˜€trueraw 파일이 있으면 κ±΄λ„ˆλ›°κΈ°
screenshotNumbersnumber[]μ•„λ‹ˆμ˜€μ „μ²΄μ²˜λ¦¬ν•  νŠΉμ • μŠ€ν¬λ¦°μƒ·
preserveWordsstring[]μ•„λ‹ˆμ˜€-λ²ˆμ—­ν•˜μ§€ μ•Šμ„ 단어 (λΈŒλžœλ“œλͺ…)
imageModel("flash" | "pro")μ•„λ‹ˆμ˜€"flash"Gemini 이미지 λͺ¨λΈ 선택

#μ‚¬μš© μ˜ˆμ‹œ

{
  "appName": "my-app",
  "targetLocales": ["ko-KR", "ja-JP"],
  "deviceTypes": ["phone"],
  "preserveWords": ["MyApp", "Pro"],
  "imageModel": "pro"
}

#지원 μ–Έμ–΄

Gemini API 지원: μ˜μ–΄, μ•„λžμ–΄, 독일어, μŠ€νŽ˜μΈμ–΄, ν”„λž‘μŠ€μ–΄, νžŒλ””μ–΄, μΈλ„λ„€μ‹œμ•„μ–΄, μ΄νƒˆλ¦¬μ•„μ–΄, 일본어, ν•œκ΅­μ–΄, 포λ₯΄νˆ¬κ°ˆμ–΄, λŸ¬μ‹œμ•„μ–΄, μš°ν¬λΌμ΄λ‚˜μ–΄, λ² νŠΈλ‚¨μ–΄, 쀑ꡭ어

#resize-screenshots

λ²ˆμ—­λœ μŠ€ν¬λ¦°μƒ·μ„ App Store 규격으둜 λ¦¬μ‚¬μ΄μ§•ν•©λ‹ˆλ‹€.

#λͺ©ν‘œ 크기

λ””λ°”μ΄μŠ€λ„ˆλΉ„λ†’μ΄λΉ„μœ¨
Phone124226886.5" iPhone
Tablet2048273212.9" iPad Pro

#μž…λ ₯ νŒŒλΌλ―Έν„°

νŒŒλΌλ―Έν„°νƒ€μž…ν•„μˆ˜κΈ°λ³Έκ°’μ„€λͺ…
appNamestring예-μ•± 이름, slug, bundleId, λ˜λŠ” packageName
sourceLocalestringμ•„λ‹ˆμ˜€κΈ°λ³Έ λ‘œμΌ€μΌν¬κΈ° 참쑰용 λ‘œμΌ€μΌ
targetLocalesstring[]μ•„λ‹ˆμ˜€raw/κ°€ μžˆλŠ” 전체리사이징할 λ‘œμΌ€μΌ
deviceTypes("phone" | "tablet")[]μ•„λ‹ˆμ˜€["phone", "tablet"]μ²˜λ¦¬ν•  λ””λ°”μ΄μŠ€ νƒ€μž…
screenshotNumbersnumber[]μ•„λ‹ˆμ˜€μ „μ²΄μ²˜λ¦¬ν•  νŠΉμ • μŠ€ν¬λ¦°μƒ·
skipExistingbooleanμ•„λ‹ˆμ˜€falseμ΅œμ’… 파일이 있으면 κ±΄λ„ˆλ›°κΈ°
dryRunbooleanμ•„λ‹ˆμ˜€false미리보기 λͺ¨λ“œ

#배경색

λ¦¬μ‚¬μ΄μ¦ˆ λ„κ΅¬λŠ” 빈 곡간을 λ°°κ²½μƒ‰μœΌλ‘œ μ±„μ›λ‹ˆλ‹€. config.jsonμ—μ„œ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

{
  "metadata": {
    "screenshotBgColor": "#FFFFFF"
  }
}

μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 이미지 λͺ¨μ„œλ¦¬μ—μ„œ μ£Όμš” 색상을 μžλ™ κ°μ§€ν•©λ‹ˆλ‹€.

#μ‚¬μš© μ˜ˆμ‹œ

{
  "appName": "my-app",
  "targetLocales": ["ko-KR"],
  "deviceTypes": ["phone"]
}

#μ„€μ •

#config.json

μ œν’ˆμ˜ config.json에 μŠ€ν¬λ¦°μƒ· 섀정을 μΆ”κ°€ν•©λ‹ˆλ‹€:

{
  "slug": "my-app",
  "metadata": {
    "screenshotBgColor": "#000000"
  }
}