Rankrat

io.github.psyb0t由 GitHub 帳號 psyb0t 發布v0.20.1更新於 Oct 27, 2026

Self-hosted MCP for owned-site SEO, search analytics, indexing, monitoring, and safe remediation.

概覽

AI 產生的概覽

自架式的 SEO 與搜尋分析 MCP 伺服器,整合 Google、Bing、Cloudflare 與效能資料,讓助理檢查並修復自有網站。

可以做什麼
  • 查詢 Google Search Console、GA4、Tag Manager 與 Bing Webmaster 資料:分析、報表、網站地圖、反向連結、關鍵字與配額
  • 執行網站情報分析:全站稽核、結構化資料資格、內部連結圖、孤島頁面與跨平台比較
  • 檢查效能:PageSpeed、Core Web Vitals、CrUX 歷史、Clarity 洞察、Cloudflare 分析與本機 Lighthouse 稽核
  • 透過 Google/Bing 檢查與 DNS 驗證完成擁有權確認與網站上線設定
  • 監控與修復:持續監控、網站地圖/網址重新提交、IndexNow、Cloudflare 精準清除與邊緣重新導向
  • 建立、更新或移除平台資源,例如資源集、網站地圖、代碼、觸發條件與容器
適用情境
當你擁有或管理網站,希望用單一助理介面處理 SEO 排名、搜尋分析、索引與效能,而不必在多个平台後台之間切換時使用。適合週期性稽核、監控與修復工作,且允許代理對平台做出變更。
執行需求
以本機 Docker 程序執行(Docker 是唯一執行環境需求),包裝指令透過安裝腳本安裝。平台憑證在互動式 setup 中建立:Google OAuth 用戶端 JSON、Bing Webmaster 金鑰、Cloudflare 權杖與 Clarity 權杖。設定檔存放在資料目錄,可用 RANKRAT_DATA_DIR 覆寫。HTTP 模式在本機連接埠監聽並使用 bearer 權杖。
安裝前請注意
預設可寫入:已設定的憑證授權所有支援的平台操作,包括建立、更新與刪除資源集、網站地圖、代碼與容器。設定 RANKRAT_READ_ONLY=true 可移除寫入路由與工具。setup 會蒐集平台密鑰與 OAuth 紀錄,需保護資料目錄。HTTP 模式使用 bearer 權杖,不應暴露到回環位址之外。專案處於 alpha 階段,建議固定特定版本。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Rankrat,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

rankrat

[CI] [coverage] [version] [license] [Docker Pulls]

Every SEO signal lives in its own walled garden with its own dashboard, its own API, and its own bullshit auth dance: Search Console over here, GA4 over there, Bing Webmaster somewhere else, plus Cloudflare, Clarity, PageSpeed, CrUX, GTM, and Bing's backlink data. Point an agent at your rankings and it drowns juggling eight consoles. Rankrat drags all of them behind one self-hosted service, so you tell an agent the outcome you want and it inspects, creates, updates, or rips out provider resources through a single surface — REST and MCP, no dashboards.

It's a rat, not a burglar. You hand it the provider accounts; those credentials are the only authority it has. The resource lists in boundaries.json are inventory and URL-containment data — not a second permission system pretending to keep you safe. Rankrat writes by default; set RANKRAT_READ_ONLY=true and every mutating route and tool disappears from discovery. That's the one switch.

It speaks MCP over stdio, MCP over Streamable HTTP at /mcp, and a FastAPI JSON API under /v1/. Wrapper-managed HTTP gets a bearer; a hand-rolled loopback-only launch can drop it if you know what you're doing.

Status: alpha. The API and tool surface can still move before 1.0 — minor releases may break things on purpose (documented), so pin an exact release if you need it to hold still.

Contents

Capabilities

