0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iCloudで同期しているObsidianとn8nワークフローを連携させる

0
Posted at

iCloudで同期しているObsidianとn8nワークフローを連携させる

以下の記事に触発され,自分も最新情報の要約をObsidianのノートにまとめてみたいと思いました.

しかし,私はiCloudをObsidianのファイル同期に利用していたため,そのまま方法を真似することはできませんでした.代替アプローチを検討し実装したため,この記事ではその方法を共有します.

TL;DR

  • n8nワークフローをObsidianから呼び出し,ノートに追記する
  • QuickAddプラグインを活用することで,n8nのWebHookトリガーを叩きノートの追加まで実行することができる
  • 必要な時だけワークフローを呼び出すことができる

背景

自動情報収集システムを自分のObsidianにも導入したいと考えました.しかし,先ほどの記事の著者がGitHubを利用されているのに対し,私はファイル同期にiCloudを利用しています.n8nにはiCloud Driveのファイルを操作できるノードが存在しないため,n8nワークフローの実行結果をクラウドストレージに置くという方法をそのまま真似することは難しいと判断しました.
また,個人的な使用場面を考えた時に,ワークフローが自動で定期実行される必要はなく,必要な時に動いてもらえれば十分かと考えました.というのも,毎日自動で実行されてしまうと無駄にコストがかかってしまいますし,必ずしも自分が毎日確認するとは限らないためです.

そのため,n8nノードを利用して直接クラウドストレージのファイルを操作するのではなく,Obsidianの機能を使ってワークフローを実行しノートの追加を行うという方法の方が,シンプルでかつ実現可能性が高いと考えました.

フロー

実装した仕組みの流れは次のようになっています.

  1. ObsidianのQuickAddプラグインでPOSTリクエストを行う
  2. n8nのWebHookトリガーが発火し,n8nワークフローが開始する
  3. 複数のRSSの取得結果を統合
  4. LLMに投げて要約を実行する
  5. Obsidianに結果を返す
  6. Obsidianが結果を受け取る
  7. 実行結果をノートに書き込み,/inboxに新しいノートを追加する

system_flow.png

導入方法

使用ツール/プラグイン

  • n8n(ワークフロー自動化):スマホからでも使えるように,クラウドのLinuxサーバーで稼働させています
  • QuickAdd(ObsidianでのJavaScript実行):テンプレートの作成やスクリプトの実行をコマンドとして登録できるObsidianコミュニティプラグインです

n8nで情報収集用ワークフローを構築する

Dockerをインストールし,次のようなdocker-compose.ymlを用いてn8nコンテナを起動します.詳細については割愛します.

docker-composeの例
services:
  # --- n8n ---
  n8n:
    image: n8nio/n8n:latest # 最新版のn8nイメージを指定
    container_name: n8n_container # コンテナ名を指定 (任意)
    restart: unless-stopped # コンテナが停止した場合、手動で停止しない限り再起動
    ports:
      - "5678:5678" # ホストOSの5678番ポートをコンテナの5678番ポートに接続
    env_file:
      - .env # 環境変数を.envファイルから読み込む
    environment:
      # タイムゾーンを日本時間に設定
      - GENERIC_TIMEZONE=Asia/Tokyo
      - EXECUTIONS_TIMEOUT=3600   # seconds, example: 1 hour
      - EXECUTIONS_TIMEOUT_MAX=7200  # max per‑workflow timeout users can set
      - NODE_FUNCTION_ALLOW_EXTERNAL=node-fetch
    volumes:
      # n8nの設定データやワークフローデータを永続化するためのボリューム
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:
    external: true

n8nのコンテナが起動したら,アプリにアクセスして,新しいワークフローを作成します.

RSS ReadやLLMノードなどを組み合わせて,最新情報を収集しLLMで要約するワークフローを作成します.必ず始点と終点には以下のノードを使用してください.

  • トリガー:Webhook(ObsidianからのPOSTを受け取るために必要です)
  • 最終ノード:Respond to Webhook(Obsidianに結果を返してあげるために必要です)

情報収集や要約のプロセスはどのようなものでも大丈夫だと思いますが,最後の出力はLLMに綺麗にMarkdown形式で出力してもらうとObsidianで綺麗に表示されます.

自分の場合はデータサイエンスや開発系の情報が集まったWebサイトのRSSやXのユーザーから情報を収集するようにしています.MergeノードとFilterノードを組み合わせ,複数のデータソースからの情報を綺麗にLLMに渡します.
Screenshot 2026-03-01 at 15.33.38.png

