Skip to content

页面重复标签查询

POST /v3/on_page/duplicate_tags

接口概述

/v3/on_page/duplicate_tags 用于返回目标站点中存在重复 titledescription 标签的页面列表,响应中还会附带页面性能、质量、技术检查项等 On-Page 数据。

  • 请求方式:POST
  • 接口地址:https://api.seermartech.cn/v3/on_page/duplicate_tags

计费说明

该接口本身不额外收费。对于已创建的 On-Page 抓取任务,可在接下来 30 天获取结果。

扣费以响应头 X-SeerMarTech-Charge-CNY 为准。

请求格式

所有 POST 数据均需使用 UTF-8 编码的 JSON 格式提交。 请求体为 JSON 数组格式:

json
[
 {
 "id": "07131248-1535-0216-1000-17384017ad04",
 "type": "duplicate_title"
 }
]

请求参数

字段名类型说明
idstring任务 ID。可从 /v3/on_page/task_post/ 的响应中获取。示例:07131248-1535-0216-1000-17384017ad04
typestring重复标签类型。不同取值会返回对应重复的数据。可选值:duplicate_titleduplicate_description
accumulatorstring标签值过滤条件。填写某个的 titledescription 后返回该重复标签值的页面列表
limitinteger返回页面的最大数量。默认 100,最大 1000
offsetinteger结果偏移量。默认 0,最大 2000000。例如设为 10 时,会跳过前 10 条结果并返回后续页面
tagstring自定义任务标识,最长 255 个字符。可用于请求结果匹;响应中的 data 对象会回传该值

响应结构

接口返回 JSON 数据,顶层 tasks 数组。

顶层字段

字段名类型说明
versionstring当前 API 版本
status_codeinteger通用状态码。完整列表参考 /v3/appendix/errors
status_messagestring通用状态信息。完整列表参考 /v3/appendix/errors
timestring执行耗时,单位秒
costfloat本次请求总成本
tasks_countintegertasks 数组中的任务数量
tasks_errorinteger返回错误的任务数量
tasksarray任务结果数组

tasks[] 字段

字段名类型说明
idstring任务唯一标识,UUID 格式
status_codeinteger任务状态码,范围通常为 10000-60000
status_messagestring任务状态信息
timestring任务执行耗时
costfloat任务成本
result_countintegerresult 数组数量
patharrayURL 路径
dataobject与请求中提交的参数一致
resultarray结果数组

result[] 字段

字段名类型说明
crawl_progressstring抓取进度,可选值:in_progressfinished
crawl_statusobject抓取会话
max_crawl_pagesinteger创建任务时设置的最大抓取页数
pages_in_queueinteger当前抓取队列中的页面数
pages_crawledinteger已抓取页面数
total_pages_countinteger目标站点中存在重复标签的页面总数
pages_countinteger本次响应中返回的重复标签页面数
items_countintegeritems 数组数
itemsarray重复标签分组结果

items[] 字段

字段名类型说明
accumulatorstring重复标签的值
total_countinteger使用该重复标签的页面总数
pagesarray含有该重复标签的页面列表

页面对象说明

pages[] 中每个代表一个页面。以下为核心字段说明。

基础字段

字段名类型说明
resource_typestring返回资源类型,固定为 html
status_codeinteger页面 HTTP 状态码
locationstringLocation 响应头,表示重定向目标 URL
urlstring页面地址

meta 页面信息

字段名类型说明
titlestring页面标题
charsetinteger编码页,例如 65001
followboolean页面 meta robots 是否爬虫跟踪页面链接
generatorstringgenerator meta 标签
htagsobject页面 H 标签信息
descriptionstringmeta description
faviconstring页面 favicon 地址
meta_keywordsstringkeywords meta 标签
canonicalstringcanonical 地址
internal_links_countinteger页面链接数
external_links_countinteger页面外部链接数
inbound_links_countinteger指向该页面的站链接数
images_countinteger图片数量
images_sizeinteger图片总大小,单位字节
scripts_countinteger脚本数量
scripts_sizeinteger脚本总大小,单位字节
stylesheets_countinteger样式表数量
stylesheets_sizeinteger样式表总大小,单位字节
title_lengthintegertitle 字符长度
description_lengthintegerdescription 字符长度
render_blocking_scripts_countinteger阻塞渲染的脚本数
render_blocking_stylesheets_countinteger阻塞渲染的样式数
cumulative_layout_shiftfloatCLS 指标,衡量页面布局稳定性

