Skip to content

Repository files navigation

MoKao — 粉笔模考采集 Chrome 扩展

一款面向公考备考的 Chrome 扩展工具,自动从粉笔模考页面提取完整试卷(题目/选项/解析/图片/材料),生成带 YAML Frontmatter 的结构化 Markdown 笔记,一键直存 Obsidian 知识库。

✨ 功能特性

  • 🎯 一键提取 — 自动采集完整试卷(题干、选项、答案、解析),支持懒加载滚动与材料页
  • 🖼️ 图片支持 — 提取题干/选项/解析/材料图片,公式图片自动内联;可选 Base64 内嵌或保留 URL
  • 📊 分数爬取 — 自动识别考试成绩(多策略兜底),可手动编辑
  • 🏷️ 笔记属性面板 — 可编辑 title / date / source / tags / score,自动生成 YAML Frontmatter
  • 📖 Obsidian 直存 — 三级降级:本地服务器直写 Vault → obsidian:// URI 剪贴板 → 本地下载
  • 🔧 输出可配置 — 图片模式、材料开关、答案/解析开关、题目分隔符均可设置

📦 安装

  1. 下载最新的 mokao_vX.X.X.zip 并解压
  2. 打开 Chrome,访问 chrome://extensions/
  3. 开启右上角 开发者模式
  4. 点击 加载已解压的扩展程序,选择解压后的文件夹
  5. 扩展图标出现在工具栏,安装完成

🚀 使用方法

  1. 打开粉笔模考解析页 — 访问 spa.fenbi.com 的模考解析(solution)或报告(report)页面
  2. 点击扩展图标 — 弹出 MoKao 面板,自动检测页面
  3. 点击「提取题目」 — 自动滚动加载并提取全部题目/材料/分数
  4. 编辑笔记属性 — 修改标题、标签、分数等(提取后自动展开)
  5. 保存 — 保存到 Obsidian(直存或剪贴板),或下载 Markdown 文件

⚙️ 设置说明

扩展设置页(扩展图标 → ⚙️ 设置)包含两个 Tab:

  • 通用设置 — 图片处理(Base64/URL/跳过)、题目分隔符、导出内容开关(统计/材料/我的答案/解析)
  • Obsidian 直存 — 本地服务器配置(地址、Vault 路径、保存文件夹、文件名模板、启用开关)

🛠️ 项目结构

mokao-chrome-extension/
├── manifest.json               # 扩展配置(Manifest V3)
├── content.js                  # 页面注入脚本(DOM 提取逻辑)
├── popup.js                    # 弹窗交互逻辑
├── popup.html                  # 弹窗 UI
├── settings.html               # 设置页面
├── settings.js                 # 设置逻辑(配置统一存 mokao_props)
├── mokao_obsidian_server.py    # 可选:Obsidian 直存本地服务器
├── vault_config.json           # 服务器配置文件(自动生成)
├── icon16.png / icon48.png / icon128.png
└── crawl-template.json         # 爬取模板配置

🖥 Obsidian 直存(可选)

默认无需后端,使用 obsidian:// URI + 剪贴板即可保存(需本机安装 Obsidian)。

如需服务器直写 Vault(不依赖 Obsidian 协议):

python mokao_obsidian_server.py --vault "你的Obsidian库路径"

服务器只监听 localhost:8765,不暴露外网。首次运行会要求选择 Vault 目录,配置保存在 vault_config.json

在设置页「Obsidian 直存」中勾选"启用直存"后,点「保存到 Obsidian」会先尝试服务器直存(文件直接写入 Vault,不占剪贴板、无大小限制);服务器离线或未设置 Vault 时自动降级obsidian:// URI 剪贴板方式。

📋 技术细节

  • Manifest V3 — 符合 Chrome 最新扩展标准
  • Content Script — 运行在粉笔页面上下文,自动复用浏览器登录态(Cookie)
  • 选择器适配层 — content.js 顶部 SELECTORS 常量集中管理全部 DOM 选择器,粉笔改版时单点维护
  • 分数提取 — 三策略兜底:/100 兄弟节点 → "我的得分"容器 → 全文正则
  • 设置持久化 — 统一存储在 localStorage['mokao_props'],设置页与弹窗共享

🔄 版本历史

版本 变更
v2.9.7 图片下载失败统计(记录失败数/HTTP状态/异常原因,日志可见)
v2.9.6 材料起始题号最终兜底:按"资料分析在试卷末尾、每组5题"推断,四川卷等无题号区间的材料正确挂接
v2.9.5 extract_materials 响应增加调试信息(题目数/首末题号/材料容器HTML)
v2.9.4 提取前轮询等待材料容器异步渲染(最多10秒);popup 材料为 0 时回退单独请求
v2.9.3 材料随 extract 在同一 DOM 快照提取(避免虚拟滚动回收题目 DOM)
v2.9.2 材料起始题号双向推断(容器后第一题 / 容器前最后一题+1)
v2.9.1 修复图片下载被 CORS 拦截(manifest 增加 fb.fenbike.cn 权限);popup 默认图片模式改为 base64;修复资料分析材料未提取(支持独立容器 + 题目内嵌双结构)
v2.9.0 材料映射改为真实题号区间(DOM 解析,含兜底);提取进度实时反馈(已加载 X 题);移除 template.js 死代码
v2.8.0 服务器直存落地:保存时自动检测本地服务器并直写 Vault,失败自动降级为 obsidian:// URI;版本号统一
v2.7.0 简化设置页(移除无效模板编辑),统一配置存储 key,修复设置不生效;修复"掫取"错别字;材料图片 Base64 接回;分隔符/材料开关可配置;补齐发布包缺失文件
v2.6.0 弹窗增加"刷新页面"按钮,页面检测逻辑重构
v2.5.0 分数提取多策略重写(/100 兄弟 → 容器 → 正则兜底),附调试信息
v2.4.0 属性面板 tags 手动编辑保护,分数识别失败告警
v2.3.0 修复 tags 编辑 bug,新增 score 属性自动爬取
v2.2.0 新增笔记属性面板(类似 Obsidian Web Clipper)
v2.1.0 自动提取试卷名称作为默认文件名
v2.0.0 重构为剪贴板策略,移除 HTTP 服务器依赖
v1.9.x 早期版本,含本地服务器保存方案

📄 License

MIT License

⚠️ 免责声明

本工具仅供个人学习使用,请遵守粉笔网站的使用条款。提取的内容版权归原网站所有。

About

粉笔模考采集 Chrome 扩展 — 自动提取完整试卷,生成结构化 Markdown,一键直存 Obsidian

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages