ChimpanSEO
Generate GEO/AEO-optimized articles and publish them to WordPress from your AI agent.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"chimpanseo": {
"url": "https://chimpanseo.app/api/mcp"
}
}
}원격 엔드포인트
https://chimpanseo.app/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (13)
🟢list_sites
List the WordPress/Framer/Webflow sites connected to this ChimpanSEO account, with id, name, url, platform and language.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_usage
Check the current plan, monthly article limit, articles used this month and articles remaining — call this before generating to use the quota consciously instead of guessing.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_articles(limit)
List the most recent articles generated on this account, with title, status, site and link.
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"default": 10,
"description": "Max number of articles to return",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_article(articleId)
Fetch one article's full HTML content and metadata by id — list_articles deliberately omits content to stay compact, use this to actually read what was generated (e.g. after generate_article or refresh_article, or before deciding whether to publish it).
입력 스키마
{
"type": "object",
"properties": {
"articleId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The article id, from list_articles, generate_article or get_generation_status"
}
},
"required": [
"articleId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢suggest_topics(siteId, count, creativity)
Generates topic suggestions for a site's next articles, using the same logic as the dashboard's topic generator — biased toward an experiment/case-study angle for a share of the results, and informed by the site's differentiators if set, rather than generic keyword-chasing titles. Fast (a few seconds, not a background job) — use this before generate_article or schedule_article instead of inventing topics yourself.
입력 스키마
{
"type": "object",
"properties": {
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Target site id (from list_sites) — determines language, tone, SEO tags and differentiators used"
},
"count": {
"default": 5,
"description": "How many topic suggestions to generate",
"type": "integer",
"minimum": 1,
"maximum": 20
},
"creativity": {
"default": 50,
"description": "0 = safe/proven angles, 100 = more experimental angles",
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"siteId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_scheduled_articles(siteId, limit)
List scheduled_article slots (past and future) — topic, target date, status, site. Use this before schedule_article to see what's already queued and avoid duplicating dates/topics.
입력 스키마
{
"type": "object",
"properties": {
"siteId": {
"description": "Filter to one site's slots only",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢audit_site(siteId)
Fetches the site's homepage and checks the on-page technical SEO factors that matter for both Google and AI citation — title/meta tags, canonical, H1, mobile viewport, HTTPS, Open Graph, JSON-LD structured data, image alt coverage, indexability, response time. Each finding includes a concrete tip, not just pass/fail. Fast (a few seconds) — no background job needed.
입력 스키마
{
"type": "object",
"properties": {
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site id, from list_sites"
}
},
"required": [
"siteId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡generate_article(topic, siteId)
Starts generating a new SEO/GEO-optimized article via AI for a given topic and site. Counts against the account's monthly article quota, same as generating from the dashboard. Does NOT publish it — call publish_article separately once you're happy with it. ASYNC: this returns a jobId immediately, it does NOT wait for the article. Generation typically takes 1-6 minutes (reasoning model, non-streaming) — poll get_generation_status with the returned jobId every ~15-20s until status is "ready" or "error". (Older integrations that awaited this call directly would hit their own client's default request timeout, typically 60s, long before generation finished — this is why it's async now.)
입력 스키마
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"minLength": 3,
"description": "The article topic or working title"
},
"siteId": {
"description": "Target site id (from list_sites) — determines language, tone and SEO tags used",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"topic"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_generation_status(jobId)
Poll the status of a generate_article or refresh_article call by jobId. Returns status: "pending" (still working), "ready" (done — includes articleId, title, excerpt, charCount), or "error" (includes the error message).
입력 스키마
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The jobId returned by generate_article"
}
},
"required": [
"jobId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴refresh_article(articleId)
Rewrites an existing article to be current and more SEO/AEO-optimized — updates dates/stats/examples, improves headings, adds a FAQ section, adds 300+ words. Same action as the dashboard's "Migliora & aggiorna" button. If the article is already published to WordPress, the refreshed version is automatically re-published there too (title and WordPress status unchanged); otherwise only ChimpanSEO's own copy is updated. ASYNC: returns a jobId immediately — poll get_generation_status with it, typically ready in 1-4 minutes.
입력 스키마
{
"type": "object",
"properties": {
"articleId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The article id to refresh, from list_articles"
}
},
"required": [
"articleId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴publish_article(articleId, siteId, status)
Publish (or save as draft) a previously generated article to its WordPress site. Only works for WordPress sites — Framer/Webflow sites are copy-paste only (Beta) and are not supported here.
입력 스키마
{
"type": "object",
"properties": {
"articleId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The article id, from generate_article or list_articles"
},
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The WordPress site id to publish to"
},
"status": {
"default": "publish",
"type": "string",
"enum": [
"draft",
"publish"
]
}
},
"required": [
"articleId",
"siteId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪schedule_article(topic, siteId, scheduledFor, publishStatus, dualLanguage)
Schedule a topic to be generated and auto-published at a future date/time on a WordPress site — the same editorial calendar the dashboard uses. Requires a plan with scheduling enabled.
입력 스키마
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"minLength": 3
},
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"scheduledFor": {
"type": "string",
"description": "ISO 8601 date-time in the future, e.g. 2026-08-01T09:00:00Z"
},
"publishStatus": {
"default": "publish",
"type": "string",
"enum": [
"draft",
"publish"
]
},
"dualLanguage": {
"default": false,
"description": "Also publish an Italian translation alongside the original",
"type": "boolean"
}
},
"required": [
"topic",
"siteId",
"scheduledFor"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴cancel_scheduled_article(scheduledArticleId)
Removes a slot from the editorial calendar, from list_scheduled_articles. Same as deleting it from the dashboard calendar — works regardless of the slot's current status, so double-check it hasn't already published if that matters (see list_scheduled_articles' wp_post_id/article_id fields).
입력 스키마
{
"type": "object",
"properties": {
"scheduledArticleId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The slot id, from list_scheduled_articles or schedule_article"
}
},
"required": [
"scheduledArticleId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}커뮤니티
증거