content-genie-mcp
Korean-content MCP that consolidates real-time trends from Naver, Daum, Google, YouTube, and Zum, includes a 100+ Korean holiday database, and provides a viral-score predictor for content optimization.
README
content-genie-mcp
Korean-content-creator MCP that gives Claude live Naver/Daum/Google/YouTube/Zum trends, a 100+ Korean-holiday DB, and a viral-score predictor — so you stop tab-hopping between 5 trend dashboards before every post.
<a name="english"></a>
Why content-genie?
Most "trend" MCPs are thin wrappers around Google Trends. If you're publishing for a Korean audience (Naver Blog, YouTube Korea, Instagram KR, TikTok), Google alone misses the signal — Naver Datalab, Daum search, Zum realtime, and KR-region YouTube each surface different keywords at different hours. content-genie consolidates all five sources into one MCP, layers a 100+ Korean-holiday + 14일-day-series + 절기 event database so Claude can plan around 빼빼로데이 and 수능 without being told, and finishes the loop with a viral-score predictor trained on the structural patterns (numbers, brackets, emotional triggers, urgency words) that move CTR in Korean content.
The Phase 4 refactor (v2.12.0, May 2026) made the whole thing safe to depend on: every scraper sits behind a per-source circuit breaker (3 fails → open 5 min) with a stale-cache fallback, so a Naver HTML change no longer takes the whole MCP down — it just degrades that one source and tells the LLM about it via resource://content-genie/sources.
What's new in v2.12.0
- 17 tools, one registry, six small files. The old 4,712-line
index.tsis gone — tools live insrc/tools/{trends,seo,contentIdeas,viralScoring,competitorAnalysis,koreanEvents}.ts. Adding a tool is a one-liner. - Scrapers can't take the server down anymore. Per-source circuit breaker + LRU/TTL cache (15 min, 100 entries) + stale fallback. When Naver is degraded, Claude sees
source_status: 'stale'and adapts. - Two new MCP Resources for
@-mention.resource://content-genie/korean-events/{year}returns the full event DB rebased to any year;resource://content-genie/sourcesexposes live breaker + cache state. - Two MCP Prompts as guided workflows.
viral-titlechainsoptimize_title_hashtags→predict_viral_score→generate_ab_test_variants.competitor-analysisdoes URL analysis + gap-filling ideation. - 38 tests across 8 suites. Circuit breaker transitions, cache eviction, scraper fallback paths, SSRF guard, every tool group — runs on Node 20 + 22 in CI.
5-minute Quickstart
# 1. Install via Claude Code (recommended)
claude mcp add content-genie -- npx -y content-genie-mcp
# 2. Or add to Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"content-genie": {
"command": "npx",
"args": ["-y", "content-genie-mcp"]
}
}
}
- Restart Claude Desktop (or
claudewill pick it up on the next run). - Try this in Claude:
오늘 한국에서 뜨는 키워드 5개로 유튜브 쇼츠 제목 후보 3개씩 만들고, 각각 바이럴 점수 등급 매겨줘.
- Expected: Claude calls
get_korean_trends(naver+daum+google+youtube+zum merged) →optimize_title_hashtagsper keyword →predict_viral_score→ returns a ranked S/A/B/C/D grade table with the structural reason ("제목에 숫자 + 호기심 트리거 포함").
Real use cases
1. "I need a Korean blog post topic that won't be obsolete by tomorrow"
Problem: Naver Blog rewards quick takes on the keywords trending right now, but those keywords change every 4 hours.
With this MCP: Claude calls get_korean_trends({ platform: 'naver', limit: 20 }) and then generate_content_ideas against the freshest 5 keywords with seasonal: true. The seasonal layer adds upcoming Korean events from the 100+ DB — so the suggestion isn't just "AI 추천 도구" but "AI 추천 도구 + 수능 D-30 콘텐츠 기획" because get_seasonal_content_guide saw 수능 is 4 weeks out.
Why it's better than the Naver Datalab UI: Datalab gives you a chart. This MCP gives you 5 titled, hashtag-optimized post drafts grounded in those same trends, in one conversational round-trip.
2. "Will this YouTube Shorts title actually pop?"
Problem: Title CTR is the single biggest lever on Shorts, but you only know after you publish.
With this MCP: Paste your draft into Claude, say "use the viral-title prompt". The prompt chains optimize_title_hashtags → predict_viral_score → generate_ab_test_variants and returns an S~D grade plus 5 A/B variants with the structural deltas (added number, added urgency word, shortened to 25 chars).
Why it's better than vibes: the scorer reads the same 6 signal classes a Korean copywriter would — emotional triggers (충격|실화|숨겨진), structural elements (numbers/brackets/?/!), urgency, social proof, utility framings (방법|꿀팁|노하우), and length window — and tells you which ones are missing.
3. "I run a small Korean brand, I need a content calendar that respects local holidays"
Problem: Generic calendar tools don't know about 빼빼로데이, 김장철, 수능, or 한가위 연휴, so you end up posting a promo on 현충일.
With this MCP: Claude calls create_content_calendar({ months: 3, niche: 'beauty' }), which joins your 3-month window against the 100+ event DB (공휴일 18 + 데이 시리즈 12 + 절기 15 + 상업 이벤트 15 + 시즌/날씨 12 + 입시 10 + 쇼핑 10 + 크리에이터 특화 8) and produces a date-by-date plan with content themes per event.
Why it's better than a Notion template: the DB is rebased to any year (resource://content-genie/korean-events/2027 is a single @-mention away), so the calendar stays accurate next year without you maintaining it.
Tools / Resources / Prompts
| Name | Type | What it does |
|---|---|---|
get_korean_trends |
tool | Real-time trends across Naver / Daum / Google / YouTube / Zum, merged + de-duped |
analyze_news_trends |
tool | Korean news headline trends with category buckets |
analyze_seo_keywords |
tool | Naver + Google autocomplete + long-tail expansion |
optimize_title_hashtags |
tool | CTR-optimized title rewrites + per-platform hashtag set |
generate_hashtag_strategy |
tool | Per-platform (IG/YT/TikTok/Naver) hashtag mix with breadth/depth split |
generate_content_ideas |
tool | Idea generation seeded by trend + season + niche |
generate_script_outline |
tool | Long-form script / short-form scene-by-scene outline |
repurpose_content |
tool | One post → cross-platform variants (Blog → Shorts → Reel → Thread) |
predict_viral_score |
tool | S~D grade with structural / emotional / urgency reasons |
generate_ab_test_variants |
tool | N A/B title variants with the lever changed in each |
predict_content_performance |
tool | Heuristic CTR / share / save estimate |
analyze_thumbnail |
tool | Thumbnail concept analysis + CTR-optimization checklist |
analyze_competitor_content |
tool | URL-fetch competitor post (SSRF-guarded) + gap analysis |
benchmark_content_performance |
tool | Industry benchmarks by niche / platform |
analyze_influencer_collab |
tool | Influencer fit / audience-overlap / brief generator |
create_content_calendar |
tool | Multi-month calendar joined against Korean event DB |
get_seasonal_content_guide |
tool | "What should I post in the next 2 weeks?" — event-aware |
resource://content-genie/korean-events/{year} |
resource | Full 100+ event DB rebased to any year (JSON) |
resource://content-genie/sources |
resource | Live scraper breaker + cache state for graceful degradation |
prompt://content-genie/viral-title |
prompt | optimize → predict → A/B-vary, one slash command |
prompt://content-genie/competitor-analysis |
prompt | URL fetch → gap-fill ideation workflow |
How it works
Claude (or any MCP client)
│
▼
McpServer (SDK 1.25)
│
┌───────────┼───────────┐
▼ ▼ ▼
17 tools Resources Prompts
│
▼
runScraper() ◄── core/cache.ts (LRU + 15min TTL)
│ ◄── core/circuitBreaker.ts (3-fail → open 5min)
▼
scrapers/{naver,daum,google,youtube,zum}.ts
│
▼
core/security.ts (SSRF + 30s timeout + 5MiB cap)
Three design choices that matter:
- Per-source circuit breaker. A bad day at Naver doesn't take down 16 other tools — only the trend tools that need Naver, and even those return a stale-cache
status: 'stale'envelope so the LLM can adapt. - Scrapers never throw. They return a
ScrapeResultenvelope (ok | stale | unavailable). All error handling is in one place (runScraper), so adding a new source is "write a scraper, returnScrapeResult, done". - Event DB rebased on read. The 100+ Korean holiday/event database is stored as month-day rules and rebased to any year on demand — so
…/korean-events/2027works today.
Configuration
| Env var | Default | Purpose |
|---|---|---|
MCP_HTTP_MODE |
false |
true to run as Streamable HTTP server instead of stdio |
HOST |
0.0.0.0 |
HTTP bind host |
PORT |
3000 |
HTTP bind port |
CONTENT_GENIE_ALLOWED_HOSTS |
KR search/social/commerce allowlist | Comma-separated host allowlist for analyze_competitor_content SSRF guard. Override to add your own competitor domains. |
HTTP endpoints (when MCP_HTTP_MODE=true):
| Method | Path | Purpose |
|---|---|---|
| GET | / |
Server info |
| GET | /health |
Health probe (Railway/Docker) |
| POST | /mcp |
MCP JSON-RPC requests (2025-03-26 spec) |
| GET | /mcp |
SSE stream for server-initiated messages |
Known limitations
- Scrapers are HTML-driven. Naver / Daum / Zum don't expose public trend APIs; the scrapers parse HTML. When they change their markup, the affected source returns
status: 'unavailable'until we ship a parser fix. The circuit breaker keeps the rest of the MCP working in the meantime. - Viral score is structural, not semantic.
predict_viral_scoreis a heuristic over Korean copy patterns. It can't read the meaning of your post — only the structural / emotional / urgency signals in the title + description. - No thumbnail image analysis.
analyze_thumbnailworks on a thumbnail concept description, not on an uploaded image. Image-in is on the roadmap. - Korean-first. Hashtag templates, urgency words, and the event DB are Korean. English/JP modes are not in scope for v2.x.
When NOT to use this
- If you need a global trend dashboard, use Google Trends directly — content-genie is opinionated toward the Korean creator stack.
- If you need paid keyword data with search volume (네이버 검색광고 API, Ahrefs, SEMrush), use those — content-genie's SEO tools rely on free autocomplete + heuristic long-tail expansion.
- If you need deterministic LLM-free copy generation for compliance reasons, this MCP feeds an LLM — the LLM is what writes the actual titles.
Comparison
| content-genie-mcp | Raw scraping yourself | Naver Datalab UI | SmartEditor / 네이버 검색광고 API | |
|---|---|---|---|---|
| Multi-source merge (5 KR sources) | yes | DIY | Naver only | Naver only |
| Korean event DB built-in | 100+ events | no | no | no |
| Circuit breaker + cache | yes | DIY | n/a | n/a |
| Viral score heuristic | yes | no | no | no |
MCP-native (Claude @-mention events) |
yes | no | no | no |
| Cost | free (npm) | dev time | free | paid above quota |
Roadmap
- More sources. Tistory realtime, Brunch picks, Kakao View — currently 5 sources, want 8.
- Image-in thumbnail analysis. Accept uploaded thumbnails and run vision-based CTR scoring.
- Cached-trend Resource. Expose
resource://content-genie/trends/{platform}/latestso the LLM can@-mentionlast-scrape results without spending a tool call. - Video script → captions/subtitles. Pair
generate_script_outlinewith a captions formatter for Shorts upload. - Naver 검색광고 API integration (opt-in). When the user supplies an API key, switch SEO tools from autocomplete heuristics to real search volume.
Contributing
PRs welcome. The Phase 4 refactor made the codebase contributor-friendly — adding a tool is a single-file change. See the Contributing section below or open an issue first if you want to discuss a larger change. CI runs typecheck + test + build on Node 20 + 22 against every PR.
Quick contributor loop:
git clone https://github.com/MUSE-CODE-SPACE/content-genie-mcp
cd content-genie-mcp
npm install
npm run typecheck && npm test && npm run build
Security
This MCP fetches third-party URLs and takes LLM-driven input. The threat model, SSRF host allowlist, 30-second fetch timeout + 5 MiB body cap, and CONTENT_GENIE_ALLOWED_HOSTS override are documented in SECURITY.md. Report vulnerabilities privately via a GitHub Security Advisory at https://github.com/MUSE-CODE-SPACE/content-genie-mcp/security/advisories/new.
License
MIT — SPDX identifier declared in package.json (a top-level LICENSE file will be added in the next release).
Maintainer
@yoon-k (MUSE-CODE-SPACE). For support, open an issue: https://github.com/MUSE-CODE-SPACE/content-genie-mcp/issues.
<a name="한국어"></a>
한국어 요약
content-genie-mcp는 한국 콘텐츠 크리에이터를 위한 MCP 서버입니다. 네이버 / 다음 / 구글 / 유튜브 / 줌 5개 소스의 실시간 트렌드를 한 번에 합쳐 보여주고, 100+ 한국 기념일/이벤트 DB(공휴일 18, 데이 시리즈 12, 절기 15, 상업 이벤트 15, 시즌/날씨 12, 입시 10, 쇼핑 10, 크리에이터 특화 8)와 바이럴 점수 예측기(S~D 등급, 한국어 카피 패턴 기반)를 함께 제공합니다.
v2.12.0(2026-05-20)에서 17개 도구가 도메인별로 모듈화되었고, 스크래퍼별 회로 차단기 + LRU 캐시 + stale fallback 으로 한 소스가 망가져도 나머지가 정상 동작합니다. @-mention 가능한 MCP Resources 2개와 슬래시 명령용 Prompts 2개도 추가되었습니다.
설치 (Claude Code):
claude mcp add content-genie -- npx -y content-genie-mcp
첫 호출 예시:
오늘 한국에서 뜨는 키워드 5개로 유튜브 쇼츠 제목 후보 3개씩 만들고, 각각 바이럴 점수 등급 매겨줘.
자세한 내용은 영문 섹션, 변경 이력은 CHANGELOG.md, 위협 모델은 SECURITY.md를 참고하세요.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。