content 页面信息

字段名类型说明
plain_text_sizeinteger页面纯文本总大小,单位字节
plain_text_rateinteger/float纯文本占比,等于 plain_text_size / size
plain_text_word_countfloat页面词数
automated_readability_indexfloatARI 可读性指标
coleman_liau_readability_indexfloatColeman-Liau 可读性指标
dale_chall_readability_indexfloatDale-Chall 可读性指标
flesch_kincaid_readability_indexfloatFlesch-Kincaid 可读性指标
smog_readability_indexfloatSMOG 可读性指标
description_to_content_consistencyfloatdescription 与正文一致性,范围 0-1
title_to_content_consistencyfloattitle 与正文一致性,范围 0-1
meta_keywords_to_content_consistencyfloatkeywords 与正文一致性,范围 0-1

页面分析字段

字段名类型说明
deprecated_tagsarray页面中的废弃 HTML 标签
duplicate_meta_tagsarray页面中的重复 meta 标签
spellobject拼写检查结果
resource_errorsobjectHTML 资源错误和警告
social_media_tagsobject页面中的社交媒体标签,如 Open Graph、Twitter Card
page_timingobject页面加载性能指标
onpage_scorefloat页面 On-Page 优化评分,满分 100
total_dom_sizeinteger页面 DOM 总大小
custom_js_responsestring/object/integer自定义 JS 执行结果;需在 /v3/on_page/task_post/ 中设置 custom_js
custom_js_client_exceptionstring自定义 JS 执行报错信息
broken_resourcesboolean页面是否含有损坏资源
broken_linksboolean页面是否含有损坏链接
duplicate_titleboolean页面是否存在重复 title
duplicate_descriptionboolean页面是否存在重复 description
duplicate_contentboolean页面是否存在重复
click_depthinteger从首页访问该页面所需点击层级
sizeinteger页面资源大小,单位字节
encoded_sizeinteger编码后的页面大小
total_transfer_sizeinteger压缩传输大小
fetch_timestring抓取时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00
cache_controlobject缓存控制信息
content_encodingstring编码类型
media_typestring页面媒体类型
serverstring服务器类型/版本
is_resourceboolean是否为单一资源而非标准 HTML 页面
last_modifiedobject页面最近修改信息

page_timing 性能字段

字段名类型说明
time_to_interactiveintegerTTI,可交互时间,毫秒
dom_completeinteger页面及子资源加载完成时间,毫秒
largest_contentful_paintfloatLCP 指标,毫秒
first_input_delayfloatFID 指标,毫秒
connection_timeinteger建立连接时间,毫秒
time_to_secure_connectioninteger建立连接时间,毫秒
request_sent_timeinteger请求发送耗时,毫秒
waiting_timeinteger首字节时间 TTFB,毫秒
download_timeinteger下载响应耗时,毫秒
duration_timeinteger总响应耗时,毫秒
fetch_startinteger开始下载 HTML 的时间
fetch_endinteger完成下载 HTML 的时间

cache_control 字段

字段名类型说明
cachableboolean页面是否可缓存
ttlinteger缓存有效期

last_modified 字段

字段名类型说明
headerstringHTTP 头中的最近修改时间,UTC 格式
sitemapstringsitemap 中记录的最近修改时间,UTC 格式
meta_tagstring页面 meta 标签中的最近修改时间,UTC 格式

checks 检查项说明

checks 对象页面的技术和 SEO 检查结果。以下为主要字段:

