在线体验:小猫头鹰课堂 · 支持电脑和手机浏览器,无需安装。
版本说明(2026-10-05):当前线上 Web 已部署
main的判分与音频兼容更新,并保留首次听完讲解才解锁的边框光环体验。下文本地启动步骤使用main。完整资源包:v1.2.0-assets。包含新版 188 篇语文阅读、936 道配套题及既有四科资源;无需先安装旧版本。Release 中的
web-source.zip是资源包发布时的源码快照,早于当前线上语音兼容和界面修复。详见 安装与升级说明。
一个免费、开源、纯公益的小学全科学习平台
我们相信:每一个中国孩子,无论身处北上广深,还是大山深处的乡村小学,都应该拥有一样好的学习资源。
让孩子在玩中学,让 AI 方便你我他。 ❤️
中国的教育资源分布不均是一个长期存在的问题。一线城市的孩子可以购买数百元一套的教辅、上价格高昂的补习班;而偏远地区的孩子,往往连一本配套练习册都难以获得。
ChinaStudyFree 希望借助 AI 的力量,改变这件事:
- 📚 覆盖小学全科:语文、数学、英语、科学
- 🆓 免费使用:不卖课、不做广告;Web 学习记录保存在当前浏览器
- 🤖 AI 生成题目:基于教材知识体系生成单元小测与知识讲解,持续接受教师复核
- 🔊 全站语音:题目、选项、知识讲解均配有 TTS 语音朗读
- 📖 课文听读:语文/英语课文逐句跟读,配合课本原页展示
- 📚 课外故事:AI 生成 284 篇分级读物 + 阅读理解题 + 配图,巩固课内知识
- 🎮 在玩中学:题目形式生动、即时反馈,让孩子在闯关和互动中建立对知识的兴趣
- 🌏 服务每一个孩子:从一年级到六年级,只要有一台能上网的设备,就能用
![]() 年级选择 |
![]() 学科总览 |
![]() 学习路径 |
![]() 单元答题 |
![]() 课文听读 |
![]() 课外故事 |
![]() 错题回顾 |
![]() 个人中心 |
![]() 学习路径 |
![]() 答题反馈 |
![]() 商店 |
![]() 我的 |
![]() 课文听读 |
![]() 错题本 |
![]() 每日任务 · 周报 |
![]() 深色模式 |
全部 12 张界面截图与说明见
docs/ios-ux-gallery.html(本地打开即可,支持点击放大)。
| 功能 | 说明 |
|---|---|
| 单元小测 | 跟着课本章节走,学完一课就能练 |
| 知识讲解 | 已有资料支持概念、公式和易错点讲解;部分课程仍需补齐 |
| 课文听读 | 语文/英语课文逐句朗读,支持跟读练习,展示课本原页 |
| 跟读录音 | 浏览器内录音与回放,不上传录音;需要 HTTPS 和麦克风授权,暂无语音识别评分 |
| 课外故事 | 每单元 2 篇 AI 分级故事 + 阅读理解题 + 儿童插画配图 |
| 全站 TTS | 题目、选项、讲解、故事文本均可朗读;Web 使用 65,694 个兼容 MP3 音频,保留原 Opus 资源 |
| 首次讲解 | 进入课程自动尝试播放,听完才解锁下一步;按钮边框光环跟随真实播放进度,不显示秒数 |
| 学习进度 | 当前浏览器保存完成情况、正确率与阅读星级;暂无云端账号和跨设备同步 |
| 连击系统 | 连续答对触发连击动画与语音激励 |
| 错题与学习报告 | 错题复习、每日目标、本周报告与家长每日学习时间限制 |
浏览器可能限制首次自动播放;可点标题旁的小喇叭恢复播放。静音或播放失败时提供“阅读后继续”。清除浏览器数据会影响本地学习记录。
覆盖学科与版本:
| 学科 | 版本 | 年级 | 课外故事 |
|---|---|---|---|
| 数学 | 人教版 | 一至六年级 | — |
| 语文 | 统编版 | 一至六年级 | 188 篇 |
| 英语 | 人教版 PEP | 三至六年级 | 96 篇 |
| 科学 | 教科版 | 一至六年级 | — |
当前资源规模:44 册教材、2,166 个课节、6,545 道单元练习、779 篇课文、284 篇故事和 1,226 道故事阅读题(语文 936 道、英语 290 道)。这是资源覆盖统计,不代表所有题目已通过教师逐题审核。
Docker 家庭部署:包含 Dockerfile 的当前代码版本支持 docker compose up -d --build,会自动下载完整资源并构建,无需自行安装 Node.js、Python 或 FFmpeg;见 Docker 安装说明。本节以下命令用于启动当前 main 版本。
安卓自行安装:用 Android Studio 打开 apps/android,或从 GitHub Actions 下载构建成功的调试 APK。当前是加载 HTTPS 课堂的在线客户端;构建步骤、录音权限和已知限制见 安卓工程说明。
以下步骤启动当前线上版本。需要 Node.js 20+、Python 3.9+,以及带 libmp3lame 的 FFmpeg;请将 Python 和 FFmpeg 加入系统 PATH。
git clone --branch main https://github.com/wuwangzhang1216/ChinaTextbookStudyFree.git
cd ChinaTextbookStudyFree音频、配图、课本原页和题库数据体积较大,通过 GitHub Release 分发,不包含在 Git 仓库中。
# macOS / Linux:在仓库根目录执行
python3 scripts/install-release.py --tag v1.2.0-assets
# Windows PowerShell
py -3 scripts/install-release.py --tag v1.2.0-assets安装器下载并校验以下 5 个包的 SHA-256,再解压到对应目录;升级时会更新已有文件。下载总量约 2.06 GB,解压、依赖和 Web MP3 转码还需要额外磁盘空间。已有自定义数据时,请先备份;旧版 download-assets.sh / .ps1 会跳过已存在的目录,不适合资源升级。
| 文件 | 内容 | 大小 | 解压到 |
|---|---|---|---|
audio.tar.gz |
81,017 个原音频文件,以 Opus 为主 | 1.29 GB | apps/web/public/audio/ |
story-images.zip |
472 张图,含 284 张原图与 188 张新版图 | 550.7 MB | apps/web/public/story-images/ |
textbook-pages.zip |
1,562 张课本页图 + 20 个页码映射 JSON | 211.6 MB | apps/web/public/textbook-pages/ |
data.zip |
前端构建数据 (JSON) | 4.9 MB | apps/web/public/data/ |
data-source.zip |
passages + stories 源 JSON | 833 KB | data/ |
以上为 Release 压缩包大小,按十进制计。manifest.json 和 SHA256SUMS 提供精确大小及校验值。另附 web-source.zip(约 2.1 MB),供复现资源发布时的历史 Web 版本。
在仓库根目录执行:
npm ci
npm run dev访问 http://localhost:3000 即可。首次启动会构建数据,并从 Release 的原音频生成 65,694 个 Web 兼容 MP3;这一步可能较慢,后续启动复用校验缓存,无需调用付费语音模型。Release 中尚未单独提供这些 Web MP3。
生产构建执行 npm run build,静态站点输出到 apps/web/out/;部署静态文件即可,不需要 Node.js 业务后端。类型检查使用 npm run type-check。
电脑使用侧栏和宽屏阅读布局,手机使用底部导航和单列阅读。此前线上版本已检查 23 类页面 × 7 种尺寸(320×568 至 1920×1080),并测试完整答题、阅读、刷新恢复、错题、商店和家长时间限制。2026-10-05 的 main 更新另通过 45 项线上 HTTP 检查、完整文件与媒体引用核对,并验证 320、390 和 1440 像素宽度的课程讲解播放与边框进度。手机尺寸模拟不等于真机验收:真实 iPhone/Android、抖音内置浏览器的播放和麦克风权限仍需复核。详见 Web 深测报告。
线上使用东京区域的私有 S3 + CloudFront HTTPS,使用 AWS 提供的链接;没有 EC2/Lightsail、数据库或业务后端。按存储、请求和流量计费,没有 $7.50/月的服务器固定费用。部署步骤见 AWS Web 部署说明。
需要 macOS + Xcode 16+ + XcodeGen:
brew install xcodegen # 首次安装
cd apps/mobile
xcodegen generate # 生成 .xcodeproj
open ChinaTextbookStudy.xcodeproj在 Xcode 里选 iPhone / iPad 模拟器,Cmd+R 即可运行。App 内置一本数学书(一年级上册 + 第一节课的 TTS 音频)作为离线种子,无需网络就能体验完整流程。
iOS 端特点:
- SwiftUI 原生(非 React Native),支持 iPhone + iPad(iPad 自动分栏布局)
- 域逻辑(SRS / 判分 / 成就 / 宝箱 / 吉祥物)从
packages/core逐文件对译为 Swift - 音频:Opus 预转码为 AAC m4a,
AVAudioPlayer播放,无第三方解码依赖 - 数据按书从 GitHub Release 按需下载,无需首启下载全部教材
- 包含单元测试与 UI 测试(答题闭环、退出确认、标签导航、装扮购买、每日任务)
统一设计系统(DesignSystem/)
全端共用一套令牌,没有任何页面掉回原生系统控件:
| 令牌 | 内容 |
|---|---|
DuoColors |
品牌色 + 语义色(bg / surface / border / ink…),浅色为主、深色为可选,同一份代码自动适配 |
DuoFont |
圆体字号角色(display / title / heading / body / caption…),根部统一 .fontDesign(.rounded) |
DuoLayout |
Space / Radius / Motion 三组令牌,全局共用一套动效曲线 |
DuoButtonStyle·DuoCardStyle |
标志性的立体「下沿」按压质感 |
学习体验
- 路径即首页:当前节点呼吸动效 + 真实单元进度环,点击弹出开始气泡
- 答错回炉重练:进度条只在答对时前进,且必定走满;错题自动进入 SRS 错题本
- 爱心耗尽拦截、退出二次确认、答错震屏与抖卡、每次点选都有触感与音效
- 结算页连胜与每日达标庆祝;错题复习不扣爱心且奖励经验值
- 课文/故事支持「朗读全文」逐句高亮跟随,读完奖励经验值
- 吉祥物「聪聪」(熊猫)以 SwiftUI Canvas 绘制,含呼吸、眨眼与情绪反应
装扮系统(earn → spend → express 闭环)
- 用学习赚来的宝石购买皮肤 / 主题 / 课程背景,购买即装备
- 皮肤:11 款配饰(学士帽、圆框眼镜、皇冠、法师帽、宇航员头盔、DJ 耳机…)直接画在聪聪身上,全局生效
- 主题:10 套配色通过
DuoColors.themeOverride重绘全局品牌色;深色系主题(暗夜模式 / 曜石黑)自动切换深色外观 - 课程背景:8 款渐变作用于答题页,按对比度需要自动降低强度,保证题目始终可读
- 商店里的每个格子都是实时预览:皮肤格是戴着该配饰的聪聪本人,主题格是该主题的真实配色
留存机制
- 每日任务:每天 3 个不同类型的任务(赚经验 / 完成小课 / 复习错题 / 读课文), 由日期做种子确定性生成——同一天任何时候打开都是同一组,且不需要服务端; 完成后可领取宝石奖励
- 本周报告:近 7 天经验值柱状图 + 与上周的增减对比,作为离线版的「和自己比」
- 连胜提醒:可选的本地通知,每晚 20:00 提醒保住连胜;当天已学习则自动顺延到 次日,绝不打扰。默认关闭,在设置里开启时才申请系统授权
更多上架相关细节见 apps/mobile/APPSTORE.md。
语文课外阅读的课文难度校准、题库审计,以及 GPT-6 Luna / Muse / Gemini TTS 修订流程见 内容质量审计与升级说明。 新版流程先生成各年级样例,审核、配图和配音完成后再替换,并保留原数据备份。
如需从教材 PDF 重新生成题库数据:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
# 配置 .env(填入 API Key)
# 生成题库
python scripts/quiz/pipeline.py --subject all
# 生成课外故事
python scripts/stories/pipeline.py --subject all
# 生成故事配图
python scripts/stories/images.py --subject all
# 生成 TTS 音频
python scripts/tts/collect_texts.py
python scripts/tts/api_tts.py
# 构建前端数据
npm run build:data --workspace=china-study-freeChinaStudyFree/
│
├── scripts/
│ ├── quiz/ # 题库生成 Pipeline
│ │ ├── pipeline.py # PDF → 大纲 → 题库
│ │ ├── prompts.py # AI Prompt 模板(按学科定制)
│ │ └── subjects.py # 学科 / 版本 / 年级配置
│ ├── stories/ # 课外故事生成 Pipeline
│ │ ├── pipeline.py # 大纲 → 分级故事 + 阅读理解题
│ │ ├── prompts_story.py # 故事 Prompt 模板 + JSON Schema
│ │ └── images.py # Gemini AI 配图生成
│ ├── passages/ # 课文抽取
│ │ ├── extract_passages.py # PDF → 逐句课文 JSON
│ │ └── render_pages.py # PDF → 课本原页 JPG
│ ├── tts/ # TTS 语音合成
│ │ ├── collect_texts.py # 扫描全部文本,生成待合成清单
│ │ └── api_tts.py # DashScope API 批量合成
│ ├── install-release.py # 校验并安装/升级 Release 资源(线上版本分支)
│ ├── download-assets.sh # 旧版资源下载器(Linux/macOS)
│ ├── download-assets.ps1 # 旧版资源下载器(Windows)
│ └── package-release.sh # 打包资源为 Release 附件
│
├── output/ # Pipeline 产出(大纲 + 题库 JSON)
│ ├── math/chinese/english/science/
│ │ ├── outlines/ # 教材知识大纲
│ │ └── quizzes/ # 单元题库
│
├── data/ # 源数据(通过 Release 下载)
│ ├── passages/ # 课文听读源 JSON(语文/英语)
│ └── stories/ # 课外故事源 JSON(语文/英语)
│
├── packages/core/ # TypeScript 共享域逻辑(Web 端运行时 + iOS 翻译蓝本)
│
└── apps/
├── mobile/ # iOS SwiftUI 端(iPhone + iPad)
│ ├── project.yml # XcodeGen 项目定义
│ ├── ChinaTextbookStudy/
│ │ ├── App/ # SwiftUI @main + NavigationStack/SplitView + 路由
│ │ ├── DesignSystem/ # DuoColors / DuoFont / DuoLayout / Button / Card / Effects
│ │ ├── Models/ # CoreTypes.swift(对译 packages/core/types.ts)
│ │ ├── Domain/ # SRS / Grade / Achievements / Chest / Cosmetics / MascotTriggers
│ │ ├── Services/ # DataLoader / AssetDownloader / AudioPlayer / Haptic / SFX
│ │ ├── Stores/ # ProgressStore / SettingsStore(持久化)
│ │ ├── Features/ # Onboarding / Home / Lesson / Review / Reading /
│ │ │ # Stories / Shop / Profile / Settings / Achievements
│ │ └── Components/ # PathMapView / MascotView / BottomTabBar / 反馈与庆祝件
│ ├── ChinaTextbookStudyTests/ # 单元测试(域逻辑 + 每日任务)
│ └── ChinaTextbookStudyUITests/ # UI 测试(答题闭环 / 导航 / 装扮 / 任务)
│
└── web/ # Next.js 前端(原 frontend/)
├── scripts/
│ └── build-data.ts # output/ + data/ → public/data/ 构建
├── src/
│ ├── app/ # 路由与页面
│ │ ├── book/ # 教材详情 / 学习路径
│ │ ├── reading/ # 课文听读
│ │ ├── stories/ # 课外故事阅读 + 答题
│ │ ├── lesson/ # 答题页面
│ │ ├── grade/ # 年级总览
│ │ ├── profile/ # 学习档案
│ │ ├── review/ # 错题回顾
│ │ └── shop/ # 商店 / 奖励
│ ├── components/ # UI 组件
│ ├── lib/ # 工具库(TTS、音效、状态)
│ ├── store/ # Zustand 状态管理
│ └── types/ # TypeScript 类型定义
└── public/
├── audio/ # TTS 音频(通过 Release 下载)
├── data/ # 题库+故事 JSON(通过 Release 下载)
├── story-images/ # AI 故事配图(通过 Release 下载)
└── textbook-pages/ # 课本原页图片(通过 Release 下载)
本项目引用的教材结构来自开源项目 TapXWorld/ChinaTextbook。
内容说明:
- 资源包包含教材知识大纲、课文文本及课本原页;教材文本与图片的版权属于各自权利人
- 单元练习和课外故事由 AI 生成并持续修订,生成内容仍需教师审核
- 项目的 MIT 代码许可不代表授予第三方教材内容的使用权
- 如相关版权方认为本项目存在任何问题,请与我们联系,我们会第一时间响应处理
这是一个纯公益项目,我们非常欢迎任何形式的参与:
- 👩🏫 一线老师:帮我们审核题目质量、指出错误、建议题型
- 👨👩👧 家长:把平台分享给需要的家庭,反馈孩子的使用体验
- 💻 开发者:提交 PR 修 bug、加功能、优化 UI
- 🎨 设计师:帮我们让界面对孩子更友好、更有趣
- 📣 任何人:把这个项目告诉一所乡村小学的老师
- 数学、语文、英语、科学 Pipeline
- Web 前端(单元小测 / 知识讲解 / 学习路径)
- Web 兼容 MP3 朗读与浏览器跟读录音回放
- PC / mobile 布局深测与东京 S3 + CloudFront 部署
- 课文听读(语文 / 英语,779 篇)
- 课外故事阅读(语文 188 篇 + 英语 96 篇,含 AI 配图)
- iOS 端(SwiftUI,iPhone + iPad)
- iOS 统一设计系统与游戏化学习体验(浅色为主 + 可选深色)
- 装扮系统闭环(皮肤 / 主题 / 课程背景购买后全局生效)
- 留存机制(每日任务 / 本周报告 / 连胜提醒推送)
- 道德与法治内容
- 语文扩展阅读升级与题库质量审计
- 持续教师复核、补齐知识讲解与题量:审计发现 1,498 课缺讲解、1,183 课仅 1 题,见 待修记录
- 离线版 / 校园内网部署包
- 云端学习记录与跨设备同步
- 老师端与班级学习报告
- 多端 App
本项目采用 MIT License 开源发布,详见 LICENSE。
我们不知道这个项目能走多远, 但我们知道,只要多一个孩子因为它而多做对一道题、 多理解一个知识点、多喜欢上一门课, 这件事就是值得的。
如果你认同我们的理念,欢迎 ⭐ Star 支持,也欢迎把它转发给任何一位你认识的老师和家长。
让每一个中国孩子,都能在玩中学。















