Skip to content

Commit d35e649

Browse files
committed
feat: rename to obsidian-llm-wiki + i18n + GEO optimization
Rename: vault-bridge -> obsidian-llm-wiki (Karpathy LLM Wiki SEO) - GitHub repo, package.json, manifest.json, all internal references i18n: README.zh-CN.md (Chinese) + README.ja.md (Japanese) - Language switcher on all three READMEs GEO: FAQ section with 7 natural-language Q&As - Targets AI engine queries: 'how to connect Claude to Obsidian', 'what is LLM Wiki', 'vs obsidian-claude-code-mcp', etc. manifest.json: id=llm-wiki, description updated for Obsidian plugin store
1 parent fd195b6 commit d35e649

8 files changed

Lines changed: 512 additions & 15 deletions

File tree

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Add to your agent's MCP config:
1919
"mcpServers": {
2020
"vault-bridge": {
2121
"command": "node",
22-
"args": ["/path/to/obsidian-vault-bridge/connector.js"]
22+
"args": ["/path/to/obsidian-llm-wiki/connector.js"]
2323
}
2424
}
2525
}
@@ -57,7 +57,7 @@ These are deterministic. Do not use LLMs for them.
5757
## Build
5858

5959
```bash
60-
cd /path/to/obsidian-vault-bridge
60+
cd /path/to/obsidian-llm-wiki
6161
npm run build # esbuild -> main.js
6262
npm run dev # watch mode
6363
```

