国家中小学智慧教育平台(
basic.smartedu.cn)教材资源下载工具
一键批量下载教材听力音频(MP3)和教材电子版(PDF)。既是 WorkBuddy / CodeBuddy Agent Skill,也可作为独立 Node.js 脚本使用。
💡 本仓库
edu_skills收录教育相关技能,当前包含smartedu-downloader。
| 功能 | 说明 |
|---|---|
| 🎧 听力下载 | 批量抓取英语等学科的 Listening MP3 |
| 📄 PDF 下载 | 下载教科书电子版本体 PDF |
| 🤖 auto 模式 | 有听力则下听力,没有则自动切换下 PDF |
| 📦 批量处理 | 一次登录连续下载多个教材 |
| 🏷️ 自动命名 | 按教材官方标题自动命名文件 |
已实测支持:外研社版英语(七上/七下/八上/八下)听力,以及语文/数学/英语/生物/历史/地理等各学科教材 PDF。
smartedu-downloader/
├── README.md # 本文件
├── SKILL.md # 技能说明(含完整技术细节与排错)
├── LICENSE # MIT 协议
├── .gitignore
└── scripts/
└── smartedu_downloader.js # 统一下载脚本(听力 + PDF)
- 平台的资源清单 API 无需登录即可访问,但实际文件 CDN(
r*-ndr-private.ykt.cbern.com.cn)自 2024 年 8 月起需要X-Nd-Auth鉴权头。 - 该鉴权头由登录后 token 中的
access_token+mac_key经 HMAC-SHA256 生成。 - 登录会触发腾讯滑块验证码(无法自动破解),因此采用「脚本自动填账号密码 + 用户手动拖动滑块 + 脚本自动取 token 并下载」的混合方式。
git clone https://github.com/huang772607830/edu_skills.git
cd edu_skills需要 Node.js 18+ 和 playwright(含 chromium):
npm install playwright
npx playwright install chromium打开教材页面,从浏览器地址栏 URL 中复制 contentId 的值:
https://basic.smartedu.cn/tchMaterial/detail?...contentId=b7ca9536-ccd7-a4db-56b3-971645c54515...
└──────────── 这一段就是 contentId ────────────┘
所有参数通过环境变量传入:
| 变量 | 说明 |
|---|---|
SMARTEDU_PHONE |
登录手机号(必需) |
SMARTEDU_PASS |
登录密码(必需) |
SMARTEDU_JOBS |
JSON 数组 [{"cid":"<contentId>","name":"<可选名称>"}](必需) |
SMARTEDU_OUTPUT_DIR |
输出根目录(默认 ./smartedu_downloads) |
SMARTEDU_MODE |
audio | pdf | auto(默认 auto) |
示例(一次登录批量下载多个教材):
SMARTEDU_PHONE="你的手机号" SMARTEDU_PASS="你的密码" \
SMARTEDU_MODE="auto" \
SMARTEDU_OUTPUT_DIR="./downloads" \
SMARTEDU_JOBS='[
{"cid":"b7ca9536-ccd7-a4db-56b3-971645c54515"},
{"cid":"540ac93d-67fc-4353-9e49-1ef20d02b5a4"}
]' \
node scripts/smartedu_downloader.js运行后浏览器会弹出并自动填好账号密码,请手动:
① 点击「登录」按钮 → ② 拖动滑块验证码 → ③ 等待自动跳转
之后脚本自动取 token 并下载全部教材。name 省略时会自动用教材官方标题命名。
Q:运行后一直卡住 / 提示 5 分钟超时? A:脚本最多等 6 分钟让你手动完成「登录 + 滑块验证码」。确保浏览器弹窗里点了登录并拖动滑块通过验证。不要用后台方式运行,否则看不到浏览器窗口。
Q:下载失败,报 Connection was reset 或超时?
A:多为网络/代理问题。若开了系统代理(如 HTTP_PROXY 环境变量),确保代理软件正在运行;否则关闭代理走直连。
Q:某个教材下不到听力?
A:非英语学科(语文/数学/历史等)通常没有听力音频。auto 模式会自动改下该教材的 PDF 本体。
Q:token 相关报错(缺少 access_token / mac_key)?
A:平台 token 为嵌套结构 {value:"<json>", expire},脚本已自动解包。若仍报错,多为登录未真正完成,请重试并确认验证码通过。
更多技术细节与排错见 SKILL.md。
将本技能目录放到用户级技能目录下:
git clone https://github.com/huang772607830/edu_skills.git \
~/.workbuddy/skills/smartedu-downloader之后在对话中说「用智慧教育下载器下载教材」并提供账号和教材链接即可自动触发。
- 账号密码仅用于当次登录,通过环境变量传入,不写入任何文件或日志。
- 下载所得为教材公开资源,仅供个人学习使用,请勿用于商业用途或大规模爬取。
- 本工具与国家中小学智慧教育平台无任何官方关联。