一个面向 Codex 的中文读书 Skill:从书名、本地电子书或微信读书书架出发,获取正文,逐章通读,再整理全书总结、跨书联系与人生思考。
它会记录实际读到哪里。只有目录、简介、划线或书评时,会明确说明范围;人生建议建立在全书阅读之后,默认不生成一周行动计划或打卡任务。
- 指定一本书:核对作者、译者、语言与版本,优先复用本地文件,否则查找下载来源。
- 从书架随机选书:接入微信读书后,从真实图书候选中随机抽选,用 SQLite 持久去重;重试接续同一本书。
- 没有微信读书也能用:根据用户明确表达的兴趣,从有完整正文的候选中选书,或直接读用户提供的文件。
- 逐章阅读与续读:提取 EPUB、PDF、TXT、Markdown,保存章节定位、覆盖记录和分批笔记,中断后继续。
- 总结与发散:区分作者观点、证据评价、跨书关联和助手的延伸,给出有依据、讲清适用边界的人生思考。
- 归档到 Obsidian:发现本地 Obsidian 时先询问保存目录,确认后复用;无需安装 Obsidian MCP。
- 周期阅读:由 Codex 自动任务安排每周六阅读;也可以随时手动运行。月度回顾按用户配置汇总已生成报告,在对话中交付。
书名 / 本地文件 / 微信读书书架 / 兴趣候选
↓
核对版本,保存选书与去重记录
↓
复用完整文件,或查找下载并验证
↓ 文件获取不成功
检查完整网页或已有在线阅读权限
↓ 仍不可读
微信读书浏览器兜底
↓
逐章通读 → 覆盖检查 → 全书理解
↓
总结、批判、跨书联系与人生思考
↓
对话交付 + Markdown 归档
所有途径都无法取得全文时,会明确说“目前无法阅读这本书的完整内容”。指定书名不会被悄悄换成另一本;部分正文只能形成注明范围的阶段笔记。
需要支持本地 Skill 的 Codex 环境,以及 Python 3.11+。浏览器访问和 MCP 能力由实际运行环境提供。
将仓库克隆到 Codex 技能目录:
git clone https://github.com/jiangxiaolin1995/read-book.git "${CODEX_HOME:-$HOME/.codex}/skills/read-book"如果目标目录已有同名 Skill,先确认它的来源;不要覆盖现有文件。安装后重新打开或刷新 Codex 会话,让它发现 read-book。
也可以把仓库保存在项目目录,在 macOS/Linux 的技能目录建立符号链接。下面假设你已经克隆并进入仓库,且技能入口尚不存在:
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
ln -s "$PWD" "${CODEX_HOME:-$HOME/.codex}/skills/read-book"在 Codex 中发送:
使用 $read-book 读一下我提供的 EPUB,通读后总结,谈谈这本书引出的人生思考。
使用 $read-book,从我的微信读书书架随机选一本没选过的书,现在运行一次完整流程。
使用 $read-book,帮我读《书名》,作者是……。先找完整电子书,下载不到再检查在线正文,最后用微信读书兜底。
每周六上午 9 点,按北京时间使用 $read-book 读一本书,不要重复。每月第一个周六顺便回顾上个月已经生成的报告,在对话里总结。
安装 Skill 不会自动创建定时任务。 上面的周期请求需要 Codex 创建或更新自动任务;默认每周六执行一次,不增加每日登录检查。书籍获取失败、需要用户操作或有新报告时如实反馈。
微信读书模式复用腾讯的 WeChatReading Skill,按其说明安装并配置 API Key:
npx skills add Tencent/WeChatReading -gscripts/weread.py 从本机 WEREAD_API_KEY 环境变量读取 Key;在用户授权后,也支持从指定的 Codex 配置读取。Key 只发送给官方微信读书网关,不能提交到本仓库或聊天记录。
微信读书 API 用于书架、目录、笔记等信息,不提供本 Skill 所需的整本正文保证。网页登录、阅读会员、API Key 和其他平台 MCP 认证分别验证。
需要登录时,助手应给出已核实的登录页面或本机私密配置位置,让用户在服务自己的界面或本机配置中完成。不要把密码、Cookie、验证码或 Key 发进对话。HTTP 400、TLS 或超时也不能直接断定密码错误。
| 能力 | 依赖与范围 |
|---|---|
| 历史、去重、EPUB/TXT/Markdown 解析 | Python 3.11+ 标准库 |
| PDF 文本提取 | pypdf 或系统已有的 pdftotext;扫描页和图表另做视觉核查 |
| 正常网页阅读与下载 | 运行环境可用的浏览器工具,以及用户对作品的实际访问权限 |
| 微信读书书架 | 官方 weread-skills 与有效 Key |
| 其他书目、下载和正文接口 | 按需配置相应 MCP;安装本仓库不会自动安装这些服务 |
来源文档整合了 Gutenberg、Internet Archive、LibGen、Z-Library、bookfinder-general、ebook-mcp 和微信读书的适用能力,详见 电子书 MCP 与登录接续。
Z-Library MCP 的可用性仍需现场验证。 已观察到登录 HTTP 400、文本处理依赖下载被安全检查阻止等问题。服务出现在工具列表里,或普通浏览器下载成功,都不代表 MCP 的认证和下载已修复。本仓库提供调用与故障接续指引,不包含外部 MCP 服务实现。
运行数据默认保存在 ~/.local/share/read-book/,可用 READ_BOOK_HOME 自定义:
~/.local/share/read-book/
├── history.sqlite3 # 选书、别名、去重与报告索引
├── settings.json # 已确认的输出目录等设置
├── books/ # 电子书与来源记录
├── notes/ # 提取结果、进度和覆盖信息
├── reports/ # 读书报告(默认输出位置)
├── reading-notes/ # 章节笔记
└── concepts/ # 概念卡与跨书主题
选择 Obsidian 后,报告、章节笔记和概念卡写入用户确认的笔记库子目录;下载文件和去重历史仍在运行目录中。移动 Skill 仓库不会重置历史,也不会移动个人书库。
不要把运行目录设置到公开仓库内。仓库仅分发 Skill、工具脚本、测试与文档,不分发电子书、个人书架、报告、历史或账号配置。
下面的命令在仓库根目录运行:
# 查看参数,不访问书架或修改阅读历史
python3 scripts/history.py --help
python3 scripts/library.py --help
python3 scripts/weread.py --help
# 将本地文件解析成阅读单元;输出目录应尚不存在
python3 scripts/library.py extract /path/to/book.epub --output /path/to/extracted
# 运行现有单元测试,使用临时目录与模拟网络,不需要真实账号
python3 -m unittest discover -s tests -v提取结果中的 read_units 初始为空。提取完成只代表资料已准备好,实际逐章阅读、记录笔记并检查结尾后,才能登记已读覆盖。脚本校验不能代替助手真正阅读。
read-book/
├── SKILL.md # 给 Codex 的入口与执行约束
├── agents/openai.yaml # Skill 展示信息
├── scripts/ # 选书历史、文件处理、微信读书只读适配
├── references/ # 获取、通读、总结、归档与 MCP 指引
└── tests/ # 现有脚本行为验证
阅读方法参考了 reading-pipeline、ljg-book、ljg-read、deep-reading-analyst、deep-reading-coach、book-reader-skill、crisp-reading 及 book-to-skill 等项目,并在本 Skill 中重新组织为统一流程。完整出处与能力映射见 来源说明,具体方法见 融合阅读方法。这些引用不表示仓库打包了上游程序或已经安装了全部依赖。
获取与使用书籍需遵守适用的内容与访问规则;不绕过 DRM、付费、验证码或账号权限。来源许可不明确时如实记录,不把“能下载”解释成可公开传播。