Skip to content

Commit 0bf9400

Browse files
committed
docs: update README
1 parent e23afce commit 0bf9400

1 file changed

Lines changed: 73 additions & 21 deletions

File tree

README.md

Lines changed: 73 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
11
# doc2anki
22

3+
⚠WARNING: _This project is in an early development phase and is not ready for use._
4+
35
## 概述
46

5-
doc2anki 将知识库文档转换为 Anki 学习卡片。
7+
doc2anki 可以将任何知识库文档转换为 Anki 学习卡片。这是为了减轻 ankier 们繁重的制卡工作而诞生的
8+
9+
通过 (自己提供 API 的) 大语言模型, 从 Markdown 或 Org-mode 文档中提取知识点,生成符合间隔重复学习规律的记忆卡片。
610

7-
通过大语言模型从 Markdown 或 Org-mode 文件中提取知识点,生成符合间隔重复学习规律的记忆卡片。
11+
未来可能考虑支持别的笔记格式,如果有人提 issue 的话
812

913
## 环境要求
1014

1115
- Python 3.12 或更高版本
1216
- 支持 OpenAI API 格式的语言模型服务
17+
- 像是 Anthropic, Google 的 API 就不支持 (截止至 2025-12-29)
1318

1419
## 安装
1520

1621
### 全局安装 (推荐)
1722

18-
使用 pipx 或 uv 全局安装后,可在任意位置运行:
23+
由于这个包已经被我~~~~ publish 到了 PyPI,所以你可以使用 pipx 或 uv 全局安装
24+
25+
安装了之后,可在任意位置运行:
1926

2027
```sh
2128
# 使用 pipx
@@ -28,7 +35,7 @@ uv tool install doc2anki
2835
### 开发环境
2936

3037
```sh
31-
git clone https://github.com/your-repo/doc2anki
38+
git clone https://github.com/SOV710/doc2anki
3239
cd doc2anki
3340
uv sync
3441
```
@@ -37,6 +44,8 @@ uv sync
3744

3845
### 配置文件位置
3946

47+
doc2anki 目前只有一种配置文件,就是配置 ai api 入口的 TOML 文件, 就是 `ai_providers.toml`
48+
4049
doc2anki 按以下顺序查找配置文件:
4150

4251
1. 命令行指定的路径 (`--config`)
@@ -45,23 +54,67 @@ doc2anki 按以下顺序查找配置文件:
4554

4655
### 配置格式
4756

48-
```toml
49-
[provider_name]
50-
enable = true
51-
auth_type = "env"
52-
api_key = "YOUR_API_KEY_ENV_VAR"
53-
default_base_url = "https://api.example.com/v1"
54-
default_model = "model-name"
55-
```
56-
57-
支持三种认证方式:
57+
doc2anki 设计了三种认证方式
5858

5959
| 认证类型 | api_key 含义 | 示例 |
6060
|---------|-------------|------|
6161
| `direct` | API 密钥本身 | `api_key = "sk-xxx..."` |
6262
| `env` | 环境变量名 | `api_key = "OPENAI_API_KEY"` |
6363
| `dotenv` | .env 文件中的键名 | `api_key = "API_KEY"` |
6464

65+
1. direct mode
66+
这是最不安全的配置方式,将自己的 api key 直接放在 toml 配置文件中
67+
68+
下面均以 deepseek 的 api 举例说明
69+
70+
``` toml
71+
[deepseek]
72+
enable = true
73+
auth_type = "direct"
74+
base_url = "https://api.deepseek.com"
75+
model = "deepseek-chat"
76+
api_key = "sk-xxxxxxxxxxxxxxxx"
77+
```
78+
79+
2. env mode
80+
81+
这是稍微安全一点的配置方式,将自己的 api key 配置在环境变量中,然后让 doc2anki 主动读取对应的环境变量
82+
83+
当然,你可以设置 fallback 后的 default 模式,不过对于 api key 来说,没有什么"fallback mode"
84+
85+
```toml
86+
[deepseek]
87+
enable = true
88+
auth_type = "env"
89+
base_url = "DEEPSEEK_BASE_URL"
90+
model = "DEEPSEEK_MODEL"
91+
api_key = "DEEPSEEK_API_KEY"
92+
default_base_url = "https://api.deepseek.com"
93+
default_model = "deepseek-chat"
94+
```
95+
96+
3. dotenv mode
97+
98+
这是最安全的配置方式,将自己的 api key 注入单独的 .env 文件中而不是对所有程序可见的环境变量中
99+
100+
不过,你必须设置 .env 文件的 path, 否则 doc2anki 找不到
101+
102+
```toml
103+
[deepseek]
104+
enable = true
105+
auth_type = "dotenv"
106+
base_url = "DEEPSEEK_BASE_URL"
107+
model = "DEEPSEEK_MODEL"
108+
api_key = "DEEPSEEK_API_KEY"
109+
dotenv_path = "/home/user/.env"
110+
default_base_url = "https://api.deepseek.com"
111+
default_model = "deepseek-chat"
112+
```
113+
114+
配置完成后,通过 `doc2anki list` 列出当前配置文件中被 enable 的 api providers, `docs2anki list --all` 列出所有 providers
115+
116+
注:现在的 `docs2anki list` 还无法无法读 dotenv 文件中的 providers, 只能读到 `default_base_url``default_model`
117+
65118
## 使用
66119

67120
### 查看可用的模型提供商
@@ -81,13 +134,13 @@ doc2anki validate -p provider_name
81134
### 生成卡片
82135

83136
```sh
84-
doc2anki generate input.md -p provider_name
137+
doc2anki generate input.md -p provider_name -o output.apkg
85138
```
86139

87140
处理整个目录:
88141

89142
```sh
90-
doc2anki generate docs/ -p provider_name -o knowledge.apkg
143+
doc2anki generate docs/ -p provider_name -o output.apkg
91144
```
92145

93146
### 命令行选项
@@ -135,10 +188,10 @@ doc2anki generate docs/ -p provider_name -o knowledge.apkg
135188
对于特殊文档结构,可手动指定分块级别:
136189

137190
```sh
138-
# 按二级标题分块
191+
# 按二级标题分块, 在 markdown 中即为 ##
139192
doc2anki generate input.md -p provider --chunk-level 2
140193

141-
# 按三级标题分块,更细粒度
194+
# 按三级标题分块,在 markdown 中即为 ###
142195
doc2anki generate input.md -p provider --chunk-level 3
143196
```
144197

@@ -155,18 +208,17 @@ doc2anki generate input.md -p provider --chunk-level 3
155208

156209
## 文档格式
157210

158-
### 全局上下文块
211+
### 全局上下文块 (❗deprecated)
159212

160213
在文档开头定义领域术语,供语言模型生成卡片时参考。
161214

162215
Markdown 格式:
163216

164-
````markdown
217+
```
165218
```context
166219
- TCP: "传输控制协议"
167220
- HTTP: "超文本传输协议"
168221
```
169-
````
170222

171223
Org-mode 格式:
172224

0 commit comments

Comments
 (0)