乐于分享
好东西不私藏

怎么下载电子版小学、初中和高中的教材呢

怎么下载电子版小学、初中和高中的教材呢

国家中小学智慧教育平台 · 教材下载工具使用说明

把平台上能看到的电子教材一键下载成 PDF 存到本地。
适用对象:所有在该平台有账号、想把电子课本保存到自己电脑上用的人(老师、家长、学生皆可)。

1. 这是什么

一个本地运行的小脚本 + 一个可选的 Claude 技能包 (skill)。
脚本模式
:在 Terminal 里跑一行命令,把给定链接里的教材下载下来。
Skill 模式
:把工具安装到 Claude Code等AI框架里,以后直接对 Claude 说“下载这本教材 <链接>”就自动完成,不用敲命令。
两种模式底层用的是同一个 Python 脚本,只是入口不同。

2. 你需要准备的

一台 Mac / Windows / Linux 电脑
Python 3.8 或更高
:Terminal 里执行 python3 –version,能输出版本号就行
requests 库
:Terminal 里执行
python3 -m pip install --user requests
一个basic.smartedu.cn 账号(正常在浏览器里能看到教材即可)

3. 安装(只需一次)

路线 A:只用脚本(最简单)
把脚本放在你常用的目录下即可,例如 ~/claude/smartedu_downloader.py。不用做别的。
路线 B:作为 Claude Skill 安装(推荐给长期重度使用)
安装后,在 Cowork / Claude Code 里直接说”帮我下这本教材 “就会自动触发。
一键安装:
bash ~/claude/smartedu-downloader/install.sh
脚本会把目录复制到 ~/.claude/skills/smartedu-downloader/,并检查 Python 与 requests 依赖。

4. 获取访问令牌 access_token

平台的 PDF CDN 要求请求头里带一个 token。这个 token 是你登录后浏览器本地保存的登录凭证,有效期几小时到一天。需要做一次,过期再做一次。
下面三条路径任选一条,拿到 token 后进入第 5 步。
路径 1:浏览器 Application 面板(最稳,推荐)
用你的账号登录
按 F12 打开开发者工具,点顶栏的Application
左侧依次展开:Storage → Local Storage →https://basic.smartedu.cn
在右侧 Key 列表里,找一个以ND_UC_AUTH开头的 key(例如 ND_UC_AUTH-PC-xxxx)
点它,下方 Value 区会显示类似这样的 JSON:
{"value":"{\"access_token\":\"eyJhbGci...很长的一串...\",\"expires_at\":...}","expiration":...}
把里面 access_token 对应的一长串(以 eyJ 开头)完整复制出来
路径 2:浏览器 Console 面板(快但可能被浏览器拦)
登录后 F12 →Console
若 Chrome 第一次要求允许粘贴,先手动输入allow pasting 回车
再粘贴下面整段代码回车:
(() => {  for (const k in localStorage) {    if (k.startsWith('ND_UC_AUTH')) {      try {        const o = JSON.parse(localStorage[k]);        console.log(JSON.parse(o.value).access_token);        return;      } catch (e) {}    }  }  console.log('没找到 token,确认已登录');})();
控制台会打出一长串 eyJ… 字符,复制即可
路径 3:让 Claude 帮你处理
把第 1 条路径第 5 步里那整段 JSON value原封不动发给 Claude,Claude 会自动摘出 access_token 并帮你保存。
保存 token(任一路径拿到 token 后做一次)
在 Terminal 执行(把 eyJ… 换成你实际复制到的那一串):
echo 'eyJ...' > ~/.smartedu_tokenchmod 600 ~/.smartedu_token
这样写进去,之后每次下载都会自动读取,不用再带 –token。
也可以改用环境变量:
export SMARTEDU_TOKEN='eyJ...'

5. 下载教材

5.1 下载单本

