Ghost 태그 체계 개편 및 Next.js 홈 큐레이션 연동 명세


1. 개요

본 문서는 Ghost CMS의 태그 구조를 정비하고, 이를 Next.js 프론트엔드 홈 화면 구성과 안정적으로 연동하기 위한 최종 운영 방안을 정의한다.
핵심 목표는 콘텐츠 분류 체계와 화면 편성 체계를 분리하여, 에디터 운영 편의성과 프론트엔드 구현 일관성을 동시에 확보하는 것이다.


2. 기존 구조

현재 Ghost에서는 게시물에 다음과 같은 방식으로 태그가 부여될 수 있다.

  • Primary tag
    • 게시물의 대표 분류 역할
    • URL 섹션 또는 대표 카테고리 성격으로 사용 가능
  • 일반 tag
    • 게시물의 주제, 키워드, 연관 분류 표현
  • Internal tag
    • Ghost 내부 관리용 태그
    • # prefix를 가지며 일반 사용자 화면에는 노출되지 않음

기존 구조 자체는 Ghost 기본 기능으로 충분히 활용 가능하나, 다음과 같은 한계가 있다.

2.1 기존 구조의 한계

  1. 콘텐츠 분류와 화면 편성 목적이 혼재될 수 있음
    • 같은 태그를 검색/분류용과 홈 노출 제어용으로 동시에 쓰면 의미가 불명확해짐
  2. 운영 목적 태그가 사용자 노출 태그 체계를 오염시킬 수 있음
    • 홈 추천, 기획전, 실험 배너용 태그가 일반 분류 태그와 섞일 가능성 존재
  3. 프론트엔드 기준 분기 규칙이 불안정해질 수 있음
    • 어떤 태그를 화면 제어용으로 해석할지 명확한 기준이 없으면 구현과 운영이 엇갈릴 수 있음

3. 개편 배경 및 필요성

홈 화면 큐레이션 영역은 일반적인 “콘텐츠 분류”와 성격이 다르다.
일반 태그는 사용자가 글의 성격을 이해하거나 연관 글을 탐색하기 위한 정보인 반면, 홈 큐레이션 태그는 운영자가 특정 주제 묶음을 편성하기 위한 제어 장치에 가깝다.

따라서 두 역할을 분리하지 않으면 다음 문제가 발생한다.

  • 태그의 의미 체계가 불명확해짐
  • 운영 규칙이 복잡해짐
  • 프론트 로직이 예외 처리 위주로 커짐
  • 장기적으로 콘텐츠 구조 관리가 어려워짐

이 문제를 해결하기 위해, 콘텐츠 의미를 담당하는 태그와 화면 구성 제어를 담당하는 태그를 분리하는 방식으로 구조를 개편한다.


4. 최종 개편 원칙

최종 확정안은 아래와 같다.

