2 min read
운영형 기술 블로그 구축 시리즈 (1): 콘텐츠 모델링과 정보 구조
파일 기반 기술 블로그를 장기 운영하기 위한 콘텐츠 모델, frontmatter 정책, 시리즈 구조 설계 방법
도입
블로그를 한두 편 올릴 때는 어떤 구조든 크게 문제가 없다. 하지만 글이 20편, 50편으로 늘어나면 이야기가 달라진다. 태그 중복, 제목 규칙 불일치, 내부 링크 누락, 시리즈 순서 꼬임 같은 문제가 누적되면 독자 경험과 운영 효율이 동시에 떨어진다.
이번 1편은 시리즈의 출발점으로, 콘텐츠 모델과 정보 구조를 먼저 고정하는 방법을 다룬다.
문제 정의
운영 단계에서 자주 만나는 구조적 문제는 다음과 같다.
- 같은 주제인데 태그 표기(
Next.js,nextjs,Nextjs)가 제각각 - 시리즈 글이지만 이전/다음 글 연결이 없어 이탈률 증가
- 글마다 frontmatter 필드가 달라 자동화 스크립트가 깨짐
- 새 글 발행 시 SEO/커버/카테고리 설정을 수동으로 반복
핵심은 "글을 쓰는 일"보다 "글이 쌓여도 질서가 유지되게 만드는 일"이다.
개념 설명
콘텐츠 모델 최소 단위
| 범주 | 필수 필드 | 선택 필드 | 목적 |
|---|---|---|---|
| 기본 메타 | title, description, date, tags | cover, coverPrompt | 목록/상세/공유 일관성 |
| 시리즈 메타 | series, seriesOrder | seriesTotal, seriesSlug | 순서/연결 자동화 |
| SEO 확장 | seoTitleA/B, seoDescriptionA/B | canonical | 검색 성능 실험 |
네이밍/태그 정책
- 태그는 소문자 또는 팀 합의한 표기 한 가지로 고정
- 시리즈는 제목에
(n)표기를 넣어 순서 인지성 확보 - slug는 영어/숫자 기반으로 고정해 URL 안정성 확보
코드 예시
예시 1: 시리즈 frontmatter 타입 정의
export type SeriesFrontmatter = {
title: string;
description: string;
date: string;
tags: string[];
cover?: string;
coverPrompt?: string;
series?: string;
seriesOrder?: number;
seriesTotal?: number;
};
export function isSeriesPost(post: SeriesFrontmatter) {
return Boolean(post.series && typeof post.seriesOrder === "number");
}
예시 2: 같은 시리즈 글 정렬 유틸
type PostSummary = {
slug: string;
title: string;
series?: string;
seriesOrder?: number;
};
export function sortSeries(posts: PostSummary[], seriesName: string) {
return posts
.filter((post) => post.series === seriesName)
.sort((a, b) => (a.seriesOrder ?? 999) - (b.seriesOrder ?? 999));
}
아키텍처 설명
Mermaid diagram rendering...
이 구조의 핵심은 시리즈 정보를 "본문 문장"이 아니라 "메타데이터"로 다루는 것이다. 메타데이터로 관리해야 목록/상세/SEO 산출물까지 일관되게 연결할 수 있다.
정리
시리즈 운영의 첫 단계는 글쓰기 습관이 아니라 모델링 규칙이다. 아래 세 가지를 고정하면 이후 자동화가 쉬워진다.
- frontmatter 필드 집합을 먼저 고정한다.
- 시리즈 순서 필드를 메타로 관리한다.
- 내부 링크(이전/다음/함께 읽기)를 템플릿화한다.
다음 2편에서는 이 모델을 기반으로 Google/Naver/Daum 검색 인덱싱 파이프라인을 설계한다.
시리즈 네비게이션
- 현재 글: 1/3
- 다음 글: 운영형 기술 블로그 구축 시리즈 (2): 검색 인덱싱 파이프라인