字段名类型说明
no_content_encodingboolean页面未启用压缩
high_loading_timeboolean页面加载时间是否 3 秒
is_redirectboolean页面是否发生 3XX 重定向
is_4xx_codeboolean页面是否返回 4xx
is_5xx_codeboolean页面是否返回 5xx
is_brokenboolean页面是否损坏(响应码小于 200 或大于 400
is_wwwboolean是否使用 www 子域
is_httpsboolean是否使用 HTTPS
is_httpboolean是否使用 HTTP
high_waiting_timebooleanTTFB 是否 1.5 秒
no_doctypeboolean页面是否缺少 <!DOCTYPE HTML>
canonicalboolean页面是否为 canonical 页面
no_encoding_meta_tagboolean是否缺少编码声明 meta 标签
no_h1_tagboolean是否缺少 H1 或 H1 为空
https_to_http_linksbooleanHTTPS 页面是否链接到 HTTP 页面
has_html_doctypeboolean是否 HTML DOCTYPE 声明
size_greater_than_3mbboolean页面是否 3MB
meta_charset_consistencyboolean页面编码与声明编码是否不一致
has_meta_refresh_redirectboolean是否存在 meta refresh 跳转
has_render_blocking_resourcesboolean是否存在阻塞渲染资源
redirect_chainboolean是否存在多跳重定向
low_content_rateboolean文本占比是否低于 0.1
high_content_rateboolean文本占比是否高于 0.9
low_character_countboolean页面字符数是否少于 1024
high_character_countboolean页面字符数是否 256000
small_page_sizeboolean页面是否小于 1024 字节
large_page_sizeboolean页面是否 1MB
low_readability_rateboolean页面可读性是否过低
irrelevant_descriptionbooleandescription 与正文是否性不足,阈值 0.2
irrelevant_titlebooleantitle 与正文是否性不足,阈值 0.3
irrelevant_meta_keywordsbooleankeywords 与正文是否性不足,阈值 0.6
title_too_longbooleantitle 是否 65 字符
title_too_shortbooleantitle 是否少于 30 字符
deprecated_html_tagsboolean是否使用废弃 HTML 标签
duplicate_meta_tagsboolean是否存在同类型重复 meta 标签
duplicate_title_tagboolean是否存在多个 title 标签
no_image_altboolean是否存在无 alt 的图片
no_image_titleboolean是否存在无 title 的图片
no_descriptionboolean是否缺少或空 description
no_titleboolean是否缺少或空 title
no_faviconboolean是否缺少 favicon
seo_friendly_urlbooleanURL 是否符合 SEO 友好标准
flashboolean是否 Flash素
frameboolean是否 frame/iframe/frameset
lorem_ipsumboolean是否存在占位文本
has_misspellingboolean是否存在拼写错误
seo_friendly_url_characters_checkbooleanURL 字符是否大小写拉丁字母、数字和短横线
seo_friendly_url_dynamic_checkbooleanURL 是否不含动态参数
seo_friendly_url_keywords_checkbooleanURL 是否与标题语义一致
seo_friendly_url_relative_length_checkbooleanURL 相对路径长度是否不 120
is_orphan_pageboolean是否为孤立页,即没有来自站页面的链接
is_link_relation_conflictboolean是否同时接收到 nofollow 和 dofollow 的站链接
has_links_to_redirectsboolean页面是否指向会再次跳转的链接
recursive_canonicalboolean是否存在循环 canonical
canonical_chainboolean是否存在 canonical 链
canonical_to_redirectbooleancanonical 是否指向重定向页
canonical_to_brokenbooleancanonical 是否指向损坏页

说明:部分检查项在 canonical 检查为 true 的页面中提供。

资源错误字段

resource_errors.errors[]

字段名类型说明
lineinteger错误所在行号
messagestring错误信息

resource_errors.warnings[]

字段名类型说明
lineinteger警告的行号;若为 0,表示针对整个页面
messagestring警告信息

可能的警告信息:

  • "Has node with more than 60 childs.":至少存在一个层级中,同级嵌套 60 个标签
  • "Has more that 1500 nodes.":DOM 树数 1500
  • "HTML depth more than 32 tags.":DOM 深度 32 层

请求示例

cURL

bash
curl --location --request POST "https://api.seermartech.cn/v3/on_page/duplicate_tags" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
 {
 "id": "07281559-0695-0216-0000-c269be8b7592",
 "type": "duplicate_description",
 "limit": 10
 }
]'

