#๋ธ”๋กœ๊ทธ ๋ฐ ์ตœ์‹  ๋ฐฐ๋„ˆ

์ด ํ…œํ”Œ๋ฆฟ์€ ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ธ”๋กœ๊ทธ ์‹œ์Šคํ…œ๊ณผ ์•ฑ๋ณ„ ์ตœ์‹  ๊ธ€ ๋ฐฐ๋„ˆ ๋ผ์šฐํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

#๋ธ”๋กœ๊ทธ ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ

public/blogs/[appSlug]/[postSlug]/[locale].html

๊ฐ HTML ํŒŒ์ผ ์ƒ๋‹จ์—๋Š” BLOG_META JSON ๋ธ”๋ก์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

<!--BLOG_META
{
  "title": "๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ",
  "description": "์š”์•ฝ ์„ค๋ช…",
  "appSlug": "your-app",
  "slug": "post-slug",
  "locale": "en-US",
  "publishedAt": "2026-03-01",
  "modifiedAt": "2026-03-01",
  "coverImage": "./images/cover.png",
  "tags": ["release", "update"]
}
-->

#๋ธ”๋กœ๊ทธ ๋ผ์šฐํŠธ

  • /{locale}/blogs: ์ „์ฒด ๋ธ”๋กœ๊ทธ ์นดํ…Œ๊ณ ๋ฆฌ/์•ฑ ๋ชฉ๋ก
  • /{locale}/blogs/{appSlug}: ํŠน์ • ์•ฑ์˜ ๊ธ€ ๋ชฉ๋ก
  • /{locale}/blogs/{appSlug}/{slug}: ๊ธ€ ์ƒ์„ธ ํŽ˜์ด์ง€

#์•ฑ๋ณ„ ์ตœ์‹  ๋ฐฐ๋„ˆ ๋ผ์šฐํŠธ

  • /{locale}/blogs/{appSlug}/banner/latest
    • ์ตœ์‹  ๊ธ€ ๋ฐฐ๋„ˆ ํ’€์Šคํฌ๋ฆฐ ํŽ˜์ด์ง€
  • /{locale}/blogs/{appSlug}/banner/latest/redirect
    • ์ตœ์‹  ๊ธ€ ๋ฐ ์Šคํ† ์–ด ๋งํฌ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

์ตœ์‹  ๊ธ€์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋‚ ์งœ(publishedAt, ๊ทธ๋‹ค์Œ modifiedAt) ๊ธฐ์ค€์œผ๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

#ํ”„๋กœ๋•ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€ ์—ฐ๋™

ํŠน์ • ์•ฑ ์Šฌ๋Ÿฌ๊ทธ์— ๋ธ”๋กœ๊ทธ ๊ธ€์ด ์žˆ์œผ๋ฉด ํ”„๋กœ๋•ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€์— ์ตœ์‹  ๊ธ€์ด ์ž๋™์œผ๋กœ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.