朱雀 AI 内容检测
这个技能做什么
传入一篇文章的 HTML 正文,返回三个核心数字和一份段落级明细:
- 整体 AI 率:全文被判定为 AI 生成的比例
- 段落级标注:每一段分别被判为人写 / AI 写 / 疑似
- 可疑段落排行:最像 AI 的段落排在最前,附置信度与前 80 字
典型场景是公众号作者投稿前自检,判断稿件要不要再改一轮;也用于改稿前后对比,验证改写是否真的把 AI 味降下去了。
什么时候用
- 用户问「这篇稿子的 AI 率多少」「这段是不是 AI 写的」「过朱雀了吗」
- 文章发布前的原创度自检
- 改写后复测,对比两版的 AI 率差异
- 批量体检历史文章,定位风险段落
前置条件
调用本服务需要客户端支持支付宝 AI 按量付费(A2M / HTTP 402),即本机已安装支付能力:
npx -y @alipay/agent-payment@latest install
安装后可用 alipay-bot CLI。首次使用需开通 AI 钱包(扫码一次,之后免扫):
echo "" | alipay-bot apply-wallet --agent-name "朱雀AI检测"
echo "" | alipay-bot check-wallet
计价:0.09 元 / 次。一次成功调用扣一次,fine 模式不额外加价。
调用流程
服务地址(含访问凭证,必须完整使用,去掉 ?sharecode= 会返回 403):
https://mind-studio.app.workbuddy.host/v1/zhuque/check?sharecode=YDERIGN5O7
HTTP 402 协议分三步。不要跳过第一步直接付款——账单每次都是新生成的,旧账单会过期。
第一步:发请求,拿账单
以 POST 提交 JSON:
| 项 | 值 |
|---|---|
| 方法 | POST |
| 地址 | 见上方服务地址(完整保留查询参数) |
| 请求头 | Content-Type: application/json |
| 请求体 | {"html": "<h2>标题</h2><p>正文段落</p>", "fine": false} |
此时尚未扣款,服务返回:
- 状态码
402 - 响应头
Payment-Needed:值为 Base64 编码的账单,含金额、订单号、有效期、收款方与资源标识 - 响应体
{"code": "Payment-Needed", "amount": "0.09", "currency": "CNY"}
用命令行取账单并存成文件(文件内容必须是纯 base64,不能把整个响应连头带体一起存):
curl -s -D headers.txt -o body.json \
-X POST "https://mind-studio.app.workbuddy.host/v1/zhuque/check?sharecode=YDERIGN5O7" \
-H "Content-Type: application/json" \
-d '{"html":"<h2>标题</h2><p>正文段落</p>","fine":false}'
grep -i "^payment-needed:" headers.txt | sed 's/^[^:]*: *//' | tr -d '\r' > bill_b64.txt
第二步:付款
把账单文件交给 CLI,用 -f 传账单,不要用 --amt-payment-link(那个参数要的是支付链接,传账单会报 PAYMENT_LINK_INVALID):
echo "" | alipay-bot 402-buyer-pay \
-r "https://mind-studio.app.workbuddy.host/v1/zhuque/check?sharecode=YDERIGN5O7" \
-f bill_b64.txt \
-m POST -H "Content-Type: application/json" \
-d '{"html":"<h2>标题</h2><p>正文段落</p>","fine":false}' \
-i "朱雀AI内容检测单次调用"
CLI 会生成收银台订单并把二维码落到 %TEMP%\openclaw\alipay-bot-cli\qrcode\。把二维码复制到可见目录再展示给用户,由用户本人扫码确认;未经用户确认不要自行完成支付。
用户确认付款后,CLI 会带凭证重放请求并返回履约结果。
第三步:核对结果
成功返回 200,检查以下三项再向用户汇报:
trade_no:支付宝交易号,留下用于查账fulfillment_confirmed:必须是truecontent.ai_ratio:整体 AI 率
不用 CLI 时的手工方式
如果客户端自己实现了 402 协议,把付款后拿到的凭证放进 Payment-Proof 请求头,用完全相同的方法、地址和请求体再发一次即可:
| 项 | 值 |
|---|---|
| 方法 | POST |
| 地址 | 与第一步完全相同 |
| 请求头 | Content-Type: application/json<br>Payment-Proof: <付款后获得的凭证> |
| 请求体 | 与第一步完全相同 |
请求参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
html |
string | 是 | 文章 HTML 正文。需含段落级标签:p、h1~h4、blockquote、li。纯文本抽不出段落 |
fine |
boolean | 否 | 默认 false。为 true 时对疑似段落逐段复检,返回每段非人写比例,耗时更长,费用不变 |
返回结果
| 字段 | 类型 | 说明 |
|---|---|---|
resource_id |
string | 资源标识,用于对账 |
content |
object | 检测结果主体 |
trade_no |
string | 支付宝交易号 |
out_trade_no |
string | 本地订单号 |
already_fulfilled |
boolean | 该订单此前是否已生成过结果 |
fulfillment_confirmed |
boolean | 履约回执是否提交成功 |
content 内部:
| 字段 | 类型 | 说明 |
|---|---|---|
paragraph_count |
int | 抽到的段落数 |
char_count |
int | 正文字数 |
human_ratio |
float | 人写占比(百分比,如 82.5) |
ai_ratio |
float | AI 生成占比(百分比) |
suspected_ratio |
float | 疑似占比(百分比) |
ratio_confidence |
float | 整体判定置信度 |
softmax_confidence |
float | 模型置信度 |
blocks |
array | 段落级结果,含起止段号、标签、置信度 |
risky_blocks |
int | 高风险段落数 |
usage_tokens |
int | 本次消耗的模型 token 数 |
fine_paragraphs |
array | 仅 fine=true 时返回,含段号、非人写比例、置信度、前 80 字 |
计费与履约约定
- 每次成功调用扣 0.09 元,失败不扣费
- 账单有效期 30 分钟,超时重新走第一步拿新账单
- 幂等:同一支付凭证重复提交不会重复扣费,也不会重复生成结果,只返回同一份内容
- 订单号与交易号一一对应,可用于对账
异常处理
| 现象 | 原因 | 处理 |
|---|---|---|
| 400,提示缺少 html | 请求体没有 html |
补上字段 |
| 400,提示无可抽取段落 | HTML 里没有 p/h1~h4/blockquote/li |
把正文包进段落标签 |
| 402 并带账单 | 正常流程,尚未付款 | 完成付款后带凭证重试 |
| 402,提示凭证校验未通过 | 凭证与订单不匹配,或金额/资源标识不一致 | 重新走第一步拿新账单 |
| 403 | 地址缺少 sharecode 查询参数 |
完整使用上方地址 |
| 502,提示检测服务调用失败 | 上游检测异常 | 用同一凭证重试,不重复扣费 |
PAYMENT_LINK_INVALID |
把账单传给了 --amt-payment-link |
改用 -f bill_b64.txt |
RESOURCE_DELIVERY_FAILED |
通常是凭证已用过或账单过期 | 重新走第一步 |
隐私说明
提交的 html 正文会传输到服务端用于检测,检测完成即返回结果,不用于训练、不长期留存正文。涉密或未发表稿件请自行评估后再提交。
说明
本技能为服务调用说明,不包含本地可执行文件。检测在服务端完成,客户端只需按上述流程发起 HTTP 请求并完成支付。