[Obsidian]Local REST API 導入

TIPS

Obsidianを「外部から操作」できるようにするLocal REST APIを使うことで、ターミナルやPython、あるいは自作のスクリプトからObsidian内のファイルを読み書きできるようになり、Obsidianが単なるメモ帳から「情報のハブ」へと進化します。

Obsidianの Local REST API は、外部アプリからObsidianのノートを検索・作成・更新・削除するためのインターフェースを提供します。これにより、シェルスクリプトやプログラムから直接ノートを操作することが可能になります。

Step 1: プラグインのインストール

  1. Obsidianの 「Settings(設定)」 を開きます。
  2. 「Community plugins(コミュニティプラグイン)」 を選択します。
  3. 「Browse(ブラウズ)」 ボタンを押し、「Local REST API」と検索してインストールし、「Enable(有効化)」 をクリックします。

Step 2: セキュリティとネットワークの設定

APIは非常に強力なため、初期設定でのセキュリティ確保が重要です。

  1. API Keyの生成:設定画面の「General」セクションにある 「API Key」 を確認します(あるいは再生成します)。これは外部からアクセスする際の「合鍵」になります。
  2. HTTPS (TLS) の設定:デフォルトで自己署名証明書によるHTTPSが有効になっています。セキュリティ上、そのままにしておくことを推奨します。
  3. Portの確認:標準では 27124 ポートが使用されます。

Step 3: 接続テスト(簡単な使い方)

まずは、ターミナル(zsh等)から正しく動作しているか確認しましょう。API Keyを環境変数にセットして curl を叩くのが最も確実です。

# API Keyをセット(設定画面の値をコピーしてください)
export OBSIDIAN_API_KEY='あなたのAPIキー'

# 接続テスト:現在のVault(保管庫)の情報を取得
curl -X GET "https://127.0.0.1:27124/" \
     -H "Authorization: Bearer $OBSIDIAN_API_KEY" \
     -k

-k オプションは、自己署名証明書によるSSLエラーを無視するために必要です。

Step 4: 実戦的なAPI活用例

1. 新しいノートを作成する

その日のタスクやログをスクリプトから自動生成したい場合に便利です。

curl -X POST "https://127.0.0.1:27124/vault/Automation-Log.md" \
     -H "Authorization: Bearer $OBSIDIAN_API_KEY" \
     -H "Content-Type: text/markdown" \
     -d "# Automation Log"$'\n'"Created at: $(date)" \
     -k

2. ノートの内容を取得する

特定のプロジェクトノートの内容を読み込み、処理に利用できます。

curl -X GET "https://127.0.0.1:27124/vault/Note-Name.md" \
     -H "Authorization: Bearer $OBSIDIAN_API_KEY" \
     -H "Accept: application/vnd.olrapi.note+json" \
     -k

Step 5: 開発者向けのヒント

  • APIドキュメントの参照:プラグイン設定画面の 「Open API Document」 をクリックすると、ブラウザでSwaggerドキュメントが開きます。利用可能なエンドポイント(検索、添付ファイル操作、コマンド実行など)がすべて網羅されています。
  • ヘッドレス環境での注意:Local REST APIは Obsidianが起動している間だけ 動作します。サーバーサイドの完全なバックエンドとして使うのではなく、デスクトップ環境における「自動化の窓口」として活用するのがベストです。

パス指定の具体的なルール

例えば、保管庫の名前が MyWork で、その中に Project/Task.md というファイルがある場合、アクセス方法は以下のようになります。

項目具体例
保管庫名MyWork (APIでは無視されます)
Obsidian内のパスProject/Task.md
APIのURLパス
https://127.0.0.1:27124/vault/Project/Task.md
(https://127.0.0.1:27124/vault/Project/Task.md)

なぜ固定なのか?

Local REST API は「今現在、Obsidian アプリケーションでアクティブになっている保管庫」に対して命令を送る仕組みだからです。そのため、URLに保管庫名を含める必要がない設計になっています。

注意点:サブディレクトリがある場合

もし、保管庫の直下ではなくフォルダの中にあるファイルを指定する場合は、/vault/ の後ろに続けてパスを記述します。

  • ルート直下: /vault/Index.md
  • フォルダ内: /vault/Diary/2026-05-01.md

エンコードについて

ファイル名やフォルダ名に日本語(全角文字)やスペースが含まれる場合は、URLエンコード(パーセントエンコード)が必要です。

  • ファイル名: 日報.md
  • APIパス: /vault/%E6%97%A5%E5%A0%B1.md

まとめ

Local REST APIを導入することで、Obsidianは「手書きのメモ」から「APIで叩けるデータベース」へと変貌します。

たとえば、Pythonでデータを取得し、そのままObsidianのデイリーノートに追記したり、開発中のエラーログを特定のノートに飛ばしたりといった運用が簡単になります。

コメント

タイトルとURLをコピーしました