README.ja.md

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
[English](README.md) | [中文](README.zh.md) | **日本語**
2+
3+
# Obsidian LLM Wiki
4+
5+
[![CI](https://github.com/2233admin/obsidian-llm-wiki/actions/workflows/ci.yml/badge.svg)](https://github.com/2233admin/obsidian-llm-wiki/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](package.json) [![Python](https://img.shields.io/badge/python-%3E%3D3.11-brightgreen.svg)](kb_meta.py)
6+
7+
**AIがあなたのObsidianノートを読み、検索し、それらの上に構築できるようにします。**
8+
9+
[KarpathyのLLM Wiki](https://www.youtube.com/watch?v=zisonDtp3GQ)にインスピレーションを受けています。でも、今すぐインストールできます。
10+
11+
```
12+
.obsidian/vault/ MCP stdio Claude Code
13+
+-----------------+ +----------+ +-----------+
14+
| notes/ | <--> | connector| <----> | agent |
15+
| daily/ | | .js | | |
16+
| projects/ | WS +----------+ +-----------+
17+
| [[wikilinks]] | <--> Obsidian Cursor
18+
+-----------------+ Plugin Windsurf
19+
```
20+
21+
```
22+
あなた: 「先月分散コンセンサスについて書いたことは?」
23+
Claude: *あなたのボルトを検索し、3つのノートを読み、[[バックリンク]]で答えを合成する*
24+
```
25+
26+
Vault BridgeはあなたのObsidianボルトをMCPサーバーに変えます。任意のAIエージェント(Claude Code、Cursor、Windsurf)が接続できます。読み書き、検索、知識をコンパイル — あなたのノートを真実の源として使用します。
27+
28+
---
29+
30+
## クイックスタート
31+
32+
```bash
33+
git clone https://github.com/2233admin/obsidian-llm-wiki.git
34+
cd obsidian-llm-wiki && npm install && npm run build
35+
node setup.js
36+
```
37+
38+
`setup.js`は自動的にあなたのObsidianボルトを検出し、プラグインをインストールし、Claude CodeのMCPを設定します — すべて一度に。その後、Claudeに質問します:
39+
40+
```
41+
「私のノートからReact Server Componentsについて検索して」
42+
```
43+
44+
それだけです。
45+
46+
<details>
47+
<summary>手動インストール(setup.jsが機能しない場合)</summary>
48+
49+
### 1. プラグインをインストール
50+
51+
`main.js``manifest.json``styles.css`をボルトの`.obsidian/plugins/vault-bridge/`にコピーし、Obsidian Settings > Community Pluginsで有効にします。
52+
53+
### 2. エージェントを接続
54+
55+
`~/.claude/settings.json`(または`.cursor/mcp.json`)に追加します:
56+
57+
```json
58+
{
59+
"mcpServers": {
60+
"vault-bridge": {
61+
"command": "node",
62+
"args": ["/path/to/obsidian-llm-wiki/connector.js", "/path/to/your/vault"]
63+
}
64+
}
65+
}
66+
```
67+
68+
### 3. 確認
69+
70+
```bash
71+
node demo.js
72+
```
73+
74+
</details>
75+
76+
---
77+
78+
## エージェントは何ができるのか?
79+
80+
| 機能 ||
81+
|-----------|---------|
82+
| **任意のノートを読む** | 「my notes/architecture-decisions.mdを読んで」 |
83+
| **全文検索** | 「'auth middleware'を言及しているすべてのノートを見つけて」 |
84+
| **タグで検索** | 「#project-xでタグ付けされたノートを表示して」 |
85+
| **フロントマターをクエリ** | 「status が'in-progress'のノートをリストして」 |
86+
| **グラフをたどる** |[[API Design]]にリンクしているノートは何ですか?」 |
87+
| **ノートを作成** | 「このPRの要約をボルトに作成して」 |
88+
| **ノートを編集** | 「今日のスタンドアップノートを日次ノートに追加して」 |
89+
| **知識をコンパイル** | 「この論文を取り込んで私のナレッジウィキを更新して」 |
90+
| **ヘルスチェック** | 「ボルト内の孤立したノートと壊れたリンクを見つけて」 |
91+
92+
すべての書き込みはデフォルトで**ドライランモード**です。エージェントが何かを変更するために明示的にオプトインする必要があります。あなたのノートは安全です。
93+
94+
---
95+
96+
## なぜVault Bridgeなのか?
97+
98+
| | Vault Bridge | [obsidian-claude-code-mcp](https://github.com/iansinnott/obsidian-claude-code-mcp) | [obsidian-local-rest-api](https://github.com/coddingtonbear/obsidian-local-rest-api) |
99+
|--|-------------|------------------------|------------------------|
100+
| プロトコル | MCP + WebSocket | MCP + WebSocket | REST (HTTPS) |
101+
| Obsidianなしで動作 | はい(ファイルシステムフォールバック) | いいえ | いいえ |
102+
| 検索 | 全文 + タグ + フロントマター + 正規表現 | 基本的な | コンテンツ検索 |
103+
| 知識コンパイル | 組み込み(取り込み → コンパイル → ウィキ) | いいえ | いいえ |
104+
| グラフクエリ | リンクグラフ + バックリンク + 孤立検出 | いいえ | いいえ |
105+
| 書き込み安全性 | デフォルトではドライラン | ガード機構なし | ガード機構なし |
106+
| ボルトヘルス | リント(壊れたリンク、孤立、欠けたフロントマター) | いいえ | いいえ |
107+
| バッチ操作 | はい | いいえ | いいえ |
108+
| リアルタイムイベント | ファイル変更時にWebSocketプッシュ | いいえ | いいえ |
109+
| 認証 | トークン + タイミング安全な比較 | トークン | APIキー + HTTPS |
110+
111+
---
112+
113+
## ナレッジコンパイルワークフロー
114+
115+
これは[Karpathy LLM Wiki](https://www.youtube.com/watch?v=zisonDtp3GQ)の考えを実現したものです:
116+
117+
```
118+
生のソース(論文、記事、ノート)
119+
|
120+
v [vault.init] トピックをスキャフォルド
121+
|
122+
v ソースをraw/にドロップ
123+
|
124+
v [kb_meta.py diff] 新しいソースを検出
125+
|
126+
v LLMが概念、要約、関係を抽出
127+
|
128+
v [kb_meta.py update-hash] コンパイル済みとしてマーク
129+
|
130+
v [kb_meta.py update-index] ウィキインデックスを再構築
131+
|
132+
v [kb_meta.py check-links] 整合性を検証
133+
|
134+
[[wikilinks]]、フロントマター、カバレッジタグ付きのコンパイル済みウィキ
135+
```
136+
137+
エージェントが抽出を行います。`kb_meta.py`は記簿(差分抽出、ハッシング、インデックス作成)を処理します。 — 依存関係なし、純粋Python。
138+
139+
---
140+
141+
## どのように機能するのか
142+
143+
```
144+
AIエージェント <--MCP stdio--> connector.js <--WebSocket--> Obsidianプラグイン
145+
|
146+
(Obsidianが閉じている場合のファイルシステムフォールバック)
147+
```
148+
149+
- **プラグイン**は Obsidian内でWebSocketサーバーを実行します(JSON-RPC 2.0、localhostのみ)
150+
- **connector.js**はWebSocketにプロキシするMCPサーバーです。Obsidianが閉じている場合はボルトを直接読み込みます
151+
- `~/.obsidian-ws-port`経由で自動検出 — 手動ポート設定は不要です
152+
153+
---
154+
155+
## APIリファレンス
156+
157+
MCP経由で20個のツールが利用可能です。すべてJSON-RPC 2.0を使用します。
158+
159+
<details>
160+
<summary>読み取り操作</summary>
161+
162+
| メソッド | パラメータ | 説明 |
163+
|--------|--------|-------------|
164+
| `vault.read` | `path` | ノートのコンテンツを読み取る |
165+
| `vault.list` | `path?` | ファイルとフォルダをリスト |
166+
| `vault.stat` | `path` | ファイル/フォルダメタデータ(サイズ、日付) |
167+
| `vault.exists` | `path` | パスが存在するかチェック |
168+
| `vault.getMetadata` | `path` | 解析されたフロントマター、リンク、タグ、見出し |
169+
170+
</details>
171+
172+
<details>
173+
<summary>書き込み操作(デフォルトではドライラン)</summary>
174+
175+
| メソッド | パラメータ | 説明 |
176+
|--------|--------|-------------|
177+
| `vault.create` | `path, content?, dryRun?` | 新しいノートを作成 |
178+
| `vault.modify` | `path, content, dryRun?` | 既存ノートを上書き |
179+
| `vault.append` | `path, content, dryRun?` | ノートに追加 |
180+
| `vault.delete` | `path, force?, dryRun?` | ノートまたはフォルダを削除 |
181+
| `vault.rename` | `from, to, dryRun?` | ファイルを移動/名前変更 |
182+
| `vault.mkdir` | `path, dryRun?` | ディレクトリを作成 |
183+
184+
</details>
185+
186+
<details>
187+
<summary>検索とグラフ</summary>
188+
189+
| メソッド | パラメータ | 説明 |
190+
|--------|--------|-------------|
191+
| `vault.search` | `query, regex?, caseSensitive?, maxResults?, glob?` | 全文検索 |
192+
| `vault.searchByTag` | `tag` | タグ付きのノートを見つける |
193+
| `vault.searchByFrontmatter` | `key, value?, op?` | フロントマターフィールドでクエリ |
194+
| `vault.graph` | `type?` | リンクグラフ(ノード、エッジ、孤立) |
195+
| `vault.backlinks` | `path` | ノートにリンクしているノートを見つける |
196+
197+
</details>
198+
199+
<details>
200+
<summary>バッチとヘルス</summary>
201+
202+
| メソッド | パラメータ | 説明 |
203+
|--------|--------|-------------|
204+
| `vault.batch` | `operations, dryRun?` | 1回の呼び出しで複数の操作 |
205+
| `vault.lint` | `requiredFrontmatter?` | ボルトヘルスチェック |
206+
| `vault.init` | `topic` | ナレッジベース構造をスキャフォルド |
207+
208+
</details>
209+
210+
---
211+
212+
## セキュリティ
213+
214+
- **localhostのみ** — WebSocketは127.0.0.1にバインド、ネットワーク公開なし
215+
- **トークン認証** — タイミング安全な比較、5秒認証タイムアウト、自動生成256ビットトークン
216+
- **デフォルトではドライラン** — 書き込みは`dryRun: false`を渡さない限りノーオペレーション
217+
- **パストラバーサルをブロック**`..`セグメントは拒否、`.obsidian/`は書き込みから保護
218+
- **接続制限** — 最大20クライアント、10MBペイロード上限、ReDoS安全正規表現
219+
- **ファイルシステムフォールバック** — Obsidianが閉じている場合も同じセキュリティモデル
220+
221+
---
222+
223+
## Pythonコンパニオン(オプション)
224+
225+
| ファイル | 用途 | 依存関係 |
226+
|------|---------|-------------|
227+
| `kb_meta.py` | 決定論的KB操作:差分、ハッシュ、インデックス、リント、健全性 | 標準ライブラリのみ |
228+
| `vault_bridge.py` | 非同期Python WebSocketクライアント | `websockets` |
229+
| `mcp_server.py` | Python MCPサーバー(connector.jsの代替) | `mcp``websockets` |
230+
231+
---
232+
233+
## ライセンス
234+
235+
MIT

README.md

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
# Vault Bridge
1+
# Obsidian LLM Wiki
22

3-
[![CI](https://github.com/2233admin/obsidian-vault-bridge/actions/workflows/ci.yml/badge.svg)](https://github.com/2233admin/obsidian-vault-bridge/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](package.json) [![Python](https://img.shields.io/badge/python-%3E%3D3.11-brightgreen.svg)](kb_meta.py)
3+
[![CI](https://github.com/2233admin/obsidian-llm-wiki/actions/workflows/ci.yml/badge.svg)](https://github.com/2233admin/obsidian-llm-wiki/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](package.json) [![Python](https://img.shields.io/badge/python-%3E%3D3.11-brightgreen.svg)](kb_meta.py)
4+
5+
**English** | [中文](README.zh-CN.md) | [日本語](README.ja.md)
46

57
**Let your AI read, search, and build on your Obsidian notes.**
68

@@ -28,8 +30,8 @@ Vault Bridge turns your Obsidian vault into an MCP server that any AI agent (Cla
2830
## Quick Start
2931

3032
```bash
31-
git clone https://github.com/2233admin/obsidian-vault-bridge.git
32-
cd obsidian-vault-bridge && npm install && npm run build
33+
git clone https://github.com/2233admin/obsidian-llm-wiki.git
34+
cd obsidian-llm-wiki && npm install && npm run build
3335
node setup.js
3436
```
3537

@@ -57,7 +59,7 @@ Add to `~/.claude/settings.json` (or `.cursor/mcp.json`):
5759
"mcpServers": {
5860
"vault-bridge": {
5961
"command": "node",
60-
"args": ["/path/to/obsidian-vault-bridge/connector.js", "/path/to/your/vault"]
62+
"args": ["/path/to/obsidian-llm-wiki/connector.js", "/path/to/your/vault"]
6163
}
6264
}
6365
}
@@ -228,6 +230,31 @@ AI Agent <--MCP stdio--> connector.js <--WebSocket--> Obsidian Plugin
228230

229231
---
230232

233+
## FAQ
234+
235+
**How do I connect Claude Code to my Obsidian vault?**
236+
Install the LLM Wiki plugin, run `node setup.js`, and it auto-configures MCP. Claude Code can then read, search, and write your notes directly.
237+
238+
**How is this different from obsidian-claude-code-mcp?**
239+
LLM Wiki adds filesystem fallback (works without Obsidian running), knowledge compilation (Karpathy-style raw-to-wiki pipeline), graph queries, vault health checks, batch operations, and real-time events. See the comparison table above.
240+
241+
**How is this different from obsidian-local-rest-api?**
242+
local-rest-api uses REST/HTTPS; LLM Wiki uses MCP (the protocol Claude Code and Cursor speak natively). No adapter needed, plus you get search, graph, and knowledge compilation built in.
243+
244+
**Will this break my vault?**
245+
All write operations default to dry-run mode. Your agent must explicitly pass `dryRun: false` to change anything. The `.obsidian/` directory is protected from writes. Path traversal is blocked.
246+
247+
**Does it work when Obsidian is closed?**
248+
Yes. The MCP connector falls back to direct filesystem access automatically. Search, read, and write all work without Obsidian running.
249+
250+
**What is an LLM Wiki?**
251+
A term coined by Andrej Karpathy: use an LLM to "compile" raw sources (articles, papers, notes) into a structured, interlinked wiki with concepts, summaries, and cross-references. This plugin is the installable implementation of that idea.
252+
253+
**What AI agents are supported?**
254+
Any MCP-compatible agent: Claude Code, Claude Desktop, Cursor, Windsurf, and any tool that supports the Model Context Protocol.
255+
256+
---
257+
231258
## License
232259

233260
MIT

0 commit comments

Comments
 (0)