墨序润笔 MANUSCRIPT DOCTOR

OPEN API

开放接口

两件事对外开放:AI 味去除(站内那个润饰引擎)和朱雀检测(中转腾讯的 AIGC 检测)。 用你自己账户的积分,与网页上是同一个余额、同一份计价。

怎么开始

  1. 去 我的 页面底下建一把 API KEY(zq_ 开头)。明文只显示那一次。
  2. 每次请求带上 Authorization: Bearer <你的 KEY>。
  3. 先调 GET /api/v1/me 确认钥匙对不对——这一条不扣分。
curl https://testmoxu.dimexplore.com/api/v1/me \
  -H "Authorization: Bearer zq_你的钥匙"

计费

接口扣多少什么时候扣
AI 味去除 每 1500 汉字一档、5 积分(不足一档按一档) 提交时扣。跑失败会全额退回,流水里能看到那一笔。
朱雀检测 每次 1 积分 检测成功之后才扣。上游出错(502)一分不扣。

单篇上限 9000 汉字,润饰和检测都一样,超了回 400。 每把 KEY 每分钟 20 次;润饰最多同时跑 3 篇 (网页那边单独算,互不占用)。

AI 味去除

同步:一次做完

curl https://testmoxu.dimexplore.com/api/v1/refine \
  -H "Authorization: Bearer zq_你的钥匙" \
  -H "Content-Type: application/json" \
  -d '{"文本": "你的正文……", "mode": "screenplay"}'

这条要跑几十秒到几分钟,把你的 HTTP 客户端超时调到 600 秒以上。 被客户端掐掉的话任务照跑、分照扣,用下面那条 GET /api/v1/refine 把那一篇找回来。

{
  "task_id": 1234,
  "成稿": "……",
  "mode": "screenplay",
  "路线名": "剧本小说",
  "原文汉字数": 1820,
  "成稿汉字数": 1795,
  "扣了": 10,
  "余额": 90,
  "自检": ["…提醒,可能为空数组…"],
  "耗时秒": 74.2
}

异步:提交 + 轮询(批量用这个)

# 提交,立刻回 202 和 task_id(分在这一刻就扣了)
curl https://testmoxu.dimexplore.com/api/v1/refine/async \
  -H "Authorization: Bearer zq_你的钥匙" \
  -H "Content-Type: application/json" \
  -d '{"文本": "你的正文……"}'

# 轮询(建议 5 秒一次)
curl https://testmoxu.dimexplore.com/api/v1/refine/1234 \
  -H "Authorization: Bearer zq_你的钥匙"

查回来的 状态 是 running / done / failed 三个之一。failed 表示分已经退回去了,不用再找我们。

最近几篇

curl https://testmoxu.dimexplore.com/api/v1/refine \
  -H "Authorization: Bearer zq_你的钥匙"

回最近 5 条(不含正文)。同步请求被你自己的客户端掐断之后,这里是找回 task_id 的唯一办法。

mode

可选,留空我们自己猜(猜不出来走通用)。可选值: screenplay 剧本小说 · business 商业办公 · academic 学术严谨 · generic 通用文本。

接口这边不带网页上那个「没到 85% 人工就自动再修一轮」的循环。 一次调用 = 修一轮 = 一笔扣分。要不要复检、要不要再修一轮,自己拿下面那条检测接口决定。

朱雀检测

curl https://testmoxu.dimexplore.com/api/v1/detect \
  -H "Authorization: Bearer zq_你的钥匙" \
  -H "Content-Type: application/json" \
  -d '{"文本": "要检测的正文……"}'

腾讯朱雀返回什么,我们原样给你什么(labels_ratio、逐段落的 segment_labels 等等都在),只多加 扣了 / 余额 两个键。字段口径以朱雀那边为准,我们不翻译、不加工。

labels_ratio 里 "0" 是人写、 "1" 是 AI、"2" 是疑似 AI,按段落数算。 要「人工比例」取 "0" 那一项——不是 1 - "1", 那样会把疑似 AI 算成人写的。段落少的短文本只有很粗的刻度(3 段就只有 0 / 33 / 67 / 100)。

出错怎么读

出错时回 {"错": "一句中文", "码": "机器读的"}。 拿 码 判断,别去匹配那句中文——话术会改,码不会。

HTTP码什么意思该怎么办
401钥匙不对KEY 无效、已吊销,或者账号被停重试没用,去建一把新的
429调用太频繁撞了每分钟 20 次按响应头 Retry-After 等,别盲目重试
400余额不足体里带 缺口积分 和 建议充值元去充值,重试没用
400超出上限超过 9000 汉字把稿子拆开分次调
400内容为空没给 文本,或者不是合法 JSON查 Content-Type 和请求体
400有一篇还在跑同时在跑的润饰超过 3 篇等在跑的那几篇出来
400模型失败上游模型这一次没出稿分已经退回去了,可以直接重试
404任务不存在没这个 task_id,或者不是你的—
502(朱雀那边的码)检测上游出错一分不扣,隔几秒重试

几条要先知道的

装到你的 AI 客户端

不想自己写代码的话,这两个 Skill 装上就能直接对 AI 说 「把这稿子的 AI 味去掉」「查一下这段的 AI 率」。里头带好了脚本, 正文走文件不进命令行,长任务自己轮询。

  1. 先建一把 KEY(上面第一步),存成环境变量 MOXU_API_KEY——Skill 读的就是它。
  2. Claude Code:解压到 ~/.claude/skills/,解出来是 ~/.claude/skills/moxu-refine/ 这样一层目录,重开一个会话就认。
  3. claude.ai:在设置里的 Skills 那块直接传这个 zip,不用解压。
  4. 其它客户端:SKILL.md 就是一份纯文本说明, scripts/ 下的脚本只用 Python 标准库,不装任何依赖。

zip 是现下现打的,里面的地址、单价、限流次数跟这一页永远是同一份。