
Obsidian Index Service

2025.03.23
1
Python笔记索引同步工具内容生成
Obsidian Index Service 是一个用于监控和索引 Obsidian 笔记库中 Markdown 文件的服务。它将文件的元数据和完整内容存储到 SQLite 数据库中,支持文件变更的实时跟踪(创建、修改、删除)。该服务最初是为 `mcp-server` 项目设计的,但后来转向使用 Obsidian 插件 API 实现。尽管如此,它仍然可以作为一个通用的笔记索引器或同步工具使用。
View on GitHub
Overview
基本能力
产品定位
Obsidian Index Service 是一个笔记索引和同步工具,专注于为 Obsidian 笔记库提供实时的文件变更跟踪和数据库索引功能。
核心功能
- 文件变更跟踪:实时监控 Obsidian 笔记库中的文件变更(创建、修改、删除)。
- 元数据提取:从 Markdown 文件中提取路径、标题、父文件夹、标签、创建/修改日期等元数据。
- 内容索引:将文件的完整内容存储到 SQLite 数据库中。
- 数据库支持:使用 SQLite 数据库存储索引数据,支持 WAL(Write-Ahead Logging)模式以提高并发性能。
- Docker 支持:提供容器化部署选项,方便与其他服务集成。
适用场景
- 笔记索引:为 Obsidian 笔记库提供实时的文件索引功能。
- 同步工具:作为笔记同步工具,支持本地和远程同步(未来计划)。
- 开发集成:与其他开发工具(如
mcp-server
)集成,提供笔记数据的实时访问。
工具列表
- SQLite 数据库:存储笔记的元数据和完整内容。
- Docker:支持容器化部署和与其他服务的集成。
- Python 脚本:提供命令行工具,支持手动扫描和实时监控。
常见问题解答
- 如何解决文件变更未触发索引的问题? 确保文件变更事件被正确捕获,检查文件系统的监控设置。
- 如何与其他服务共享数据库? 使用 Docker 卷挂载数据库文件,其他服务可以以只读方式访问。
使用教程
使用依赖
- Python 3.12 或更高版本
- Docker 和 Docker Compose(用于容器化部署)
uv
(可选,推荐使用)
安装教程
-
克隆仓库:
bash git clone https://github.com/pmmvr/obsidian-index-service.git cd obsidian-index-service
-
设置虚拟环境:
- 使用
uv
(推荐):bash uv venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows
-
使用
python
(标准):bash python -m venv .venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows
-
安装依赖:
- 使用
uv
(推荐):bash uv sync # Installs from uv.lock uv pip install pytest pytest-bdd pytest-mock # For tests
- 使用
pip
:bash pip install -e . pip install pytest pytest-bdd pytest-mock # For tests
调试方式
-
设置环境变量:
bash export OBSIDIAN_VAULT_PATH=/path/to/vault export DB_PATH=/path/to/notes.sqlite
-
运行服务:
bash python main.py
或使用uv
:bash uv run python main.py
-
执行一次性扫描:
bash python main.py --scan-only
或使用uv
:bash uv run python main.py --scan-only
-
使用 Docker 运行:
bash docker-compose up -d