#์Šคํฌ๋ฆฐ์ƒท ์ œ๋„ˆ๋ ˆ์ดํ„ฐ (๋กœ์ปฌ ์ „์šฉ)

๋ผ์šฐํŠธ:

  • /{locale}/{product}/screenshots-generator

์ด ํŽ˜์ด์ง€๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ „์šฉ(NODE_ENV=development)์ด๋ฉฐ, ํ”„๋กœ๋•์…˜์—์„œ๋Š” 404๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

#์†Œ์Šค ์ด๋ฏธ์ง€ ๋””๋ ‰ํ† ๋ฆฌ

์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ์•„๋ž˜ ๊ฒฝ๋กœ์—์„œ ์†Œ์Šค ์ด๋ฏธ์ง€๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

  • public/products/{slug}/raw-screenshots/{locale}/phone
  • public/products/{slug}/raw-screenshots/{locale}/tablet

์˜ˆ์‹œ:

  • public/products/aurora-eos/raw-screenshots/en-US/phone/home.png
  • public/products/aurora-eos/raw-screenshots/en-US/tablet/home.png

๊ถŒ์žฅ ํŒŒ์ผ๋ช…:

  • home.png
  • capture.png
  • insights.png
  • shared.png
  • customize.png
  • reminder.png

#ํ”„๋กœ๋•ํŠธ๋ณ„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

ํ”„๋กœ๋•ํŠธ๋ณ„๋กœ ๋ฌธ๊ตฌ/ํ…Œ๋งˆ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ ค๋ฉด ์•„๋ž˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • public/products/{slug}/raw-screenshots/screenshot-generator.config.json

๋กœ์ผ€์ผ๋ณ„ ์Šคํฌ๋ฆฐ์ƒท ๋ฌธ๊ตฌ๋งŒ ๋ถ„๋ฆฌํ•˜๋ ค๋ฉด ์•„๋ž˜ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • public/products/{slug}/raw-screenshots/{locale}/screenshot-generator.json

~/.config/pabal-mcp/registered-apps.json์— ๋“ฑ๋ก๋œ App Store / Google Play ์ง€์› ์–ธ์–ด ๊ธฐ์ค€์œผ๋กœ ๋กœ์ผ€์ผ ์ž…๋ ฅ ํด๋”๋ฅผ ๋งž์ถ”๊ณ  ์ตœ์ข… ์Šคํฌ๋ฆฐ์ƒท PNG๊นŒ์ง€ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

yarn screenshots:generate

๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด public/products ์•ˆ์˜ ์•ฑ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋˜๊ณ , ๋ฒˆํ˜ธ๋กœ ์ƒ์„ฑํ•  ์•ฑ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. slug๋ฅผ ๋ฐ”๋กœ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

yarn screenshots:generate pabal

์ด ๋ช…๋ น์€ ๋จผ์ € raw-screenshots/{locale}/phone, raw-screenshots/{locale}/tablet ์ž…๋ ฅ ํด๋”๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด screenshot-generator.json ๋ฌธ๊ตฌ ํŒŒ์ผ์€ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ ๋‚ด๋ถ€ Next dev ์„œ๋ฒ„์™€ Playwright ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ž„์‹œ๋กœ ๋„์›Œ ๋กœ์ปฌ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ UI์™€ ๊ฐ™์€ React/html-to-image ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๋ฅผ ์•„๋ž˜ ๊ฒฝ๋กœ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ localhost๋ฅผ ์—ด ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

  • public/products/{slug}/screenshots/{locale}/phone/1.png
  • public/products/{slug}/screenshots/{locale}/tablet/1.png
  • public/products/{slug}/screenshots/{locale}/feature-graphic.png

์˜ˆ์‹œ ์„ค์ •:

