Intelligent Technology's Technical Blog

株式会社インテリジェントテクノロジーの技術情報ブログです。

Claude Code のナレッジベースを Obsidian で構築してみた

こんにちは、臼居です。

最近、Claude Code を使った個人開発に取り組んでいるのですが、一つ不便に感じていることがありました。

会話セッションをまたいだときに、それまでの会話記憶がなくなってしまうことです。

毎回「自分は今、こんなものを作っていて……」と説明し直すのが地味にストレスでした。また、会話の中で出てきた技術的な気づきや決定事項も、セッションが終わると消えてしまいます。

Claude にも公式のメモリ機能はありますが、「Claude が勝手に覚える」ものであり、自分で構造化・編集・検索できるナレッジベースとは別物です。古い情報は薄れていきますし、何が記憶されているかも分かりづらいです。

そこで、Obsidian をナレッジベースとして使い、Claude Code と連携させてみました。この記事ではその構成と実装を紹介します。

なお、この記事では Claude Code 自体の使い方や、Claude Code のスキル機能の詳細については説明していません。Claude Code 公式ドキュメント をあわせてご参照ください。


Obsidian とは

Obsidian は Markdown ファイルをベースにしたノートアプリです。

他のノートアプリと何が違うのか

Obsidian の決定的な特徴は ノート間のリンクをグラフとして扱える 点です。

ノートに [[別のノート]] と書くだけで、ノート同士をリンクできます(wikilink 記法)。リンクされたノートはグラフ構造として可視化・検索でき、「このノートを参照している他のノート一覧(バックリンク)」を一瞬で取得できます。一般的なノートアプリにもリンク機能はありますが、グラフとして辿る使い方に特化しているのが Obsidian の強みです。

図1: Obsidian のグラフビュー。ノート同士のリンクをグラフとして可視化できる

この「ノート間の関係性を構造として扱える」という特徴が、AIと組み合わせたときの強みになります。「Aについて聞かれたら、関連するBとCのノートも一緒に参照する」というような動きが自然にできるからです。

vault という単位

Obsidian ではノートを格納するフォルダのことを vault(ボルト) と呼びます。実体は単なるディレクトリで、中に .md ファイルやサブフォルダが入っているだけです。

今回はこの vault を Claude Code のナレッジベースとして活用します。Claude Code で会話をすると、必要に応じて vault から情報を取得・更新するようにします。


連携方式の比較

Claude Code から Obsidian vault を操作する方法は主に3つあります。まず方式を比較した上で、今回採用したCLIの設定方法を説明します。

1. 直接ファイルアクセス

Claude Code が持つ Read/Write/Edit/Grep ツールで .md ファイルを直接読み書きする方法です。vault は単なる Markdown ファイルの集まりなので、ファイルシステムとして普通に扱えます。

  • Obsidian の起動不要、追加設定なし
  • 本文検索も Grep で可能
  • ただし、ファイル全体を読み込むため会話のトークン消費が大きい
  • Obsidian が持つバックリンクやタグなどの構造情報は使えない(自力で解析が必要)

2. Obsidian CLI(今回採用)

Obsidian v1.12.4(2026年2月リリース)から公式CLI(コマンドライン・インターフェース)が提供されるようになりました。CLIは Obsidian アプリとローカルで直接やりとりし、Obsidian 本体が持つインデックスやグラフ情報にアクセスします。

  • 本文検索が高速
  • wikilink で繋がったノートのバックリンクを Obsidian のグラフから取得できる
  • 単純な追記操作など、ファイル本体を読み込まずに済むためトークン効率が良い
  • Obsidian の常時起動が必須

3. MCP(Model Context Protocol)

Claude Code と連携できる標準プロトコルです。サードパーティ製のMCPサーバーが多数公開されています。

  • filesystem ベース(MCPVault など):Obsidian 起動不要。MCPサーバー側でインデックスを持つものもあり、フルテキスト検索やタグ操作に対応
  • REST API ベース(mcp-obsidian など):Obsidian 起動が必要。Local REST API プラグインをインストールして使う

MCPは機能が豊富ですが、ツール定義自体がコンテキストを消費するため、シンプルな読み書きではCLIよりトークン効率が悪くなる傾向があります。

比較まとめ

直接ファイルアクセス CLI MCP
Obsidian 起動 不要 必須 実装による
セットアップ 不要 簡単 やや複雑
本文検索 Grep で可能 Obsidian のインデックス使用(高速) 実装による
バックリンク解析 自力で解析 Obsidian のグラフ使用 実装による
トークン効率 悪い(ファイル全体を読む) 良い 普通

今回は vault を日常的に Obsidian で開いているため、常時起動を前提にトークン効率と機能のバランスが良いCLIを選びました。


Obsidian CLI のセットアップ

前提条件

  • Obsidian がインストール済みであること(公式サイトからダウンロード)
  • バージョンがv1.12.4以上であること(筆者はMacでv1.12.7で確認)

有効化手順

Obsidian を起動し、以下の手順でCLIを有効化します。

  1. 設定 → 「Obsidian について」に移動
  2. 「コマンドラインインターフェース」を有効
  3. 画面の指示に従い obsidian コマンドをシステム PATH に追加する

動作確認

$ obsidian version
1.12.7 (installer 1.12.7)

$ obsidian vault
name    obsidian-vault
path    /Users/xxx/obsidian-vault
files   6

これでCLIから vault の読み書きができるようになります。


構成の概要

大まかな仕組みはこうです。

  • Obsidian vault をナレッジベースとして使う(プロフィール、個人開発のメモ、技術メモなどを格納)
  • Claude Codeのスキル で vault を読み書きする
    • self-config:会話開始時に関連ファイルを読み込み、コンテキストを把握する
    • auto-capture:会話中に出てきた決定事項や気づきを自動で vault に記録する

