Install
openclaw skills install @e953962json/question-bank-api题库 API 接口技能(第三方题库供应商提供的 K12 试题/试卷数据服务)。This skill should be used when a user who has purchased an API key wants to pull school questions or papers from the provider's API — especially 按知识点取题、按章节取题(语文/英语等)、按试卷取题,以及试题搜索、获取答案解析、生成 Word 试卷。Trigger phrases include: 按知识点出题、按章节取题、取出这套试卷的题、找五年级数学小数乘法的题、搜一道关
openclaw skills install @e953962json/question-bank-api封装某题库供应商的 REST API,让已购 key 的用户能在对话里直接取题、取卷、搜题、拿答案、
导出 Word。所有接口均为 POST,统一用 X-API-Key 头鉴权。客户端脚本见
scripts/qb.py(仅依赖 Python 标准库,无需 pip install)。
取题有三条主路径,对应供应商文档的 2.1 / 2.6 / 3.x:
| 用户意图 | 需要的能力 | 调用链路 |
|---|---|---|
| 按知识点取题 | 知识点树 → 按知识点取题 | knowledge-tree → by-knowledge |
| 按章节取题(语文/英语) | 章节树 → 章节 id 直接取题 | chapter-tree → by-chapter |
| 按章节取题(其他科目) | 章节树 → 遍历叶子取 32 位 oldId → 按知识点取题 | chapter-tree/chapter-leaves → by-chapter-knowledge |
| 按试卷取题 | 试卷列表 → 试卷详情 | papers / paper-search → paper |
从环境变量或 CLI 参数读取(CLI 参数优先于环境变量):
| 变量 | 含义 | 默认 |
|---|---|---|
QB_API_BASE / --base | API 根地址,不含末尾 / | https://api.xuekubao.com(已填真实网关) |
QB_API_KEY / --key | 学库宝发放的 API key(X-API-Key 头) | 空(必须提供) |
QB_TIMEOUT / --timeout | 请求超时秒数 | 30 |
如何获取 key(务必引导用户走官方入口,不要替用户猜测 key):
QB_API_KEY 环境变量(或在调用时传 --key)。不要把 key 写死在脚本里。knowledgeId,调用:
python scripts/qb.py knowledge-tree --pharseId 1 --subjectId 2
pharseId/subjectId 来自 catalog(subjectEditionApi)返回的 code。
遍历到第三级知识点,取其 oldId 作为 knowledgeId。knowledgeId 取题:
python scripts/qb.py by-knowledge --knowledgeId <oldId> --page 1
--qtypeId / --paperType / --diff / --gradeId / --year 筛选。md52 调 answer(见下)。章节取题分两种学科逻辑,先判断学科再选链路:
python scripts/qb.py chapter-tree --pharseId 1 --subjectId 1
id 作为 chapterId。python scripts/qb.py by-chapter --chapterId <id> --page 1
--qtypeId / --paperType / --diff / --year 筛选。数学、物理等科目没有独立的"按章节取题"接口,但章节树本身就对应知识点:把章节树
遍历到最后一个叶子节点,取叶子节点的 oldId(32 位十六进制)当作 knowledgeId,
再走"按知识点取题(2.1)"即可。
1.(推荐先看叶子)列出某学科章节树的全部叶子 oldId:
python scripts/qb.py chapter-leaves --pharseId 2 --subjectId 2 --editionId 74 --gradeId 201
输出形如 1. 第9章 整式 / 9.1 字母表示数 / 代数式 oldId=745C7D75786602F3105A69845316FF61。
2. 直接取题(脚本会自动遍历叶子并逐个按知识点拉题):
python scripts/qb.py by-chapter-knowledge \
--pharseId 2 --subjectId 2 --editionId 74 --gradeId 201 --page 1
--chapterId <id> 把范围限定到某个章节子树;--qtypeId / --paperType / --diff / --year / --gradeId 筛选;--max-leaves(默认 20)限制最多查询的叶子章节数,防止一次消耗过多 API 额度;--limit 限制最多返回的试题总数。md52 调 answer(见 Workflow 1 第 3 步)取答案。python scripts/qb.py papers --gradeId 200 --subjectId 2
python scripts/qb.py paper-search --keyword "七年级 数学 期中"
python scripts/qb.py paper --paperId <id>
id 来自上一步返回的 id 字段。catalog — 学段/年级/学科/版本树(subjectEditionApi),用于解析 code。dict — 题型(qtypes)/试卷类型(paperTypes)/难易度(diffTypes) 字典(getOtherBasic)。search — 全文检索试题:search --keyword 浮力 --gradeId 200。answer — 按 md52 取答案解析:answer --md52 <md52>(支持逗号分隔多题)。to-word — 把结构化题目渲染成 docx:to-word --json '<paperData JSON>' --out paper.docx。report — 提交试题报错:report --qid <id> --content <说明>。--json
输出原始 JSON 便于后续处理。answer 补齐。errorCode 非 "0" 或 HTTP 非 2xx,把错误信息如实反馈,不要重试到失控(脚本已对
429/5xx 做有限退避)。page 分页,避免一次拉取上万条。