NekoMemo 是一款背题软件,可从学习通网页提取题库,帮助背题练习喵~
- 网页解析:从学习通网页中解析并提取题库
- 题库管理:多题库管理,支持单选题、多选题、判断题、填空题、简答题
- 练习模式:支持测试全部或部分题目,支持打乱题目或选项
- 分类标签
- 导入/导出:备份题库或与他人分享
- Material 3
- 在题库页右上角加号,从学习通抓取
- 登录学习通,找到课程的作业详情页面
- 点击右下角按钮,提取题目
- 保存到题库
- 回到题库页,刷题测试喵~
题库通过 JSON 文件进行导入/导出,用于备份或分享。文件整体结构如下:
{
"version": 1,
"nekomemo": {
"title": "题库标题",
"category": "分类名称",
"questions": [
{
"text": "题干文本",
"options": ["选项A", "选项B", "选项C", "选项D"],
"correctIndices": [0],
"type": "SINGLE_CHOICE"
}
]
}
}| 字段 | 类型 | 说明 | 约束 |
|---|---|---|---|
version |
Int | 格式版本号,当前为 1 |
高版本会尝试兼容导入 |
nekomemo |
Object | 题库数据容器(可省略,直接使用扁平结构) | — |
title |
String | 题库标题 | 最大 200 字符,不能为空 |
category |
String | 分类名称 | 最大 20 字符,为空时默认 GENERAL,不存在时自动创建 |
questions |
Array | 题目数组 | 最多 5000 题,超出截断 |
questions[].text |
String | 题干 | 最大 10000 字符,为空则跳过该题 |
questions[].type |
String | 题型枚举名 | 见下表,默认 SINGLE_CHOICE |
questions[].options |
Array<String> | 选项列表(填空题/简答题存储答案文本) | 最多 10 个,每个最大 2000 字符 |
questions[].correctIndices |
Array<Int> | 正确答案索引(从 0 开始) | 填空题/简答题为全部索引;兼容旧版 correctIndex(单个 Int) |
type 字段同时兼容枚举名和旧版字符串:
| 枚举名 | 旧字符串 | 说明 | options 用途 |
|---|---|---|---|
SINGLE_CHOICE |
Single Choice | 单选题 | 选项(最少 2 个) |
MULTIPLE_CHOICE |
Multiple Choice | 多选题 | 选项(最少 2 个) |
TRUE_FALSE |
True/False | 判断题 | 选项(最少 2 个) |
FILL_BLANK |
Fill in the Blank | 填空题 | 答案文本 |
SHORT_ANSWER |
Short Answer | 简答题 | 答案文本 |
{
"version": 1,
"nekomemo": {
"title": "局部血液循环障碍",
"category": "病理学",
"questions": [
{
"text": "慢性淤血时,组织或器官的主要病理变化是",
"options": ["实质细胞增生肥大", "间质细胞减少", "实质细胞萎缩变性,间质纤维增生", "实质细胞和间质均无明显变化", "实质细胞坏死,间质钙化"],
"correctIndices": [2],
"type": "SINGLE_CHOICE"
},
{
"text": "下肢深静脉血栓脱落最常栓塞的器官是",
"options": ["脑", "肺", "肾", "脾", "肝"],
"correctIndices": [1],
"type": "SINGLE_CHOICE"
},
{
"text": "患者,男,60岁,突发持续性胸痛4小时,心电图示ST段弓背向上抬高,血清肌钙蛋白升高。该患者心脏最可能的病变是",
"options": ["心肌脂肪变性", "心肌梗死", "心肌纤维化", "病毒性心肌炎", "心肌肥大"],
"correctIndices": [1],
"type": "SINGLE_CHOICE"
},
{
"text": "心肌梗死的继发性病变包括",
"options": ["心脏破裂", "室壁瘤形成", "附壁血栓形成", "心肌脂肪变性", "纤维素性心包炎"],
"correctIndices": [0, 1, 2, 4],
"type": "MULTIPLE_CHOICE"
},
{
"text": "慢性肺淤血的病理变化包括",
"options": ["肺泡壁毛细血管扩张充血", "肺泡腔内出现心力衰竭细胞", "肺泡腔内大量中性粒细胞渗出", "肺间质纤维组织增生", "肺泡腔内出现大量纤维蛋白渗出"],
"correctIndices": [0, 1, 3],
"type": "MULTIPLE_CHOICE"
},
{
"text": "血栓形成是指血液在活体的心血管腔内凝固形成固体质块的过程。",
"options": ["正确", "错误"],
"correctIndices": [0],
"type": "TRUE_FALSE"
},
{
"text": "贫血性梗死常发生于侧支循环丰富且组织疏松的器官,如肺和肠。",
"options": ["正确", "错误"],
"correctIndices": [1],
"type": "TRUE_FALSE"
},
{
"text": "长期淤血可引起淤血性________和淤血性________,最终导致器官实质细胞萎缩坏死。",
"options": ["水肿", "硬化"],
"correctIndices": [0, 1],
"type": "FILL_BLANK"
},
{
"text": "引起肺动脉栓塞的血栓栓子约95%以上来自________静脉血栓。",
"options": ["下肢深"],
"correctIndices": [0],
"type": "FILL_BLANK"
},
{
"text": "简述血栓形成的三个条件(Virchow三联征)。",
"options": ["心血管内皮细胞损伤、血流状态改变、血液凝固性增加"],
"correctIndices": [0],
"type": "SHORT_ANSWER"
}
]
}
}如果已有纯文本格式的题库(如教材习题、考试真题),可借助 LLM 自动转换为 NekoMemo 支持的 JSON 格式。将以下提示词发送给任意大语言模型(如 ChatGPT、Claude、DeepSeek 等),并在末尾粘贴题库文本即可。
你是一个题库解析助手。你的任务是将用户提供的纯文本题库转换为 NekoMemo 题库应用的 JSON 导入格式。
## 输出格式
输出必须是以下 JSON 结构,不要输出任何其他内容(不要 markdown 代码块标记、不要解释说明):
{
"version": 1,
"nekomemo": {
"title": "题库标题",
"category": "分类名称",
"questions": [
{
"text": "题干文本",
"options": ["选项A", "选项B", "选项C", "选项D"],
"correctIndices": [0],
"type": "SINGLE_CHOICE"
}
]
}
}
## 字段说明
- title:题库标题,从文本中的章节名或文档标题提取,如"第十五章 甲状腺疾病"
- category:分类名称,从文本中的学科或章节大类提取,如"病理学";无法判断时填 "GENERAL"
- questions:题目数组,每道题包含以下字段:
- text:题干文本,去除题号前缀(如"1."、"16."),保留完整题干内容
- type:题型,取值为以下五种枚举名之一
- options:字符串数组,用途因题型而异(见下表)
- correctIndices:整数数组,正确答案的索引(从 0 开始)
## 题型映射与数据存储规则
| 题型识别关键词 | type 值 | options 用途 | correctIndices 规则 |
|---|---|---|---|
| 单选题、A1型、A2型、选择题(单答案) | SINGLE_CHOICE | 各选项文本 | 正确选项的索引,单个元素如 [0] |
| 多选题、X型 | MULTIPLE_CHOICE | 各选项文本 | 所有正确选项的索引,如 [0,2,3] |
| 判断题 | TRUE_FALSE | ["正确", "错误"] | 正确选项的索引,[0] 或 [1] |
| 填空题 | FILL_BLANK | 每个空的答案文本,按顺序排列 | 所有索引,如 [0,1,2] |
| 简答题、问答题、论述题 | SHORT_ANSWER | 参考答案文本(单个元素) | [0] |
## 解析规则
1. 题号剥离:去除题干开头的编号前缀(如"1."、"16."、"A1型选择题"等子类型标记),只保留题目内容本身
2. 选项清洗:去除选项字母前缀(如"A."、"B "、"C、"),只保留选项文本内容;去除多余空格
3. 答案匹配:答案通常在文本末尾以"答案"关键词分隔。按题号对应匹配到各题。答案格式可能为:
- 字母格式(如"A"、"BCE")→ 转为索引(A=0, B=1, ...)
- 文本格式(如"缺碘"、"乳头状癌")→ 填空题直接作为 options,简答题作为 options
- 判断题答案(如"正确"/"错误"、"对"/"错"、"T"/"F")→ 转为 [0] 或 [1]
4. 填空题处理:题干中的空格(连续下划线、连续空格、横线等)代表填空数量。将对应答案按顺序填入 options 数组。如果一道题有多个空,每个空的答案单独作为一个元素
5. 选项字母不一致:有些文本中选项前缀格式不统一(如"A."、"B "、"C、"混用),统一识别并剥离
6. 缺失答案:如果某道题找不到对应答案,跳过该题不输出
7. 无效题目:题干为空或选项不完整的选择题,跳过不输出
## 多选题答案识别
当答案为多个字母(如"ABC"、"BDE")时,判定为多选题,即使文本未明确标注"多选题"。将每个字母转为对应索引。
## 特殊处理
- 如果文本中某类题型标注了子类型(如"A1型选择题"、"A2型选择题"),统一归为 SINGLE_CHOICE,不区分子类型
- 如果选择题的答案是单个字母,归为 SINGLE_CHOICE
- 如果选择题的答案是多个字母,归为 MULTIPLE_CHOICE
- 填空题题干中的填空位置(下划线、空格、横线)在输出的 text 字段中统一替换为连续下划线"________"(8个下划线)
## 输出要求
- 输出纯 JSON,不要包裹在 markdown 代码块中
- 不要输出任何解释性文字
- JSON 中不要有注释
- 确保所有字符串经过正确的 JSON 转义(引号、换行符等)
- options 数组不能为空数组,每道题至少有 1 个元素
现在请将以下题库文本转换为 NekoMemo JSON 格式:
- 复制上方提示词,粘贴到 LLM 对话框中
- 在提示词末尾追加你的题库纯文本
- 将 LLM 输出的 JSON 保存为
.json文件 - 在 NekoMemo 设置页点击「导入题库」选择该文件
Copyright 2026 JamGmilk
MIT License