{
  "title": "Aurora EOS App Store Screenshots",
  "subtitle": "Localized marketing screenshots for weather intelligence",
  "statusLabel": "Export Status",
  "accentGradient": "linear-gradient(120deg, #0f172a 0%, #134e4a 55%, #0ea5e9 100%)",
  "theme": {
    "backgroundStart": "#0b1220",
    "backgroundEnd": "#12263a",
    "panel": "rgba(255,255,255,0.9)",
    "textPrimary": "#f8fafc",
    "textSecondary": "#cbd5e1",
    "accent": "#22c55e"
  },
  "slides": [
    {
      "fileName": "home.png",
      "headline": "Know tomorrow's aurora chance"
    },
    {
      "fileName": "capture.png",
      "headline": "Track Kp, cloud cover, and visibility"
    }
  ],
  "tabletSlides": [
    {
      "fileName": "home.png",
      "headline": "Know tomorrow's aurora chance"
    },
    {
      "fileName": "capture.png",
      "headline": "Track Kp, cloud cover, and visibility"
    },
    {
      "fileName": "insights.png",
      "headline": "Plan the night from a wider view"
    }
  ]
}

๋กœ์ผ€์ผ๋ณ„ ๋ฌธ๊ตฌ ์˜ˆ์‹œ:

{
  "title": "Post Black Belt: ์ฃผ์ง“์ˆ˜ ์ผ์ง€",
  "subtitle": "์ฃผ์ง“์ˆ˜ ๊ธฐ๋ก & ๋ฒจํŠธ ํŠธ๋ž˜์ปค",
  "slides": [
    {
      "fileName": "home.png",
      "headline": "ํ›ˆ๋ จ ํ›„ ๋‹ค์Œ์— ๋ฌด์—‡์„ ์—ฐ์Šตํ• ์ง€ ๋ฐ”๋กœ ํ™•์ธ",
      "subheadline": "์ˆ˜์—… ํ›„ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•˜์„ธ์š”."
    }
  ],
  "tabletSlides": [
    {
      "fileName": "home.png",
      "headline": "ํ›ˆ๋ จ ํ๋ฆ„์„ ํฐ ํ™”๋ฉด์—์„œ ๋ณด๊ธฐ",
      "subheadline": "ํƒœ๋ธ”๋ฆฟ ์Šคํฌ๋ฆฐ์ƒท์€ ๋ณดํ†ต 3๊ฐœ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."
    }
  ]
}

#์ฐธ๊ณ 

  • slides๋ฅผ ์ƒ๋žตํ•˜๋ฉด ํŒŒ์ผ๋ช… ๊ธฐ์ค€์œผ๋กœ ์ž๋™ ์Šฌ๋ผ์ด๋“œ ๋ผ๋ฒจ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • tabletSlides๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด iPad ์ƒ์„ฑ์—์„œ๋งŒ ํ•ด๋‹น ๋ฌธ๊ตฌ/ํŒŒ์ผ๋ช…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ƒ์„ฑ ์Šคํฌ๋ฆฝํŠธ๋Š” ํƒœ๋ธ”๋ฆฟ์šฉ ๋ฐ์ดํ„ฐ๋ฅผ 3๊ฐœ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • slides๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์•„๋ž˜ ์ˆœ์„œ๋ฅผ ์šฐ์„  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: home.png, capture.png, insights.png, shared.png, customize.png, reminder.png.
  • screenshots:generate๋Š” ๊ธฐ์กด screenshot-generator.json ๋ฌธ๊ตฌ๋ฅผ ์ž๋™์œผ๋กœ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๋กœ์ผ€์ผ ํด๋”์— ํŒŒ์ผ์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ ๋กœ์ผ€์ผ, ์ดํ›„ config.json์˜ screenshot metadata ์ˆœ์„œ๋กœ fallback ๋ฉ๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ UI๋Š” ๊ฐœ๋ฐœ ์ค‘ ๋ฏธ๋ฆฌ๋ณด๊ธฐ/์ˆ˜๋™ ๋‚ด๋ณด๋‚ด๊ธฐ์šฉ์ด๊ณ , yarn screenshots:generate๋Š” ๊ฐ™์€ UI๋ฅผ ๋‚ด๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋™ ์บก์ฒ˜ํ•ด PNG ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.