Contentrain AI
๐ npm: @contentrain/mcp
๐ npm: contentrain
๐ npm: @contentrain/query
๐ Agent Skills
๐ Docs
๐ License: MIT
์น์ฌ์ดํธ ยท ๋ฌธ์ ยท Discord ยท Twitter ยท LinkedIn
์ฝ๋๋ฒ ์ด์ค์์ ๊ตฌ์กฐํ๋ ์ฝํ ์ธ ๋ฅผ ์ถ์ถ, ๊ด๋ฆฌ ๋ฐ ๋ฐฐํฌํ์ธ์.
Contentrain์ ํ์ด ํ๋์ฝ๋ฉ๋ UI ํ ์คํธ, ๋ฌธ์ ๋ฐ ๊ตฌ์กฐํ๋ ์ฝํ ์ธ ๋ฅผ ๊ด๋ฆฌ ๊ฐ๋ฅํ๊ณ ๊ฒํ ๊ฐ๋ฅํ ์ฝํ ์ธ ๊ณ์ธต์ผ๋ก ์ ํํ๋๋ก ๋์ต๋๋ค. AI ์์ด์ ํธ๋ ์ฝํ ์ธ ๋ฅผ ์ถ์ถ, ์์ฑ, ๋ฒ์ญ ๋ฐ ์ ๋ฐ์ดํธํ ์ ์์ผ๋ฉฐ, Contentrain์ ์คํค๋ง, Git ๊ฒํ ๋ฐ ์ด์ ๊ฐ๋ฅํ ํ์ผ ์ถ๋ ฅ์ ๊ฐ์ ํฉ๋๋ค.
Agent extracts or updates content โ Contentrain standardizes โ Human reviews โ Any platform consumes30์ด ๋ง์ ์์ํ๊ธฐ
npx contentrain init # create .contentrain/ workspace
npx contentrain serve # open the local review UI์ด์ ๋ชจ๋ธ, ๊ฒ์ฆ, ๊ฒํ ๋ธ๋์น ๋ฐ ๋ก์ปฌ UI๋ฅผ ๊ฐ์ถ ๊ด๋ฆฌํ ์ฝํ ์ธ ์์ ๊ณต๊ฐ์ด ์ค๋น๋์์ต๋๋ค. ๊ณ์ , ํด๋ผ์ฐ๋, ๋ ์ ์ฝํ ์ธ ํ์์ ํ์ํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ์ ์์ํ์ธ์:
Related MCP server: scan-your-ai-toolkit
Contentrain์ ์ฉ๋
๊ธฐ์กด ์ฑ์์ ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด์ ๊ตฌ์กฐํ๋๊ณ ๋ฒ์ญ ๊ฐ๋ฅํ ์ฝํ ์ธ ๋ก ๋ณํ
์ปดํฌ๋ํธ ์ ๋ฐ์ ํ ์คํธ๋ฅผ ํฉ๋ฟ๋ฆฌ๋ ๋์ ์ค์ ์ฝํ ์ธ ๊ณ์ธต์ผ๋ก ์ ํ๋ก์ ํธ ์์
Git์ ์ผ๋ฐ JSON ๋ฐ Markdown์ ์ฌ์ฉํ์ฌ ์น, ๋ฌธ์, ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฑ์๋ ์์คํ ์ ๋ฐ์ ๋์ผํ ์ฝํ ์ธ ์ ๊ณต
Contentrain์ด ์๋ ๊ฒ
AI ๊ธ์ฐ๊ธฐ ์ฑ์ด ์๋๋๋ค.
๋ชจ๋ ํ์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ ๋๋ ๋์๋ณด๋ ์ฐ์ CMS ๋์ฒด์ฌ๊ฐ ์๋๋๋ค.
์ฑ์ ํน์ ํ๋ซํผ์ ์ข ์์ํค๋ ๋ ์ ์ฝํ ์ธ ๋ฐํ์์ด ์๋๋๋ค.
๋ชจ์ต
์ด์ : ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์ ํฉ์ด์ง ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด โ ๊ตฌ์กฐ, ๋ฒ์ญ, ๊ฒํ ๊ฐ ์์.
export default function Hero() {
return (
<section>
<h1>Welcome to our platform</h1>
<p>Start your free trial today</p>
<button>Get Started</button>
</section>
)
}์ดํ: ์ฝํ
์ธ ๋ .contentrain/์ ์กด์ฌํ๋ฉฐ, ํ์
์ด ์ง์ ๋๊ณ ๊ตฌ์กฐํ๋จ. ์์ค ํ์ผ์ i18n ํค๋ฅผ ์ฌ์ฉํจ.
export default function Hero() {
const t = useTranslations()
return (
<section>
<h1>{t('hero.title')}</h1>
<p>{t('hero.subtitle')}</p>
<button>{t('hero.cta')}</button>
</section>
)
}// .contentrain/content/marketing/hero/en.json
{
"cta": "Get Started",
"subtitle": "Start your free trial today",
"title": "Welcome to our platform"
}์ ๊ทํ ํ๋ฆ์ ๋ฌธ์์ด์ ์ถ์ถํ๊ณ , ๋ชจ๋ธ์ ์์ฑํ๋ฉฐ, ์์ค ํ์ผ์ ํจ์นํฉ๋๋ค. ์ด ๋ชจ๋ ๊ณผ์ ์ ๊ฒํ ๊ฐ๋ฅํ git ๋ธ๋์น๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
์ด๊ฒ์ด ์ ํ์ผ๋ก ์ง์ ํ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๋๋ค:
์ฝ๋๋ฒ ์ด์ค์ ์ด๋ฏธ ์กด์ฌํ๋ ์ฝํ ์ธ ํผ๋์ ๊ฐ์ ธ์ ๊ด๋ฆฌ ๊ฐ๋ฅํ๊ณ ๊ฒํ ๊ฐ๋ฅํ ์ฝํ ์ธ ๊ณ์ธต์ผ๋ก ์ ํํ์ธ์.
์๋ ๋ฐฉ์
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ AI Agent โโโโโโถโ MCP (17 tools) โโโโโโถโ .contentrain/โ
โ (decides) โ โ (enforces) โ โ (stores) โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโ โ
โ Review UI / Git โโโโโโโโโโโโโโโโ
โ (human approves)โ
โโโโโโโโโโโโโโโโโโโโ์์ด์ ํธ๋ ์ด๋ค ์ฝํ ์ธ ๊ฐ ์กด์ฌํด์ผ ํ๊ณ ์ด๋์ ์์ผ ํ๋์ง ๊ฒฐ์ ํฉ๋๋ค.
Contentrain์ ์คํค๋ง, ๊ฒ์ฆ, ํ์ค ์ง๋ ฌํ ๋ฐ git ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ ํฉ๋๋ค.
์ฌ๋์ ๋ธ๋์น, PR ๋๋ ๋ก์ปฌ Serve UI๋ฅผ ํตํด ๊ฒํ ํฉ๋๋ค.
์ถ๋ ฅ์ ๋ชจ๋ ์ธ์ด๋ ํ๋ ์์ํฌ๊ฐ ์๋นํ ์ ์๋ ์ผ๋ฐ JSON + Markdown์ ๋๋ค.
4๊ฐ์ง ์ฝํ ์ธ ์ข ๋ฅ
์ข ๋ฅ | ์ ์ฅ ๋ด์ฉ | ์ ์ฅ์ | ์์ |
Collection | ์ฌ๋ฌ ํ์ ์ ํญ๋ชฉ | JSON ๊ฐ์ฒด ๋งต | ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ, ์ ํ, ํ |
Singleton | ๋ก์ผ์ผ๋น ๋จ์ผ ํญ๋ชฉ | JSON ๊ฐ์ฒด | ํ์ด๋ก ์น์ , ์ฌ์ดํธ ์ค์ |
Document | Markdown + ํ๋ก ํธ๋งคํฐ |
| ๋ฌธ์, ๊ธฐ์ฌ, ๋ณ๊ฒฝ ๋ก๊ทธ |
Dictionary | ํ๋ซ ํค-๊ฐ ๋ฌธ์์ด | JSON ํ๋ซ ๋งต | i18n ๋ฒ์ญ, UI ๋ผ๋ฒจ |
27๊ฐ์ง ํ๋ ํ์ (๋ฌธ์์ด, ์ด๋ฉ์ผ, URL, ์ด๋ฏธ์ง, ๊ด๊ณ, ๋ฐฐ์ด, ๊ฐ์ฒด, ๋งํฌ๋ค์ด ๋ฑ)๊ณผ ๋ด์ฅ ๊ฒ์ฆ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ด๋์๋ ์ฝํ ์ธ ์ฌ์ฉ
์ฝํ ์ธ ๋ ์ผ๋ฐ JSON ๋ฐ Markdown์ ๋๋ค. ๋ชจ๋ ์ธ์ด์์ ์ง์ ์ฝ์ ์ ์์ต๋๋ค.
TypeScript ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ํ์ ์ด ์ง์ ๋ SDK๋ฅผ ์์ฑํ์ธ์:
npx contentrain generateimport { query, singleton, dictionary, document } from '#contentrain'
const hero = singleton('hero').locale('en').get()
const posts = query('blog-post').locale('en').include('author').all()
const labels = dictionary('ui-labels').locale('tr').get('auth.login')
const article = document('docs').locale('en').bySlug('getting-started')Nuxt, Next.js, Astro, SvelteKit, Vue, React, Node, Go, Python, Swift, Flutter ๋ฐ 20๊ฐ ์ด์์ ์คํ์์ ์๋ํฉ๋๋ค.
ํ์ด ์ฌ์ฉํ๋ ์ด์
Git-native โ ๋ชจ๋ ์ฐ๊ธฐ ์์ ์ ์์ ํธ๋ฆฌ ๊ฒฉ๋ฆฌ + ๊ฒํ ๋ธ๋์น๋ฅผ ๊ฑฐ์นฉ๋๋ค.
์ ๊ทํ ํ๋ฆ โ ์ฝ๋๋ฒ ์ด์ค์์ ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด ์ค์บ โ ์ถ์ถ โ i18n ์ค๋น ์ฝํ ์ธ ์์ฑ โ ์์ค ํ์ผ ํจ์น
MCP ์์ง โ stdio ๋๋ HTTP ์ ์ก์ ํตํ 17๊ฐ์ง ๋๊ตฌ, Claude Code, Cursor, Windsurf ๋๋ ๋ชจ๋ MCP ํด๋ผ์ด์ธํธ์ ์๋
๊ณต๊ธ์ ๋ ๋ฆฝ์ ์์ง โ ๋๊ตฌ ์ฝ๋ ๋ณ๊ฒฝ ์์ด ๋ก์ปฌ ์์ ํธ๋ฆฌ, GitHub ๋๋ GitLab(์์ฒด ํธ์คํ ํฌํจ)์์ ๋์ผํ ๋๊ตฌ ์ธํฐํ์ด์ค ์คํ. Studio์ ๊ฐ์ ์๊ฒฉ ๋๋ผ์ด๋ฒ๋ฅผ ์ํ HTTP ์ ์ก ์ฌ์ฉ ๊ฐ๋ฅ.
ํ์ค ์ง๋ ฌํ โ ์ ๋ ฌ๋ ํค, ๊ฒฐ์ ๋ก ์ ์ถ๋ ฅ, ๊น๋ํ git diff, ์ถฉ๋ ์๋ ๋ณ๋ ฌ ํธ์ง
์์ด์ ํธ ๊ท์น ๋ฐ ๊ธฐ์ โ ํ๋ ์ ์ฑ ๋ฐ ๋จ๊ณ๋ณ ์ํฌํ๋ก์ฐ๊ฐ npm ํจํค์ง๋ก ์ ๊ณต๋จ
Serve UI โ ๋ชจ๋ธ, ์ฝํ ์ธ , ๊ฒ์ฆ ๋ฐ ์ ๊ทํ ์ํ๋ฅผ ํ์ํ๊ธฐ ์ํ ๋ก์ปฌ ์น ๋์๋ณด๋
ํ๋ ์์ํฌ ๋ ๋ฆฝ์ โ MCP๋ ํ๋ ์์ํฌ๋ฅผ ์์ง ๋ชปํฉ๋๋ค. ์์ด์ ํธ + ๊ธฐ์ ์ด ์คํ๋ณ ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
์์ด์ ํธ ๊ธฐ์
์ด ์ ์ฅ์๋ 15๊ฐ์ง ์์ด์ ํธ ๊ธฐ์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋ชจ๋ AI ์ฝ๋ฉ ์์ด์ ํธ๊ฐ ํ์์ ๋ฐ๋ผ ๋ก๋ํ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ํฌํ๋ก์ฐ ์ ์ฐจ์ ๋๋ค.
์์ด์ ํธ์ ๋ชจ๋ ๊ธฐ์ ์ค์น:
npx skills add Contentrain/ai/packages/skills๋๋ ํน์ ๊ธฐ์ ์ค์น:
npx skills add Contentrain/ai/packages/skills --skill contentrain-normalize๊ธฐ์ ์ Claude Code, Cursor, Windsurf, GitHub Copilot, OpenAI Codex, Gemini CLI ๋ฐ 40๊ฐ ์ด์์ ๋ค๋ฅธ ์์ด์ ํธ์ ์๋ํฉ๋๋ค.
์ ์ฒด ๊ธฐ์ ์นดํ๋ก๊ทธ ๋ฐ ์์ด์ ํธ ์ง์นจ์ AGENTS.md๋ฅผ ์ฐธ์กฐํ์ธ์.
ํจํค์ง
ํจํค์ง | npm | ์ญํ |
17๊ฐ์ง MCP ๋๊ตฌ + stdio / HTTP ์ ์ก + ๋ก์ปฌ / GitHub / GitLab ๊ณต๊ธ์ | ||
CLI + Serve UI + MCP stdio ์ง์ ์ | ||
์์ฑ๋ TypeScript ์ฟผ๋ฆฌ SDK | ||
๊ณต์ ํ์ ์ ์ + ์์ | ||
IDE ํตํฉ์ ์ํ ์์ด์ ํธ ํ์ง ๊ท์น | ||
์ํฌํ๋ก์ฐ ์ ์ฐจ + ํ๋ ์์ํฌ ๊ฐ์ด๋ |
์คํํฐ ํ ํ๋ฆฟ
Contentrain ์ฝํ ์ธ ๋ชจ๋ธ, ์์ฑ๋ SDK ํด๋ผ์ด์ธํธ ๋ฐ ํ๋ ์์ํฌ๋ณ ํจํด์ด ํฌํจ๋ ํ๋ก๋์ ์ค๋น ํ ํ๋ฆฟ:
ํ ํ๋ฆฟ | ํ๋ ์์ํฌ | ์ฌ์ฉ ์ฌ๋ก |
Astro | ๋ธ๋ก๊ทธ / ํธ์ง | |
Astro | ๋๋ฉ ํ์ด์ง | |
Next.js | ์ ์์๊ฑฐ๋ ์คํ ๋ฆฌํ ๋ง | |
Next.js | ๋ง์ผํ + ์ฑ + ๋ฌธ์ ํตํฉ | |
Next.js | SaaS ๋์๋ณด๋ UI ํ ์คํธ | |
Next.js | ํ์ดํธ ๋ผ๋ฒจ / ๋ฉํฐ ํ ๋ํธ | |
Nuxt | ๊ด๋ฆฌ์ ์ฝ์ / ์ด์ | |
Nuxt | SaaS ๋ง์ผํ ์ฌ์ดํธ | |
SvelteKit | ํธ์ง / ์ถํ | |
VitePress | ๋ฌธ์ ์ฌ์ดํธ |
๊ฐ ํ ํ๋ฆฟ์ GitHub ํ ํ๋ฆฟ ์ ์ฅ์์ ๋๋ค. "Use this template"์ ํด๋ฆญํ์ฌ ์์ํ์ธ์.
๋น ๋ฅธ ์ฐธ์กฐ
npx contentrain init # initialize project
npx contentrain serve # local review UI (port 3333)
npx contentrain serve --stdio # MCP over stdio for IDE agents
npx contentrain validate # check content health
npx contentrain generate # generate typed SDK client
npx contentrain status # project overview
npx contentrain doctor # setup health check
npx contentrain studio login # authenticate with Studio
npx contentrain studio connect # connect repo to Studio project๋ฌธ์
2๋ถ ๋ฐ๋ชจ โ ์ ํ์ ์ดํดํ๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ
์์ํ๊ธฐ โ ์ค์น, ์์ด์ ํธ ์ฐ๊ฒฐ ๋ฐ ์ฒซ ๋ฒ์งธ ์ํฌํ๋ก์ฐ ์คํ
์ ๊ทํ ๊ฐ์ด๋ โ ์ฃผ์ ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด ๋ณต๊ตฌ ํ๋ฆ
์ํ๊ณ ์ง๋ โ AI์ Studio๋ฅผ ์ฐ๊ฒฐํ๋ ํจํค์ง-์ ํ ๋ธ๋ฆฌ์ง
Contentrain Studio โ Git ๊ธฐ๋ฐ ๊ตฌ์กฐํ๋ ์ฝํ ์ธ ๋ฅผ ์ํ ์คํ ์ฝ์ด ํ ์ด์, ์์ฒด ํธ์คํ ๊ฐ๋ฅ ๋๋ ๊ด๋ฆฌํ Pro/Enterprise ์ ๊ณต
์ ์ฒด ๋ฌธ์ โ ๊ฐ์ด๋, ํจํค์ง ์ฐธ์กฐ ๋ฐ ํ๋ ์์ํฌ ํตํฉ
๊ฐ๋ฐ
pnpm install && pnpm build && pnpm test๋ฒ์ ๊ด๋ฆฌ ๋ฐ ๊ฒ์ ์ํฌํ๋ก์ฐ๋ RELEASING.md๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค๋ฎค๋ํฐ
Discord โ ํ ๋ฐ ์ปค๋ฎค๋ํฐ์ ๋ํ
GitHub Discussions โ ์ง๋ฌธ ๋ฐ ์์ด๋์ด
Twitter / X โ ์ ํ ์ ๋ฐ์ดํธ ๋ฐ ๊ณต์ง์ฌํญ
LinkedIn โ ํ์ฌ ๋ด์ค
YouTube โ ํํ ๋ฆฌ์ผ ๋ฐ ๋ฐ๋ชจ
GitHub Issues โ ๋ฒ๊ทธ ๋ณด๊ณ ๋ฐ ๊ธฐ๋ฅ ์์ฒญ
Contentrain AI๊ฐ ์ ์ฉํ๋ค๋ฉด ๋ณํ๋ฅผ ๋๋ฌ์ฃผ์ธ์. ๋ค๋ฅธ ์ฌ๋๋ค์ด ํ๋ก์ ํธ๋ฅผ ๋ฐ๊ฒฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ผ์ด์ ์ค
MIT
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Contentrain/ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
