teacher-prep
教师备课助手,用于小学语文教学备课。支持古诗、现代文、寓言、童话等各类课文。当用户提出备课需求时,自动执行:(1)搜索课文相关资料(原文、作者、背景、生字词、段落分析等),生成markdown备课资料;(2)生成教案PPT;(3)生成Word格式课后练习题及参考答案。适用于小学各年级语文备课场景。
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install openclaw-skills-teacher-prep
Repository
Skill path: skills/870021840/teacher-prep
教师备课助手,用于小学语文教学备课。支持古诗、现代文、寓言、童话等各类课文。当用户提出备课需求时,自动执行:(1)搜索课文相关资料(原文、作者、背景、生字词、段落分析等),生成markdown备课资料;(2)生成教案PPT;(3)生成Word格式课后练习题及参考答案。适用于小学各年级语文备课场景。
Open repositoryBest for
Primary workflow: Ship Full Stack.
Technical facets: Full Stack.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: openclaw.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install teacher-prep into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/openclaw/skills before adding teacher-prep to shared team environments
- Use teacher-prep for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: teacher-prep
description: 教师备课助手,用于小学语文教学备课。支持古诗、现代文、寓言、童话等各类课文。当用户提出备课需求时,自动执行:(1)搜索课文相关资料(原文、作者、背景、生字词、段落分析等),生成markdown备课资料;(2)生成教案PPT;(3)生成Word格式课后练习题及参考答案。适用于小学各年级语文备课场景。
---
# 教师备课助手
本技能用于自动化完成小学语文教学备课的全流程工作,支持古诗、现代文、寓言、童话、说明文等各类课文类型。
## 工作流程
当用户提出备课需求(如"备课三年级上册《秋天的雨》"或"备课二年级古诗《村居》")时,按以下步骤执行:
### 第一步:识别课文类型并搜索资料
根据课文名称自动判断类型:
- **古诗/古诗词**:有朝代和作者,如《村居》《咏柳》
- **现代文**:散文、记叙文、说明文等,如《秋天的雨》《富饶的西沙群岛》
- **寓言/童话**:如《坐井观天》《卖火柴的小女孩》
使用 Tavily 搜索工具获取:
- 课文原文
- 作者介绍
- 创作背景/写作背景
- 生字词(拼音、解释)
- 段落大意/诗句解析
- 主题思想/中心思想
- 写作特点/艺术特色
### 第二步:生成备课资料
根据课文类型生成相应内容:
**古诗类:**
- 原文(带拼音)
- 作者介绍
- 字词注释
- 诗句翻译
- 诗歌赏析
**现代文类:**
- 课文原文
- 作者介绍
- 生字词表(拼音、部首、组词)
- 段落划分与段意
- 主要内容概括
- 写作特点分析
**寓言/童话类:**
- 故事原文
- 出处/作者
- 生字词
- 故事情节梳理
- 寓意/道理
保存为:`备课资料_<课文名>.md`
### 第三步:生成教案 PPT
根据课文类型设计教案结构:
**通用教案框架:**
1. 教学目标(知识、能力、情感)
2. 教学重难点
3. 教学准备
4. 教学过程
- 导入(激发兴趣,引入新课)
- 新授(初读感知、精读理解)
- 巩固(练习、讨论、拓展)
- 小结(总结收获)
- 作业布置
5. 板书设计
保存为:`教案_<课文名>.pptx`
### 第四步:生成课后练习题
根据课文类型设计分层练习:
**基础题:**
- 生字词(看拼音写词语、选择正确读音)
- 课文内容填空
- 词语解释
**理解题:**
- 句子理解
- 段落大意概括
- 中心思想体会
**拓展题:**
- 仿写/续写
- 对比阅读
- 创意表达
保存为:`练习题_<课文名>.docx`(含参考答案)
## 输出文件
完成备课任务后,生成以下三个文件:
1. `备课资料_<课文名>.md` - Markdown 格式备课资料
2. `教案_<课文名>.pptx` - PowerPoint 教案
3. `练习题_<课文名>.docx` - Word 格式练习题
## 依赖工具
- Tavily 搜索(需 TAVILY_API_KEY 环境变量)
- python-pptx(生成 PPT)
- python-docx(生成 Word 文档)
## 使用示例
**古诗备课:**
- 用户说:"备课二年级下册古诗《村居》"
- 识别为古诗 → 搜索古诗资料 → 生成古诗类型备课资料
**现代文备课:**
- 用户说:"备课三年级上册《秋天的雨》"
- 识别为现代散文 → 搜索课文资料 → 生成现代文类型备课资料
**寓言备课:**
- 用户说:"备课二年级《坐井观天》"
- 识别为寓言故事 → 搜索寓言资料 → 生成寓言类型备课资料
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### _meta.json
```json
{
"owner": "870021840",
"slug": "teacher-prep",
"displayName": "teacher-prep",
"latest": {
"version": "1.0.0",
"publishedAt": 1773193905051,
"commit": "https://github.com/openclaw/skills/commit/989ec24e0261846aa78336abd994e19315e7f644"
},
"history": []
}
```
### scripts/generate_docx.py
```python
#!/usr/bin/env python3
"""
生成课后练习题 Word 文档 - 支持多种课文类型
用法: python generate_docx.py <课文名> <课文类型> [备课资料文件路径]
"""
import sys
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
def set_chinese_font(run, font_name='SimSun', size=12, bold=False):
"""设置中文字体"""
font = run.font
font.name = font_name
font.size = Pt(size)
font.bold = bold
run._element.rPr.rFonts.set(qn('w:eastAsia'), font_name)
def create_exercises_poem(lesson_name, doc):
"""生成古诗类练习题"""
# 一、基础积累
heading = doc.add_heading('一、基础积累', level=1)
for run in heading.runs:
set_chinese_font(run, 'SimHei', 14, True)
p = doc.add_paragraph()
run = p.add_run(f'1. 默写《{lesson_name}》')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('(请在此处默写全诗)')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('2. 给下列加点字注音')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('( )( )( )( )')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('3. 看拼音写词语')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('( )( )( )')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
# 二、理解感悟
heading = doc.add_heading('二、理解感悟', level=1)
for run in heading.runs:
set_chinese_font(run, 'SimHei', 14, True)
p = doc.add_paragraph()
run = p.add_run('4. 解释下列词语的意思')
set_chinese_font(run, 'SimSun', 12)
for i in range(1, 4):
p = doc.add_paragraph()
run = p.add_run(f'({i})______________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('5. 写出诗句的意思')
set_chinese_font(run, 'SimSun', 12)
for i in range(1, 3):
p = doc.add_paragraph()
run = p.add_run(f'({i})______________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('6. 这首诗表达了诗人怎样的情感?')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
def create_exercises_modern(lesson_name, doc):
"""生成现代文类练习题"""
# 一、基础积累
heading = doc.add_heading('一、基础积累', level=1)
for run in heading.runs:
set_chinese_font(run, 'SimHei', 14, True)
p = doc.add_paragraph()
run = p.add_run('1. 看拼音写词语')
set_chinese_font(run, 'SimSun', 12)
for i in range(1, 4):
p = doc.add_paragraph()
run = p.add_run(f'({i})( )( )( )')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('2. 给加点字选择正确的读音,打"√"')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('( ) ( ) ( ) ( )')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('3. 比一比,再组词')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('( )——( ) ( )——( )')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
# 二、理解感悟
heading = doc.add_heading('二、理解感悟', level=1)
for run in heading.runs:
set_chinese_font(run, 'SimHei', 14, True)
p = doc.add_paragraph()
run = p.add_run('4. 根据课文内容填空')
set_chinese_font(run, 'SimSun', 12)
for i in range(1, 4):
p = doc.add_paragraph()
run = p.add_run(f'({i})______________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('5. 读句子,回答问题')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('(1)________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('6. 概括课文主要内容')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
def create_exercises_fable(lesson_name, doc):
"""生成寓言/童话类练习题"""
# 一、基础积累
heading = doc.add_heading('一、基础积累', level=1)
for run in heading.runs:
set_chinese_font(run, 'SimHei', 14, True)
p = doc.add_paragraph()
run = p.add_run('1. 看拼音写词语')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('( )( )( )( )')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('2. 给下列词语选择正确的解释')
set_chinese_font(run, 'SimSun', 12)
for i in range(1, 4):
p = doc.add_paragraph()
run = p.add_run(f'({i})__________________( )')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
# 二、理解感悟
heading = doc.add_heading('二、理解感悟', level=1)
for run in heading.runs:
set_chinese_font(run, 'SimHei', 14, True)
p = doc.add_paragraph()
run = p.add_run('3. 根据故事内容填空')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('故事的起因:______________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('故事的经过:______________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('故事的结果:______________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('4. 这个故事告诉我们什么道理?')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('5. 你喜欢故事中的谁?为什么?')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
def create_exercises(lesson_name, lesson_type, content_file=None):
"""生成课后练习题 Word 文档"""
doc = Document()
# 设置文档默认字体
style = doc.styles['Normal']
style.font.name = 'SimSun'
style._element.rPr.rFonts.set(qn('w:eastAsia'), 'SimSun')
# 标题
title = doc.add_heading(f'《{lesson_name}》课后练习', level=0)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in title.runs:
set_chinese_font(run, 'SimHei', 18, True)
# 根据课文类型生成不同练习题
if lesson_type in ['古诗', '古诗词']:
create_exercises_poem(lesson_name, doc)
elif lesson_type in ['寓言', '童话']:
create_exercises_fable(lesson_name, doc)
else:
create_exercises_modern(lesson_name, doc)
# 三、拓展提升(通用)
heading = doc.add_heading('三、拓展提升', level=1)
for run in heading.runs:
set_chinese_font(run, 'SimHei', 14, True)
p = doc.add_paragraph()
run = p.add_run('7. 联系生活实际,谈谈你的感受或收获')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
p = doc.add_paragraph()
run = p.add_run('8. 创意表达(画一画、写一写、演一演)')
set_chinese_font(run, 'SimSun', 12)
p = doc.add_paragraph()
run = p.add_run('________________________________________________________________')
set_chinese_font(run, 'SimSun', 11)
p.paragraph_format.left_indent = Inches(0.3)
# 分页:参考答案
doc.add_page_break()
title = doc.add_heading(f'《{lesson_name}》参考答案', level=0)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in title.runs:
set_chinese_font(run, 'SimHei', 18, True)
p = doc.add_paragraph()
run = p.add_run('(教师根据实际教学情况填写参考答案)')
set_chinese_font(run, 'SimSun', 12)
# 保存
output_file = f"练习题_{lesson_name}.docx"
doc.save(output_file)
print(f"练习题已生成: {output_file}")
return output_file
if __name__ == "__main__":
if len(sys.argv) < 3:
print("用法: python generate_docx.py <课文名> <课文类型> [备课资料文件路径]")
print("课文类型: 古诗/现代文/寓言/童话/说明文")
sys.exit(1)
lesson_name = sys.argv[1]
lesson_type = sys.argv[2]
content_file = sys.argv[3] if len(sys.argv) > 3 else None
create_exercises(lesson_name, lesson_type, content_file)
```
### scripts/generate_ppt.py
```python
#!/usr/bin/env python3
"""
生成教案 PPT - 支持多种课文类型
用法: python generate_ppt.py <课文名> <年级> <课文类型> [备课资料文件路径]
"""
import sys
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
from pptx.dml.color import RGBColor
def create_ppt(lesson_name, grade, lesson_type, content_file=None):
"""基于备课资料生成教案 PPT"""
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
# 根据课文类型调整副标题
type_names = {
'古诗': '古诗教学',
'古诗词': '古诗教学',
'现代文': '现代文教学',
'散文': '散文教学',
'寓言': '寓言教学',
'童话': '童话教学',
'说明文': '说明文教学'
}
type_display = type_names.get(lesson_type, '语文教学')
# 第1页:标题页
slide_layout = prs.slide_layouts[6] # 空白布局
slide = prs.slides.add_slide(slide_layout)
# 添加标题背景
shape = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(0), Inches(0),
prs.slide_width, prs.slide_height)
shape.fill.solid()
shape.fill.fore_color.rgb = RGBColor(70, 130, 180)
shape.line.fill.background()
# 添加标题
title_box = slide.shapes.add_textbox(Inches(0.5), Inches(2.5), Inches(12.333), Inches(1.5))
tf = title_box.text_frame
p = tf.paragraphs[0]
p.text = f"《{lesson_name}》"
p.font.size = Pt(54)
p.font.bold = True
p.font.color.rgb = RGBColor(255, 255, 255)
p.alignment = PP_ALIGN.CENTER
# 副标题
p2 = tf.add_paragraph()
p2.text = f"{grade} {type_display}教案"
p2.font.size = Pt(32)
p2.font.color.rgb = RGBColor(255, 223, 186)
p2.alignment = PP_ALIGN.CENTER
p2.space_before = Pt(20)
# 第2页:教学目标
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "教学目标"
content_shape = slide.placeholders[1]
tf = content_shape.text_frame
tf.text = "知识目标:"
p = tf.add_paragraph()
p.text = "• 认识本课生字,正确、流利地朗读课文"
p.level = 1
p = tf.add_paragraph()
p.text = "• 理解课文内容,掌握重点词语"
p.level = 1
p = tf.add_paragraph()
p.text = "能力目标:"
p = tf.add_paragraph()
p.text = "• 培养阅读理解能力和语言表达能力"
p.level = 1
p = tf.add_paragraph()
p.text = "情感目标:"
p = tf.add_paragraph()
p.text = "• 体会课文情感,激发学习兴趣"
p.level = 1
# 第3页:教学重难点
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "教学重难点"
content_shape = slide.placeholders[1]
tf = content_shape.text_frame
tf.text = "教学重点:"
p = tf.add_paragraph()
p.text = "• 理解课文主要内容"
p.level = 1
p = tf.add_paragraph()
p.text = "• 掌握重点字词,正确流利朗读"
p.level = 1
p = tf.add_paragraph()
p.text = "教学难点:"
p = tf.add_paragraph()
p.text = "• 体会课文表达的思想感情"
p.level = 1
p = tf.add_paragraph()
p.text = "• 学习作者的表达方法"
p.level = 1
# 第4页:教学过程-导入
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "教学过程 - 导入新课"
content_shape = slide.placeholders[1]
tf = content_shape.text_frame
tf.text = "一、创设情境,导入新课(5分钟)"
p = tf.add_paragraph()
p.text = "• 谈话导入,激发兴趣"
p.level = 1
p = tf.add_paragraph()
p.text = "• 揭示课题,齐读课题"
p.level = 1
p = tf.add_paragraph()
p.text = "• 简介作者/背景(如需要)"
p.level = 1
# 第5页:教学过程-初读
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "教学过程 - 初读感知"
content_shape = slide.placeholders[1]
tf = content_shape.text_frame
tf.text = "二、初读课文,整体感知(10分钟)"
p = tf.add_paragraph()
p.text = "• 自由朗读课文,标出生字词"
p.level = 1
p = tf.add_paragraph()
p.text = "• 检查生字词认读情况"
p.level = 1
p = tf.add_paragraph()
p.text = "• 指名分段朗读课文"
p.level = 1
p = tf.add_paragraph()
p.text = "• 思考:课文主要讲了什么?"
p.level = 1
# 第6页:教学过程-精读
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "教学过程 - 精读理解"
content_shape = slide.placeholders[1]
tf = content_shape.text_frame
tf.text = "三、精读课文,深入理解(15分钟)"
p = tf.add_paragraph()
p.text = "• 品读重点段落,理解关键词句"
p.level = 1
p = tf.add_paragraph()
p.text = "• 讨论交流,体会情感"
p.level = 1
p = tf.add_paragraph()
p.text = "• 指导有感情地朗读"
p.level = 1
p = tf.add_paragraph()
p.text = "• 学习写作方法(如适用)"
p.level = 1
# 第7页:教学过程-巩固
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "教学过程 - 巩固拓展"
content_shape = slide.placeholders[1]
tf = content_shape.text_frame
tf.text = "四、总结提升,拓展延伸(10分钟)"
p = tf.add_paragraph()
p.text = "• 回顾课文主要内容"
p.level = 1
p = tf.add_paragraph()
p.text = "• 总结学习收获"
p.level = 1
p = tf.add_paragraph()
p.text = "• 拓展阅读/相关练习"
p.level = 1
p = tf.add_paragraph()
p.text = "• 布置课后作业"
p.level = 1
# 第8页:板书设计
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "板书设计"
content_shape = slide.placeholders[1]
tf = content_shape.text_frame
tf.text = f"《{lesson_name}》"
p = tf.add_paragraph()
p.text = ""
p = tf.add_paragraph()
p.text = "【主要内容】"
p = tf.add_paragraph()
p.text = ""
p = tf.add_paragraph()
p.text = "【重点字词】"
p = tf.add_paragraph()
p.text = ""
p = tf.add_paragraph()
p.text = "【中心思想】"
# 第9页:作业布置
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "作业布置"
content_shape = slide.placeholders[1]
tf = content_shape.text_frame
tf.text = "1. 熟读课文,背诵重点段落(如需要)"
p = tf.add_paragraph()
p.text = "2. 抄写生字词,完成课后习题"
p = tf.add_paragraph()
p.text = "3. 预习下一课内容"
p = tf.add_paragraph()
if lesson_type in ['古诗', '古诗词']:
p = tf.add_paragraph()
p.text = "4. 搜集其他相关古诗,读一读"
else:
p = tf.add_paragraph()
p.text = "4. 观察生活中的相关现象,写几句话"
# 保存
output_file = f"教案_{lesson_name}.pptx"
prs.save(output_file)
print(f"PPT 已生成: {output_file}")
return output_file
if __name__ == "__main__":
if len(sys.argv) < 4:
print("用法: python generate_ppt.py <课文名> <年级> <课文类型> [备课资料文件路径]")
print("课文类型: 古诗/现代文/寓言/童话/说明文")
sys.exit(1)
lesson_name = sys.argv[1]
grade = sys.argv[2]
lesson_type = sys.argv[3]
content_file = sys.argv[4] if len(sys.argv) > 4 else None
create_ppt(lesson_name, grade, lesson_type, content_file)
```