中国中小学试卷生成器。Use when teacher needs to create exam papers for Chinese primary/middle
Scanned 9/12/2026
Install to Claude Code
npx -y skills add whyzsm/tiny-agents --skill exam-generator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Exam Generator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/whyzsm-exam-generator)More formats (shields.io, HTML) on the badges page.
---
name: exam-generator
description: 中国中小学试卷生成器。Use when teacher needs to create exam papers for Chinese primary/middle
school. Supports all subjects, multiple question types, official curriculum standards,
and accurate answers. Uses web search for latest knowledge. 试卷生成、出题、考试卷。
---
# 中国中小学试卷生成器
专业试卷生成工具,支持中国中小学各学科,遵循官方课程标准,确保试题准确性。
## Features
- 📚 **全学科支持**: 语文、数学、英语、物理、化学、生物、历史、地理、政治
- 📊 **多种题型**: 选择题、填空题、判断题、简答题、计算题、作文题
- 🎯 **精准出题**: 根据知识点和难度要求生成
- 🌐 **联网验证**: 使用web search获取最新知识和标准答案
- 📐 **专业排版**: 标准试卷格式,可直接打印
- ✅ **答案准确**: 交叉验证确保答案正确
## 支持的学科
| 学科 | 年级 | 题型 |
|------|------|------|
| 语文 | 小学/初中 | 选择、填空、阅读、作文 |
| 数学 | 小学/初中 | 选择、填空、计算、应用 |
| 英语 | 小学/初中 | 选择、填空、阅读、写作 |
| 物理 | 初中 | 选择、填空、实验、计算 |
| 化学 | 初中 | 选择、填空、实验、计算 |
| 生物 | 初中 | 选择、填空、简答 |
| 历史 | 初中 | 选择、填空、简答 |
| 地理 | 初中 | 选择、填空、读图 |
| 政治 | 初中 | 选择、填空、简答 |
## Trigger Conditions
- "生成一份试卷" / "Create an exam"
- "出一套数学题" / "Generate math problems"
- "帮我出英语试卷" / "Create English test"
- "根据知识点出题" / "Generate questions for topics"
- "exam-generator"
---
## Step 1: 理解用户需求
```
请提供以下信息:
学科:语文/数学/英语/物理/化学...
年级:小学X年级/初中X年级
知识点:具体要考察的知识点
题型:选择题/填空题/简答题...
题量:各题型数量
难度:简单/中等/困难
时间:考试时长(分钟)
```
---
## Step 2: 获取最新知识(联网验证)
使用web-search skill获取准确的知识点和标准答案:
```
Agent自动调用web-search skill搜索:
- 学科知识点
- 标准答案
- 官方课程标准
```
### 知识验证流程
```
生成试题
↓
搜索标准答案
↓
交叉验证
↓
标记置信度
↓
输出试题
```
---
## Step 3: 生成试卷
### Python代码示例
```python
import os
from datetime import datetime
class ExamGenerator:
def __init__(self, subject, grade, title='考试试卷'):
self.subject = subject
self.grade = grade
self.title = title
self.questions = []
self.answers = []
def add_choice_question(self, question, options, answer, score=2):
"""添加选择题"""
self.questions.append({
'type': 'choice',
'question': question,
'options': options,
'score': score
})
self.answers.append({
'type': 'choice',
'answer': answer,
'score': score
})
def add_fill_blank(self, question, answer, score=2):
"""添加填空题"""
self.questions.append({
'type': 'fill',
'question': question,
'score': score
})
self.answers.append({
'type': 'fill',
'answer': answer,
'score': score
})
def add_true_false(self, question, answer, score=1):
"""添加判断题"""
self.questions.append({
'type': 'true_false',
'question': question,
'score': score
})
self.answers.append({
'type': 'true_false',
'answer': answer,
'score': score
})
def add_short_answer(self, question, answer, score=10):
"""添加简答题"""
self.questions.append({
'type': 'short_answer',
'question': question,
'score': score
})
self.answers.append({
'type': 'short_answer',
'answer': answer,
'score': score
})
def add_calculation(self, question, answer, score=15):
"""添加计算题"""
self.questions.append({
'type': 'calculation',
'question': question,
'score': score
})
self.answers.append({
'type': 'calculation',
'answer': answer,
'score': score
})
def add_essay(self, question, requirements, score=30):
"""添加作文题"""
self.questions.append({
'type': 'essay',
'question': question,
'requirements': requirements,
'score': score
})
self.answers.append({
'type': 'essay',
'answer': '见评分标准',
'score': score
})
def generate_exam(self, lang='zh'):
"""生成试卷"""
total_score = sum(q['score'] for q in self.questions)
if lang == 'zh':
return self._generate_chinese(total_score)
else:
return self._generate_english(total_score)
def _generate_chinese(self, total_score):
"""生成中文试卷"""
output = []
output.append(f'┌{"─"*60}┐')
output.append(f'│ {self.title}')
output.append(f'│ {self.subject} · {self.grade}')
output.append(f'│ 考试时间:90分钟 · 满分:{total_score}分')
output.append(f'└{"─"*60}┘')
output.append('')
output.append('姓名:__________ 班级:__________ 学号:__________')
output.append('')
choice_num = 1
fill_num = 1
tf_num = 1
other_num = 1
for q in self.questions:
if q['type'] == 'choice':
output.append(f'一、选择题(每题{q["score"]}分)')
output.append('')
output.append(f'{choice_num}. {q["question"]}')
for i, opt in enumerate(q['options']):
output.append(f' {chr(65+i)}. {opt}')
output.append('')
choice_num += 1
elif q['type'] == 'fill':
output.append(f'二、填空题(每空{q["score"]}分)')
output.append('')
output.append(f'{fill_num}. {q["question"]}')
output.append(' 答案:__________')
output.append('')
fill_num += 1
elif q['type'] == 'true_false':
output.append(f'三、判断题(每题{q["score"]}分)')
output.append('')
output.append(f'{tf_num}. {q["question"]} ( )')
output.append('')
tf_num += 1
elif q['type'] == 'short_answer':
output.append(f'四、简答题(每题{q["score"]}分)')
output.append('')
output.append(f'{other_num}. {q["question"]}')
output.append('')
output.append('')
output.append('')
other_num += 1
elif q['type'] == 'calculation':
output.append(f'五、计算题(每题{q["score"]}分)')
output.append('')
output.append(f'{other_num}. {q["question"]}')
output.append('')
output.append('')
output.append('')
other_num += 1
elif q['type'] == 'essay':
output.append(f'六、作文({q["score"]}分)')
output.append('')
output.append(f'{q["question"]}')
output.append(f'要求:{q.get("requirements", "")}')
output.append('')
output.append('')
output.append('')
return '\n'.join(output)
def generate_answer_sheet(self, lang='zh'):
"""生成答案"""
output = []
output.append(f'{"="*60}')
output.append(f'{self.title} - 参考答案')
output.append(f'{"="*60}')
output.append('')
for i, a in enumerate(self.answers, 1):
output.append(f'{i}. {a["answer"]} ({a["score"]}分)')
return '\n'.join(output)
def save(self, output_dir):
"""保存试卷和答案(Word格式)"""
from docx import Document
from docx.shared import Pt, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
os.makedirs(output_dir, exist_ok=True)
# 生成试卷Word文档
doc = Document()
# 设置页面
section = doc.sections[0]
section.top_margin = Cm(2.54)
section.bottom_margin = Cm(2.54)
section.left_margin = Cm(2.54)
section.right_margin = Cm(2.54)
# 生成内容
exam_text = self.generate_exam()
for line in exam_text.split('\n'):
if line.strip():
if '═' in line or '─' in line:
doc.add_paragraph(line)
elif line.startswith('一、') or line.startswith('二、') or line.startswith('三、'):
doc.add_heading(line, level=2)
elif line.startswith('1.') or line.startswith('2.') or line.startswith('3.'):
doc.add_paragraph(line)
else:
doc.add_paragraph(line)
exam_path = os.path.join(output_dir, 'exam.docx')
doc.save(exam_path)
# 生成答案Word文档
doc_answer = Document()
answer_text = self.generate_answer_sheet()
for line in answer_text.split('\n'):
if line.strip():
doc_answer.add_paragraph(line)
answer_path = os.path.join(output_dir, 'answer.docx')
doc_answer.save(answer_path)
return exam_path, answer_path
# 使用示例
exam = ExamGenerator('数学', '初中一年级', '2026年春季期中考试')
exam.add_choice_question('下列哪个是质数?', ['4', '6', '7', '9'], 'C', 2)
exam.add_fill_blank('12的平方根是____', '±2√3', 2)
exam.add_true_false('0是最小的自然数', '×', 1)
exam.add_calculation('计算:2x + 5 = 13,求x的值', 'x = 4', 10)
exam.save('/path/to/output')
```
---
## 试卷格式标准
### 试卷结构
```
┌─────────────────────────────────────────────────────────┐
│ 2026年春季期中考试 │
│ 数学 · 初中一年级 │
│ 考试时间:90分钟 · 满分:100分 │
└─────────────────────────────────────────────────────────┘
姓名:__________ 班级:__________ 学号:__________
一、选择题(每题2分,共20分)
1. 下列哪个是质数?
A. 4 B. 6 C. 7 D. 9
二、填空题(每题2分,共20分)
1. 12的平方根是__________
三、计算题(共60分)
1. 解方程:2x + 5 = 13(10分)
```
---
## 使用示例
### 生成数学试卷
```
User: "帮我出一套初中一年级数学试卷,5道选择题,5道填空题,2道计算题"
Agent:
1. 搜索初中数学知识点
2. 生成试题
3. 验证答案
4. 排版输出
```
### 生成语文试卷
```
User: "生成一份小学三年级语文试卷,包含阅读理解"
Agent:
1. 搜索小学语文课程标准
2. 选择合适的阅读材料
3. 生成题目
4. 输出试卷
```
---
## 试题准确性保证
### 验证流程
```
生成试题
↓
搜索标准答案
↓
多源交叉验证
↓
标记置信度
↓
输出试题+答案
```
### 置信度标记
- ✅ 高置信度:多源验证一致
- ⚠️ 中置信度:单源验证
- ❌ 低置信度:需要人工确认
---
## Notes
- 使用web search获取最新知识
- 答案经过交叉验证
- 支持中英文输出
- 可直接打印
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!