python3 ~/claude/smartedu_downloader.py \  "https://basic.smartedu.cn/tchMaterial/detail?contentType=assets_document&contentId=c1897b18-b302-4e8d-9fd4-40915c4b05c2&catalogType=tchMaterial&subCatalog=tchMaterial" \  --out ~/claude/books
脚本会自动:
从链接里抽出 contentId
请求平台元数据拿到教材标题和 PDF 直链
依次尝试 r1 / r2 / r3 三个 CDN 镜像
按教材真实标题命名 PDF 存到 –out 指定目录

5.2 只给 contentId 也可以

python3 ~/claude/smartedu_downloader.py c1897b18-b302-4e8d-9fd4-40915c4b05c2 --out ~/claude/books

5.3 批量下载

把所有 URL(或 contentId)写到一个文本文件,每行一个,

开头的行会被忽略:

urls.txt

https://basic.smartedu.cn/tchMaterial/detail?...contentId=c1897b18-b302-4e8d-9fd4-40915c4b05c2&...https://basic.smartedu.cn/tchMaterial/detail?...contentId=b87e153f-a64c-451a-aa6c-6ed9ac7d6821&...

数学上册

f00a1234-…
然后:
python3 ~/claude/smartedu_downloader.py urls.txt --out ~/claude/books

5.4 Claude Skill 模式

如果装了 skill,直接说:

帮我下这本教材:https://basic.smartedu.cn/tchMaterial/detail?...

Claude 会判断是否已有 token、是否过期,并决定是直接下载还是先引导你取 token。

5.5 所有命令行选项

python3 smartedu_downloader.py <URL|UUID|file.txt>... [--out DIR] [--token TOKEN]
参数
说明
target
教材详情页 URL、contentId UUID、或 .txt 清单文件(可混合多个)
--out DIR
输出目录,默认当前目录
--token TOK
单次传入 token;不加则读 $SMARTEDU_TOKEN 或 ~/.smartedu_token
退出码 0 表示全部成功,非 0 表示有失败项(具体原因会打印在输出里)。

6. 常见问题

Q1:提示 HTTP 401 / 所有镜像都失败了
Token 缺失、过期或失效。回到第 4 步重新取一个 token 即可。脚本在 401 时会自动打印”如何重取 token”的提示。
Q2:Console 粘贴代码没反应
Chrome 新版开启了防 Self-XSS 保护,第一次粘贴要先在 Console 里手动敲
allow pasting
回车后再粘贴代码。或者直接走第 4 步的路径 1(Application 面板),不用 Console。
Q3:Application → Local Storage 里没有 ND_UC_AUTH 开头的 key
说明你没真的登录到 basic.smartedu.cn,或者登录态在别的子域名下。刷新页面、确认右上角显示用户名,再看一遍。
Q4:下载到的 PDF 打不开或是 0 字节
多半是下载中途断了。脚本用 .part 临时文件 + 下完再改名的方式规避这个问题,如果仍看到 .part 残留,说明最后一次下载没完成,删掉重下即可。
Q5:多本教材下载,中间有一本失败怎么办
脚本对每一项用 try/except 独立处理,某一本失败不会影响后面的。全部结束后会报总体失败数,你再单独重试失败那几本即可。
Q6:需不需要翻墙
不需要。平台 CDN 是中国大陆可直连的。
Q7:会不会被限速 / 封号
正常个人下载节奏问题不大。不要开几十个并发拼命拉,也不要把 token 发给别人共享使用。
Q8:Token 要多久换一次
观察下来大约几小时到一天。出现 401 就重取一次。你也可以在浏览器保持登录状态,每次下载前重取一次 token,不怕过期。


附录:完整命令速查

首次:安装 requests

python3 -m pip install --user requests

一次性:保存 token(登录后从浏览器拿到的 eyJ…)

echo 'eyJ...' > ~/.smartedu_token && chmod 600 ~/.smartedu_token

日常:下载单本

python3 ~/claude/smartedu_downloader.py "<链接或UUID>" --out ~/claude/books

日常:批量下载

python3 ~/claude/smartedu_downloader.py urls.txt --out ~/claude/books

可选:安装 Claude Skill

bash ~/claude/smartedu-downloader/install.sh
如果在使用中遇到问题,最简单的办法:把完整报错信息复制下来贴给 Claude,一般能立刻定位问题。