n8n + Ollama:100%AIで自動化 locale
n8n は、Zapier や Make に対抗するノーコード自動化ツールの中で最も有力な選択肢であり、セルフホストできるという決定的な強みがあります。Ollama と組み合わせれば、データが自分のマシンから一切出ない一連の処理を構築できます。メールの翻訳、記事の要約、見込み客の分類を、すべて外部 API を呼び出さずに実行できます。この n8n と Ollama による自動化ガイドでは、インストール方法、Ollama のネイティブノード、そのままコピーして使える3つの具体的なワークフローを詳しく解説します。
#n8nとOllamaを組み合わせる理由は?
n8n はビジュアルオーケストレーターです。コードを書かずにノード(トリガー、HTTP、データベース、LLM など)を接続すると、ワークフローが cron、Webhook、またはメールボックスをきっかけにバックグラウンドで実行されます。一般向けの競合サービス(Zapier、Make、Power Automate)はいずれも利用量に応じて課金し、データが各社のサーバーを経由することを必須としています。
一方、Ollamaは、互換性のあるHTTP APIを通じて、http://localhost:11434 でローカルLLMを提供します。n8nは2023年末からOllamaのネイティブノードを搭載しており、OpenAI互換ノードも利用できます。その結果、顧客のPDFを要約したり、人事関連のメールを分類したりするワークフローでも、インフラの外にデータが1バイトも出ることはありません。
#前提条件
あなたのマシンで動作するエージェント:エージェント型 Cline、MCP、n8n + Ollama、ローカル自動化。
- 永久に利用できるオンラインスペース
- PDF + ファイル
- 30日間返金対応
- Ollama インストール済み
- デーモンがポート11434で稼働していること。curl http://localhost:11434 で確認してください。初めて導入する場合は、まず当サイトのOllamaインストールガイドに従ってください。
- ダウンロード済みのモデル
- ollama pull qwen3.5:9b pour la polyvalence, ou qwen3.5:4b si vous voulez plus léger. Pour les workflows de classification, granite4.2:8b est solide et très sobre en tokens.
- Docker + Docker Compose
- n8n は Docker で数秒で展開できます。Windows/macOS では Docker Desktop、Linux では Docker Engine を使用します。
- RAMの空き容量8GB
- n8n は約500MBを消費し、Ollama はモデルをVRAMに読み込みます(9B Q4の場合、約6.6GB)。複数のワークフローを同時に実行したい場合は、十分な余裕を確保してください。
- ノーコードでの使用には少しの忍耐が必要です
- n8nは視覚的に操作できますが、魔法の道具ではありません。JSONや{{ $json.field }}のような式を理解しておくことは、やはり役に立ちます。
#1. Dockerでn8nをセルフホスト環境にインストールする
公式で最も簡単な方法は、n8nチームが保守しているDockerイメージを使うことです。専用フォルダとdocker-compose.ymlファイルを作成してください:
鍵となるのは extra_hosts の行です。n8n コンテナから Ollama を呼び出すときは、localhost ではなく http://host.docker.internal:11434 を使います。localhost はコンテナ自身を指してしまうためです。この方法で host-gateway ディレクティブが必要になるのは Linux の場合だけです。
http://localhost:5678 を開いてください。初回アクセス時に、n8nから所有者アカウントの作成を求められます。このアカウントはローカルに留まり、テレメトリーは必須ではありません。ログインすると、空のキャンバスが表示されます。
#2. n8nでOllamaノードを設定する
n8nには、Ollamaを呼び出す方法が2つあります。専用ノード「Ollama Chat Model」(n8nのLangChain系統に統合)と、汎用のHTTP呼び出しです。エージェントやチェーンには専用ノードのほうがすっきりした構成になり、HTTP呼び出しではより細かく制御できます。どちらも動作します。
- 01Ollamaノードを追加するキャンバスに "/" を入力し、"Ollama" を検索してください。AI > Language Models の下で "Ollama Chat Model" を選択してください。
- 02認証情報を作成Credential欄で「Create new」をクリックしてください。Base URL:http://host.docker.internal:11434(Dockerコンテナから)またはhttp://localhost:11434(n8nがネイティブで実行されている場合)。APIキーは不要です。これはローカル環境です。
- 03接続をテストn8n は自動的にモデルの有無をテストし、利用可能なモデルをリストアップします。リストが空の場合、ホストから `docker exec n8n curl http://host.docker.internal:11434/api/tags` を実行して確認してください。
- 04モデルの選択Modelのドロップダウンメニューでqwen3.5:9b(またはダウンロードしたモデル)を選択してください。Temperatureはデフォルトの0.7のままにし、決定論的なタスク(分類、抽出)では0.2に下げてください。
#3. 最初のワークフロー:RSSフィードの要約
典型的な例として、15の技術ブログを定期的に読んでいて、すべての記事を読むことなく、毎日フランス語で要約を受け取りたい場合を考えてみましょう。n8nが新しい記事を取得し、Ollamaが要約します。その結果はメールで送信されるか、Markdownファイルに書き込まれます。
- 01トリガー:Schedule Trigger毎日午前7時に実行するよう設定してください。「Cron expression」モードでは、0 7 * * * と指定します。
- 02フィードを取得する:RSS Feed Trigger または RSS ReadフィードのURL(例:https://blog.lemondeinformatique.fr/feed/)。古い項目を再び要約しないように、「Return only new items」を有効にしてください。
- 03必要に応じて分割する:Split In Batchesフィードが10件の記事を返す場合、Ollamaの負荷を避けるために5件に制限してください。バッチサイズは1で、記事ごとに処理します。
- 04Ollama を呼び出すOllama Chat Model ノードに、このシステムプロンプトと、ユーザーメッセージとして記事を設定します。
- 01要約を集約する:MergeまたはCode記事ごとの出力を1つのメール本文に結合します。items.map(i => `**${i.json.title}**\n${i.json.response}`).join('\n\n')を含むCodeノード(JavaScript)で十分です。
- 02送信する:Send Emailまたはファイルへの書き込みEmail(SMTP)ノードで自分のアドレスに送信するか、Write Binary Fileノードで /home/node/.n8n/daily-digest.md に書き込みます(ファイルはDockerボリュームに永続保存されます)。
#4. ワークフロー:受信メールの翻訳
典型的なケースとして、仕入先から英語、ドイツ語、スペイン語のメールを受け取り、その内容を取り込むGoogle Translateを使わずにフランス語で読みたい場合があります。n8nがIMAPメールボックスを監視し、Ollamaが翻訳します。結果は「翻訳済み」ラベルの付いたメールとして、または返信の下書きとして保存されます。
- 01トリガー:IMAPメールIMAP 認証情報を設定してください(Gmail の場合、アプリケーションパスワードが必要です)。フィルター:INBOX のすべての未読メール。10分ごとにポーリング。
- 02言語の検出:Ollama #1システムプロンプトを指定した最初のOllama呼び出し:「このテキストの言語を表すISO 639-1コードだけで回答してください(fr, en, de, es...)。文章ではなく、アルファベット2文字だけにしてください。」プロンプト:{{ $json.subject }} {{ $json.textPlain }}。
- 03条件分岐:IFノード条件:{{ $json.response }} ≠ "fr"。真の場合 → 翻訳する。偽の場合 → スキップする(すでにフランス語)。
- 04翻訳:Ollama #2システムプロンプト:「以下のテキストを自然なフランス語に翻訳してください。フォーマット(段落、リストなど)を維持してください。コメントは不要で、直接翻訳してください。」プロンプト:メール本文
- 05最終アクション2つのオプションがあります。Gmailの「Add Label」ノードと「Reply Draft」によるメッセージ先頭への翻訳文の書き込み、または、翻訳済みバージョンを含むSlack/Telegram通知の送信です。
#5. ワークフロー:入ってくるリードの分類
典型的な例として、お問い合わせフォームからAirtable/Notion/Postgresのデータベースに情報を登録するケースがあります。各リードをHot/Warm/Cold、業種、緊急度で自動分類したいとします。n8nがデータベースを監視し、Ollamaが自由記述のメッセージを読み取って、構造化されたタグを書き込みます。
このワークフローは、出力をスキーマに従わせるOllamaのJSONモードを活用しています。構造化データを扱うなら不可欠です。
- 01トリガー:Airtable/Postgres Trigger「New row in table Leads」をトリガーにします。5分間隔でポーリングするか、データソースが対応していれば webhook を使います(より迅速に反応します)。
- 02JSONモードで Ollama を呼び出すHTTP Requestノードで、上記のボディを指定して http://host.docker.internal:11434/api/generate にPOSTリクエストを送信します。レスポンスは $json.response に入ります(JSON文字列)。
- 03パース:CodeノードまたはSetノードJSON.parse($input.first().json.response) で temperature、secteur、urgence を抽出します。パースに失敗した場合(モデルがハルシネーションを起こした場合)は、温度を0に設定して再試行します。
- 04CRMに記録する3つのフィールドを指定したAirtable Update / Postgres Updateノード。任意:temperature = Hot かつ urgence ≥ 4 の場合、通知を送るSlackノードを起動する。通知先: [email protected].
#ヒントとトラブルシューティング
- n8nからOllamaに接続できない
- localhost:11434でECONNREFUSEDエラーが出ますか?Docker内から接続しているので、host.docker.internalを使用してください。Linuxでは、composeファイルにextra_hostsが設定されていることと、Ollamaが0.0.0.0で接続を待ち受けていること(OLLAMA_HOST=0.0.0.0:11434)を確認してください。
- ワークフローが遅い
- Ollamaは、モデルがまだメモリに読み込まれていない状態からロードします(初回は5~15秒)。読み込んだ状態を保つには、並行して/api/generateに4分ごとにpingするcronジョブを実行するか、OLLAMA_KEEP_ALIVE=30mに設定して保持時間を延ばしてください。
- 分類時にモデルがハルシネーションを起こす
- 常に format: "json" と、許可される値を列挙したシステムプロンプトを併用すること。Q4の9Bモデルでも出力が曖昧なままなら、qwen3.5:9b-q8_0 に切り替えると、JSON出力の堅牢性が大幅に向上します。
- Dockerのボリュームが失われた
- ワークフローと認証情報は./n8n_dataに保存されています。バックアップなしで、このフォルダーを削除することは絶対に避けてください。Gitでバージョン管理するために、メニュー(Settings > Workflows > Download)からワークフローをJSON形式でエクスポートしてください。
- 呼び出しの件数が多すぎると、VRAMが飽和します
- ワークフローがOllamaへの呼び出しを20件並列で実行すると、GPUが処理能力の限界に達します。Split In Batchesでbatch sizeを1にするか、OLLAMA_NUM_PARALLEL=1を追加して、逐次処理にしてください。
- n8n バージョン
- n8nは約10日ごとにメジャーリリースを公開します。docker compose pull && docker compose up -dで更新できます。Ollamaノードはバージョン1.18以降、安定しています。
#さらに詳しく
これで、n8n + Ollamaを組み合わせたワークフローが動くようになりました。次に取り組むとよいことをいくつか紹介します。
- RAGを接続する
- 当サイトのChromaDBを使ったRAGガイドでは、PDFやメモをインデックス化する方法を紹介しています。このRAGパイプラインは、HTTPエンドポイント経由でn8nから呼び出せます。これにより、ワークフローで自分のナレッジベースの情報をコンテキストとして活用できます。
- モデルを最適化する
- ワークフローで大量の処理を行う場合は、Q4/Q5/Q8の量子化ガイドをご覧ください。Q4_K_Mまで量子化を進めると、分類タスクで目立った品質低下を生じさせずに、VRAM使用量を半分にできる場合があります。
- 専用GPUの選定
- n8n + Ollama を 1 台のマシンで 24/7 稼働させる場合、サイトの GPU 購入ガイドでは、ターゲットとなるワークフローに応じて 12/16/24 GB の閾値が示されています。
ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。