weread-vault 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- weread_vault-0.2.0/LICENSE +21 -0
- weread_vault-0.2.0/PKG-INFO +166 -0
- weread_vault-0.2.0/README.md +151 -0
- weread_vault-0.2.0/pyproject.toml +27 -0
- weread_vault-0.2.0/setup.cfg +4 -0
- weread_vault-0.2.0/setup.py +5 -0
- weread_vault-0.2.0/src/weread_vault/__init__.py +3 -0
- weread_vault-0.2.0/src/weread_vault/__main__.py +4 -0
- weread_vault-0.2.0/src/weread_vault/cli.py +312 -0
- weread_vault-0.2.0/src/weread_vault/config.py +79 -0
- weread_vault-0.2.0/src/weread_vault/db.py +160 -0
- weread_vault-0.2.0/src/weread_vault/errors.py +10 -0
- weread_vault-0.2.0/src/weread_vault/export.py +182 -0
- weread_vault-0.2.0/src/weread_vault/gateway.py +99 -0
- weread_vault-0.2.0/src/weread_vault/integrations.py +130 -0
- weread_vault-0.2.0/src/weread_vault/sync.py +361 -0
- weread_vault-0.2.0/src/weread_vault/web.py +926 -0
- weread_vault-0.2.0/src/weread_vault.egg-info/PKG-INFO +166 -0
- weread_vault-0.2.0/src/weread_vault.egg-info/SOURCES.txt +26 -0
- weread_vault-0.2.0/src/weread_vault.egg-info/dependency_links.txt +1 -0
- weread_vault-0.2.0/src/weread_vault.egg-info/entry_points.txt +2 -0
- weread_vault-0.2.0/src/weread_vault.egg-info/top_level.txt +1 -0
- weread_vault-0.2.0/tests/test_cli.py +77 -0
- weread_vault-0.2.0/tests/test_db.py +40 -0
- weread_vault-0.2.0/tests/test_export.py +101 -0
- weread_vault-0.2.0/tests/test_integrations.py +70 -0
- weread_vault-0.2.0/tests/test_sync.py +89 -0
- weread_vault-0.2.0/tests/test_web.py +186 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Dull Bird
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: weread-vault
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: A local-first CLI and web preview for WeRead notes
|
|
5
|
+
Author: Dull Bird
|
|
6
|
+
License: MIT
|
|
7
|
+
Classifier: Development Status :: 3 - Alpha
|
|
8
|
+
Classifier: Environment :: Console
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Requires-Python: >=3.10
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Dynamic: license-file
|
|
15
|
+
|
|
16
|
+
# WeRead Vault
|
|
17
|
+
|
|
18
|
+
**微信读书的本地数据库 —— 一个带 Agent Skill 的 CLI。** 把书架、划线、想法、阅读统计归档进本机 SQLite,可查询、可视化、可导出,AI 直接读,数据不上传。
|
|
19
|
+
|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
> 个人数据归档工具,不是微信读书官方客户端。请遵守微信读书服务条款,只同步自己的数据。
|
|
23
|
+
|
|
24
|
+
## 特点
|
|
25
|
+
|
|
26
|
+
- 🔒 **本地优先**:所有数据只存在本机一个 SQLite 文件里,可备份、可迁移、可离线,永远不上传;网页只监听 `127.0.0.1`。
|
|
27
|
+
- 📚 **完整书架**:同步整个书架(含无笔记的书;公众号单独归类),不只是有笔记的那一部分。
|
|
28
|
+
- 📊 **阅读统计看板**:纯 SVG 零依赖渲染——本周/本月/今年/全部切换、同比、读得最多排行、偏好分类、24 小时时段、GitHub 式划线热力图、单次时长分布(还给「碎片化严重」这样的结论)。
|
|
29
|
+
- 🔥 **不只是你自己**:每本书能看「大家都在划的句子」(含人数、可按原文顺序)和公开书评;还能搜微信读书书城、看同作者的相关书。
|
|
30
|
+
- 🤖 **AI 原生**:CLI 暴露整套微信读书 API + 只读 SQL 查询 + 已解析统计 JSON,可直接交给 Claude Code、Codex、OpenClaw 等 agent;自带荐书 Skill。
|
|
31
|
+
- 📝 **导出到你的知识库**:Markdown(含封面、可合并他人热门划线并去重)、Obsidian、flomo、Notion。
|
|
32
|
+
- 🧰 **零第三方依赖**:纯 Python 标准库 + SQLite,有 Python 就能跑。
|
|
33
|
+
|
|
34
|
+
## 安装
|
|
35
|
+
|
|
36
|
+
**最简单:下载安装包,无需 git clone。** 到 [Releases](https://github.com/dull-bird/weread-vault/releases/latest) 下载:
|
|
37
|
+
|
|
38
|
+
- **macOS**:`weread-vault-macos.dmg` —— 打开后把 `WeRead Vault.app` 拖进「应用程序」,双击启动。
|
|
39
|
+
- **Windows**:`weread-vault-windows.exe` —— 双击启动。
|
|
40
|
+
|
|
41
|
+
启动后浏览器自动打开,在「同步设置」粘贴微信读书 API Key([从这里获取](https://weread.qq.com/r/weread-skills)),点「同步」即可。
|
|
42
|
+
|
|
43
|
+
> 首次打开系统会提示「未签名」(没做付费签名公证,正常现象):macOS 右键 App →「打开」→「打开」;Windows 点「更多信息」→「仍要运行」。一次即可。
|
|
44
|
+
|
|
45
|
+
**命令行**(需 Python 3.10+):
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
uvx weread-vault serve --open # 免安装,临时环境直接跑
|
|
49
|
+
pipx install weread-vault # 或常驻安装
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**让 AI agent 帮你装**(Claude Code / Codex / OpenClaw 等):
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
请用 pipx 安装并运行 WeRead Vault:pipx install weread-vault && weread-vault serve --open
|
|
56
|
+
打开网页后提醒我去 https://weread.qq.com/r/weread-skills 获取微信读书 API Key 粘贴同步。
|
|
57
|
+
数据只存我本机,别把 key 写进任何文件。
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
agent 若支持 Skill,可装本仓库的 [`skills/weread-vault-cli`](skills/weread-vault-cli/SKILL.md)。
|
|
61
|
+
|
|
62
|
+
**从源码(开发或兜底)**:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
git clone --recurse-submodules https://github.com/dull-bird/weread-vault.git
|
|
66
|
+
cd weread-vault && pip install -e .
|
|
67
|
+
weread-vault serve --open
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**升级**:`weread-vault update` 检查新版,`weread-vault update --download` 下载安装包。安装包由 GitHub Actions 在打 `v*` tag 时自动构建。项目主页:<https://dull-bird.github.io/weread-vault/>。
|
|
71
|
+
|
|
72
|
+
## 阅读统计
|
|
73
|
+
|
|
74
|
+
按本周 / 本月 / 今年 / 全部切换,所有数字随之更新;GitHub 式热力图展示每日划线活跃度(多年)。全部来自历史快照,随每次同步累积,能看到长期趋势。
|
|
75
|
+
|
|
76
|
+

|
|
77
|
+
|
|
78
|
+
## 书籍详情
|
|
79
|
+
|
|
80
|
+
进度与推荐值用进度条体现书间差异,划线/想法用颜色标记。四个 tab:**我的笔记 / 热门划线 / 书评 / 相关推荐**——每条笔记都能一键复制,还能跳转到微信读书。
|
|
81
|
+
|
|
82
|
+

|
|
83
|
+
|
|
84
|
+
热门划线可按「原文顺序」或「按热度」排列,看到大家都在划的句子(含人数):
|
|
85
|
+
|
|
86
|
+

|
|
87
|
+
|
|
88
|
+
## 常用命令
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
weread-vault sync # 日常增量同步(书架 + 笔记 + 统计)
|
|
92
|
+
weread-vault sync info # 补全评分/字数/出版社/ISBN(一次性回填)
|
|
93
|
+
weread-vault status # 本地库数量与最近同步状态
|
|
94
|
+
weread-vault serve --open # 本地网页预览
|
|
95
|
+
|
|
96
|
+
# 导出
|
|
97
|
+
weread-vault export markdown --out ~/Documents/weread-notes
|
|
98
|
+
weread-vault sync popular && \
|
|
99
|
+
weread-vault export markdown --out ~/Documents/weread-notes --with-popular # 合并他人热门划线(去重)
|
|
100
|
+
weread-vault export flomo --webhook "$FLOMO_WEBHOOK"
|
|
101
|
+
weread-vault export notion --token "$NOTION_TOKEN" --database "$NOTION_DATABASE_ID"
|
|
102
|
+
|
|
103
|
+
# 备份 / 换账号
|
|
104
|
+
weread-vault backup --out ~/Backups/weread-vault.db
|
|
105
|
+
weread-vault reset --yes # 清空本地阅读数据(换账号前用,不影响 API Key)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
所有命令可加 `--db /path/to/file.db` 使用另一份数据库(不同账号开独立库,避免串扰)。
|
|
109
|
+
|
|
110
|
+
## 给 AI agent 的微信读书 API
|
|
111
|
+
|
|
112
|
+
CLI 把整套微信读书 Skill API 暴露成命令,输出 JSON,让 agent 直接取数据——书城搜索、他人热门划线、公开书评、富书籍信息等:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
weread-vault apis # 列出全部接口及参数(agent 自助发现)
|
|
116
|
+
weread-vault search "三体" --count 5 # 书城搜索
|
|
117
|
+
weread-vault book <bookId> popular # 他人热门划线(含人数)
|
|
118
|
+
weread-vault book <bookId> reviews # 公开书评
|
|
119
|
+
weread-vault api <endpoint> key=value # 任意接口原样透传
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
让 AI 灵活分析本地数据:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
weread-vault query --schema # 表结构 + 字段说明 + 示例 SQL(AI 据此写查询)
|
|
126
|
+
weread-vault query "SELECT title, rating FROM books WHERE rating>0 ORDER BY rating DESC LIMIT 10"
|
|
127
|
+
weread-vault stats # 已解析统计 JSON(周期 / 热力图 / 单次时长 / 读得最多)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
接入 Claude Code 后,问「我评分最高的书」「哪个分类笔记最多」,AI 会自己 `query --schema` 再写 SQL 回答。荐书 Skill [`skills/weread-recommend`](skills/weread-recommend/SKILL.md) 会结合你的口味、书城和联网,按主题推荐不与已读重复的书。
|
|
131
|
+
|
|
132
|
+
> 官方接口不开放全书正文,「划线前后那一整段原文」拿不到;也不提供「某一年每本书读了多久」。这些限制我们如实标注,不虚构数据。
|
|
133
|
+
|
|
134
|
+
## OpenClaw 定时同步
|
|
135
|
+
|
|
136
|
+
用 OpenClaw cron 每天唤起一个隔离任务,让 agent 跑同步并导出到 Obsidian:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"name": "weread-vault daily sync",
|
|
141
|
+
"schedule": { "kind": "cron", "expr": "0 7 * * *", "tz": "Asia/Shanghai" },
|
|
142
|
+
"sessionTarget": "isolated",
|
|
143
|
+
"payload": {
|
|
144
|
+
"kind": "agentTurn",
|
|
145
|
+
"message": "先读取 ~/.weread.env 获取 WEREAD_API_KEY,在 ~/projects/weread-vault 运行 weread-vault sync,成功后 weread-vault export markdown --out \"~/Documents/Obsidian Vault/微信读书\"。失败保留日志,不要打印 API Key。",
|
|
146
|
+
"timeoutSeconds": 1800
|
|
147
|
+
},
|
|
148
|
+
"delivery": { "mode": "announce" }
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 同步是怎样保证安全的
|
|
153
|
+
|
|
154
|
+
`weread-vault sync` 分段进行:分页拉取书目并记录每本书的远端变更标记;只同步新增/有变更的书,每本书的划线和想法先完整拉取、两类请求都成功后才用一个 SQLite 事务写入并推进标记——失败的书不标记「已同步」,下次自动重试;阅读统计按时间快照保存,不覆盖旧快照。
|
|
155
|
+
|
|
156
|
+
`vendor/tencent-weread-skill` 是腾讯 [Tencent/WeChatReading](https://github.com/Tencent/WeChatReading) 的 submodule。更新官方协议:`./scripts/update-official-skill.sh`,审阅后再升级 `SKILL_VERSION` 并跑测试。
|
|
157
|
+
|
|
158
|
+
## 开发与测试
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
python -m unittest discover -s tests -v
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## License
|
|
165
|
+
|
|
166
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# WeRead Vault
|
|
2
|
+
|
|
3
|
+
**微信读书的本地数据库 —— 一个带 Agent Skill 的 CLI。** 把书架、划线、想法、阅读统计归档进本机 SQLite,可查询、可视化、可导出,AI 直接读,数据不上传。
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
> 个人数据归档工具,不是微信读书官方客户端。请遵守微信读书服务条款,只同步自己的数据。
|
|
8
|
+
|
|
9
|
+
## 特点
|
|
10
|
+
|
|
11
|
+
- 🔒 **本地优先**:所有数据只存在本机一个 SQLite 文件里,可备份、可迁移、可离线,永远不上传;网页只监听 `127.0.0.1`。
|
|
12
|
+
- 📚 **完整书架**:同步整个书架(含无笔记的书;公众号单独归类),不只是有笔记的那一部分。
|
|
13
|
+
- 📊 **阅读统计看板**:纯 SVG 零依赖渲染——本周/本月/今年/全部切换、同比、读得最多排行、偏好分类、24 小时时段、GitHub 式划线热力图、单次时长分布(还给「碎片化严重」这样的结论)。
|
|
14
|
+
- 🔥 **不只是你自己**:每本书能看「大家都在划的句子」(含人数、可按原文顺序)和公开书评;还能搜微信读书书城、看同作者的相关书。
|
|
15
|
+
- 🤖 **AI 原生**:CLI 暴露整套微信读书 API + 只读 SQL 查询 + 已解析统计 JSON,可直接交给 Claude Code、Codex、OpenClaw 等 agent;自带荐书 Skill。
|
|
16
|
+
- 📝 **导出到你的知识库**:Markdown(含封面、可合并他人热门划线并去重)、Obsidian、flomo、Notion。
|
|
17
|
+
- 🧰 **零第三方依赖**:纯 Python 标准库 + SQLite,有 Python 就能跑。
|
|
18
|
+
|
|
19
|
+
## 安装
|
|
20
|
+
|
|
21
|
+
**最简单:下载安装包,无需 git clone。** 到 [Releases](https://github.com/dull-bird/weread-vault/releases/latest) 下载:
|
|
22
|
+
|
|
23
|
+
- **macOS**:`weread-vault-macos.dmg` —— 打开后把 `WeRead Vault.app` 拖进「应用程序」,双击启动。
|
|
24
|
+
- **Windows**:`weread-vault-windows.exe` —— 双击启动。
|
|
25
|
+
|
|
26
|
+
启动后浏览器自动打开,在「同步设置」粘贴微信读书 API Key([从这里获取](https://weread.qq.com/r/weread-skills)),点「同步」即可。
|
|
27
|
+
|
|
28
|
+
> 首次打开系统会提示「未签名」(没做付费签名公证,正常现象):macOS 右键 App →「打开」→「打开」;Windows 点「更多信息」→「仍要运行」。一次即可。
|
|
29
|
+
|
|
30
|
+
**命令行**(需 Python 3.10+):
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
uvx weread-vault serve --open # 免安装,临时环境直接跑
|
|
34
|
+
pipx install weread-vault # 或常驻安装
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**让 AI agent 帮你装**(Claude Code / Codex / OpenClaw 等):
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
请用 pipx 安装并运行 WeRead Vault:pipx install weread-vault && weread-vault serve --open
|
|
41
|
+
打开网页后提醒我去 https://weread.qq.com/r/weread-skills 获取微信读书 API Key 粘贴同步。
|
|
42
|
+
数据只存我本机,别把 key 写进任何文件。
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
agent 若支持 Skill,可装本仓库的 [`skills/weread-vault-cli`](skills/weread-vault-cli/SKILL.md)。
|
|
46
|
+
|
|
47
|
+
**从源码(开发或兜底)**:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
git clone --recurse-submodules https://github.com/dull-bird/weread-vault.git
|
|
51
|
+
cd weread-vault && pip install -e .
|
|
52
|
+
weread-vault serve --open
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**升级**:`weread-vault update` 检查新版,`weread-vault update --download` 下载安装包。安装包由 GitHub Actions 在打 `v*` tag 时自动构建。项目主页:<https://dull-bird.github.io/weread-vault/>。
|
|
56
|
+
|
|
57
|
+
## 阅读统计
|
|
58
|
+
|
|
59
|
+
按本周 / 本月 / 今年 / 全部切换,所有数字随之更新;GitHub 式热力图展示每日划线活跃度(多年)。全部来自历史快照,随每次同步累积,能看到长期趋势。
|
|
60
|
+
|
|
61
|
+

|
|
62
|
+
|
|
63
|
+
## 书籍详情
|
|
64
|
+
|
|
65
|
+
进度与推荐值用进度条体现书间差异,划线/想法用颜色标记。四个 tab:**我的笔记 / 热门划线 / 书评 / 相关推荐**——每条笔记都能一键复制,还能跳转到微信读书。
|
|
66
|
+
|
|
67
|
+

|
|
68
|
+
|
|
69
|
+
热门划线可按「原文顺序」或「按热度」排列,看到大家都在划的句子(含人数):
|
|
70
|
+
|
|
71
|
+

|
|
72
|
+
|
|
73
|
+
## 常用命令
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
weread-vault sync # 日常增量同步(书架 + 笔记 + 统计)
|
|
77
|
+
weread-vault sync info # 补全评分/字数/出版社/ISBN(一次性回填)
|
|
78
|
+
weread-vault status # 本地库数量与最近同步状态
|
|
79
|
+
weread-vault serve --open # 本地网页预览
|
|
80
|
+
|
|
81
|
+
# 导出
|
|
82
|
+
weread-vault export markdown --out ~/Documents/weread-notes
|
|
83
|
+
weread-vault sync popular && \
|
|
84
|
+
weread-vault export markdown --out ~/Documents/weread-notes --with-popular # 合并他人热门划线(去重)
|
|
85
|
+
weread-vault export flomo --webhook "$FLOMO_WEBHOOK"
|
|
86
|
+
weread-vault export notion --token "$NOTION_TOKEN" --database "$NOTION_DATABASE_ID"
|
|
87
|
+
|
|
88
|
+
# 备份 / 换账号
|
|
89
|
+
weread-vault backup --out ~/Backups/weread-vault.db
|
|
90
|
+
weread-vault reset --yes # 清空本地阅读数据(换账号前用,不影响 API Key)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
所有命令可加 `--db /path/to/file.db` 使用另一份数据库(不同账号开独立库,避免串扰)。
|
|
94
|
+
|
|
95
|
+
## 给 AI agent 的微信读书 API
|
|
96
|
+
|
|
97
|
+
CLI 把整套微信读书 Skill API 暴露成命令,输出 JSON,让 agent 直接取数据——书城搜索、他人热门划线、公开书评、富书籍信息等:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
weread-vault apis # 列出全部接口及参数(agent 自助发现)
|
|
101
|
+
weread-vault search "三体" --count 5 # 书城搜索
|
|
102
|
+
weread-vault book <bookId> popular # 他人热门划线(含人数)
|
|
103
|
+
weread-vault book <bookId> reviews # 公开书评
|
|
104
|
+
weread-vault api <endpoint> key=value # 任意接口原样透传
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
让 AI 灵活分析本地数据:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
weread-vault query --schema # 表结构 + 字段说明 + 示例 SQL(AI 据此写查询)
|
|
111
|
+
weread-vault query "SELECT title, rating FROM books WHERE rating>0 ORDER BY rating DESC LIMIT 10"
|
|
112
|
+
weread-vault stats # 已解析统计 JSON(周期 / 热力图 / 单次时长 / 读得最多)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
接入 Claude Code 后,问「我评分最高的书」「哪个分类笔记最多」,AI 会自己 `query --schema` 再写 SQL 回答。荐书 Skill [`skills/weread-recommend`](skills/weread-recommend/SKILL.md) 会结合你的口味、书城和联网,按主题推荐不与已读重复的书。
|
|
116
|
+
|
|
117
|
+
> 官方接口不开放全书正文,「划线前后那一整段原文」拿不到;也不提供「某一年每本书读了多久」。这些限制我们如实标注,不虚构数据。
|
|
118
|
+
|
|
119
|
+
## OpenClaw 定时同步
|
|
120
|
+
|
|
121
|
+
用 OpenClaw cron 每天唤起一个隔离任务,让 agent 跑同步并导出到 Obsidian:
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"name": "weread-vault daily sync",
|
|
126
|
+
"schedule": { "kind": "cron", "expr": "0 7 * * *", "tz": "Asia/Shanghai" },
|
|
127
|
+
"sessionTarget": "isolated",
|
|
128
|
+
"payload": {
|
|
129
|
+
"kind": "agentTurn",
|
|
130
|
+
"message": "先读取 ~/.weread.env 获取 WEREAD_API_KEY,在 ~/projects/weread-vault 运行 weread-vault sync,成功后 weread-vault export markdown --out \"~/Documents/Obsidian Vault/微信读书\"。失败保留日志,不要打印 API Key。",
|
|
131
|
+
"timeoutSeconds": 1800
|
|
132
|
+
},
|
|
133
|
+
"delivery": { "mode": "announce" }
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## 同步是怎样保证安全的
|
|
138
|
+
|
|
139
|
+
`weread-vault sync` 分段进行:分页拉取书目并记录每本书的远端变更标记;只同步新增/有变更的书,每本书的划线和想法先完整拉取、两类请求都成功后才用一个 SQLite 事务写入并推进标记——失败的书不标记「已同步」,下次自动重试;阅读统计按时间快照保存,不覆盖旧快照。
|
|
140
|
+
|
|
141
|
+
`vendor/tencent-weread-skill` 是腾讯 [Tencent/WeChatReading](https://github.com/Tencent/WeChatReading) 的 submodule。更新官方协议:`./scripts/update-official-skill.sh`,审阅后再升级 `SKILL_VERSION` 并跑测试。
|
|
142
|
+
|
|
143
|
+
## 开发与测试
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
python -m unittest discover -s tests -v
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## License
|
|
150
|
+
|
|
151
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "weread-vault"
|
|
7
|
+
version = "0.2.0"
|
|
8
|
+
description = "A local-first CLI and web preview for WeRead notes"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = {text = "MIT"}
|
|
12
|
+
authors = [{name = "Dull Bird"}]
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Development Status :: 3 - Alpha",
|
|
15
|
+
"Environment :: Console",
|
|
16
|
+
"License :: OSI Approved :: MIT License",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
[project.scripts]
|
|
21
|
+
weread-vault = "weread_vault.cli:main"
|
|
22
|
+
|
|
23
|
+
[tool.setuptools.packages.find]
|
|
24
|
+
where = ["src"]
|
|
25
|
+
|
|
26
|
+
[tool.setuptools.package-dir]
|
|
27
|
+
"" = "src"
|