続いて,Webhookトリガーで以下のように設定します.

  • HTTP Method:POST
  • Path:何でも可
  • Respond:Using 'Respond to Webhook' Node
  • Authentication:Header Auth (認証用のキーと値を設定しておきます)
    Screenshot 2026-03-01 at 17.09.40.png

n8nのワークフローを外部から動かせる状態になったら,忘れずに Publish ボタンを押します.WebhookノードにはTest URLProduction URL がありますが,Production URLを動かすには Publish が必須になります.Production URL にPOSTを飛ばすことでワークフローが実行され,LLMによる要約結果が返ってくるようになります.


QuickAddでワークフローを実行し,新規ノートに追加できるようにする

QuickAddは,Obsidianのコミュニティプラグインです.今回は,JavaScriptを用いたマクロの実行に利用しますが,テンプレートを用いたノート作成など,いろいろな作業をフローとして登録,コマンドとして実行できるようにしてくれます.

この手順でインストールを行ってください.
Settings -> Community plugins -> Community plugins/Browse -> QuickAddと検索 -> install
インストールが完了したら,以下の手順でコマンドの作成を行います.

  1. ObsidianのVault内に,JavaScriptファイルを保存するディレクトリ(/scriptsなど)と,新規作成されたノートが保存されるディレクトリ(/inboxなど)を作成します

  2. そのディレクトリに,下記(n8n_connection.js)のようなJavaScriptを記述したファイルを追加します.webhookUrlをWebhookノードのProduction URLで置き換え,headersにはn8nのHeader Authで設定したキー名と値を入力してください

  3. QuickAddの設定を開きます

  4. Choices&Packagesの箇所で,Templateを書かれているところをクリックして,Macroを選択してください.新しいChoiceの名前を記入し,Add Choiceを押します

  5. 新しく作成したChoiceの設定⚙️をクリックします

  6. User ScriptsBrowseをクリックすると,先ほど作成したJavaScriptファイルが出てくるので,選択します

  7. 最後に,コマンドとして呼び出せるようにChoiceの雷マーク⚡️をクリックしておきます

n8n_connection.js
module.exports = async (params) => {
    // 1. n8nのWebhookノード Production URL
    const webhookUrl = "https://example.com/webhook/path";

    const { app } = params;
    new Notice("🚀 n8nで処理を実行中...");

    try {
        // 2. n8nにリクエストを送信
        const response = await fetch(webhookUrl, {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
                // n8nのHeader Auth設定と一致するキー名と値を入力してください
                "RSS_Summary_Authentication": "password" 
            },
            // n8nにデータを渡したい場合はここに記述します
            body: JSON.stringify({ trigger: "Obsidian QuickAdd" }) 
        });
        new Notice("結果を受け取りました...");

        if (!response.ok) {
            throw new Error(`HTTP Error: ${response.status}`);
        }

        // 3. n8nからの返答(整形されたMarkdownテキスト)を受け取る
        const resultText = await response.text();

        // 4. ファイル名の生成(現在時刻を使用: 例 20260228_183000)
        const dateStr = window.moment().format("YYYYMMDD_HHmmss");
        const fileName = `inbox/n8n_result_${dateStr}.md`;

        // 5. ObsidianのInboxフォルダに新規ファイルを作成して書き込む
        await app.vault.create(fileName, resultText);

        new Notice(`🎉 成功: ${fileName} をinboxに作成しました!`);

    } catch (error) {
        console.error("n8n連携エラー:", error);
        new Notice("❌ エラー: n8nとの通信に失敗しました。");
    }
};

image.png

実行する

これで,Obsidian側の設定も完了です!
コマンドから先ほどのマクロを実行すると,ワークフローを呼び出され,実行が完了すると,結果が記入された新しいノートが作成されます!

Screenshot 2026-03-01 at 15.59.18.png

まとめ

iCloudをObsidianの同期に使っている場合にn8nワークフローとObsidianを連携する方法として,QuickAddとWebhookトリガーを利用した方法を紹介させていただきました.この方法により,必要な時にあらゆるデバイスからワークフローを実行することができるようになります.いろんな情報をObsidian上に集約して最高のナレッジベースを目指すのも面白いですし,AIエージェントに何か作業して欲しい時にObsidianから指示を出すのに使ってみるのもいいかもしれません!

ここまでお読みいただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?