主题
站优化摘要
GET /v3/on_page/summary/{id}
接口说明
通过本接口可以获取某个网站扫描任务的整体摘要信息:
- 网站级别的基础信息
- 抓取进度与抓取状态
- 域名、SSL、站点检查项汇总
- 页面级问题统计
- 已发现站问题的聚合指标
基于这些摘要数据,你可以快速判断网站当前的技术 SEO 健康状况,并进一步决定使用哪些明细接口继续下钻分析问题。
- 请求方式:
GET - 请求地址:
https://api.seermartech.cn/v3/on_page/summary/$id
计费说明
该接口本身不会单独产生额外任务提交费用;费用通常在创建扫描任务时扣除。
- 实扣费以响应头
X-SeerMarTech-Charge-CNY为准
请求参数
路径参数
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,填。可从 /v3/on_page/task_post/ 的响应中获取。示例:07131248-1535-0216-1000-17384017ad04 |
响应结构
接口返回 JSON 数据,顶层 tasks 数组,每个任务对应一组摘要结果。
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 通用状态码 |
status_message | string | 通用提示信息 |
time | string | 执行耗时,单位秒 |
cost | float | 本次请求总费用,单位 USD |
tasks_count | integer | tasks 数组中的任务数量 |
tasks_error | integer | 返回错误的任务数量 |
tasks | array | 任务结果数组 |
建议在系统中实现完善的异常与错误处理机制。完整状态码和提示信息请参考错误码附录。
tasks[] 字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式 |
status_code | integer | 任务状态码,范围通常为 10000-60000 |
status_message | string | 任务提示信息 |
time | string | 任务执行耗时,单位秒 |
cost | float | 当前任务费用,单位 USD |
result_count | integer | result 数组数量 |
path | array | URL 路径 |
data | object | 与创建任务时提交的参数一致 |
result | array | 摘要结果数组 |
result[] 结果字段说明
抓取状态
| 字段 | 类型 | 说明 |
|---|---|---|
crawl_progress | string | 抓取会话状态。可选值:in_progress、finished |
crawl_status | object | 抓取会话详细信息 |
crawl_status
| 字段 | 类型 | 说明 |
|---|---|---|
max_crawl_pages | integer | 最大抓取页数,即任务创建时设置的 max_crawl_pages |
pages_in_queue | integer | 当前仍在抓取队列中的页面数 |
pages_crawled | integer | 已抓取页面数 |
crawl_gateway_address | string | 本次抓取使用的爬虫 IP 地址 |
crawl_stop_reason | string | 抓取停止原因 |
crawl_stop_reason 可选值:
limit_exceeded:max_crawl_pages限制empty_queue:队列中的 URL 已抓取完成force_stopped:通过/v3/on_page/force_stop主动停止unexpected_exception:抓取目标时出现异常
域名级信息 domain_info
网站域名及抓取过程的汇总信息。
| 字段 | 类型 | 说明 |
|---|---|---|
name | string | 域名 |
cms | string | 检测到的管理系统,来源于 generator meta 标签;取自首个返回 200 状态码的随机页面;无法识别时为 null |
ip | string | 域名 IP 地址 |
server | string | 网站服务器信息,来源于 server 响应头;取自首个返回 200 状态码的页面 |
crawl_start | string | 抓取开始时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00 |
crawl_end | string | 抓取结束时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00;当 crawl_progress = finished 时有效,否则为 null |
extended_crawl_status | string | 更详细的抓取状态或错误原因 |
ssl_info | object | SSL 证书信息 |
checks | object | 网站级检查项 |
total_pages | integer | 总抓取页面数 |
total_uncrawlable_resources | integer | 无法抓取的资源总数 |
page_not_found_status_code | integer | 不存在页面返回的状态码,通常建议为 404 |
canonicalization_status_code | integer | 通过 IP 访问网站时的规范化状态码,通常建议为 301 或 302 |
directory_browsing_status_code | integer | 目录页返回的状态码,通常建议为 403 或 401 |
www_redirect_status_code | integer | www 与非 www 之间跳转的状态码,通常建议为 301 |
main_domain | string | 根域名 |
extended_crawl_status 可选值
no_errors:未检测到抓取错误site_unreachable:无法访问网站,未能获得状态码invalid_page_status_code:首个抓取页面状态码大于等于 400forbidden_meta_tag:首个抓取页面<meta robots="noindex">forbidden_robots:robots.txt禁止抓取forbidden_http_header:HTTP 响应头X-Robots-Tag: noindextoo_many_redirects:首个抓取页面重定向次数 10 次unknown:未知原因
SSL 信息 ssl_info
| 字段 | 类型 | 说明 |
|---|---|---|
valid_certificate | boolean | SSL 证书是否有效,未过期、未吊销、未挂起且格式有效 |
certificate_issuer | string | 证书颁发机构 |
certificate_subject | string | 证书主题 |
certificate_version | string | 证书使用的 X.509 版本 |
certificate_hash | string | 证书哈希算法版本 |
certificate_expiration_date | string | 证书过期时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00 |
网站级检查项 domain_info.checks
| 字段 | 类型 | 说明 |
|---|---|---|
sitemap | boolean | 是否检测到 sitemap |
robots_txt | boolean | 是否存在 robots.txt |
start_page_deny_flag | boolean | 首页是否存在导致服务端返回 403 Forbidden 的拒绝访问标记 |
ssl | boolean | 是否 SSL 证书 |
http2 | boolean | 是否使用 HTTP/2 |
test_canonicalization | boolean | 通过 IP 访问时是否进行了规范化处理;当 canonicalization_status_code 为 301 时为 true |
test_www_redirect | boolean | 是否实现了 www 与非 www 的双向之一跳转 |
test_hidden_server_signature | boolean | 是否隐藏服务器签名;若为 false,说明爬虫可直接读取服务器签名 |
test_page_not_found | boolean | 站点对不存在资源是否正确返回 404 |
test_directory_browsing | boolean | 是否禁止匿名访问目录;若目录不可访问则为 true |
test_https_redirect | boolean | HTTP 请求是否跳转到 HTTPS;若首页 HTTP 自动跳到 HTTPS,则为 true |
页面指标 page_metrics
页面层面的聚合统计,用于衡量站常见 SEO 与可抓取性问题。
| 字段 | 类型 | 说明 |
|---|---|---|
links_external | integer | 外链数量 |
links_internal | integer | 链数量 |
duplicate_title | integer | 标题重复的页面数量 |
duplicate_description | integer | 描述重复的页面数量 |
duplicate_content | integer | 重复的页面数量 |
broken_links | integer | 站失效链接数量 |
broken_resources | integer | 图片及资源失效数量 |
links_relation_conflict | integer | 链接冲突数量,例如同一目标既被 rel="nofollow"链引用,又被 dofollow 链接引用 |
redirect_loop | integer | 重定向环数量,即跳转链最终回到原始 URL |
onpage_score | float | 站优化得分,满分 100;分值越高表示问题和重要警告越少。该值与抓取页数 |
non_indexable | integer | 不可索引页面数量,可因 robots.txt、HTTP 头或 meta 标签导致 |
checks | object | 页面级检查项统计 |
onpage_score会随抓取页面数量变化适合作为同一抓取范围的健康度参考指标。
页面级检查项 page_metrics.checks
| 字段 | 类型 | 说明 |
|---|---|---|
canonical | integer | 规范化页面数量 |
duplicate_meta_tags | integer | 存在重复 meta 标签的页面数量 |
no_description | integer | 缺少或为空的 description 页面数量 |
frame | integer | 含 frame、iframe、frameset 的页面数量 |
large_page_size | integer | 页面体积大于 1MB 的页面数量 |
irrelevant_description | integer | description 与页面性低的页面数量,阈值 0.2 |
irrelevant_meta_keywords | integer | keywords 与页面性低的页面数量,阈值 0.6 |
is_https | integer | 使用 HTTPS 的页面数量 |
is_http | integer | 使用 HTTP 的页面数量 |
title_too_long | integer | 标题长度 65 字符的页面数量 |
low_content_rate | integer | 正文占比过低或过高的页面数量,plaintext size / page size < 0.1 或 > 0.9 |
small_page_size | integer | 页面体积小于 1024 字节的页面数量 |
no_h1_tag | integer | 缺少或为空的 H1 页面数量 |
recursive_canonical | integer | 递归 canonical 错误数量 |
no_favicon | integer | 缺少 favicon 的页面数量 |
no_image_alt | integer | 存在图片缺少 alt 的页面数量 |
no_image_title | integer | 存在图片缺少 title 的页面数量 |
seo_friendly_url | integer | SEO 友好 URL 页面数量 |
seo_friendly_url_characters_check | integer | URL 大小写拉丁字母、数字和连字符的页面数量 |
seo_friendly_url_dynamic_check | integer | URL 不含动态参数的页面数量 |
seo_friendly_url_keywords_check | integer | URL 与 title标签语义一致的页面数量 |
seo_friendly_url_relative_length_check | integer | URL 长度不 120 字符的页面数量 |
title_too_short | integer | 标题长度少于 30 字符的页面数量 |
no_content_encoding | integer | 未启用压缩编码的页面数量 |
high_waiting_time | integer | 首字节时间 1.5 秒的页面数量 |
high_loading_time | integer | 页面加载时间 3 秒的页面数量 |
is_redirect | integer | 发生 3XX 跳转的页面数量 |
is_broken | integer | 异常页面数量,响应码小于 200 或大于 400 |
is_4xx_code | integer | 返回 4xx 的页面数量 |
is_5xx_code | integer | 返回 5xx 的页面数量 |
is_www | integer | 位于 www 子域名下的页面数量 |
no_doctype | integer | 缺少 DOCTYPE 声明的页面数量 |
no_encoding_meta_tag | integer | 缺少编码 meta 标签的页面数量 |
high_content_rate | integer | 正文占比过高的页面数量,plaintext size / page size > 0.9 |
low_character_count | integer | 字符数少于 1024 的页面数量 |
high_character_count | integer | 字符数 256,000 的页面数量 |
low_readability_rate | integer | 可读性得分低于 15 的页面数量 |
irrelevant_title | integer | title 与页面性低的页面数量,阈值 0.3 |
deprecated_html_tags | integer | 使用已废弃 HTML 标签的页面数量 |
duplicate_title_tag | integer | 存在多个 title 标签的页面数量 |
no_title | integer | 缺少或为空的 title 页面数量 |
flash | integer | 含 Flash素的页面数量 |
lorem_ipsum | integer | 含占位文本 lorem ipsum 的页面数量 |
has_misspelling | integer | 拼写错误页面数量;在任务创建时启用 check_spell=true 时有效 |
canonical_to_broken | integer | canonical 指向 404 页面的页面数量 |
canonical_to_redirect | integer | canonical 指向 3XX 跳转页的页面数量 |
has_links_to_redirects | integer | 链接指向跳转页面的页面数量 |
is_orphan_page | integer | 孤立页面数量,即没有任何站页面指向它 |
has_meta_refresh_redirect | integer | 使用 <meta http-equiv="refresh"> 跳转的页面数量 |
meta_charset_consistency | integer | 页面声明字符集与字符集不一致的页面数量 |
size_greater_than_3mb | integer | 页面体积大于 3MB 的页面数量 |
has_html_doctype | integer | 存在 DOCTYPE 声明的页面数量 |
https_to_http_links | integer | HTTPS 页面链接到 HTTP 页面数量 |
has_render_blocking_resources | integer | 含阻塞渲染资源的页面数量 |
redirect_chain | integer | 存在多次跳转链的页面数量,原始页到最终页之间至少经过 2 次跳转 |
canonical_chain | integer | canonical 链式传递的页面数量,例如 A canonical 到 B,B 又 canonical 到 C |
is_link_relation_conflict | integer | 存在链接冲突的页面数量 |
多数字段在“页面通过 canonical 检查”的才有统计意义;如果扫描范围较小或页面类型有限,部分统计值可能为
0或不可用。
请求示例
cURL
bash
id="07281559-0695-0216-0000-c269be8b7592"
curl --location --request GET "https://api.seermartech.cn/v3/on_page/summary/${id}" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json"Python
python
import requests
task_id = "07281559-0695-0216-0000-c269be8b7592"
url = f"https://api.seermartech.cn/v3/on_page/summary/{task_id}"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json
print(data)TypeScript
typescript
import axios from "axios";
const taskId = "02231934-2604-0066-2000-570459f04879";
axios({
method: "get",
url: `https://api.seermartech.cn/v3/on_page/summary/${taskId}`,
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
})
.then((response) => {
// 返回结果
console.log(response.data);
})
.catch((error) => {
console.error(error);
});响应示例
json
{
"version": "0.1.20221214",
"status_code": 20000,
"status_message": "Ok.",
"time": "1.0297 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"api": "on_page",
"function": "summary",
"target": "example.com",
"max_crawl_pages": 1000,
"enable_www_redirect_check": "true"
},
"result": []
}
]
}状态码说明
- 顶层
status_code:表示整次请求执行状态 tasks[].status_code:表示单个任务的执行状态- 当
tasks[].result为空,或tasks[].status_code >= 40000时,通常表示该任务处理失败或尚未返回可用结果
建议重点处理以下:
- 请求参数错误
- 任务 ID 不存在
- 抓取尚未完成
- 目标站点无法访问
- 抓取过程中被 robots、meta 或响应头限制
使用建议
- 通过
/v3/on_page/task_post/创建任务并获取id - 使用本接口轮询抓取进度和摘要结果
- 当
crawl_progress为finished后,再根据摘要中暴露的问题类型调用对应明细接口 - 将
onpage_score、broken_links、non_indexable、duplicate_title等字段纳你的 SEO 健康监控体系
实用场景
- 评估整站技术健康度:快速读取
onpage_score、抓取状态和问题计数,帮助 SEO 团队优判断站点是否需要立即修复。 - 筛选高优级整改项:根据
broken_links、is_5xx_code、non_indexable、redirect_loop等指标,定位最影响收录和用户体验的问题类别。 - 监控发布后站点质量:在改版、迁移或大批量发文后定期拉取摘要,及时发现 canonical、跳转、404、HTTPS 等异常。
- 识别基础设施风险:通过
ssl_info、http2、server、high_loading_time等字段,发现证书、协议或性能层面的潜在问题。 - 支撑自动化 SEO 报表:将域名级和页面级汇总指标接 BI 或告警系统,持续跟踪不同网站、业务线或时间周期的优化趋势。