4.1 역할 분리 원칙

  • Primary tag
    • 게시물의 대표 카테고리/대표 섹션용으로 사용
  • 일반 tag
    • 주제 분류, 검색, 연관 글 추천용으로 사용
  • Internal tag (#hub-*)
    • 홈 큐레이션, 추천 묶음, 배너 영역, 운영 실험 등 화면 제어용 메타데이터로 사용

즉,

  • 콘텐츠 의미 = Primary tag + 일반 tag
  • 운영 제어 = Internal tag(#hub-*)

로 역할을 명확히 분리한다.


5. Internal Tag 운영 규칙

5.1 네이밍 규칙

홈 큐레이션 목적의 Internal tag는 반드시 아래 규칙을 따른다.

  • prefix: #hub-
  • 예시:
    • #hub-start
    • #hub-tax
    • #hub-growth

이 규칙을 통해 프론트엔드는 별도 예외 처리 없이 prefix 기준으로 운영용 태그를 식별할 수 있다.

5.2 의미 규칙

#hub-* 태그는 사용자에게 직접 노출되는 분류명이 아니라,
특정 큐레이션 블록에 게시물을 포함시키기 위한 시스템용 식별자로 해석한다.

5.3 description 활용 규칙

Internal tag의 description 필드는 홈 화면에서 해당 큐레이션 블록의 제목으로 활용한다.

예:

  • tag name: #hub-start
  • description: 🔥 초보 사장님을 위한 기초 가이드

이 경우 프론트엔드는 #hub-start를 기준으로 게시물을 묶고,
화면에는 description 값을 블록 제목으로 출력한다.


6. Next.js 프론트엔드 해석 규칙

Next.js에서는 Ghost API 응답의 태그 목록을 아래 기준으로 분리 처리한다.

6.1 태그 분류 기준

  1. #hub-로 시작하는 태그
    • 사용자 노출용 태그로 사용하지 않음
    • 홈 큐레이션/운영 블록 제어용 메타데이터로 처리
  2. #로 시작하지 않는 태그
    • 일반 사용자 노출용 태그로 처리
  3. Primary tag
    • 게시물 대표 카테고리 정보로 유지
  4. Internal tag의 slug/name
    • 시스템 식별 키로 사용
  5. Internal tag의 description
    • 큐레이션 블록 제목으로 사용

7. 데이터 처리 명세

7.1 게시물 단위 처리

각 게시물은 다음 두 종류의 태그 정보를 동시에 가질 수 있다.

  • visible tags
    • 사용자 화면에 노출되는 일반 태그
  • hub tags
    • #hub-* 규칙을 따르는 운영용 태그

즉, 하나의 게시물은:

  • 카테고리/주제 분류를 위한 태그를 가지면서
  • 동시에 특정 홈 큐레이션 섹션에도 포함될 수 있다

7.2 큐레이션 맵 생성

프론트엔드는 전체 게시물 목록에서 #hub-* 태그를 수집하여,
각 tag slug 기준으로 큐레이션 블록 데이터를 생성한다.

구성 예시는 다음과 같다.

  • hubKeyhub-start
  • title🔥 초보 사장님을 위한 기초 가이드
  • posts: 해당 태그가 연결된 게시물 목록

8. 화면 구성 예시

예를 들어 아래와 같은 Internal tag가 존재한다고 가정한다.

  • name: #hub-start
  • description: 🔥 초보 사장님을 위한 기초 가이드

그리고 다음 게시물들이 해당 태그를 가지고 있다.

  • 사업자 등록하는 법
  • 홈택스 가입 가이드
  • 부가세란 무엇인가

이 경우 홈 화면은 아래와 같이 구성된다.

🔥 초보 사장님을 위한 기초 가이드

  • 사업자 등록하는 법
  • 홈택스 가입 가이드
  • 부가세란 무엇인가

이때 #hub-start 자체는 사용자에게 태그로 노출되지 않으며,
오직 홈 큐레이션 편성의 기준값으로만 사용된다.


9. 기대 효과

9.1 운영 측면

  • 에디터는 #hub-* 규칙만 기억하면 홈 편성이 가능함
  • 일반 태그와 운영 태그의 역할이 분리되어 관리가 단순해짐

9.2 프론트엔드 측면

  • prefix 기반으로 안정적인 분기 가능
  • 화면 제어 로직이 단순해지고 유지보수가 쉬워짐
  • 일반 태그 노출 정책과 운영 제어 정책을 별도로 관리할 수 있음

9.3 정보 구조 측면

  • 콘텐츠 분류 체계가 오염되지 않음
  • 사용자 관점의 태그 의미가 더 명확해짐
  • 추후 큐레이션 섹션 확장 시에도 동일 규칙 재사용 가능

10. 최종 결론

본 개편안의 핵심은 다음 한 줄로 정리된다.

콘텐츠 의미는 Primary tag/일반 tag로 관리하고, 화면 구성 및 운영 제어는 #hub-* Internal tag로 분리한다.

이 구조는 Ghost의 기본 태그 체계를 그대로 활용하면서도,
Next.js 홈 큐레이션 요구사항을 가장 단순하고 안정적으로 만족시키는 방식이다.
따라서 이후 운영 및 개발은 본 명세를 기준으로 일관되게 진행한다.