@roottale/cms-mcp 0.53.1 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,79 @@
1
1
  # @roottale/cms-mcp
2
2
 
3
+ ## 0.56.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 18aaa9e: ADR-0105 Amendment 1 — 공개 글 응답에 저장된 정규 공개 경로 `path`(cms-client
8
+ `post.path`)를 additive 로 더합니다. FRONT 는 주소를 계산하지 않고 이 값을 링크·사이트맵·
9
+ 내부 링크 키에 그대로 씁니다.
10
+ - 422c388: ADR-0105 Amendment 1 — FRONT 가 글 주소를 다시 계산하지 않습니다. `RootTaleBlogList`·
11
+ `RootTaleBlogPost`(연관 글·빵부스러기)의 기본 글 링크와 `buildPostMetadata` 의 canonical 이
12
+ 플랫폼이 저장한 정규 공개 경로 `post.path` 를 먼저 읽고, 없을 때만 종전처럼 `collections`
13
+ 규칙 → `/blog/{slug}` 로 폴백합니다. `storedPostPath(post)` 헬퍼를 `routes` 에서 내보냅니다.
14
+ 문서(seo·collections·blog)와 Next.js 예제가 같은 규칙으로 갱신됐습니다.
15
+ - d303835: 공개 블로그 설정 응답 `site_profile` 에 메인 홈 전용 검색 제목·설명
16
+ `home_title`·`home_description` 을 additive 로 더합니다(어드민 "검색·공유 표시 >
17
+ 메인 홈 검색 노출"). `@roottale/cms-client` 는 `siteProfile.homeTitle` /
18
+ `homeDescription` 으로 노출하며, null 이면 사이트 이름·사이트 설명으로 폴백하는
19
+ 것이 계약입니다. cms-mcp 문서 `seo.md` 에 홈 `generateMetadata` 예시를 더했습니다.
20
+ - b13696c: ADR-0105 Amendment 1 — `GET /v1/cms/public/redirects` 가 글 공개 경로 이력(post_path_history)
21
+ 에서 옛 경로 → 현재 경로 301 을 자동으로 더합니다(`id` 접두사 `path-history:`). 운영자
22
+ 규칙이 같은 출발 경로면 운영자 규칙이 이깁니다.
23
+ - 86c5712: RootTale 표준 블로그 주소 `/blog/{category}/{slug}` 지원 — `RootTaleSiteConfig.categoryPath`
24
+ (`"direct"` 면 사이트맵 카테고리 허브가 `/blog/{category}`), collection 모드 사이트맵이 각 컬렉션의
25
+ `categoryPath` 를 따르며, `makeCategoryHref(basePath, categoryPath)` 를 `server`·`routes` 에서
26
+ 내보냅니다. 문서에 표준 규칙과 라우트 배치를 적었습니다.
27
+ - bd450bc: ADR-0105 — 콘텐츠 모델 `detail`·`category_tree` presentation 에 목록·피드 규칙 선택 필드
28
+ (`archives`, `feed`, `categoryPath`, `layout`)를 additive 로 더합니다. 예전 `collections`
29
+ 설정에만 있던 규칙을 모델이 소유하며, 공개 `content-models` 응답도 값이 있을 때 함께
30
+ 내보냅니다.
31
+
32
+ ## 0.55.0
33
+
34
+ ### Patch Changes
35
+
36
+ - 6cb9dd5: 공개 글 응답에 `previous_slugs`(옛 slug 목록, 최신순)를 additive로 더합니다.
37
+ `@roottale/cms-client`는 `previousSlugs`로 노출합니다. 주소가 바뀐 글을 옛 경로에서
38
+ 파생한 본문 예약 내부 링크 키로도 현재 주소에 연결할 수 있습니다.
39
+
40
+ ## 0.54.0
41
+
42
+ ### Minor Changes
43
+
44
+ - ad805bd: 글 미리보기를 고객 사이트가 자기 글 템플릿으로 그릴 수 있게 합니다 — 관리자
45
+ 미리보기와 발행 결과가 다르던 문제의 해법.
46
+ - 공개 API `GET /v1/cms/public/posts/preview?token=`: 관리자 편집기가 발급한
47
+ 1시간짜리 토큰으로 초안(미발행 포함)을 발행 글과 같은 형식으로 돌려줍니다.
48
+ 없는 토큰 404, 만료 410 `preview_expired`, 응답 `cache-control: no-store`.
49
+ - `@roottale/cms-client/server`: `fetchPostPreview({ apiKey, token })`,
50
+ `isPreviewExpiredError`, `CmsPostPreviewContent`.
51
+ - `@roottale/cms-renderer-next`: `RootTaleBlogPost`에 `previewToken`·
52
+ `previewExpiredElement`(같은 템플릿으로 미리보기), `RootTalePreviewNotice`,
53
+ `buildPreviewMetadata`(항상 noindex/nofollow).
54
+ - 문서 `blog.md` "미리보기 페이지"·`api-reference.md`, 예시
55
+ `examples/nextjs/app/preview/post/[id]/page.tsx`.
56
+
57
+ - 4f37084: 페이지·글·정보 모델, 필드 그룹, 노출 슬롯과 캠페인을 API·MCP·CLI에서 모두 관리할 수 있도록 공개 자동화 계약과 문서를 확장합니다.
58
+
59
+ ### Patch Changes
60
+
61
+ - befa5bb: 콘텐츠 유형별 카테고리 주소와 카테고리 SEO 공개 필드에 더해, 1~3단계 부모·자식
62
+ 분류로 목록·허브·상세 주소를 구성하는 범용 콘텐츠 모델 계약을 추가합니다.
63
+ - 52306f4: 미래 콘텐츠를 안정 키로 예약하는 `internal_content_keys` textarea 형식을 추가합니다.
64
+ ROOT-ADMIN 전용 입력기와 콘텐츠 저장 API가 키 형식, 접두사, 중복, 최대 개수를 같은
65
+ 규칙으로 검증합니다.
66
+ - 0b9d28f: CMS 관리 API에 사이트 공통 작성자 선택과 분리된 소유자·공개 작성자 필드를 추가하고, 공개 글·작가 아카이브와 클라이언트가 공통 작성자 원장을 사용하도록 전환합니다.
67
+ - 071374d: 본문 예약 내부 링크 표기(`[[internal:{키}|문구]]`)의 키를 "공개 경로 조각을 점으로 이은
68
+ 값"으로 정의하고, ROOT-ADMIN 편집기가 콘텐츠 유형·분류·글을 골라 표기를 넣는 도구를
69
+ 안내합니다. 에디터 도구 모음에 링크 버튼 뒤 앱 전용 삽입 슬롯(`linkExtras`)이 생겼습니다.
70
+ - cc872e6: 콘텐츠 모델이 ROOT-ADMIN의 기본 필드와 계층형 분류 단계 이름을 지정할 수 있게
71
+ 하고, 관계형 커스텀 필드를 같은 콘텐츠 모델의 항목으로 제한할 수 있게 합니다.
72
+ 관리자 폼의 포커스 테두리가 기본 surface에서 비텍스트 대비 기준을 충족하도록
73
+ 공통 focus ring 토큰을 보정합니다.
74
+ - 2a7c695: 카테고리 대표 이미지와 검색 문구를 공개 API에서 읽어 카테고리 모음 페이지의
75
+ 검색·공유 메타데이터에 사용할 수 있게 합니다.
76
+
3
77
  ## 0.53.1
4
78
 
5
79
  ### Patch Changes
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @roottale/cms-mcp
2
2
 
3
3
  RootTale CMS 연동 MCP 서버 + CLI — AI 코딩 에이전트(Claude Code, Cursor
4
- 등)와 자동화 스크립트가 RootTale CMS의 글·썸네일·본문 이미지를 관리하고 외부
4
+ 등)와 자동화 스크립트가 RootTale CMS의 모델·필드·항목·노출·미디어를 관리하고 외부
5
5
  사이트에 연동할 수 있게 합니다.
