← 글 목록으로
2026년 9월 2일

Astro Content Collections로 글 관리하기

Markdown frontmatter를 스키마로 검증하고 글 목록·상세를 자동 생성하는 방법.

#astro#markdown

글이 곧 파일이다

이 블로그의 글은 전부 src/content/posts/*.md 파일입니다. DB도 CMS도 없습니다.

---
title: '제목'
description: '목록에 보이는 한 줄 설명'
pubDate: 2026-09-02
tags: ['astro', 'markdown']
---
본문...

스키마 검증이 확정적이다

src/content.config.ts에서 Zod 스키마로 검증합니다. 제목·날짜가 빠지면 빌드 단계에서 실패합니다. 런타임에 깨진 글이 나가는 일이 없습니다.

const blog = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    tags: z.array(z.string()).default([]),
    draft: z.boolean().default(false)
  })
});

목록과 상세는 자동이다

  • 목록: getCollection('blog') → 날짜 내림차순 정렬
  • 상세: getStaticPaths() → slug별 정적 HTML 생성

빌드 결과는 순수 HTML/CSS라서 엣지 캐시 효율이 좋습니다. JS는 기본적으로 0바이트입니다.