@roottale/cms-mcp
Version:
RootTale CMS integration MCP server — bundled integration docs, Next.js example code, and public API lookup tools. Run with: npx @roottale/cms-mcp
78 lines (60 loc) • 4.98 kB
Markdown
# @roottale/cms-mcp
## 0.25.0
### Minor Changes
- 0dcb931: 비즈니스 프로필 (로컬 SEO) — 어드민 "운영 > 비즈니스 프로필" 에서 저장한
사업장 정보(이름·업종·주소·좌표·영업시간·네이버플레이스/구글 비즈니스
프로필 URL)를 외부 사이트가 조회해 LocalBusiness JSON-LD 를 자동 렌더.
- cms-client: `fetchBusinessProfile()` (미설정/구 서버 404 = null) +
`localBusinessSchema(profile, { url, image? })` — @type 중복 제거,
PostalAddress/GeoCoordinates/openingHoursSpecification/sameAs.
- API: `GET /v1/cms/public/business-profile` (cms:read).
- cms-mcp docs: seo.md 로컬 SEO 섹션, theme-and-settings.md
fetchBusinessProfile, api-reference.md 엔드포인트, examples layout 적용.
- c81991a: CLS(Core Web Vitals) 대책: 본문 이미지에 width/height 출력. 에디터가
삽입 시 원본 치수를 보존하고(CmsImage), 렌더러(Next·Astro)가 `width`/
`height` 속성으로 출력 — 기존 CSS(max-inline-size:100%; block-size:auto)와
조합돼 반응형 유지하면서 레이아웃 시프트 제거. WP import 의 width/height 도
자동 보존. cms-mcp docs 에 robots.txt·브레드크럼·페이지네이션 가이드 추가.
- 4e7f9f8: llms.txt 라우트 팩토리 (AEO/GEO): `createLlmsTxtRoute(config)` 추가 —
llms.txt 스펙(https://llmstxt.org)의 마크다운 인덱스로 AI 검색·생성엔진
크롤러에 사이트 구조·발행 글(최대 100개, excerpt 1줄)을 노출. fetch 실패도
항상 200(fail-soft). `createRevalidateRoute` 기본 `alsoRevalidate` 에
`/llms.txt` 포함 — 글 변경 시 AI 크롤러 인덱스 자동 갱신. docs/examples 반영.
- 50b6df0: 메뉴(네비게이션) 연동: `fetchMenu({ apiKey, slug })` / `fetchMenus({ apiKey })`
— 어드민 "디자인 > 메뉴" 트리(`GET /v1/cms/public/menus`)를 헤더/푸터 네비로
렌더. 깊이 2, 미존재 404 → null/빈 배열 fail-soft. 새 문서 `menus.md` +
예시 `components/site-nav.tsx`.
- e84a46c: slug 변경 301 (WP permalink 패리티): public API 가 옛 slug 로도 글을 찾아
현재 slug 로 응답하고(post_slug_history fallback), `cms-renderer-next/routes`
에 `postRedirectPath(post, requestedSlug, blogBasePath?)` 헬퍼를 추가 —
페이지에서 `permanentRedirect()` 로 301 처리. docs/examples 에 패턴 반영.
- 6262fe7: 동적 OG 이미지: `createPostOgImage(config, { ImageResponse })` +
`OG_IMAGE_SIZE`/`OG_IMAGE_CONTENT_TYPE` — `app/blog/[slug]/opengraph-image.tsx`
에서 글별 1200×630 소셜 카드 생성. 한글은 Noto Sans KR 부분셋 런타임 로딩,
글/폰트 fetch 실패 시 fail-soft. `next` 직접 의존 없음(ImageResponse 주입).
- 50b6df0: 공개 검색 API: `searchPosts({ apiKey, query, limit?, type? })` — 발행 글
키워드 검색 (WP `?s=` 패리티, `GET /v1/cms/public/search`). title·excerpt·
본문 텍스트 부분일치, 본문 미포함 슬림 hit. 구 서버 404 는 빈 배열 fail-soft.
### Patch Changes
- e7e0849: per-post nofollow 제어 문서화 — 어드민 SEO 패널의 noindex 옆에 nofollow
토글이 추가됨. `metaJson.seo.nofollow` → Next `robots.follow` 매핑 예시 갱신.
## 0.24.0
### Minor Changes
- 299c9b2: 문의 유입 어트리뷰션 (ADR-0048 §2). `submitInquiry` 에 `attribution` 필드 추가 — 비콘이 기억한 first-touch(처음 도착한 페이지·단축링크/QR 토큰·utm·외부 referrer 호스트명)를 문의와 함께 보내면 어드민 CRM 에 유입 경로가 표시된다. 신규: `@roottale/cms-client/attribution` 서브패스의 `readAttribution()`(브라우저 전용), 서버 엔트리의 `parseAttributionJson()`, intake API `attr_*` 폼 필드. cms-mcp docs(inquiries/api-reference) 및 예제(AttributionField) 동반 갱신.
### Patch Changes
- edba5a1: README 에 사람용 문서 경로 추가 — 공식 문서 사이트(roottale.com/docs) + unpkg 원문 열람
## 0.23.0
### Minor Changes
- e927a42: 드라이런 검증에서 발견된 문서 갭 보완 — examples/nextjs 에 app/layout.tsx
추가(styles import 포함), getting-started 에 tsconfig `@/*` paths alias 안내 추가
> cms-\* linked 그룹과 버전을 함께 올린다. 변경 시 `pnpm changeset` 으로
> 업데이트 로그를 남기면 Version Packages PR 이 본 파일에 자동 반영한다.
## 0.22.0
- 최초 릴리스 — RootTale CMS 연동 MCP 서버 (stdio). cms-\* 라인(renderer-next
0.22.0)에 버전 정렬.
- `blog.md`에 고정 페이지 렌더러 `RootTalePage` (renderer-next 0.22.0) 반영
- 통합 문서 번들 (`docs/`): 개요, 시작하기, 블로그, 발행 웹훅, 상담문의,
SEO, 테마/설정, HTTP API 레퍼런스
- Next.js 연동 예시 코드 번들 (`examples/nextjs/`)
- Tools: `listRootTaleDocs`, `readRootTaleDoc`, `searchRootTaleDocs`,
`readRootTaleNextjsExampleCode`, `listPublishedPosts`, `getPublishedPost`