AreaWhat Rankrat exposes
GoogleSearch Console analytics, inspection and sitemaps; GA4 inventory, historical and realtime reports, ecommerce, funnels, and audiences; Google Tag Manager containers, workspaces, tags, triggers, variables, versions, and publication; property, sitemap, indexing, ownership, onboarding, and rename writes
BingSearch, crawl, indexing, sitemap, backlink, quota, keyword, opportunity, cannibalization, site/submission, and safe content-submission operations
PerformancePageSpeed, Core Web Vitals, CrUX history, Microsoft Clarity insights, Cloudflare analytics, and isolated local Lighthouse audits
Site intelligenceWhole-site audits, schema eligibility, internal-link graphs, orphan pages, content opportunities, and cross-provider comparisons
Ownership and onboardingGoogle/Bing checks, provider-neutral DNS verification through Cloudflare, and idempotent GA4/Search Console/Bing onboarding
BacklinksBing Webmaster backlink intelligence for configured sites
Monitoring and remediationPersistent monitors and issue history, sitemap/URL resubmission, IndexNow, exact Cloudflare purges, finite cache templates, and managed edge redirects

What the runtime advertises is what it does — no hidden endpoints. A read-only deployment drops every write from discovery; a writable one exposes onboarding alongside the rest. The whole list is the MCP tool catalog and the generated OpenAPI document.

Quick start

Install the rankrat command, create the credentials for the providers you want, then run it. Docker is the only runtime requirement.

Install

Download the installer, read it, then run it — per-user (no root) or system-wide:

sh
curl -fsSL https://raw.githubusercontent.com/psyb0t/rankrat/main/install.sh -o rankrat-install.shless rankrat-install.shbash rankrat-install.sh                # per-user   -> ~/.local/bin/rankratsudo bash rankrat-install.sh --system  # system-wide -> /usr/local/bin/rankrat

The mode auto-detects from who runs it; --user / --system force it and --uninstall removes the command. This puts the rankrat wrapper — a readable script that drives the published Docker images — on your PATH. Prefer to work from a source checkout? Clone the repo and use ./rankrat or the make targets instead; see Getting started.

Set up

Run setup. It lists every provider, you pick the ones you actually use, and it walks you through creating each credential — the exact console clicks for Google OAuth, the Bing Webmaster key, the Cloudflare token, the Clarity token — then hides every value you paste. No copying token permissions out of a README:

sh
rankrat setup

Configuring Google? Paste the one-line Desktop OAuth client JSON at the hidden prompt when setup asks — same as every other credential.

Setup validates account access — it does not submit URLs or create properties. Your profile lives in ~/.config/rankrat; override it per launch with rankrat --data-dir /absolute/path or RANKRAT_DATA_DIR for a separate profile per account or workspace. Want to read the credential steps ahead of time, or what each provider actually gives you? See Providers and credentials. From a source checkout the setup step is make setup.

Run it

sh
rankrat            # MCP over stdio (default)rankrat http -d    # REST + Streamable-HTTP MCP + Lighthouse, detached with restartsrankrat upgrade    # re-pin to the latest release, pull it, drop the previous image

From a source checkout: make run (stdio) and make run-http (HTTP over Compose, attached).

rankrat setup pins both psyb0t/rankrat and psyb0t/rankrat-lighthouse to the latest release tag — recorded, along with the HTTP port and read-only flag, in a .env at your profile root — rather than tracking the moving :latest. rankrat upgrade re-pins the images to the newest release, pulls both, restarts a running HTTP stack (reusing the recorded port and read-only flag), and removes the superseded images; it leaves the port and read-only lines untouched. Pass --rolling (or set RANKRAT_ROLLING=1) to use the moving :latest images for a single run without touching the recorded pin. RANKRAT_IMAGE, RANKRAT_LIGHTHOUSE_IMAGE, RANKRAT_HTTP_PORT, and RANKRAT_READ_ONLY still override the recorded values per run.

