GetCited

dev.getcited由 getcited.dev 发布官方发布者v0.2.0更新于 Nov 2, 2026

SEO and AI-visibility operator tools: site health, ranked actions, ranks, visitor behavior.

已验证Streamable HTTP可网页运行效率与工作流网页搜索与抓取数据与分析

概览

AI 生成的概览

GetCited 是一个远程 SEO 与 AI 可见性服务,让助手审计站点、跟踪排名与 AI 引用,并处理按优先级排序的行动队列。

可以做什么
  • 管理跟踪站点:列出、添加和移除项目,读取站点健康与引导进度
  • 处理行动队列:列出、查看、认领、完成或忽略优先问题,并排队新的抓取与审计
  • 跟踪搜索排名:添加和列出关键词、查看排名历史、排队排名检查
  • 跟踪 AI 可见性:添加 GEO 提示词、排队检查、按引擎读取引用汇总
  • 发现增长机会:机会队列、内容简报、退步项与单页测量历史
  • 读取访客分析:全站行为摘要与单页画像
适用场景
适合在站点代码库中工作的编码助手,用来发现、认领并解决已测量的 SEO 与 AI 引用问题;也适合希望把排名、引用和访客数据直接拉进助手而非看面板的人。
运行要求
远程 Streamable HTTP 端点 app.getcited.dev;一般无需本地运行时,仅对不支持远程传输的客户端可选使用 stdio 代理包。需要 GetCited 账号和在设置中创建的 API 密钥,通过 Authorization 头以 Bearer vseo_... 形式发送(代理从 SEO_API_KEY 读取)。访客分析需站点已安装跟踪脚本。
安装前请注意
API 密钥是机密,放在 Authorization 头中,不要写入 URL 或共享配置。多个工具会改变状态:添加和移除项目、认领/完成/忽略行动,以及排队审计、排名检查和 GEO 检查,会消耗套餐资源(如站点名额和抓取页数)。忽略理由和完成备注会展示给站点所有者。站点数据(含访客分析)会发送到 GetCited 服务。

安装

