关键词难度估算(哥飞版)提供三个入口:网页(人工查询)、MCP(AI 客户端调用)、HTTP API(脚本与自动化)。三端共用同一个令牌、同一个每日额度池、同一条计算管线与缓存。
使用 Web.Cafe 登录后,在下方一键生成专属令牌(wc_mcp_ 前缀)。令牌明文仅显示一次,服务端只保存哈希;遗失可随时重置,旧令牌立即作废。同一个令牌通用于 MCP 与 HTTP API,额度与网页查询共用。
| 身份 | 每日额度 | 说明 |
|---|---|---|
| 游客 | 10 次 | 仅网页,按 IP 计数 |
| Web.Cafe 登录用户 | 100 次 | 按账号计数,跨设备共享 |
| Web.Cafe VIP | 500 次 | 主站会员状态实时同步,升级即刻生效 |
网页查询、MCP 调用、API 调用合并计入同一额度。另有每分钟 10 次的瞬时保险丝(仅 MCP/API),防止批量调用瞬间打爆上游。7 天内重复查询同一关键词命中缓存,同样计入额度但秒级返回。
GET https://seo.web.cafe/kd/api/v1/kd
Authorization: Bearer wc_mcp_你的令牌(推荐)&token=wc_mcp_你的令牌(适合不便设置 Header 的场景;URL 即凭证,注意保管)| 参数 | 必填 | 默认 | 说明 |
|---|---|---|---|
keyword | 是 | — | 英文关键词,如 ai photo editor(URL 编码) |
gl | 否 | us | Google 国家代码:us / gb / ca / au / de / jp / sg 等 |
hl | 否 | en | 语言代码 |
force | 否 | — | 1 = 跳过 7 天结论缓存强制重算 |
format | 否 | json | markdown = 返回自包含 Markdown 报告(适合存档/转发/喂给 AI) |
# curl(JSON)
curl "https://seo.web.cafe/kd/api/v1/kd?keyword=ai+photo+editor&gl=us" \
-H "Authorization: Bearer wc_mcp_你的令牌"
# curl(Markdown 报告)
curl "https://seo.web.cafe/kd/api/v1/kd?keyword=ai+photo+editor&format=markdown&token=wc_mcp_你的令牌"
# Python 批量选词
import requests, time
TOKEN = "wc_mcp_你的令牌"
words = ["ai photo editor", "ai logo maker", "pdf to excel"]
for kw in words:
r = requests.get(
"https://seo.web.cafe/kd/api/v1/kd",
params={"keyword": kw, "gl": "us"},
headers={"Authorization": "Bearer " + TOKEN},
timeout=30,
)
d = r.json()
if r.status_code != 200:
print(kw, "→ 失败:", d.get("error")); continue
print(kw, "→", d["score"], d["level"],
"| 类型:", d["keywordType"],
"| 预算中值:", d["linkBudget"]["quality"]["mid"] if d.get("linkBudget") else "—")
time.sleep(6) # 配合每分钟 10 次的保险丝
// Node.js / JavaScript
const TOKEN = "wc_mcp_你的令牌";
const resp = await fetch(
"https://seo.web.cafe/kd/api/v1/kd?keyword=" + encodeURIComponent("ai photo editor") + "&gl=us",
{ headers: { Authorization: "Bearer " + TOKEN } }
);
const d = await resp.json();
console.log(d.score, d.level, d.reasons[0]);
| 字段 | 类型 | 说明 |
|---|---|---|
score | number | 难度分 0–100。品牌词时为「衍生内容进入难度」口径 |
level | string | 极易 / 容易 / 中等 / 困难 / 极难 |
keywordType | string | generic 通用词 / brand 品牌词(自动识别:同名官方域名、展开式 Sitelinks、平台型结果密度三重指纹) |
genericScore | number|null | 品牌词专有:常规口径对照分(正面争夺主词的难度,无行动意义) |
reasons | string[] | 判断原因(中文),含各信号加减分明细 |
keywordVolume | number|null | 月搜索量(12 个月均值,来自排名站点主力词精确命中) |
keywordTrend | object|null | 上升期信号:{domain, volume, estimatedValue, ratio},ratio ≥ 1 表示快速上升期 |
linkBudget | object|null | 进入前十的链接预算:targetDr 目标 DR;quality / directory 两轨各含 low/mid/high 引用域数;basis 推导口径说明。按 Ahrefs 官方 KD→引用域曲线由最终难度分插值 |
details | object[] | 前十盘面明细,逐行字段见下表 |
cached / computedAt | — | 是否命中 7 天结论缓存 / 计算时间(Unix 秒) |
| 字段 | 说明 |
|---|---|
position / domain / pageType | 排名位次 / 域名 / 首页或内页 |
dr / visits / visitsLabel | Ahrefs DR / 月访问量(数值与展示标签) |
ageYears / ageLabel | 域名年龄(年数值;展示标签不满 2 年显示月数) |
dedicated / titleHit / kwHit | 是否专门经营该词 / 标题命中 / 主力流量词命中 |
kwHitTraffic | 主力词命中时:该站每月从此词获得的搜索流量(精确口径) |
searchShare | 搜索流量占总流量比例(0–1)。年轻高 DR + 占比低 = 疑似域名迁移承接 |
sitelinks | 是否带展开式 Sitelinks(品牌词强信号) |
eng | 体验数据:{pct, timeOnSite, bounceRate, pagePerVisit},pct 为非平台站点在本 SERP 内的相对排位;平台型域名(YouTube/应用商店等)不参与对比,为 null |
strength / contribution | 站点强度(0.6×DR + 0.4×流量分)/ 折算后的难度贡献 |
| HTTP | code | 含义与处理 |
|---|---|---|
| 401 | auth | 令牌缺失或无效。登录工具首页自助获取/重置 |
| 429 | rate | 每分钟保险丝触发,稍后重试(建议间隔 ≥6 秒) |
| 429 | quota | 今日额度用完(三端共用),明天恢复或升级 VIP |
| 400 | — | 参数错误(keyword 缺失或过长) |
| 502 | upstream | 上游数据源故障,可重试;部分降级时正常返回并在 reasons 标注【纯 DR 模式】 |
把难度估算注册为 AI 客户端的工具,AI 即可在对话中自主调用——「帮我从这 20 个词里挑 3 个最值得做的」会自动逐个查询并对比。工具名 estimate_keyword_difficulty,参数 keyword(必填)、gl / hl / force(可选),返回完整 Markdown 报告。
claude mcp add --transport http kd-gefei https://seo.web.cafe/kd/mcp \
--header "Authorization: Bearer wc_mcp_你的令牌"
URL 填带令牌的地址,Advanced settings 两个 OAuth 框全部留空(那是 OAuth 专用字段,填令牌会报 "A client id must be provided with a client secret"):
https://seo.web.cafe/kd/mcp?token=wc_mcp_你的令牌
传输方式 Streamable HTTP,端点 https://seo.web.cafe/kd/mcp;支持自定义 Header 的客户端加 Authorization: Bearer 令牌,不支持的用上面带 ?token= 的 URL。
force=1。