API 文档
基础地址 https://seolift.pages.dev。所有接口返回 JSON,同一域名下支持 CORS。认证用 Authorization: Bearer <key>,无密钥时按 IP 计免费额度。
接口总览
| 方法 | 路径 | 用途 | 额度 |
|---|---|---|---|
| GET | /api/health | 健康检查 | 免费 |
| POST | /api/audit | 页面 SEO 审计(18 项) | 1 |
| POST | /api/redirect | 跳转链追踪 | 免费 |
| POST | /api/links | 死链扫描 | 2 |
| POST | /api/signup | 领取免费密钥 | 免费 |
| GET | /api/me | 当前套餐与额度 | 免费 |
| POST | /api/billing/checkout | 创建订阅结账页 | 免费 |
POST /api/audit
抓取目标页面原始 HTML,执行 18 项加权检查并返回 0–100 分。
请求体
POST /api/redirect
POST /api/links
GET /api/me
错误码
| HTTP | error | 含义 |
|---|---|---|
| 400 | invalid_url | URL 无法解析或协议不支持 |
| 415 | not_html | 目标不是 HTML 页面 |
| 429 | quota_exceeded | 当日额度用尽 |
| 429 | invalid_api_key | 密钥无效或已撤销 |
| 502 | fetch_failed | 目标站点不可达或被拦截 |
| 501 | billing_not_configured | 支付通道未配置 |
CI/CD 集成范式
在部署后跑一次审计,得分低于阈值就让流水线失败——这是最容易落地的 SEO 回归测试。
限流与成本
免费 20 次/天(按 IP),注册密钥 200 次/天,Pro 5,000 次/天。计数存于 Cloudflare KV,UTC 零点重置,48 小时后自动过期。单次审计 Worker CPU 时间通常在 10ms 以内,不消耗额外费用。
认证方式
所有需要额度的接口都支持两种身份:匿名(按来源 IP 计 20 次/天)和API 密钥。
密钥通过 Authorization: Bearer sk_xxx 头传递,没有密钥时接口仍然可用,只是额度更低。
在控制台领取的免费密钥会把额度提升到 200 次/天,有效期与额度每天 UTC 零点重置。
密钥只在签发时完整显示一次,服务端只保存哈希。如果你把密钥提交进了公开仓库,直接在控制台吊销即可, 不需要更换其他配置。
评分是如何在中英文之间切换的
标题与描述这两项检查不按字符数判定,而按渲染像素判定。 原因是 Google 按像素截断:桌面端标题约 580px、描述约 920px。一个汉字约占 1em,西文平均只有约 0.48em, 所以英文站那条「标题 60 字符」的经验值搬到中文站会严重超标——中文标题大约 29 字就到顶了。
接口会自动逐字符累加宽度,因此像 Disallow/Allow、GPTBot 这类西文术语
不会让一条中文描述被误判成超长。返回体里会带上估算的像素值,方便你自己复核。
常见问题
接口会把我的 URL 存下来吗?
不会。抓取、解析、评分在同一个请求内完成,结果只返回给调用方。我们只存一个按天滚动的计数键,不存被检测的域名。
目标站点拦截了爬虫怎么办?
部分站点会对无 UA 的请求返回 403。这类情况接口会返回 fetch_failed(HTTP 502)。
它反映的是我们取不到页面,不代表该站点的 SEO 有问题。
可以批量提交吗?
单次请求只处理一个 URL。批量巡检是 Pro 的能力,或者你在自己的 CI 里并发调用——每次调用独立计额度。