Python

python
import requests

url = "https://api.seermartech.cn/v3/on_page/duplicate_tags"
payload = [
 {
 "id": "07281559-0695-0216-0000-c269be8b7592",
 "type": "duplicate_description",
 "limit": 10
 }
]
headers = {
 "Authorization": "Bearer smt_live_YOUR_KEY",
 "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json)

TypeScript

typescript
import axios from "axios";

const postArray = [
 {
 id: "07281559-0695-0216-0000-c269be8b7592",
 type: "duplicate_description",
 limit: 10
 }
];

axios({
 method: "post",
 url: "https://api.seermartech.cn/v3/on_page/duplicate_tags",
 headers: {
 Authorization: "Bearer smt_live_YOUR_KEY",
 "Content-Type": "application/json"
 },
 data: postArray
})
 .then((response) => {
 // 返回结果
 console.log(response.data);
 })
 .catch((error) => {
 console.error(error);
 });

响应示例

json
{
 "version": "0.1.20210129",
 "status_code": 20000,
 "status_message": "Ok.",
 "time": "1.4464 sec.",
 "cost": 0,
 "tasks_count": 1,
 "tasks_error": 0,
 "tasks": [
 {
 "data": {
 "api": "on_page",
 "function": "duplicate_tags",
 "type": "duplicate_description",
 "limit": 10
 },
 "result": [
 {
 "items": [
 {
 "pages": [
 {
 "meta": {
 "description": "Encuentra el regalo hecho a mano perfecto, prendas vintage y de tendencia, joyería única y más... muchísimo más.",
 "favicon": "https://www.etsy.com/images/favicon.ico",
 "meta_keywords": null,
 "canonical": "https://www.etsy.com/mx/",
 "internal_links_count": 73,
 "external_links_count": 3,
 "inbound_links_count": 24,
 "images_count": 12,
 "images_size": 209895,
 "scripts_count": 7,
 "scripts_size": 281845,
 "stylesheets_count": 3,
 "stylesheets_size": 95776,
 "title_length": 88,
 "description_length": 112,
 "render_blocking_scripts_count": 4,
 "render_blocking_stylesheets_count": 31,
 "cumulative_layout_shift": 0.10156329069412295,
 "content": {
 "plain_text_size": 8077,
 "plain_text_rate": 0.05434775294885511,
 "plain_text_word_count": 1155,
 "automated_readability_index": 20.769094905094903,
 "coleman_liau_readability_index": 9.494734111543448,
 "dale_chall_readability_index": 11.57178887778888,
 "flesch_kincaid_readability_index": 6.1773626373626485,
 "smog_readability_index": 27.996756024520007,
 "description_to_content_consistency": 0.5625,
 "title_to_content_consistency": 0.7142857313156128,
 "meta_keywords_to_content_consistency": null
 },
 "deprecated_tags": null,
 "spell": null,
 "resource_errors": {
 "errors": [],
 "warnings": []
 },
 "social_media_tags": {
 "fb:app_id": "89186614300",
 "og:site_name": "Etsy",
 "og:locale": "es_ES",
 "og:title": "Etsy - Compra regalos hechos a mano, vintage, personalizados y únicos para todo el mundo",
 "og:description": "Encuentra el regalo hecho a mano perfecto, prendas vintage y de tendencia, joyería única y más... muchísimo más."
 }
 },
 "page_timing": {
 "time_to_interactive": 872,
 "dom_complete": 1007,
 "largest_contentful_paint": 1648.4750006347895,
 "first_input_delay": 0.0550001859664917,
 "connection_time": 10,
 "time_to_secure_connection": 22,
 "request_sent_time": 0,
 "waiting_time": 406,
 "download_time": 1,
 "duration_time": 439,
 "fetch_start": 0,
 "fetch_end": 439
 },
 "onpage_score": 88.36,
 "total_dom_size": 2312840,
 "custom_js_response": null,
 "custom_js_client_exception": null,
 "broken_resources": false,
 "broken_links": false,
 "duplicate_title": true,
 "duplicate_description": true,
 "duplicate_content": true,
 "click_depth": 1,
 "size": 148870,
 "encoded_size": 33167,
 "total_transfer_size": 34974,
 "fetch_time": "2021-02-24 17:02:22 +00:00",
 "cache_control": {
 "cachable": false,
 "ttl": 0
 },
 "checks": {
 "no_content_encoding": false,
 "high_loading_time": false,
 "is_redirect": false,
 "is_4xx_code": false,
 "is_5xx_code": false,
 "is_broken": false,
 "is_www": true,
 "is_https": true,
 "is_http": false,
 "high_waiting_time": false,
 "no_doctype": false,
 "canonical": true,
 "no_encoding_meta_tag": true,
 "no_h1_tag": false,
 "https_to_http_links": false,
 "has_html_doctype": true,
 "size_greater_than_3mb": false,
 "meta_charset_consistency": true,
 "has_meta_refresh_redirect": false,
 "has_render_blocking_resources": true,
 "redirect_chain": false,
 "low_content_rate": true,
 "high_content_rate": false,
 "low_character_count": false,
 "high_character_count": false,
 "small_page_size": false,
 "large_page_size": false,
 "low_readability_rate": true,
 "irrelevant_description": false,
 "irrelevant_title": false,
 "irrelevant_meta_keywords": false,
 "title_too_long": true,
 "title_too_short": false,
 "deprecated_html_tags": false,
 "duplicate_meta_tags": true,
 "duplicate_title_tag": false,
 "no_image_alt": true,
 "no_image_title": true,
 "no_description": false,
 "no_title": false,
 "no_favicon": false,
 "seo_friendly_url": false,
 "flash": false,
 "frame": false,
 "lorem_ipsum": false,
 "seo_friendly_url_characters_check": true,
 "seo_friendly_url_dynamic_check": true,
 "seo_friendly_url_keywords_check": false,
 "seo_friendly_url_relative_length_check": true,
 "is_orphan_page": false,
 "is_link_relation_conflict": false,
 "has_links_to_redirects": false,
 "recursive_canonical": false,
 "canonical_chain": false,
 "canonical_to_redirect": false,
 "canonical_to_broken": false
 },
 "content_encoding": "gzip",
 "media_type": "text/html",
 "server": "Apache",
 "is_resource": false,
 "last_modified": {
 "header": "2021-10-21 14:11:10 +00:00",
 "sitemap": null,
 "meta_tag": "2021-03-15 00:00:00 +00:00"
 }
 }
 ]
 }
 ]
 }
 ]
 }
 ]
}

错误处理

请基于 status_codestatus_message 实现统一错误处理机制,重点:

  • 顶层请求是否成功
  • tasks[] 中是否存在单任务失败
  • 抓取是否仍处于 in_progress
  • 分页参数 limitoffset 是否出范围

错误码完整列表参考 /v3/appendix/errors

使用说明

  1. 通过 /v3/on_page/task_post/ 创建 On-Page 任务并获取任务 id
  2. 调用 /v3/on_page/duplicate_tags,传该任务 id 和目标重复标签类型
  3. 如需只查看某个重复标签文本对应的页面,可使用 accumulator
  4. 使用 limitoffset 进行分页获取
  5. 结合 duplicate_titleduplicate_descriptiononpage_scorechecks 等字段进行批量修复优级排序

实用场景

  • 定位重复标题页:批量找出同一 title 的页面,快速修复站标题同质化问题,提升搜索结果区分度。
  • 筛查重复描述页:识别复用同一 meta description 的页面,便于统一改写摘要文案,提升点击率表现。
  • 按标签值回查问题页面:通过 accumulator 精确查询某个标题或描述被哪些页面重复使用,适合排查模板误或批量发布异常。
  • 结合页面质量指标排序修复:将重复标签结果与 onpage_scorepage_timingchecks 联合使用,优处理流量价值高且问题严重的页面。
  • 识别模板型 SEO 问题:根据重复标签页面的 URL、点击层级、canonical、一致性等信息,判断问题是否来自栏目模板、分页页或多地区页面生成逻辑。

统一入口:官网 · LLM API · 控制台