6
6
 
7
7
  번들 내용:
@@ -10,8 +10,7 @@ RootTale CMS 연동 MCP 서버 + CLI — AI 코딩 에이전트(Claude Code, Cur
10
10
  테마/설정, HTTP API 레퍼런스
11
11
  - **Next.js 예시 코드** (`examples/nextjs/`) — 블로그 목록/상세, revalidate
12
12
  라우트, RSS/사이트맵, 상담문의 서버 액션 등 완전한 연동 1세트
13
- - **CMS 자동화 tool** — 초안 작성·수정·예약·발행, 카테고리/태그 연결,
14
- 썸네일·본문 이미지 업로드/수정/삭제
13
+ - **CMS 자동화 tool** — 모델·필드 그룹·페이지·글·정보·배너·팝업·미디어 전체 관리
15
14
  - **SEO 분석 tool** — Google Search Console 상위 검색어, 글별 SEO·가독성
16
15
  분석, 발행 글 점수 필터
17
16
  - **공개 CLI** — 같은 기능을 `npx @roottale/cms-mcp cli ...`로 실행
@@ -33,7 +32,8 @@ RootTale CMS 연동 MCP 서버 + CLI — AI 코딩 에이전트(Claude Code, Cur
33
32
  ```
34
33
 
35
34
  `ROOTTALE_API_KEY`는 문서·예시 코드 tool만 쓸 때는 생략할 수 있습니다.
36
- 콘텐츠 조회에는 `read`, 글쓰기·발행·미디어 업로드에는 `read_write` 키가
35
+ 콘텐츠 조회에는 `read`, 글쓰기·발행·미디어 업로드에는 `read_write`, 모델·필드·
36
+ 노출까지 모두 관리하려면 `full_management` 키가
37
37
  필요합니다. 키 발급: 어드민(`admin.roottale.com`) **설정 > 사이트 연결 키**.
38
38
 
39
39
  Claude Code:
@@ -52,17 +52,19 @@ npx -y @roottale/cms-mcp cli media upload ./hero.webp \
52
52
  --alt "서비스 소개 대표 이미지"
53
53
 
54
54
  # 반환된 media id를 썸네일로 연결해 초안 생성
55
- npx -y @roottale/cms-mcp cli posts create \
55
+ npx -y @roottale/cms-mcp cli entries create \
56
56
  --title "자동화로 작성한 글" \
57
57
  --slug "automated-post" \
58
58
  --body-file ./post.json \
59
59
  --featured-media-id "<media-id>"
60
60
 
61
- npx -y @roottale/cms-mcp cli posts publish "<post-id>"
61
+ npx -y @roottale/cms-mcp cli entries publish "<post-id>"
62
62
  ```
63
63
 
64
- 상위 `cli --help`는 명령 그룹만 보여줍니다. 글의 `list`, `create`, `update`,
65
- `publish`, `unpublish`, `set-terms`는 `cli posts --help`, 미디어의 `list`,
64
+ 상위 `cli --help`는 명령 그룹만 보여줍니다. 전체 리소스는 `models`, `fields`,
65
+ `entries`, `exposure-slots`, `exposures`, `media`입니다. 항목의 `list`, `get`,
66
+ `create`, `update`, `publish`, `unpublish`, `set-terms`, `delete`는
67
+ `cli entries --help`, 미디어의 `list`,
66
68
  `upload`, `update`, `delete`는 `cli media --help`에서 확인하세요. 각 명령의
67
69
  옵션은 `cli posts create --help`처럼 하위 명령 뒤에 `--help`를 붙이면 됩니다.
68
70
 
@@ -77,12 +79,18 @@ npx -y @roottale/cms-mcp cli posts publish "<post-id>"
77
79
  | `listPublishedPosts` | 공개 API로 발행 글 목록 조회 (키 필요) |
78
80
  | `getPublishedPost` | 공개 API로 발행 글 1개 조회 (키 필요) |
79
81
  | `getSiteKnowledge` | 브랜드 보이스·용어 규칙 조회 |
80
- | `listManagedCmsPosts` | 초안·예약·발행 글 목록 조회 |
82
+ | `listCmsContentModels` 등 | 콘텐츠 모델 조회·생성·수정·상태 변경·삭제 |
83
+ | `listCmsFieldGroups` 등 | 모델별 필드 그룹 조회·생성·수정·상태 변경·삭제 |
84
+ | `listManagedCmsPosts` | 초안·예약·발행 페이지·글·정보 목록 조회 |
85
+ | `getManagedCmsPost` | 관리용 항목 원문 조회 |
81
86
  | `createCmsPost` | Tiptap JSON으로 글 작성 |
82
87
  | `updateCmsPost` | 글 제목·본문·요약·썸네일·예약 시각 수정 |
83
88
  | `publishCmsPost` | 글 즉시 발행 |
84
89
  | `unpublishCmsPost` | 발행 글을 초안으로 전환 |
90
+ | `deleteCmsPost` | 항목 휴지통 이동 또는 영구 삭제 |
85
91
  | `setCmsPostTerms` | 카테고리 또는 태그 연결 교체 |
92
+ | `listCmsExposureSlots` | FRONT 노출 슬롯 계약 조회 |
93
+ | `listCmsExposures` 등 | 배너·팝업 캠페인 조회·생성·수정·발행·보관 |
86
94
  | `listCmsMedia` | 미디어 라이브러리 조회 |
87
95
  | `uploadCmsMedia` | 로컬 이미지/PDF 업로드 및 media id 발급 |
88
96
  | `updateCmsMedia` | 대체 텍스트·캡션 수정 |