프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

SEO Performance MCP

제작자: AutomateLab-tech버전 1.0.1i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.AutomateLab-tech/seo-performance-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

Per-URL SEO verdicts from GSC, GA4, Matomo, Clarity, AI citations: refresh/expand/merge/kill.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 마케팅 및 소셜 미디어
  • 입력해야 할 값: GSC_SERVICE_ACCOUNT_JSON, MATOMO_TOKEN, GA4_SERVICE_ACCOUNT_JSON, CLARITY_API_TOKEN, GHOST_ADMIN_API_KEY

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: GSC_SERVICE_ACCOUNT_JSON, GSC_SITE_URL, MATOMO_URL, MATOMO_TOKEN, MATOMO_SITE_ID, GA4_PROPERTY_ID, GA4_SERVICE_ACCOUNT_JSON, CLARITY_PROJECT_ID, CLARITY_API_TOKEN, POSTS_SITEMAP_URL, POSTS_LIST, GHOST_ADMIN_API_URL, GHOST_ADMIN_API_KEY, CITATION_INTELLIGENCE_URL

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "seo-performance": {
      "command": "npx",
      "args": [
        "-y",
        "@automatelab/seo-performance-mcp"
      ],
      "env": {
        "GSC_SERVICE_ACCOUNT_JSON": "your-value",
        "GSC_SITE_URL": "your-value",
        "MATOMO_URL": "your-value",
        "MATOMO_TOKEN": "your-value",
        "MATOMO_SITE_ID": "your-value",
        "GA4_PROPERTY_ID": "your-value",
        "GA4_SERVICE_ACCOUNT_JSON": "your-value",
        "CLARITY_PROJECT_ID": "your-value",
        "CLARITY_API_TOKEN": "your-value",
        "POSTS_SITEMAP_URL": "your-value",
        "POSTS_LIST": "your-value",
        "GHOST_ADMIN_API_URL": "your-value",
        "GHOST_ADMIN_API_KEY": "your-value",
        "CITATION_INTELLIGENCE_URL": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add seo-performance --env GSC_SERVICE_ACCOUNT_JSON=your-value --env GSC_SITE_URL=your-value --env MATOMO_URL=your-value --env MATOMO_TOKEN=your-value --env MATOMO_SITE_ID=your-value --env GA4_PROPERTY_ID=your-value --env GA4_SERVICE_ACCOUNT_JSON=your-value --env CLARITY_PROJECT_ID=your-value --env CLARITY_API_TOKEN=your-value --env POSTS_SITEMAP_URL=your-value --env POSTS_LIST=your-value --env GHOST_ADMIN_API_URL=your-value --env GHOST_ADMIN_API_KEY=your-value --env CITATION_INTELLIGENCE_URL=your-value -- npx -y @automatelab/seo-performance-mcp

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "seo-performance": {
      "command": "npx",
      "args": [
        "-y",
        "@automatelab/seo-performance-mcp"
      ],
      "env": {
        "GSC_SERVICE_ACCOUNT_JSON": "your-value",
        "GSC_SITE_URL": "your-value",
        "MATOMO_URL": "your-value",
        "MATOMO_TOKEN": "your-value",
        "MATOMO_SITE_ID": "your-value",
        "GA4_PROPERTY_ID": "your-value",
        "GA4_SERVICE_ACCOUNT_JSON": "your-value",
        "CLARITY_PROJECT_ID": "your-value",
        "CLARITY_API_TOKEN": "your-value",
        "POSTS_SITEMAP_URL": "your-value",
        "POSTS_LIST": "your-value",
        "GHOST_ADMIN_API_URL": "your-value",
        "GHOST_ADMIN_API_KEY": "your-value",
        "CITATION_INTELLIGENCE_URL": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "seo-performance": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@automatelab/seo-performance-mcp"
      ],
      "env": {
        "GSC_SERVICE_ACCOUNT_JSON": "your-value",
        "GSC_SITE_URL": "your-value",
        "MATOMO_URL": "your-value",
        "MATOMO_TOKEN": "your-value",
        "MATOMO_SITE_ID": "your-value",
        "GA4_PROPERTY_ID": "your-value",
        "GA4_SERVICE_ACCOUNT_JSON": "your-value",
        "CLARITY_PROJECT_ID": "your-value",
        "CLARITY_API_TOKEN": "your-value",
        "POSTS_SITEMAP_URL": "your-value",
        "POSTS_LIST": "your-value",
        "GHOST_ADMIN_API_URL": "your-value",
        "GHOST_ADMIN_API_KEY": "your-value",
        "CITATION_INTELLIGENCE_URL": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • GSC_SERVICE_ACCOUNT_JSON 비밀 env
    Base64-encoded Google service account JSON with Search Console read access.
  • GSC_SITE_URL env
    Search Console site URL (e.g. sc-domain:example.com or https://example.com/).
  • MATOMO_URL env
    Matomo instance URL (e.g. https://example.com/analytics).
  • MATOMO_TOKEN 비밀 env
    Matomo auth token with view access.
  • MATOMO_SITE_ID env
    Matomo idSite for the site to query.
  • GA4_PROPERTY_ID env
    GA4 property ID (numeric, no G- prefix).
  • GA4_SERVICE_ACCOUNT_JSON 비밀 env
    Base64-encoded Google service account JSON with GA4 Data API access.
  • CLARITY_PROJECT_ID env
    Microsoft Clarity project ID.
  • CLARITY_API_TOKEN 비밀 env
    Microsoft Clarity Data Export API token.
  • POSTS_SITEMAP_URL env
    XML sitemap URL used to enumerate posts. Primary platform-agnostic discovery path.
  • POSTS_LIST env
    Optional JSON array overriding sitemap discovery.
  • GHOST_ADMIN_API_URL env
    Optional. Ghost Admin API base URL. Pair with GHOST_ADMIN_API_KEY for richer metadata.
  • GHOST_ADMIN_API_KEY 비밀 env
    Optional. Ghost Admin API key in the form id:secret.
  • CITATION_INTELLIGENCE_URL env
    Optional URL of a citation-intelligence MCP server to delegate AI-citation queries to.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 AutomateLab-tech 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

마케팅 및 소셜 미디어 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 2980개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 2980개 중 75%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 2980개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

SEO Performance MCP, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: GSC_SERVICE_ACCOUNT_JSON, MATOMO_TOKEN, GA4_SERVICE_ACCOUNT_JSON, CLARITY_API_TOKEN, GHOST_ADMIN_API_KEY

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.0.1)은 11일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

MCP YouTube Transcript

제작자: jkawamoto

An MCP server retrieving transcripts of YouTube videos

내 컴퓨터에서 실행★ 495MIT10일 전 업데이트
설치

Google Analytics MCP

제작자: surendranb

GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.

내 컴퓨터에서 실행★ 244MIT10일 전 업데이트
설치

AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.

클라우드에서 실행★ 137MIT10일 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

seo-performance-mcp

Know which blog posts to refresh, expand, merge, or kill - without guessing.

A MCP server that turns your scattered SEO and analytics data into one clear verdict per URL. Plug it into Claude, Cursor, or any MCP-aware client and ask: "Which three posts should I update this week?" - and get an answer backed by hard numbers.

What it does

seo-performance-mcp unifies post-publish signals from every channel you already pay for:

  • Google Search Console - clicks, impressions, CTR, position, top queries
  • Matomo or GA4 - visits, dwell time, bounce rate
  • Microsoft Clarity - scroll depth, rage clicks, dead clicks
  • AI citation tracking - which LLMs cite your URL today vs. last month
  • Sitemap / CMS - publish dates, tags, word counts (any platform via XML sitemap; optional Ghost integration for richer metadata)

It then runs a deterministic rule engine over those signals and emits a verdict per URL:

refresh / expand / merge / kill / double_down / hold

with reason codes, evidence, and a 0-1 confidence score. Reporting only - the server never mutates your posts.

Why it matters

Most content teams have analytics in five tabs and a gut feeling. That's how good posts rot quietly, mediocre posts get over-promoted, and the obvious "rewrite this one" is invisible until traffic has already cratered.

This MCP closes the loop:

  • One question, one URL in, one verdict out.
  • Same logic across the whole cohort, so the ranking is comparable.
  • All decisions traceable to numeric thresholds you can pin in src/verdict/rules.ts.
  • AI clients (Claude, Cursor, MCP hosts) can drive the entire content audit in plain English.

Who it's for

  • Content marketers running a blog of 50+ posts and tired of guessing what to refresh.
  • SEO consultants doing audits who want a portable, deterministic scoring layer instead of bespoke spreadsheets.
  • AI-first content teams wiring up rewrite agents - this MCP is the upstream signal layer.
  • Indie publishers on Ghost, WordPress, Hugo, Astro, Next, Webflow, or any CMS that exposes a sitemap.

What you get

After one cohort run you have:

  • A ranked table of every post with a verdict and confidence score.
  • A markdown brief per "refresh" URL: numbers + top queries + suggested actions an editor (or a writing agent) can act on immediately.
  • A list of "quick wins": queries sitting at positions 5-15 with below-expected CTR - the fastest title-rewrite wins on the property.
  • A historical AI-citation diff: which LLMs cited you and stopped.

Install

npx -y @automatelab/seo-performance-mcp

In a Claude, Claude Code, or Cursor MCP config:

{

"mcpServers": { "seo-performance": { "command": "npx", "args": ["-y", "@automatelab/seo-performance-mcp"], "env": { "POSTS_SITEMAP_URL": "https://example.com/sitemap.xml", "GSC_SERVICE_ACCOUNT_JSON": " ", "GSC_SITE_URL": "sc-domain:example.com", "MATOMO_URL": "https://example.com/analytics", "MATOMO_TOKEN": "...", "MATOMO_SITE_ID": "1", "GA4_PROPERTY_ID": "123456789", "GA4_SERVICE_ACCOUNT_JSON": " ", "CLARITY_PROJECT_ID": "...", "CLARITY_API_TOKEN": "...", "CITATION_INTELLIGENCE_URL": "https://citation.example.com" } } } }

Every env var is optional. Adapters that lack their env config skip their slice of the snapshot; the server still boots. The verdict engine works on whatever slices are present.

Platform integration

Point it at any site, no CMS plugin required. The post-discovery layer resolves in priority order:

  1. `POSTS_LIST` - JSON array of {url, title?, published_at?, tags?, word_count?}. Use this when you already have a content index and want exact control.
  2. Ghost Admin API - if both GHOST_ADMIN_API_URL and GHOST_ADMIN_API_KEY are set, Ghost is used as a richer metadata source. Optional.
  3. HTML extraction - per-URL og:title, article:published_time, and JSON-LD datePublished are read live from the URL.
  4. XML sitemap - set POSTS_SITEMAP_URL to your sitemap (or sitemap index) and the server enumerates posts from + .

Most users only need POSTS_SITEMAP_URL. WordPress, Hugo, Astro, Next.js, Webflow, Framer, Wix, Squarespace, Notion-as-a-site, Substack-mirror sites all expose a sitemap by default.

To add a brand-new platform: nothing to build - just point POSTS_SITEMAP_URL at it.

Tools exposed

ToolWhat it returns
posts_listPosts with {url, title, age_days, tags} from sitemap, Ghost, or your POSTS_LIST.
posts_snapshotPer-URL unified rollup for a 30/60/90-day window: GSC + Matomo + GA4 + Clarity + citations + meta.
posts_decay_curveWeekly GSC clicks/impressions/position buckets + a decay/plateau/growth trend label.
posts_verdictVerdict (refresh/expand/merge/kill/double_down/hold) + reason codes + 0-1 confidence.
posts_refresh_briefMarkdown brief for a human or downstream LLM editor: numbers, top queries, suggested actions.
cohort_reportCohort verdict table sorted by priority + confidence. "Which three posts should I refresh this week?"
posts_cite_lossLLM citations that dropped off for a given URL. Needs CITATION_INTELLIGENCE_URL.
gsc_quick_wins(page, query) pairs at positions 5-15 with low CTR - fastest title-rewrite wins.

Use as a GitHub Action

Run any of the tools on a cron from CI and post the output to a GitHub Issue, Discussion, or PR. The action is published on the GitHub Marketplace.

- uses: AutomateLab-tech/seo-performance-mcp@v1

with: tool: cohort_report format: markdown input: '{"window": 90, "min_age_days": 90, "limit": 20}' gsc-service-account-json: ${{ secrets.GSC_SERVICE_ACCOUNT_JSON }} gsc-site-url: ${{ secrets.GSC_SITE_URL }} posts-sitemap-url: ${{ secrets.POSTS_SITEMAP_URL }}

Outputs:

OutputDescription
resultTool output as a multi-line string (markdown or JSON, per format).
result-filePath of the file the tool output was written to. Hand to peter-evans/create-issue-from-file etc.
rowsFor cohort_report with format: json only: number of rows returned.

A complete weekly-audit workflow that opens a GitHub Issue with the cohort report is in examples/weekly-cohort-report.yml.

Use as a one-shot CLI

The package also ships a seo-perf-cli bin so you can run a single tool without an MCP client:

npx -p @automatelab/seo-performance-mcp seo-perf-cli cohort_report \

--input '{"window": 90, "limit": 20}' \ --format markdown

Same env vars as the MCP server. --format markdown is supported for cohort_report and posts_refresh_brief; other tools fall back to fenced JSON.

Companion skills + Cursor rule

Three thin routing files ship in the repo so the LLM in your client knows *when* to reach for these tools:

  • skills/seo-performance/SKILL.md - tool-routing skill. Drop into ~/.claude/skills/seo-performance/ (or .claude/skills/ per project) to auto-load in Claude Code. Routes a single question to the right tool.
  • skills/weekly-audit/SKILL.md - one-shot weekly audit playbook. Composes gsc_quick_wins + cohort_report + posts_cite_loss into a deduped, cross-signal ranked digest with proposed edits per URL. Drop in alongside the routing skill.
  • cursor/rules/seo-performance.mdc - copy to .cursor/rules/seo-performance.mdc in any Cursor workspace.

All optional. The MCP server works without them; they just shorten the "which tool do I call" round-trip.

MCP prompts

The server exposes three prompts that bundle the playbook. Any MCP client (Claude Desktop, Claude Code, Cursor, Continue) can list and invoke them:

PromptWhat it runs
audit_cohortcohort_report on posts >=90d, then posts_refresh_brief per refresh/expand/merge row. The weekly audit.
find_quick_winsgsc_quick_wins (positions 5-15) + per-URL posts_snapshot, then proposes verbatim-query meta_title rewrites.
citation_loss_sweepposts_cite_loss per URL, refresh_brief for any with losses, targeted H1/lead phrasing recommendations.

Verdict engine

Deterministic, rule-based, traceable. Reason codes:

  • ctr_below_position_expected
  • position_drift
  • decay_30d_over_30pct / decay_60d_over_50pct
  • stagnant_no_clicks
  • thin_content_low_dwell
  • rising_impressions_low_ctr / rising_clicks_continue_investment
  • citation_loss / citation_growth
  • duplicate_or_cannibalizing
  • high_bounce_low_scroll
  • fresh_post_too_young

The mapping (reasons → verdict) and every threshold lives in src/verdict/rules.ts. Edit it, pin it in tests, ship your own rule book.

Development

npm install

npm run dev # tsx src/index.ts npm run build # tsc npm test # vitest

License

MIT

Maintenance and verification

See the maintenance guide for interpretation limits, current tool names where applicable, and reproducible verification.

PopNx에게 묻기