「スキル」とは Claude Code の拡張機能の仕組みで、特定の場面で Claude がどう振る舞うかを Markdown で定義できます。~/.claude/skills/スキル名/skill.md に配置すると、会話の内容に応じて自動的に呼び出されます。

これにより、Claude が毎回「自分」を把握した状態で会話を始められるようになります。

図2: Claude Code × Obsidian vault 連携の全体像

vault のフォルダ構成

私は vault を次のように構成しました。

obsidian-vault/
├── 00_Self/       # プロフィール、好み、思考パターンなど「自分」に関する情報
├── 01_Inbox/      # 未整理のメモ置き場
├── 02_Projects/   # 個人開発テーマ別のフォルダ(決定事項、進捗、課題)
├── 03_Dev/        # 技術調査、コードスニペット、アーキテクチャメモ
├── 04_Learning/   # 学習ノート
├── 05_Work/       # 業務関連(会議メモ、タスク)
└── 06_Archive/    # 完了・非活性のもの

たとえば 00_Self/profile.md には自分の役割やスキル、00_Self/preferences.md には Claude との会話スタイルの好みを書いておきます。02_Projects/ 配下は各開発テーマごとのサブフォルダで、decisions.mdchangelog.mdのように役割別ファイルを置いています。


スキルの実装

self-config:vaultを読む

~/.claude/skills/self-config/skill.md に配置するスキルです。会話の内容に応じて関連する vault のファイルを読み込み、コンテキストを把握します。

以下は主要部分の抜粋です。

# Self Config

会話の内容に応じて、関連する vault のファイルを読み込む。
個人開発の話なら 02_Projects/{名前}/ を、
技術的な話なら 03_Dev/ を、
個人的な相談なら 00_Self/ を参照する。

## 使用するコマンド

obsidian read path=<path>               # ファイルを読む
obsidian search query=<keyword>         # キーワード検索
obsidian backlinks path=<path>          # バックリンク取得

auto-capture:vaultに書く

~/.claude/skills/auto-capture/skill.md に配置するスキルです。会話中に出てきた情報を自動で vault に記録します。どの情報をどのファイルに書くかをスキル定義に明示します。

以下は主要部分の抜粋です。

# Auto Capture

会話のたびに記録すべき情報がないか確認する。迷ったら記録する。

## 記録先の判断

| 情報の種類                  | 記録先                               |
|-----------------------------|--------------------------------------|
| 開発テーマの決定事項      | 02_Projects/{name}/decisions.md      |
| 技術的な気づき・調査結果    | 03_Dev/{topic}.md                    |
| 学んだこと                  | 04_Learning/{topic}.md               |
| 個人の好み・思考パターン    | 00_Self/preferences.md               |

## 記録ルール

- タグは #tech/xxx 形式のみ(フォルダと重複する #project/ 等は使わない)
- 関連ノートは [[wikilink]] で相互リンクする
- 各ノートの先頭に tags/created/updated を含むfrontmatterを付ける

## 使用するコマンド

obsidian append path=<path> content=<text>   # 既存ファイルに追記
obsidian create path=<path> content=<text>   # 新規ファイル作成

タグ・wikilink のルールをスキル定義に書いておくことで、Claude が記録するたびに一貫したフォーマットで保存されます。

settings.jsonの設定

スキルから Obsidian CLI を承認プロンプトなしで実行できるよう、~/.claude/settings.json(Claude Codeのグローバル設定ファイル)に以下を追加します。

{
  "permissions": {
    "allow": ["Bash(obsidian *)"]
  }
}

使ってみた所感

この記事自体も Claude Code と会話しながら書いており、ブログの進捗を vault に記録させていました。以下はその実際の動作です。

self-configの例: 進捗を尋ねると、vaultから関連ファイルを読み込んで回答してくれます。

図3: 「ブログ記事作成の進捗は?」と尋ねたところ、self-config が発動して vault を検索・参照している

auto-captureの例: 会話中に出てきた情報を自動で適切なファイルに追記してくれます。

図4: auto-capture が発動し、05_Work/tasks.md に追記している様子

会話の冒頭で Claude Code が vault から自分のプロフィールや開発メモを読み込み、説明なしにコンテキストを把握してくれるようになりました。また auto-capture により、開発テーマの決定事項や技術調査の結果が自動で vault に蓄積されていきます。実際この記事を書く過程での調査内容も、会話しながら自動的に記録されていきました。

よかった点

  • 毎回のコンテキスト説明が不要になった
  • 会話の中で得た知見が vault に自然と溜まっていく
  • Obsidian CLI はセットアップが簡単で、コマンドも直感的
  • Obsidian を開けば、蓄積されたナレッジを目視で確認できる

一方で、次のような課題がありました。

課題

  • Obsidian を常時起動している必要がある
  • auto-capture や self-config の呼び出しが、文脈によって中々されないことがあった。スキル定義の改良余地あり
  • タグ・wikilink の運用ルールは模索中。このルールの設計次第で検索・保存の精度が大きく変わりそう

まとめ

Obsidian を Claude Code のナレッジベースとして使う仕組みを紹介しました。

セットアップはシンプルで、ある程度実用的に動いてると思います。スキルのプロンプト次第でさらに精度が上がる余地もあり、今後も改良していきたいと思っています。

Claude Code や Obsidian に関する情報も日々増えているので、引き続きキャッチアップしていきたいです。


参考
- Obsidian CLI公式ドキュメント
- The Obsidian CLI: Complete Guide
- MCPVault
- A Guide On Links vs. Tags In Obsidian
- Map of Content (MOC): How to Organize Knowledge in Obsidian
- Designing a Machine-Readable Knowledge Base with Obsidian