This Astro branch uses Content Collections for every post. Here is a short overview of why that fits a Git + Markdown workflow.

Why Content Collections

Tistory remains the Korean SEO main site. This branch is for Markdown-first publishing:

  • Frontmatter is validated with a Zod schema
  • Invalid metadata fails at build time
  • getCollection('blog') is fully typed in TypeScript

One Markdown file per language

Do not share one HTML blob between Tistory and Astro. Write separate Markdown files for Korean and English. Link pairs with the same translationKey in frontmatter.

lang: ko
translationKey: my-post-key

# separate file:
lang: en
translationKey: my-post-key

Korean posts live at /blog/[slug]/. English posts live at /en/blog/[slug]/.

Draft filtering

Keep drafts out of indexes, RSS, and static routes:

const posts = await getCollection('blog', ({ data }) => !data.draft);

Branch vs main site

  • Tistory (main): Korean search traffic and existing readers
  • Astro (branch): MDX experiments, RSS, sitemap, English depth posts

No bulk migration from Tistory. New and complementary content only.

Next steps

Connect Cloudflare Pages so every push to main builds and deploys automatically.