메타데이터 파일 규칙
SEO(Search Engine Optimization), 소셜 미디어 미리보기(Open Graph / Twitter), 앱 아이콘(favicon, app icon) 등을 Next.js 프로젝트에서 자동으로 처리하게 해주는 파일 구조 기반 규칙
메타데이터 : 검색 엔진과 소셜 미디어에서 사용되는 정보
NextJS에서는 이 정보(메타데이터)를 선언 가능. 이전에는 직접 HTML <head> 에 직접 써야했음.
- 페이지 <title>
- <meta name="description" ...>
- Open Graph(페이스북, 카카오톡 등 링크 미리보기)
- Twitter Card
- favicon, app icons(홈 화면 아이콘, 브라우저 탭 아이콘)
- sitemap, robots.txt(검색 크롤러용 설정)
특정 이름의 파일을 프로젝트 안에 두면 자동으로 인식해서 메타데이터로 사용됨



app/
├── layout.tsx # 전체 레이아웃 (metadata export 가능)
├── page.tsx # 루트 페이지
│
├── favicon.ico # ✅ 브라우저 탭 아이콘 (16~48px)
├── icon.png # ✅ 앱 공통 아이콘 (고해상도)
├── apple-icon.png # ✅ iOS 홈화면 아이콘
│
├── opengraph-image.png # ✅ Open Graph 공유용 이미지 (페북/카톡 등)
├── twitter-image.png # ✅ Twitter 공유용 이미지
│
├── robots.txt # ✅ 검색 엔진 크롤러 제어
├── sitemap.xml # ✅ 사이트맵 (SEO용)
│
├── blog/ # 블로그 페이지 라우트
│ ├── page.tsx
│ ├── opengraph-image.png # ✅ /blog 페이지 전용 OG 이미지
│ └── twitter-image.png # ✅ /blog 페이지 전용 트위터 카드 이미지
│
└── products/ # 상품 상세 페이지 라우트
├── [id]/
│ ├── page.tsx
│ ├── opengraph-image.png # ✅ /products/[id] 전용 OG 이미지
│ └── twitter-image.png # ✅ /products/[id] 전용 트위터 이미지
└── layout.tsx
정적 파일 기반 외에도, 각 페이지 컴포넌트에서 export const metadata 를 정의하면 동적으로 title, description, og:image 등을 지정 가능
// app/blog/page.tsx
export const metadata = {
title: "블로그 메인",
description: "시영님의 기술 블로그입니다.",
openGraph: {
title: "시영 블로그",
images: ["/blog/opengraph-image.png"],
},
twitter: {
card: "summary_large_image",
images: ["/blog/twitter-image.png"],
},
};
export default function BlogPage() {
return <h1>블로그 글 목록</h1>;
}