モデル別実行レシピ
最終更新
n8nとOllamaでローカルAI業務の自動化を始める
フォルダーにPDFを置くと、n8nがテキストを抽出し、Ollamaに要約を依頼して結果をファイルに保存できます。
n8nはワークフローのノードをつないで、ファイル処理やモデルへのリクエストを自動化します。セルフホストAIスターターキットは、n8nと関連サービスをDocker Composeで起動する構成例です。Apple Silicon MacではDockerコンテナからGPU1を直接利用できないため、OllamaをMacアプリとして起動し、Docker内のn8nからホストへ接続します。Ollamaのポートをネットワークから受け付けるため、アクセス範囲を制限してください。
n8nはファイル処理とモデルへのリクエストを1つの流れにつなぎます
n8nはスケジュール、ファイル、Webリクエストなどの開始条件と処理ステップをつなぐ自動化ツールです。この例では共有フォルダーからPDFを読み、テキストを抽出してOllamaに韓国語の要約を依頼し、結果を保存します。各段階の入出力を画面で見れば、失敗箇所をすぐ絞れます。
最初のノードにManual Triggerを置いてワークフローを作ります。編集画面のExecute WorkflowをクリックしてPDFを1件処理し、各ノードの入力と出力を確認して要約に必要な情報が残っているか読みます。Schedule Triggerを追加する前に重複処理と再試行の方針を決めます。

DockerスターターキットとMac上のOllamaを準備します
Docker DesktopとOllamaアプリをインストールします。Ollamaのモデルライブラリでモデルを選び、掲載された正確なollama pull ...コマンドを実行してから、ollama listで導入済みの名前を確認します。公式スターターキットによると、MacのDockerコンテナからApple GPUは使えないため、n8nはDocker Composeで起動し、推論はMac上のOllamaが行います。
スターターキットをcloneして環境ファイルを作り、案内されている初期パスワードと暗号化キーを変更します。OllamaをMac上で動かす場合、環境ファイルのOLLAMA_HOSTをhost.docker.internal:11434に設定します。shared/inbox、shared/output、shared/processedを用意してプロジェクトを起動し、http://localhost:5678/を開いてn8nを初期設定します。
git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git n8n-ai-local
cd n8n-ai-local
cp .env.example .env
mkdir -p shared/inbox shared/output shared/processeddocker compose upOLLAMA_HOST=host.docker.internal:11434Ollamaアプリは既定で127.0.0.1:11434だけで接続を受け付けます。DockerからMac上のOllamaに接続するには、Mac側の受信設定も必要です。macOSアプリを使う場合は、公式FAQにあるlaunchctl setenv OLLAMA_HOST 0.0.0.0:11434を設定して、アプリを再起動します。
この設定では、すべてのネットワークインターフェースで接続を受け付けます。Macのファイアウォールで11434番ポートを信頼できるローカル接続に制限し、ルーターでポート転送を設定したり、インターネットに公開したりしないでください。Ollama API2には既定の認証がありません。
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"
PDF要約の流れを手動実行で段階ごとに作ります
先頭をManual Triggerにします。ホストのn8n-ai-local/shared/inbox/brief.pdfにPDFを置き、Read/Write Files from Diskを接続します。OperationはRead File(s) From Disk、File(s) Selectorは/data/shared/inbox/*.pdf、Put Output File in Fieldはdataです。Composeがsharedを/data/sharedにマウントするため、選択欄にはコンテナ内のパスを指定します。
Extract From FileのOperationをExtract From PDF、Input Binary Fieldをdataにします。抽出本文はtextに入ります。Basic LLM ChainにOllama Chat Modelを接続し、認証情報のBase URLをhttp://host.docker.internal:11434/に設定します。ollama listの正確なモデル名を選び、次の文をチェーンのPrompt3欄に入力します。
문서의 핵심을 5개 항목 이내로 요약하세요. 날짜·금액·고유명사는 원문대로 유지하세요.
{{ $json.text }}チェーンの出力はtextフィールドです。Convert to FileでOperationをConvert to Text File、Text Input Fieldをtext、File Nameを{{ $('Read/Write Files from Disk').item.binary.data.fileName.replace(/\.pdf$/i, '.summary.txt') }}にします。
最後のRead/Write Files from DiskではWrite File to Diskを選び、File Path and Nameを/data/shared/output/{{ $('Read/Write Files from Disk').item.binary.data.fileName.replace(/\.pdf$/i, '.summary.txt') }}、Input Binary Fieldをdataにします。
最初の出力はホスト側のn8n-ai-local/shared/output/brief.summary.txtです。スキャンPDFで抽出textが空ならOCR4手順を追加します。
すべてのノードを接続してから編集画面のExecute Workflowを押します。各ノードの入出力を確認し、ホストのshared/output/brief.summary.txtを原文と照合します。

要約を確認してからスケジュールトリガーを追加します
定期実行の前に、ファイル読み込みとPDF抽出の間へRemove Duplicatesを追加します。OperationはRemove Items Processed in Previous Executions、Keep Items WhereはValue Is New、Value to Dedupe Onは{{ $binary.data.fileName }}、ScopeはNodeです。同じファイル名は次の実行で除外され、モデルへ再送されません。
この実習ではファイル名を文書IDにします。修正版はbrief-v2.pdfのような新しい名前で入れ、失敗した入力も名前を変えて再処理します。以前の要約を残す場合は別名で保存します。異なる文書でファイル名が重ならないよう管理してください。
同じファイルを2回実行し、2回目は重複除去ノードの先に送られないことを確認します。その後Schedule Triggerを追加し、低い頻度でワークフローを有効化します。最初の定期実行後に履歴と出力フォルダーを確認します。
モデルが応答しない、ファイルが空の場合は経路を切り分けます
Ollamaモデルノードで接続エラーが出たら、MacでOllamaが起動し、ollama listにモデルが表示されるか確認します。次に、Credentialsにはhttp://host.docker.internal:11434/、.envにはhost.docker.internal:11434が入っていることを確認します。モデルノードでは一覧の正確な名前を選びます。
ファイルノードがパスを見つけられない場合は、Macのパスではなく/data/shared/...のようなコンテナ内のパスを使っているか確認します。Extract From Fileの出力が空なら、PDFに選択可能なテキストがあるか調べます。実行履歴で読み込み、抽出、モデルリクエスト、保存のどこが失敗したか確認すれば、フロー全体を作り直さずに該当部分を修正できます。
用語の注釈
よくある質問
- この記事で最初に確認すべきことは何ですか?
- n8nはワークフローのノードをつないで、ファイル処理やモデルへのリクエストを自動化します。セルフホストAIスターターキットは、n8nと関連サービスをDocker Composeで起動する構成例です。Apple Silicon MacではDockerコンテナからGPUを直接利用できないため、OllamaをMacアプリとして起動し、Docker内のn8nからホストへ接続します。Ollamaのポートをネットワークから受け付けるため、アクセス範囲を制限してください。
- 選ばないほうがよいのはどのような場合ですか?
- この設定では、すべてのネットワークインターフェースで接続を受け付けます。Macのファイアウォールで11434番ポートを信頼できるローカル接続に制限し、ルーターでポート転送を設定したり、インターネットに公開したりしないでください。Ollama APIには既定の認証がありません。
