|
1 | | -#+TITLE: doc2anki |
2 | | -#+AUTHOR: SOV710 |
3 | | -#+EMAIL: chris916911179@outlook.com |
| 1 | +# doc2anki |
4 | 2 |
|
5 | | -* 概述 |
| 3 | +## 概述 |
6 | 4 |
|
7 | 5 | doc2anki 将知识库文档转换为 Anki 学习卡片。 |
8 | 6 |
|
9 | 7 | 通过大语言模型从 Markdown 或 Org-mode 文件中提取知识点,生成符合间隔重复学习规律的记忆卡片。 |
10 | 8 |
|
11 | | -* 环境要求 |
| 9 | +## 环境要求 |
12 | 10 |
|
13 | 11 | - Python 3.12 或更高版本 |
14 | 12 | - 支持 OpenAI API 格式的语言模型服务 |
15 | 13 |
|
16 | | -* 安装 |
| 14 | +## 安装 |
17 | 15 |
|
18 | | -#+begin_src sh |
| 16 | +```sh |
19 | 17 | uv sync |
20 | | -#+end_src |
| 18 | +``` |
21 | 19 |
|
22 | | -* 配置 |
| 20 | +## 配置 |
23 | 21 |
|
24 | | -在项目根目录创建 =ai_providers.toml= 文件,配置语言模型提供商: |
| 22 | +在项目根目录创建 `ai_providers.toml` 文件,配置语言模型提供商: |
25 | 23 |
|
26 | | -#+begin_src toml |
| 24 | +```toml |
27 | 25 | [provider_name] |
28 | 26 | enable = true |
29 | 27 | auth_type = "env" |
30 | 28 | api_key_env = "YOUR_API_KEY_ENV_VAR" |
31 | 29 | default_base_url = "https://api.example.com/v1" |
32 | 30 | default_model = "model-name" |
33 | | -#+end_src |
| 31 | +``` |
34 | 32 |
|
35 | 33 | 支持三种认证方式: |
36 | | -- =direct=: 凭据直接写在配置文件中 |
37 | | -- =env=: 从环境变量读取 |
38 | | -- =dotenv=: 从 .env 文件加载 |
| 34 | +- `direct`: 凭据直接写在配置文件中 |
| 35 | +- `env`: 从环境变量读取 |
| 36 | +- `dotenv`: 从 .env 文件加载 |
39 | 37 |
|
40 | | -* 使用 |
| 38 | +## 使用 |
41 | 39 |
|
42 | | -** 查看可用的模型提供商 |
| 40 | +### 查看可用的模型提供商 |
43 | 41 |
|
44 | | -#+begin_src sh |
| 42 | +```sh |
45 | 43 | doc2anki list |
46 | | -#+end_src |
| 44 | +``` |
47 | 45 |
|
48 | | -** 验证配置 |
| 46 | +### 验证配置 |
49 | 47 |
|
50 | | -#+begin_src sh |
| 48 | +```sh |
51 | 49 | doc2anki validate |
52 | 50 | doc2anki validate -p provider_name |
53 | | -#+end_src |
| 51 | +``` |
54 | 52 |
|
55 | | -** 生成卡片 |
| 53 | +### 生成卡片 |
56 | 54 |
|
57 | | -#+begin_src sh |
| 55 | +```sh |
58 | 56 | doc2anki generate input.md -p provider_name -o output.apkg |
59 | | -#+end_src |
| 57 | +``` |
60 | 58 |
|
61 | 59 | 处理整个目录: |
62 | 60 |
|
63 | | -#+begin_src sh |
| 61 | +```sh |
64 | 62 | doc2anki generate docs/ -p provider_name -o knowledge.apkg |
65 | | -#+end_src |
| 63 | +``` |
66 | 64 |
|
67 | 65 | 常用选项: |
68 | | -- =--max-tokens=: 每个文本块的最大 token 数量 (默认 3000) |
69 | | -- =--deck-depth=: 从文件路径生成卡片组层级的深度 (默认 2) |
70 | | -- =--extra-tags=: 添加额外标签,用逗号分隔 |
71 | | -- =--dry-run=: 仅解析和分块,不调用语言模型 |
72 | | -- =--verbose=: 显示详细输出 |
| 66 | +- `--max-tokens`: 每个文本块的最大 token 数量 (默认 3000) |
| 67 | +- `--deck-depth`: 从文件路径生成卡片组层级的深度 (默认 2) |
| 68 | +- `--extra-tags`: 添加额外标签,用逗号分隔 |
| 69 | +- `--dry-run`: 仅解析和分块,不调用语言模型 |
| 70 | +- `--verbose`: 显示详细输出 |
73 | 71 |
|
74 | | -* 文档格式 |
| 72 | +## 文档格式 |
75 | 73 |
|
76 | | -** 全局上下文块 |
| 74 | +### 全局上下文块 |
77 | 75 |
|
78 | 76 | 在文档开头定义领域术语,供语言模型生成卡片时参考。 |
79 | 77 |
|
80 | 78 | Markdown 格式: |
81 | 79 |
|
82 | | -#+begin_src markdown |
| 80 | +````markdown |
83 | 81 | ```context |
84 | 82 | - TCP: "传输控制协议" |
85 | 83 | - HTTP: "超文本传输协议" |
86 | 84 | ``` |
87 | | -#+end_src |
| 85 | +```` |
88 | 86 |
|
89 | 87 | Org-mode 格式: |
90 | 88 |
|
91 | | -#+begin_src org |
| 89 | +```org |
92 | 90 | #+BEGIN_CONTEXT |
93 | 91 | - TCP: "传输控制协议" |
94 | 92 | - HTTP: "超文本传输协议" |
95 | 93 | #+END_CONTEXT |
96 | | -#+end_src |
| 94 | +``` |
97 | 95 |
|
98 | | -** 文件路径与卡片组织 |
| 96 | +### 文件路径与卡片组织 |
99 | 97 |
|
100 | 98 | 文件路径自动转换为 Anki 卡片组层级和标签。 |
101 | 99 |
|
102 | | -例如: =computing/network/tcp_ip.md= |
103 | | -- 卡片组: =computing::network= (深度为 2) |
104 | | -- 标签: =computing=, =network=, =tcp_ip= |
| 100 | +例如: `computing/network/tcp_ip.md` |
| 101 | +- 卡片组: `computing::network` (深度为 2) |
| 102 | +- 标签: `computing`, `network`, `tcp_ip` |
105 | 103 |
|
106 | | -* 许可证 |
| 104 | +## 许可证 |
107 | 105 |
|
108 | 106 | MIT License |
0 commit comments