在 SourceWeft 中

  1. 打开 控制台中的 GetCited,将其添加到工作区。
  2. 连接 Authorization token 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/dev.getcited%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "getcited": {
      "type": "http",
      "url": "https://app.getcited.dev/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

GetCited MCP connector

[GetCited MCP server on Glama]

Client-side pieces for connecting a coding agent to GetCited: the MCP server definition, a Claude Code plugin with its skills, a Gemini CLI extension, and a small stdio proxy for clients that cannot speak Streamable HTTP.

GetCited audits a site the way an answer engine reads it, tracks where it ranks, records which AI engines cite it, and files each measured problem as an action with the evidence behind it. It never proposes the fix: your agent has the repository open and it does not.

The service itself is closed source. Everything in this repository is the connector — transport, manifests and prompts — so you can read exactly what your agent is being told and what leaves your machine.

Connect

Create a key under Settings → API keys in the app, then pick your client.

Claude Code

bash
claude mcp add --transport http getcited https://app.getcited.dev/api/mcp \  --header "Authorization: Bearer $SEO_API_KEY"

Any client that reads a JSON config

json
{  "mcpServers": {    "getcited": {      "type": "http",      "url": "https://app.getcited.dev/api/mcp",      "headers": { "Authorization": "Bearer ${SEO_API_KEY}" }    }  }}

Gemini CLI

bash
gemini extensions install https://github.com/bapierre/getcited-mcp

Clients without a remote transport (Claude Desktop, whose config takes a command rather than a URL) use the stdio proxy in src/:

bash
claude mcp add getcited --env SEO_API_KEY="vseo_..." -- npx -y getcited-mcp
VariableRequiredMeaning
SEO_API_KEYyesThe key from Settings → API keys.
SEO_API_URLnoEndpoint override. Defaults to https://app.getcited.dev/api/mcp.

Without SEO_API_KEY the proxy still starts and lists the tools from a bundled snapshot (src/tool-snapshot.ts), so registries can inspect it; every call then fails with a message naming the variable. Refresh the snapshot after the hosted tool list changes with npm run build && SEO_API_KEY=vseo_... npm run snapshot.

llms-install.md is the same instructions written for an agent, so you can tell your assistant to set this up rather than doing it yourself.

What is in here

PathWhat it is
src/stdio.tsThe stdio proxy. Forwards JSON-RPC to the HTTPS endpoint and nothing else.
src/tool-snapshot.tsTool definitions served when no key is set. Generated by scripts/snapshot-tools.mjs.
DockerfileBuilds the stdio proxy, for registries that run servers in a container.
.claude-plugin/, skills/The Claude Code plugin and its two skills.
gemini-extension.jsonThe Gemini CLI extension manifest.
.mcp.jsonA project-scoped Claude Code server entry.
llms-install.mdSetup instructions addressed to an agent.

The tools

Sites (list_projects, add_project, remove_project, get_site_health), onboarding and profile (get_setup_status, get_project_profile, set_project_profile), the queue (get_next_work, list_actions, get_action, claim_action, complete_action, dismiss_action, run_audit), growth (list_opportunities, get_content_brief, list_regressions, get_page_history), rankings (add_keywords, list_keywords, rank_history, check_rankings), AI visibility (add_geo_prompts, geo_summary, check_geo, run_brain) and visitors (get_behavior_digest, get_page_profile).

Each tool carries a title and the readOnlyHint or destructiveHint annotation that matches what it does. Full documentation, including what every number means and the rules the measurements follow: https://getcited.dev/docs/mcp.

Registry

Listed in the official MCP Registry as dev.getcited/mcp, published under a DNS-verified namespace.

Support

getcited.dev/support · privacy · terms · MIT licensed.

来源:README.md,提交 7e3e190

工具

29

how_to_authenticate

GetCited is not authenticated

This server is not authenticated, so none of its SEO tools will answer. Call this for the exact steps to fix it. Retrying other tools will not help.

无需输入参数。

get_setup_status

Onboarding checklist

The onboarding as a checklist for one project: each step (profile, tech stack, competitors, first audit, keywords, rank check, GEO prompts, GEO check, visitor snippet) with whether it is done, what it needs and the tool that completes it, plus `next`, the first step still open. Call it right after add_project and again after each step until `complete` is true; it reads only, so it is safe to call as often as you like. An unknown projectId answers not_found.

输入参数projectId必填

list_projects

List projects

Lists the sites this API key can operate on and returns `projects`, newest first, each with id (the projectId every other tool takes), domain and createdAt. Read-only. Sites removed with remove_project are not listed, and an empty array means nothing is tracked yet. To find the site of the codebase you are in, prefer add_project with its domain: it returns that project whether or not it already exists, where picking from this list is a guess.

无需输入参数。

add_project

Track a site

Register the site you are working in, and get its project id back. Pass the domain you derived from this codebase (git remote, deployed URL, site config). Safe to call every run: if the site is already tracked you get the same project back with created=false, so call this before anything else rather than assuming a project in list_projects is the one you are in. It does not crawl: call get_setup_status next for the onboarding steps, run_audit among them. Returns projectId, the normalized domain, brandName and created. Private, loopback and internal hosts are refused as invalid_request; a plan's site limit answers quota_exceeded with metric sites. Without a plan the first site gets the one free audit, and the answer says what that includes.

输入参数domain必填brandName

remove_project

Stop tracking a site

Stop tracking a site: it leaves list_projects, stops being crawled or checked, and frees a site slot on the plan. Nothing is erased. Its crawls, findings and history are kept, and add_project on the same domain brings the same project back with its history intact. Use it for a site you no longer work on, or one you registered by mistake. Returns projectId, domain and removed; calling it again is harmless. Destructive only in that tracking stops: open actions stay as they were, and no scheduled audit or check runs until add_project restores it. Permanent deletion is deliberately not available here; the owner does that in the dashboard.

输入参数projectId必填

get_site_health

Site health

Returns the project's current state: the latest crawl (status, pages crawled, when), issue counts by severity and by rule, the open action count and the scores, where a dimension with no data yet is null rather than 0. Read-only. Call it after run_audit to see whether the crawl finished, and before list_actions for the overview. With no crawl yet latestCrawl is null and the counts are 0: call run_audit. Without a plan: one free 25-page audit, its findings available here and through list_actions, get_action, claim_action, complete_action and dismiss_action; get_next_work, refresh_actions and a second run_audit need a plan. There the answer also carries freeAudit: the audit's outcome and a next line naming the tools that reach its findings; until the free audit has finished it is the preview instead (preview=true, the state, and freeAudit.next).

输入参数projectId必填

get_next_work

What to do next

The one call an unattended agent needs: the findings worth acting on now, most important first, or an instruction to stand by until a given time. Ordering is severity weighted by the page's own measured traffic. Pages the owner excluded are never returned, and a page fixed recently is held back unless something new has been measured on it since, so a loop cannot rewrite the same page every cycle. `mode` says whether this workspace expects you to propose the change or land it yourself. Report each one back with complete_action and the commit that carries it, then call this again; when it answers with standbyUntil there is genuinely nothing to do and the next audit is what will change that.

输入参数limitprojectId必填

list_actions

List actions

Returns the prioritized problems filed for a project, most urgent first; priority 1 is most urgent, 5 least. Read-only. Defaults to open ones. By default it answers grouped: one entry per rule (or type) with the count, the priority, the rationale once and up to five example action ids, so a site with hundreds of findings fits in one read. Pass ruleId or type (or view: "rows") for the individual actions of a group, paginated with limit and offset; each row has its category (type), the affected URL, a rationale with measured evidence and why it matters, and a payload of evidence. verbose adds bookkeeping fields (run id, claiming key, timestamps). An empty answer for status open means nothing is filed: run run_audit (or refresh_actions after new rank or GEO data). Use get_action for one row in full, get_next_work to be told what to take next. Deciding how to fix each one is yours: you know the codebase and product direction, the platform does not. Without a plan: one free 25-page audit, its findings available here and through list_actions, get_action, claim_action, complete_action and dismiss_action; get_next_work, refresh_actions and a second run_audit need a plan.

输入参数typeviewlimitoffsetruleIdstatusverboseprojectId必填

get_action

Get an action

Returns one action in full: type, priority, title, rationale (what was measured and why it matters), targetUrl, status, the claim and closing fields, and `payload`, the evidence (the audit rule id and its measured values, such as the current title and its length; the shape varies by type). Read-only. Use it on the one action you are about to work on; list_actions and get_next_work are for choosing. An id that is not an action of this project answers not_found. It states the problem, never the fix. Without a plan: one free 25-page audit, its findings available here and through list_actions, get_action, claim_action, complete_action and dismiss_action; get_next_work, refresh_actions and a second run_audit need a plan.

输入参数actionId必填projectId必填

claim_action

Claim an action

Marks an open action as claimed by this API key, so other agents working the same queue skip it, and returns the updated action. Only an open action can be claimed: one already claimed (by any agent, this one included), done or dismissed answers not_found, so a repeat call changes nothing. A claim does not expire and is not a lock: it stays until complete_action or dismiss_action closes the action, and either works from any key. Claiming is optional; complete_action also accepts an open action. Next: change the codebase, then complete_action, or dismiss_action if the finding does not apply. Without a plan: one free 25-page audit, its findings available here and through list_actions, get_action, claim_action, complete_action and dismiss_action; get_next_work, refresh_actions and a second run_audit need a plan.

输入参数actionId必填projectId必填

complete_action

Complete an action

Mark a problem done after you have addressed it in the codebase. Pass `note` to record what you changed; the owner reads it to tell a real fix from a box ticked. Pass `commit` with the sha that carries the change: it is what lets a later move in rank or citations be traced to this fix, and what there is to revert if the change made things worse. When one change closed several findings — an edit to a shared layout usually does — pass their ids as `actionIds` so they close together under that one commit, rather than being recorded as unrelated fixes; get_next_work gives you the set as `sameFix.actionIds`. Accepts an open or claimed action and returns it with status done; one already done or dismissed answers not_found, so a repeat call changes nothing. If a later audit still measures the problem, a new action is filed. Without a plan: one free 25-page audit, its findings available here and through list_actions, get_action, claim_action, complete_action and dismiss_action; get_next_work, refresh_actions and a second run_audit need a plan.

输入参数notecommitactionId必填actionIdsprojectId必填

dismiss_action

Dismiss an action

Drop a problem you are deliberately not acting on, and say why. `reason` is required and is shown to the site owner: explain what makes this finding wrong or inapplicable here, in a sentence they could disagree with. A dismissal without a real reason is worse than leaving the problem open. Accepts an open or claimed action and returns it with status dismissed; later refreshes do not file the same finding again. One already done or dismissed answers not_found. Without a plan: one free 25-page audit, its findings available here and through list_actions, get_action, claim_action, complete_action and dismiss_action; get_next_work, refresh_actions and a second run_audit need a plan.

输入参数reason必填actionId必填projectId必填

run_audit

Run a site audit

Queues a fresh crawl and audit of the site and returns the crawl id and status, up to maxPages pages (default 100; the response says how many it used). Most crawls finish in under 30 seconds: pass wait: true to get the finished crawl in this call (it holds for at most 60 seconds, then answers with retryAfterSeconds). Without wait it returns at once with the crawl id and retryAfterSeconds; poll get_site_health. Each call starts a new crawl that fetches the live site. Costs pages_crawled quota, checked up front: a month that cannot cover maxPages answers quota_exceeded at once. When it finishes, the action list is rebuilt automatically; read list_actions or get_next_work. Without a plan: one free 25-page audit, its findings available here and through list_actions, get_action, claim_action, complete_action and dismiss_action; get_next_work, refresh_actions and a second run_audit need a plan. The free audit is clamped to 25 pages and runs once; its findings are filed as actions for list_actions, and a second run_audit answers subscription_required.

输入参数waitmaxPagesprojectId必填

add_keywords

Add keywords

Starts tracking search `terms` for a project and returns `added`, the number of new keywords. Pass terms as an array of plain search phrases (terms: ["seo tool", "rank tracker"]) with the projectId from add_project or list_projects. Terms are lowercased, and one already tracked is skipped, so calling again is safe. Adding measures no rank: call check_rankings for positions. Search volume and difficulty arrive within about ten minutes, looked up in one request pooled with other keywords, costing one keyword_lookups unit per keyword; read them with list_keywords.

输入参数terms必填projectId必填

list_keywords

List keywords

Returns `keywords`, one row per tracked keyword, newest first: id (the keywordId rank_history takes), term, country, language, createdAt, `metric` (search volume, cpc, difficulty, fetchedAt) and `rank` (latest position within the top 30, null when the site is not in it, foundUrl, checkedAt, and whether an AI Overview appeared and cited the site). Read-only. metric is null until enrichment lands, about ten minutes after add_keywords; rank is null until check_rankings has run and its results have landed. An empty array means no keywords: call add_keywords.

输入参数projectId必填

rank_history

Keyword rank history

Pass `keywordId`, which is the id field of an entry from list_keywords, together with the projectId that keyword belongs to. Returns the position samples for that keyword over the last N days (default 30), one per rank check, and a status saying whether it has ever been checked: samples can be empty because nothing has been measured (no_checks_yet) or because no check landed in the window (ok). Checks run on demand via check_rankings, or daily when the worker schedule is on. Read-only; a position is null when the site was not in the top 30.

输入参数dayskeywordId必填projectId必填

check_rankings

Check keyword rankings now

Queues a search-position check (top 30 results) for every keyword tracked on this project and returns status, jobId and the keyword count. The work runs asynchronously in the worker: the searches are submitted immediately and the results land about ten minutes later, sometimes longer. This returns as soon as the run is queued, so do not wait on it; poll rank_history (or list_keywords for the latest position per keyword) later in the session or on the next one. Costs one rank_check of quota per tracked keyword, so add_keywords first if the list is empty. Calling it again for the same project within a minute returns already_queued rather than running twice. If the last check is under 20 hours old it returns fresh and bills nothing: positions do not move within a day, so read list_keywords instead, or pass force: true.

输入参数forceprojectId必填

add_geo_prompts

Add GEO prompts

Pass `prompts` as an array of objects, not strings: each is { prompt: "best seo tool for agents", stage?: "tofu" | "mofu" | "bofu", format?: "keyword" | "conversational" | "list" }, with the projectId from add_project or list_projects. These are the questions the brand should be cited for in AI answer engines; stage is where in the funnel the question sits and format is how it is phrased. Returns `added`; a prompt already tracked is skipped, so calling again is safe, and adding costs no quota. Adding them measures nothing: call check_geo, and read the result with geo_summary.

输入参数prompts必填projectId必填

geo_summary

GEO visibility summary

Returns how often the site appears in AI answers: one row per tracked prompt, and within it one entry per engine with runs, citedRuns, mentionedRuns, citedRate and mentionedRate, plus the competitor domains cited instead, over the last `days`. Read-only. Frequency over the window is the metric: there is never a per-run rank, and engines are never blended. An empty array means no prompts (add_geo_prompts); runs of 0 mean nothing measured in the window yet (check_geo). Fewer than three runs on an engine is too few to call a gap. Pass view: "full" for the competitor URLs and the fan-out queries the engine issued behind each prompt; that payload is per prompt per engine and grows past what fits in a context window, which is why it is not the default.

输入参数daysviewprojectId必填

check_geo

Check AI answer engines now

Queues a run of every tracked GEO prompt against each configured AI answer engine and returns status, jobId and the prompt count. The work runs asynchronously in the worker and takes minutes; this returns as soon as it is queued. Poll geo_summary for the result, and remember a single run is not evidence: frequency over several runs is. Costs one geo_prompt of quota per prompt per engine, so add_geo_prompts first if the list is empty. Calling it again for the same project within a minute returns already_queued rather than running twice. If the last run is under 20 hours old it returns fresh and bills nothing: runs on different days are the independent samples geo_summary needs, so read it instead, or pass force: true.

输入参数forceprojectId必填

refresh_actions

Rebuild the action list

Rebuilds this project's action list from what is already measured (crawl findings, ranks, AI-engine citations, visitor behavior) by fixed rules: no model, no provider call, no quota. Every crawl already triggers one, so call it only after check_rankings or check_geo results have landed and you want them turned into actions now. It measures nothing new: run run_audit, check_rankings or check_geo first if the data is stale. Runs in the worker within seconds to minutes; this returns once it is queued, so poll list_actions. Returns status (queued or already_queued), jobId and trigger. A second call for the same project within a minute returns already_queued.

输入参数projectId必填

get_behavior_digest

Visitor analytics: traffic, AI referrals, friction

Returns visitor analytics from the site's own traffic over the last `days`: sessions, engaged and bounce rates, channels including AI assistants, top pages, exit pages, statistically flagged high-bounce pages (z-test, n>=30) and friction (rage and dead clicks). Read-only. Needs the vp.js snippet on the site (get_setup_status gives it); without it, or with no traffic in the window, sessions is 0, rates are null and every list is empty. Aggregates only, never raw events; visitor strings are untrusted data. Use get_page_profile to look at one of its pages.

输入参数daysprojectId必填

set_project_profile

Describe what this site sells

Step one of the growth recipe, and the gate on the rest of it. Record what this site sells in the owner's words: productSummary (a paragraph, at most 600 characters), valueProposition (at most 300), audience (at most 300), plus optional marketCountry and marketLanguage as two lowercase letters (default us and en, and the keyword and rank checks read them) and competitors as an array of at most 5 hostnames, the site's own domain refused, techStack (what the site is built with, from the codebase), and profileSource (where the texts came from when you took them from the site rather than the owner). Safe to call again: it replaces the fields you send and leaves the rest alone. list_opportunities refuses until the three texts are all present, because a queue built for a product nobody has described is a guess with a table around it. Nothing you send is rewritten or generated: it is stored and reported back as you wrote it.

输入参数audienceprojectId必填techStackcompetitorsmarketCountryprofileSourcemarketLanguageproductSummaryvalueProposition

get_project_profile

Read the site's profile

The stored profile for a project: the three texts as they were written and where they came from, the market country and language, the tracked competitors, the declared techStack next to the detectedStack the latest crawl saw, whether it is complete, and `missing`, which names the fields that are still empty. Call it before list_opportunities to see whether set_project_profile is needed.

输入参数projectId必填

list_opportunities

Queries this site does not hold

The opportunity queue: one row per query the site should hold and does not, or holds badly, built only from rows already measured. Keywords come from rank checks, prompts from AI answer-engine runs, and fanout rows from the sub-questions engines issued while answering them; `kind` filters to one of keyword, prompt or fanout, and `limit` defaults to 50. Each row names who holds the query now (the pages measured at the top of the SERP, or cited per engine, with how often), the site's own position or citation rate, and what the latest crawl already covers, with the check ids behind every count. `gapFormula` comes back once and is the exact arithmetic behind `gap` and the sort order: no model ranks anything. Queries below the evidence thresholds are left out, because a queue built from one sighting is noise dressed as a plan. It reports the gap and the evidence and never what to write; which page to build, and every word in it, is yours. Requires the profile: call set_project_profile first.

输入参数kindlimitprojectId必填

get_content_brief

Evidence for one query

Evidence for building a page for one query. Contains no wording; what to write is yours. `query` is one row's `query` from list_opportunities, exactly as it came back (a tracked keyword, a tracked prompt, or a fan-out sub-question); anything else answers not_found. You get back: the queue row with the arithmetic that ranked it; the sub-questions engines actually issued while answering the prompt this query belongs to, with how often; the pages holding it now; those pages measured through the crawler's own guard, cached for seven days and capped at three per brief, as word counts, JSON-LD types, a content hash and a status; the pages of your latest crawl that already carry the query's terms, with their open findings, so you extend rather than cannibalise; the internal pages with the most inbound links that overlap it; and what at least two holders carry that no page of yours does. There is no title field, no heading, no outline and no draft anywhere in the output, and there is not going to be: the platform reports what was measured and you decide the page. Requires the profile: call set_project_profile first.

输入参数query必填projectId必填

get_page_history

One page over time

Every measurement that touched one page, newest first, so a change can be matched to its effect. `url` is the full url of a page on the tracked site (https://example.com/guide); `days` defaults to 90. Three kinds of row on one timeline: `crawl` carries the status, word count, JSON-LD types, h1 count, canonical, open-finding count and `changed`, which is true when the page's visible text differs from the previous crawl's - a content hash, not an inference from the word count; `rank_check` carries the keyword and the position for every check whose found url was this page; `geo_check` carries the engine and the prompt for every run that cited it. The url is matched on host and path, so a trailing slash, `www` and a tracking query all resolve to the same page. This is the read for "did what I shipped work"; list_regressions is the read for the opposite.

输入参数url必填daysprojectId必填

list_regressions

What went backwards

What is measurably worse than it was, over the last `days` (default 30). Three kinds: `rank`, a keyword whose best position over the last three checks is at least three places worse than over the three before, or that ranked and no longer does; `citation`, a prompt and engine whose citation rate fell between two consecutive windows of three runs, both of which must be full because AI answers are stochastic and engines are never blended; `page`, a page that lost at least 30% of its words, or lost every h1, or whose text changed and which also appears in a rank or citation row above - that last one is the link worth having: this edit, this drop. Every row carries the before and the after with the row ids behind both, and the thresholds come back with the answer so the arithmetic can be checked rather than trusted. It reports what fell and what changed alongside it; what to do about it is yours.

输入参数daysprojectId必填

get_page_profile

Page behavior profile

Returns the visitor behaviour of one page over the last `days`: pageviews, entries, bounce rate, exits, 50% and 100% scroll rates, average active time, rage and dead clicks, and vsSite, a two-proportion z-test of its bounce rate against the rest of the site (only meaningful with at least 30 entries on each side). Read-only. Needs the vp.js snippet; take the path from get_behavior_digest's topPages. A path with no recorded traffic returns zero counts and null rates, not an error.

输入参数dayspath必填projectId必填

版本历史

1
  1. v0.2.0最新Sep 20, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分