smartedu-textbook
skill
Warn
Health Warn
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 6 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
中小学电子教材下载器 · Claude Code Skill + CLI
README.md
smartedu-textbook
从国家中小学智慧教育平台(教育部主办)下载中小学电子课本,自动合成 PDF 并按
年级 / 科目 / 版本归档。
既是一个 Claude Code Skill,也是一个可独立运行的命令行工具。
python scripts/download.py --search "苏教版 三年级 数学 上册"
桌面/教材下载/三年级上册/数学/苏教版(江苏凤凰教育出版社)/
(根据2022年版课程标准修订)义务教育教科书•数学三年级上册.pdf 23.6 MB / 132 页
info.json
特点
- 说出书名就能下 —— 内置全量教材检索,覆盖 3085 本(小学 / 初中 / 高中),
不需要打开浏览器复制任何链接 - 不需要账号 —— 只用平台公开资源,不绕过任何鉴权
- 自动归档 —— 年级册次 / 科目 / 版本(出版社)三层目录,元数据全部来自官方,无需手工映射
- 规避旧版陷阱 —— 平台的单本详情接口会返回过期坐标,下到的是旧版教材且不会报错;
本工具只用权威目录源(见下方"实现要点") - 健壮 —— 断点续传、三镜像轮换、JPEG 完整性校验、PDF 自检、并发上限保护
安装
git clone https://github.com/DanielHuang-ning/smartedu-textbook.git
cd smartedu-textbook
pip install -r requirements.txt
需要 Python 3.10+。
作为 Claude Code Skill 使用时,把整个目录放进 ~/.claude/skills/(或项目的.claude/skills/),之后直接对 Claude 说"下载苏教版三年级数学上册"即可。
使用
下载
# 关键词
python scripts/download.py --search "苏教版 三年级 数学 上册"
# 结构化条件
python scripts/download.py --grade 八年级 --subject 物理 --version 苏科版 --volume 上册
先看有哪些版本
python scripts/download.py --list --grade 三年级 --subject 数学
匹配 14 本:
…义务教育教科书•数学三年级上册 [小学 · 三年级上册 · 数学 · 苏教版]
…义务教育教科书 · 数学三年级上册 [小学 · 三年级上册 · 数学 · 人教版]
…
批量
cat > books.txt <<'EOF'
苏教版 二年级 数学 上册
苏教版 二年级 数学 下册
苏教版 三年级 数学 上册
EOF
python scripts/download.py --batch books.txt
目录里没有的教材(约 15%)
在平台上右键教材封面图 → 复制图片地址:
python scripts/download.py --url "https://r3-ndr.ykt.cbern.com.cn/.../transcode/image/1.jpg"
选项
| 选项 | 默认 | 说明 |
|---|---|---|
--out <目录> |
桌面/教材下载 | 输出根目录 |
--jobs N |
8 | 并发数,上限 16 |
--slow |
关 | 弱网模式,降低请求频率 |
--compress |
关 | 压缩 PDF(体积约 1/3,画质略降) |
--keep-pages |
关 | 保留单页图片 |
--force |
关 | 已存在时重新下载 |
--refresh |
关 | 强制刷新目录缓存 |
--yes |
关 | 非交互模式(条件不唯一时直接报错而非等待选择) |
⚠️ 请核对版次
2024–2025 年是义务教育教材按 2022 年版新课标换版的窗口,新旧版单元结构差异很大。
下载后请翻到 PDF 的版权页(通常第 3–5 页)核对「版次」。
新版教材书名带「(根据2022年版课程标准修订)」前缀。
实现要点
平台有三处可拿教材信息,质量差别很大
| 数据源 | 状态 |
|---|---|
.../zxx/ndrs/tch_material/version/data_version.json |
403。网上多数教程用的是这个路径,少了 resources/,因而普遍认为接口已下线 |
.../resources/tch_material/details/{id}.json |
可用,但数据过期:返回 2023 年的旧版坐标,provider_list 还是平台方而非出版社 |
.../resources/tch_material/version/data_version.json → part_*.json |
本工具使用的源。权威、最新,3637 条完整元数据 |
旧版坐标为什么危险
同一本三年级数学,两个来源给出不同 timestamp:
| timestamp 来源 | 第 1 页 | 第 50 页 | 第 132 页 |
|---|---|---|---|
| 详情接口(≈2023-07) | ✅ | ✅ | ❌ 403 |
| 目录分片(≈2025-08) | ✅ | ✅ | ✅ |
用旧坐标能下载、能合成、页数看着也正常——只有翻到版权页才会发现是旧版教材。
所以本工具代码里不给详情接口留调用入口。
为什么走图片而不是整本 PDF
平台把资源分成两类,鉴权规则不同:
| 资源 | 状态 |
|---|---|
整本 PDF .pkg/pdf.pdf |
403,需登录 Token |
单页图 .t/zh-CN/{ts}/transcode/image/{n}.jpg |
200,公开 |
本工具只走公开的图片通道,抓单页后本地合成 PDF。内容完全一致,
代价是稍慢,好处是不需要用户交出任何账号凭据。
其它
- 页数探测用倍增 + 二分,约 12–16 次请求;平台对不存在的页返回 403 而非 404,
而限流同样是 403,因此判定末页前会二次确认,避免把限流误判成"下完了" - PDF 合成默认
img2pdf:原样嵌入 JPEG,无损,画质等同原件。
实测同一册 118 页,img2pdf 62.6 MB、Pillow 重编码 19.9 MB——
无损版体积约为压缩版 3 倍,需要小文件时加--compress。
Pillow 路径采用惰性打开、不预先convert(),否则一册 130 页全部解码约 1 GB - Windows 桌面路径读注册表而非拼
%USERPROFILE%\Desktop,
否则 OneDrive 重定向后会写到用户看不到的地方
已知限制
- 约 15% 的教材目录中无预览坐标,需用
--url回退 - 高中教材命名不如义务教育规整,检索可能需要人工确认
- 平台偶发限流,弱网建议
--jobs 4 --slow - 只下载电子课本,不下载教师用书、课件、音视频
免责声明
- 本工具仅访问国家中小学智慧教育平台公开提供的电子教材资源,
不破解、不绕过任何鉴权机制,也不实现需要登录的下载通道 - 教材版权归各出版社所有。下载内容仅供个人教学、学习使用
- 禁止将本工具用于商业用途,禁止二次分发下载得到的教材文件,禁止规模化爬取
- 工具内置并发上限与速率控制,且不提供解除开关
- 平台接口随时可能变更或关闭,本工具不保证长期可用
- 使用者须自行遵守当地法律法规及平台服务条款,作者不承担因使用本工具产生的任何责任
License
代码部分采用 MIT License。
License 仅覆盖本仓库的代码,不涉及通过本工具获取的任何教材内容。
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found