一套 完整、开箱即用的 Obsidian + Ollama 本地 AI 集成方案,
目标:
✨ 选中日记内容 → 一键调用本地大模型(如 Qwen)→ 自动提取主题标签 → 自动将笔记移动到对应主题文件夹
整个过程 完全离线、免费、保护隐私,适合中文用户。
📦 一、所需工具清单(全部免费)
| 工具 | 作用 | 安装方式 |
|---|---|---|
| Ollama | 本地运行大模型 | https://ollama.com/download |
| Obsidian | 笔记软件 | https://obsidian.md |
| Text Generator | 调用 Ollama API 生成文本 | Obsidian 社区插件 |
| QuickAdd | 自动化执行流程 | Obsidian 社区插件 |
| File Manager | 移动/重命名笔记文件 | Obsidian 社区插件 |
💡 所有插件均可在 Obsidian 中直接安装。
🔧 二、详细配置步骤
第 1 步:安装并运行 Ollama + 中文模型
-
下载安装 Ollama(Mac/Windows/Linux)
-
打开终端,运行:
bashollama run qwen:7b首次会自动下载模型(约 4--6GB),建议使用 Wi-Fi
成功后你会看到
>>>提示符,输入exit退出交互模式(后台服务仍在运行)
✅ 验证 API 是否可用:
bash
curl http://localhost:11434/api/tags
应返回已安装的模型列表。
第 2 步:在 Obsidian 中安装插件
- 打开 Obsidian → 设置 → 社区插件 → 关闭"安全模式"
- 点击"浏览" → 搜索并安装以下三个插件:
- Text Generator
- QuickAdd
- File Manager
- 全部启用
第 3 步:配置 Text Generator(连接 Ollama)
- 进入 设置 → Text Generator
- 填写以下参数:
| 字段 | 值 |
|---|---|
| API URL | http://localhost:11434/api/generate |
| Model | qwen:7b |
| Temperature | 0.3(降低随机性,更稳定) |
| System Prompt (可选) | 你是一个冷静、简洁的个人知识管理助手。 |
- 在 Prompt Template 中粘贴以下内容(用于主题提取):
text
请从以下日记内容中提取1-2个最相关的主题类别(从以下选项中选择):
可选主题:工作、学习、健康、情绪、人际关系、创意、财务、旅行、阅读、技术
要求:
- 只返回主题名称,用英文逗号分隔
- 不要解释,不要标点,不要换行
日记内容:
"""
{{content}}
"""
✅ 示例输入:
今天和团队开了需求评审会,晚上跑步5公里,感觉精力充沛。
✅ 期望输出:
工作,健康
第 4 步:创建 QuickAdd 自动化宏
我们将创建一个命令:"AI 分类当前笔记"
4.1 创建 Capture 模板(用于临时存储 AI 结果)
- 在你的 Vault 中新建文件夹:
Templates/ - 新建笔记
AI-Result.md,内容留空(仅作占位)
4.2 配置 QuickAdd
- 进入 设置 → QuickAdd
- 点击 "Create a new Choice"
- 名称:
AI 分类当前笔记 - 类型:Macro
- 添加以下动作(按顺序):
动作 1:调用 Text Generator
- 选择 Run Command
- 命令:
Text Generator: Generate text from selection - ✅ 勾选 "Use current file as context"
动作 2:保存结果到临时文件(可选,用于调试)
- 选择 Capture to file
- Template file:
Templates/AI-Result.md - Filename format:
AI-Result-{``{date:YYYY-MM-DD-HHmm}}
(这一步可跳过,但建议保留以便排查问题)
动作 3:根据 AI 结果移动文件(核心!)
⚠️ 由于 QuickAdd 不能直接解析 AI 输出,我们需要一个"中间脚本" 。
这里提供两种方案:
🧩 方案 A:【推荐】用 File Manager + 手动确认(简单可靠)
-
运行 QuickAdd 后,AI 会在笔记顶部插入一行,如:
markdown<!-- AI-TOPICS: 工作,健康 --> -
你手动查看后,用 File Manager 插件 快速移动:
- 右键笔记 → File Manager → Move to →
Topics/工作/
- 右键笔记 → File Manager → Move to →
✅ 优点:安全、可控
⏱️ 耗时:每次多花 5 秒
🧩 方案 B:全自动移动(需 Python 脚本辅助)
如果你希望完全自动,可用以下 Python 脚本监听剪贴板或文件变化。
步骤:
- 安装 Python(3.8+)
- 创建脚本
auto_move_by_topic.py:
python
import os
import re
import shutil
import time
from pathlib import Path
VAULT_PATH = "/path/to/your/Vault" # ← 改成你的 Vault 路径
TOPIC_FOLDER = "Topics"
def get_topics_from_note(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
match = re.search(r'<!-- AI-TOPICS: ([^>]+) -->', content)
if match:
return [t.strip() for t in match.group(1).split(',')]
return []
def move_note_to_topic(note_path, topics):
for topic in topics[:1]: # 只取第一个主题
dest_dir = Path(VAULT_PATH) / TOPIC_FOLDER / topic
dest_dir.mkdir(parents=True, exist_ok=True)
shutil.move(str(note_path), dest_dir / note_path.name)
print(f"Moved to {dest_dir}")
break
# 监听新笔记(简化版:每10秒扫描一次 Daily 文件夹)
daily_dir = Path(VAULT_PATH) / "Daily"
while True:
for note in daily_dir.glob("*.md"):
if "<!-- AI-TOPICS:" in note.read_text(encoding='utf-8'):
topics = get_topics_from_note(note)
if topics:
move_note_to_topic(note, topics)
time.sleep(10)
- 运行脚本:
python auto_move_by_topic.py
⚠️ 注意:此为简化示例,生产环境建议用更健壮的文件监听(如
watchdog库)
📁 三、文件夹结构建议
MyVault/
├── Daily/ ← 日记存放处(由 Daily Notes 插件生成)
├── Topics/ ← AI 自动归类的目标文件夹
│ ├── 工作/
│ ├── 学习/
│ ├── 健康/
│ └── 情绪/
├── Templates/
│ └── Daily.md ← 日记模板
└── ...
▶️ 四、使用流程(每日操作)
-
写完日记(如
Daily/2025-12-23.md) -
选中全文(或关键段落)
-
右键 → QuickAdd → AI 分类当前笔记
-
等待 2--5 秒,AI 返回结果并插入注释:
markdown<!-- AI-TOPICS: 工作,情绪 --> -
(方案 A)手动用 File Manager 移动到
Topics/工作/ -
(方案 B)脚本自动移动
🎯 五、优化建议
| 优化点 | 方法 |
|---|---|
| 提升中文准确率 | 使用 qwen:14b 或 deepseek-coder(如果内存够) |
| 避免误分类 | 在 Prompt 中增加示例(Few-shot) |
| 批量处理历史日记 | 用 Python 脚本遍历 Daily/ 文件夹,逐个调用 Ollama API |
| 添加情绪分析 | 修改 Prompt,让 AI 同时返回情绪标签(如 #情绪/积极) |
📥 附:一键导入资源包
你可以复制以下内容,快速创建所需文件:
Templates/Daily.md
markdown
# {{date:YYYY-MM-DD}}
## 📝 日记
## 🔍 AI 分析
<!-- AI-TOPICS: -->
QuickAdd 配置(导出 JSON)
兼容 Obsidian 最新版(1.6+)和 QuickAdd 插件(v2.0+)
quickadd.json 配置文件
1{
2 "choices": [
3 {
4 "name": "AI 分类当前笔记",
5 "type": "macro",
6 "macro": {
7 "steps": [
8 {
9 "id": "run-command",
10 "commandId": "text-generator:generate-from-selection"
11 },
12 {
13 "id": "append-to-file",
14 "file": "{{CURRENT_FILE}}",
15 "append": "\n<!-- AI-TOPICS: {{textGeneratorResponse}} -->\n"
16 }
17 ]
18 },
19 "id": "ai-classify-note"
20 }
21 ],
22 "inputPrompt": "",
23 "templateFolderPath": "Templates",
24 "captureTemplateFile": "",
25 "shouldCreateNoteInActiveFolder": false,
26 "shouldOpenFile": false,
27 "shouldOpenFileInNewTab": false,
28 "shouldOpenFileInPreviewMode": false,
29 "format": "YYYY-MM-DD HH:mm",
30 "dateFormat": "YYYY-MM-DD",
31 "timeFormat": "HH:mm",
32 "version": "2.0.0"
33}
🔍 配置说明
| 字段 | 作用 |
|---|---|
name: "AI 分类当前笔记" |
在 QuickAdd 菜单中显示的名称 |
commandId: "text-generator:generate-from-selection" |
调用 Text Generator 的"从选中内容生成"命令 |
append: <!-- AI-TOPICS: {``{textGeneratorResponse}} --> |
将 AI 返回结果插入当前笔记末尾 |
{``{CURRENT_FILE}} |
QuickAdd 内置变量,指当前打开的笔记 |
✅ 这个配置不需要临时文件,直接把 AI 结果追加到当前笔记。
🛠️ 如何应用这个配置?
方法一:通过 Obsidian 界面(推荐,安全)
- 打开 Obsidian → 设置 → QuickAdd
- 点击右上角 ⋮ → Export settings
- 备份原文件
- 点击 Import settings,粘贴上述 JSON 内容
- 重启 Obsidian
方法二:手动替换文件(高级用户)
- 关闭 Obsidian
- 进入你的 Vault 目录 →
.obsidian/plugins/quickadd/ - 编辑
data.json,替换为上述内容 - 重新打开 Obsidian
⚠️ 注意:路径是
data.json,不是quickadd.json。QuickAdd 插件使用data.json存储配置。
▶️ 使用效果
-
打开一篇日记,选中一段文字(或全选)
-
按
Ctrl/Cmd + P→ 输入QuickAdd: AI 分类当前笔记→ 回车 -
等待 2--5 秒(Ollama 处理中)
-
笔记末尾自动添加:
html
预览
1<!-- AI-TOPICS: 工作,情绪 -->
🧩 后续自动化建议
有了这行注释后,你可以:
方案 A:手动移动(简单)
- 右键笔记 → File Manager → Move to →
Topics/工作/
方案 B:用 Dataview 自动聚合(无需移动)
创建一个笔记 Topics/工作.md,内容:
markdown
编辑
1# 工作相关日记
2
3```dataview
4LIST FROM #日记
5WHERE contains(this.file.outlinks, [[工作]])
6OR contains(this.file.content, "AI-TOPICS: 工作")
7SORT file.name DESC
8```
这样即使笔记还在
Daily/,也能在"工作"页面集中查看。
🔄 如果你想"自动移动文件"
QuickAdd 本身不能解析变量内容再执行移动,但你可以:
- 保留上述配置(插入注释)
- 额外运行一个 Python 脚本 (如前文所述),定期扫描
Daily/文件夹 - 脚本读取
<!-- AI-TOPICS: ... -->行,自动移动文件
✅ 总结
你现在拥有了:
- 一个 完全本地、离线、免费 的 AI 日记分析系统
- 基于 Ollama + Qwen 的强大中文理解能力
- 通过 Obsidian 插件 实现半自动/全自动归类