一次接入,把内容递给大模型
你们的 GEO 产品负责内容整理、事实核实与问题设计,用户点「发布」后调用本接口即可。 答源只承担展示职责:生成带核实时间与来源凭证的结构化事实卡,维护机器可读入口, 让内容更容易被豆包、DeepSeek、通义千问等大模型检索与引用。
四步走通闭环
不需要 WordPress 后台账号,也不需要理解本站的主题与插件结构。你们只负责在「发布」按钮后面发一个 JSON。
拿一把 Key
按 client_id 签发,密钥只以 sha256 摘要存服务端;申请与签发见下方「申请 API Key」。
先用 validate 试接
免密钥调用,返回的 ok / checks / warnings 与正式发布用的是同一套门禁。
POST publish
带 X-DAN-API-Key 发布,拿回 id、url、version;页面即刻对抓取器可见。
度量回流
按 batch_id 看这批内容的引用率,结果回流指导下一批内容整理。
端点一览
所有路径以 https://www.dandroid.cn/wp-json/dan/v1 为前缀,请求与响应均为 UTF-8 JSON。
| 方法 | 路径 | 鉴权 | 作用 |
|---|---|---|---|
| GET | /capabilities | 匿名 | 能力清单、门禁阈值、限流、写入目标、机器可读入口 |
| GET | /openapi.json | 匿名 | OpenAPI 3.0.3 描述,可直接导入 Postman / Apifox / 代码生成器 |
| POST | /validate | 匿名 | 只跑质量门禁,不落库;永远 200,用 ok 判断 |
| POST | /publish | API Key 或 Basic | 唯一写入口;201 新建 / 200 更新,只写 dan_source |
| GET | /stats | 管理员 | 站点治理、分区计数、过期事实卡 |
| GET | /api-status | 管理员 | 密钥数量、当日调用数、最近 20 条调用日志 |
在线试接(不写库)
下面这段 payload 已经填好,点「运行校验」就会调用 /validate。它只做字段检查,不会发布任何内容,也不需要密钥。
校验通过与正式发布用的是同一套门禁规则。
https://www.dandroid.cn/wp-json/dan/v1/publish,加上 X-DAN-API-Key 头即可。响应里的 url 就是可被大模型引用的事实卡页面。四种语言的最小示例
零第三方依赖;生产环境请务必走 HTTPS,并把 Key 放在环境变量里,不要写进代码或日志。
curl -X POST 'https://www.dandroid.cn/wp-json/dan/v1/publish' \
-H 'Content-Type: application/json; charset=UTF-8' \
-H 'X-DAN-API-Key: YOUR_API_KEY' \
-d @card.json
# 免密钥试接:换成 /validate,去掉 Key 头即可
curl -X POST 'https://www.dandroid.cn/wp-json/dan/v1/validate' \
-H 'Content-Type: application/json' -d @card.jsonimport json, os, urllib.request
card = json.load(open("card.json", encoding="utf-8"))
req = urllib.request.Request(
"https://www.dandroid.cn/wp-json/dan/v1/publish",
data=json.dumps(card, ensure_ascii=False).encode("utf-8"),
headers={
"Content-Type": "application/json; charset=UTF-8",
"X-DAN-API-Key": os.environ["DAN_API_KEY"],
},
method="POST",
)
with urllib.request.urlopen(req, timeout=20) as r:
result = json.load(r)
print(result["url"], result["version"]) # 可引用页面地址import fs from "node:fs";
const card = JSON.parse(fs.readFileSync("card.json", "utf8"));
const res = await fetch("https://www.dandroid.cn/wp-json/dan/v1/publish", {
method: "POST",
headers: {
"Content-Type": "application/json; charset=UTF-8",
"X-DAN-API-Key": process.env.DAN_API_KEY,
},
body: JSON.stringify(card),
});
const result = await res.json();
if (!res.ok) throw new Error(result.code + ": " + result.message);
console.log(result.url, result.version);<?php
$card = json_decode(file_get_contents('card.json'), true);
$ch = curl_init('https://www.dandroid.cn/wp-json/dan/v1/publish');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json; charset=UTF-8',
'X-DAN-API-Key: ' . getenv('DAN_API_KEY'),
],
CURLOPT_POSTFIELDS => json_encode($card, JSON_UNESCAPED_UNICODE),
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $result['url'] ?? $result['message'];字段与质量门禁
接口收的是结构化字段,不是一篇散文。内容整理、事实核实、问题设计都在你们的产品侧完成,本站不替客户生产内容。
必填字段
| 字段 | 要求 |
|---|---|
title | 非空,≤120 字;也是幂等键之一 |
summary | ≥20 字可读摘要,不要堆关键词 |
verified_at | YYYY-MM-DD 真实核实日期 |
facts | ≥5 项基础实体字段(对象) |
unique_facts | ≥3 项独家核实事实(数组) |
unique_facts 是被 AI 引用的唯一理由。名称、地址、电话属于公共事实,AI 有更权威的源;只有自己打电话、实地核实才拿得到的字段才构成引用价值。
建议字段
| 字段 | 作用 |
|---|---|
faq | ≤20 组问答,自动输出 FAQPage,抬升「可命中」 |
canonical_url | 指向客户官网原页,本页仅作结构化副本 |
external_id | 产品侧稳定 ID,最强幂等键(租户内唯一) |
industry | 行业频道名,不存在自动创建 |
batch_id | 按批次归因「这一批有没有被引用」 |
source_url | 核实依据链接,增强可信度 |
client_id 与 content_zone 在 API Key 路径下由服务端强制写入,payload 里传了也不生效,避免串租户、灌演示数据。
unique_facts 是被 AI 引用的核心,请务必核实后再发。更多工程细节(错误码、重试、SDK)见本页「错误码、幂等与限流」一节。错误码、幂等与限流
错误码
| HTTP | 含义 / 处理 |
|---|---|
200 / 201 | 更新 / 新建成功,记录 url、version |
400 | 缺必填参数或类型不对,修 payload,不重试 |
401 | 缺 Key 或 Key 无效,检查头与 HTTPS,不重试 |
422 | 未过质量门禁,按 message 补字段,不绕过 |
429 | 限流,指数退避后重试 |
5xx / 网络 | 退避重试;幂等保证不会重复建页 |
服务端保证
- 幂等:
external_id>canonical_url>title;API Key 路径下限定在本client_id内,命中则更新并让version+1。 - 租户隔离:Key 绑定 client_id,服务端覆盖 payload 值;不同产品不会因同名标题互相覆盖。
- 限流:publish 默认 60 次/分钟/密钥;匿名 validate 20 次/分钟/IP,可用常量调整。
- 写入边界:只写
dan_source,永不写post归档区,也不写question。 - 自动同步:落地即生成页面、JSON-LD / FAQPage、
llms-full.txt、专属 sitemap 与?dan=plain纯文本镜像。
申请 API Key
任何 GEO 优化产品都可以接入,全程不需要你碰 WordPress 后台或服务器文件。提交申请后,平台为你签发专属密钥。
留下你的产品标识(client_id)与接入用途,点「提交申请」。我们在一个工作日内审核。
审核通过后,平台为你签发专属 API Key 并安全发送给你;明文密钥仅你可见,请妥善保管。
把密钥放进你们自己的环境变量,请求头带 X-DAN-API-Key;先用匿名 /validate 试接,再调 /publish。
或直接邮件至 417750747@qq.com,注明产品名称、client_id 与接入用途即可。