To set the host settings once instead of per run, put them in a permanent host env file at ~/.config/rankrat/.env (override the path with RANKRAT_ENV_FILE). The wrapper reads it before selecting a profile, so it can set RANKRAT_DATA_DIR (which profile to use) along with RANKRAT_READ_ONLY, RANKRAT_IMAGE, RANKRAT_LIGHTHOUSE_IMAGE, RANKRAT_HTTP_PORT, RANKRAT_OAUTH_CALLBACK_PORT, and RANKRAT_ROLLING. It only fills a variable that is unset or empty, so a --data-dir flag or a real env var still overrides it. This is especially handy for MCP launchers that run rankrat with a minimal environment and never see your shell exports. It is separate from the per-profile .env: the host file selects the profile and the host defaults, while a profile's .env pins that profile's images, port, and read-only flag.

Over HTTP, MCP lives at http://127.0.0.1:8080/mcp and REST under /v1/; stdio needs no port and no bearer. HTTP treats your data directory as its Compose project — it drops a docker-compose.yml in there if one's missing and never touches yours if it isn't. Under the hood that's two long-lived services plus one one-shot volume initializer. The wrapper, plain docker run, raw Compose, HTTP auth, and client wiring all live in Transports and deployment.

Browser audits run in a separate psyb0t/rankrat-lighthouse image over a Unix socket, and it never sees a single provider credential. rankrat stdio brings up an ephemeral Lighthouse sidecar for the session — same capability as HTTP — and tears it down on exit; the wrapper launches it host-side, so the app stays off the Docker socket and reaches Lighthouse only over the socket. See Lighthouse.

Safety model

  • Rankrat is writable by default. Configured account credentials authorize all supported provider operations and all resources those accounts can reach.
  • RANKRAT_READ_ONLY=true removes write REST routes and MCP tools from runtime discovery. It is the only capability switch.
  • The operator decides whether the caller is a careful human-directed agent or a fully autonomous one. Remote HTTP still uses the configured bearer.
  • Resource arrays are cached inventory and containment data. Onboarding and discovery update them so retries reuse existing resources.
  • Secrets are read-only mounts; OAuth records and monitor state have separate writable mounts.

See Configuration and Security before enabling writes or exposing HTTP beyond loopback.

Documentation

The REST source is YAML-first: openapi.yaml, seo-openapi.yaml, and free-seo-openapi.yaml generate openapi.json. Agent clients can use the repository's skill, Claude Code and Codex manifests, or OpenClaw integration under .agents.

Agent integrations

The Rankrat skill works in agents that read .agents/skills/ (such as peen). The integrations below cover both MCP stdio and a shared Streamable HTTP server.

Claude Code

sh
claude plugin marketplace add psyb0t/agentsclaude plugin install rankrat@psyb0t

Codex

sh
codex plugin marketplace add psyb0t/agentscodex plugin add rankrat@psyb0t

Installed through the catalog, the skill invokes as $rankrat:rankrat. Codex also discovers it as $rankrat directly from a Rankrat checkout.

OpenClaw

sh
openclaw skills install @psyb0t/rankratopenclaw plugins install clawhub:@psyb0t/rankrat

The plugin launches the published image over MCP stdio using the standard $HOME/.config/rankrat/ layout. Set one absolute RANKRAT_DATA_DIR in every client to reuse the same provider accounts, OAuth authorization, inventory, and monitor state from any site repository. To use an already-running shared server, configure OpenClaw for its authenticated http://127.0.0.1:8080/mcp Streamable HTTP endpoint. See Transports.

Development

Everything runs in containers — no "works on my machine" roulette:

sh
make helpmake lintmake test

Mocked tests need zero credentials. Live tests are opt-in and pull their one account plus a safe target straight from your profile, so they can't wander off and touch something they shouldn't. Full contributor guide in Development.

Project information

WTFPL license · Release history · Dependency attribution · Issues

來源:README.md,提交 d32dce5

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.20.1最新Oct 10, 2026
  2. v0.20.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分