@roottale/cms-mcp 0.37.0 → 0.39.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 +8 -0
- package/dist/index.js +1 -1
- package/docs/theme-and-settings.md +47 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -279,7 +279,7 @@ function registerTools(server2) {
|
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
// src/server.ts
|
|
282
|
-
var VERSION = true ? "0.
|
|
282
|
+
var VERSION = true ? "0.39.0" : "dev";
|
|
283
283
|
var SERVER_INSTRUCTIONS = `
|
|
284
284
|
roottale-cms-mcp\uB294 RootTale CMS\uB97C \uC678\uBD80 \uC0AC\uC774\uD2B8(\uC8FC\uB85C Next.js)\uC5D0 \uC5F0\uB3D9\uD558\uAE30 \uC704\uD55C
|
|
285
285
|
\uD1B5\uD569 \uBB38\uC11C\xB7\uC608\uC2DC \uCF54\uB4DC\xB7\uACF5\uAC1C API \uC870\uD68C tool\uC744 \uC81C\uACF5\uD569\uB2C8\uB2E4.
|
|
@@ -88,6 +88,53 @@ const config = await fetchAnalyticsConfig({
|
|
|
88
88
|
`enabled: true`인 태그만 렌더링하세요. 태그 ID는 어드민에서 변경될 수
|
|
89
89
|
있으므로 하드코딩하지 말고 본 API로 조회하는 것을 권장합니다.
|
|
90
90
|
|
|
91
|
+
## 조회수 / first-party 비콘
|
|
92
|
+
|
|
93
|
+
RootTale 비콘은 쿠키리스 first-party 분석(방문수·클릭)과 **글별 조회수**를
|
|
94
|
+
수집합니다. **API 키 하나로** 동작합니다 — 별도 사이트 ID 환경변수가 필요 없습니다.
|
|
95
|
+
`fetchAnalyticsConfig`가 돌려주는 `siteId`를 비콘에 그대로 넘기세요.
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
// app/layout.tsx (Next.js) — 서버 컴포넌트
|
|
99
|
+
import { renderBeaconScript } from "@roottale/analytics-runtime";
|
|
100
|
+
import { fetchAnalyticsConfig } from "@roottale/cms-client/server";
|
|
101
|
+
|
|
102
|
+
const cfg = await fetchAnalyticsConfig({ apiKey: process.env.ROOTTALE_API_KEY! });
|
|
103
|
+
// ...<body> 안에:
|
|
104
|
+
<script
|
|
105
|
+
dangerouslySetInnerHTML={{
|
|
106
|
+
__html: renderBeaconScript({
|
|
107
|
+
collectUrl: "https://api.roottale.com/v1/collect",
|
|
108
|
+
siteId: cfg.siteId, // ← API 키에서 유도. 별도 env 불필요.
|
|
109
|
+
}),
|
|
110
|
+
}}
|
|
111
|
+
/>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**글별 조회수**가 정확히 집계되려면, 글 상세 페이지가 자신의 글 ID를
|
|
115
|
+
`<meta name="rt:content-id">`로 노출해야 합니다. 비콘이 이 값을 읽어 조회를 해당
|
|
116
|
+
글에 귀속시킵니다(URL·경로가 바뀌어도 안정적).
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
// app/blog/[slug]/page.tsx — generateMetadata
|
|
120
|
+
export async function generateMetadata({ params }): Promise<Metadata> {
|
|
121
|
+
const post = await fetchPost({ apiKey: process.env.ROOTTALE_API_KEY!, slugOrId: slug });
|
|
122
|
+
return {
|
|
123
|
+
title: post.title,
|
|
124
|
+
other: { "rt:content-id": post.id }, // ← 조회수 식별자
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
> `@roottale/cms-renderer-next`의 `buildPostMetadata(post, …)`를 쓰면 이 meta가
|
|
130
|
+
> **자동으로** 들어갑니다(별도 작업 불필요). 프레임워크 무관 환경(Astro 등)에서는
|
|
131
|
+
> `@roottale/cms-client/server`의 `contentIdMeta(post.id)`가 같은 `<meta>` 태그
|
|
132
|
+
> 문자열을 만들어 줍니다.
|
|
133
|
+
|
|
134
|
+
수집은 익명·쿠키리스이며 비콘은 클릭(`data-track`)과 pageview만 보냅니다. 봇
|
|
135
|
+
트래픽은 서버에서 제외됩니다. 공개 사이트에 "조회 N"을 표시하는 옵션은 어드민의
|
|
136
|
+
사이트 설정에서 켤 수 있습니다(켜면 글 응답에 `view_count`가 포함됩니다).
|
|
137
|
+
|
|
91
138
|
## 사이트 지식 — 브랜드 보이스 (AI 에이전트용)
|
|
92
139
|
|
|
93
140
|
이 사이트의 **브랜드 보이스**(어조·톤·화자)와 **용어 규칙**(금지어·교정어)을
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@roottale/cms-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "RootTale CMS integration MCP server — bundled integration docs, Next.js example code, and public API lookup tools. Run with: npx @roottale/cms-mcp",
|
|
6
6
|
"bin": {
|