主题
AI 优化 ChatGPT LLM 抓取结果 HTML
接口说明
该接口用于按指定关键词、语言和地区,实时获取 LLM 抓取结果页的原始 HTML。
返回结果适合以下场景:
- 获取页面原始结构,进行自定义解析
- 保存抓取快,做页面对比或审计
- 提取引用区、结果块等前端渲染信息
请求方式:
POST /v3/ai_optimization/wp/v2/live/html
完整地址:
https://api.seermartech.cn/v3/ai_optimization/wp/v2/live/html
计费说明
该接口按请求计费,每次请求都会产生费用。
原文未给出固定单价,因此无法直接换算人民币。扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
请求限制
- 所有 POST 数据使用
JSON(UTF-8 编码) - 请求体为 JSON 数组:
[{ ... }] - 每次 Live LLM Scraper 请求只能一个任务
- 调用频率上限:2000 次/分钟
请求参数
任务参数说明
| 字段名 | 类型 | 说明 |
|---|---|---|
keyword | string | 填。查询,最长支持 2000 个字符。 %## 会被解码,字符 + 会被解码为空格。如果本身需要 %,请写为 %25;如果需要 +,请写为 %2B。 |
location_name | string | 搜索地区名。未传 location_code 时填。传该字段后可不传 location_code。可通过 /v3/ai_optimization/wp/locations 或位置列表接口获取可用地区名称。示例:United States |
location_code | integer | 搜索地区编码。未传 location_name 时填。传该字段后可不传 location_name。可通过 /v3/ai_optimization/wp/v2/locations 获取可用地区编码。示例:2840 |
language_name | string | 搜索语言名。未传 language_code 时填。传该字段后可不传 language_code。可通过 /v3/ai_optimization/wp/v2/languages 获取可用语言名称。示例:English |
language_code | string | 搜索语言代码。未传 language_name 时填。传该字段后可不传 language_name。可通过 /v3/ai_optimization/wp/v2/languages 获取可用语言代码。示例:en |
force_web_search | boolean | 可选。是否强制 AI 代理使用 Web 搜索。启用后,模型会尽量访问并引用当前网页信息。默认值:false。注意:即使设置为 true,也不能保证响应中一定会出现网页来源引用。 |
expand_citations | boolean | 可选。是否返回展开后的引用栏 HTML。启用该参数时,同时将 force_web_search 设为 true。默认值:false。 |
tag | string | 可选。用户自定义任务标识,最长 255 个字符。可用于请求结果映射,响应中的 data 对象会返回该值。 |
响应结构
接口返回 JSON 数据,顶层 tasks 数组。
顶层字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 通用状态码。完整错误码见 /v3/appendix/errors |
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[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
keyword | string | 请求中的。返回时 %## 会被解码,+ 会被解码为空格 |
location_code | integer | 请求中的地区编码 |
language_code | string | 请求中的语言代码 |
datetime | string | 获取结果的时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00 |
items_count | integer | items 数组中的结果数 |
items | array | 返回的结果项数组 |
items[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
page | integer | 返回的 HTML 页面序号 |
date | string | HTML 页面扫描时间,格式示例:2019-11-15 12:57:46 +00:00 |
html | string | 原始 HTML 页面 |
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/ai_optimization/wp/v2/live/html" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"language_code": "en",
"location_code": 2840,
"keyword": "albert einstein"
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/ai_optimization/wp/v2/live/html"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
data = [
{
"language_code": "en",
"location_code": 2840,
"keyword": "albert einstein"
}
]
response = requests.post(url, json=data, headers=headers)
result = response.json
if result.get("status_code") == 20000:
print(result)
else:
print(f'error. Code: {result.get("status_code")} Message: {result.get("status_message")}')TypeScript
typescript
import axios from "axios";
async function fetchLlmHtml {
const response = await axios.post(
"https://api.seermartech.cn/v3/ai_optimization/wp/v2/live/html",
[
{
language_code: "en",
location_code: 2840,
keyword: "albert einstein",
},
],
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
);
const result = response.data;
if (result.status_code === 20000) {
console.log(result);
} else {
console.log(`error. Code: ${result.status_code} Message: ${result.status_message}`);
}
}
fetchLlmHtml;响应示例
json
{
"version": "0.1.20200130",
"status_code": 20000,
"status_message": "Ok.",
"time": "7.7543 sec.",
"cost": 0.003,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"api": "ai_optimization",
"function": "live",
"se": "wp",
"se_type": "v2",
"language_name": "English",
"location_name": "United States",
"keyword": "albert einstein",
"tag": "tag1",
"device": "desktop",
"os": "windows"
},
"result": [
{
}
]
}
]
}说明:示例响应存在截断,未完整展示
tasks与result/items的字段。返回时请以接口真实响应为准,并重点html字段中的页面原始。
错误处理建议
- 请根据顶层
status_code和任务级tasks[].status_code双层判断调用是否成功 - 建议对
/v3/appendix/errors中的错误码建立统一处理机制 - 若
force_web_search=true但未返回引用,属于可能的正常,不应简单判定为失败 - 若需要引用展开区域 HTML,请确保同时传:
force_web_search: trueexpand_citations: true
使用说明补
location_name与location_code二选一即可language_name与language_code二选一即可- 本接口返回的是原始 HTML,不是结构化摘要数据
- 如果要做稳定的数据提取,建议结合自定义 HTML 解析逻辑使用
- 中的特殊字符应按规则编码,否则可能导致查询词与预期不一致
实用场景
- 抓取结果页快:保存指定在特定地区与语言下的 LLM 结果页 HTML,用于版本留档、页面变化追踪和合规审计。
- 解析引用来源区域:启用网页搜索与引用展开后,提取引用栏 HTML,分析模型更偏好引用哪些站点与类型。
- 监控品牌可见性:定期请求品牌词、产品词的结果页 HTML,检查品牌是否出现在回答、引用或模块中。
- 对比地区语言差异:针对同一按不同
location_code、language_code获取页面 HTML,分析不同市场下回答呈现方式差异。 - 构建自定义抽取流程:将返回的原始 HTML 接解析器,提取标题、摘要、引用块等字段,沉淀为可分析的 SEO 数据资产。