n8nでWordPress接続・RSS収集フローを作ったら、またDockerの権限で詰まった話【PART2】

前回(PART1)でやっとn8nが起動できました。

SynologyのDockerにn8nを入れたら権限エラーで詰まりまくった話【PART1:起動まで】

今回はWordPressと接続、そして色々な興味あるジャンルのRSS記事をブログネタ用にObsidianに自動保存するフローを作りました。

強敵の権限エラーで何回もつまづきました、今度はDockerのVolume設定の問題でした。

この記事でわかること:n8nとWordPressを接続して、RSS収集→Obsidian自動保存フローを構築するまでの詰まりポイント7つ。Wordfence・Docker Volume設定・N8N_RESTRICT_FILE_ACCESS_TOなど、公式ドキュメントに書いていない罠が連続しました。

スポンサーリンク

目次

WordfenceがアプリケーションパスワードをOFFにしていた

n8nとWordPressを繋ぐには、WordPressのアプリケーションパスワードが必要です。「プロフィールページに生成ボタンがあるはず」と思って探したのですが、その欄がどこにもありません。

「設定が変わったのかな?」と調べてみると、Wordfenceがアプリケーションパスワードを無効化する設定になっていました。

Wordfence → Login Security → 「Disable application passwords」のチェックを外す → プロフィールページに生成欄が現れる

セキュリティプラグインがこういう機能を隠す仕様になっているとは思いませんでした。Wordfenceを使っている方は、n8nやMCPでWordPressに接続しようとして「アプリパスワードの欄がない」となったら、真っ先にここを確認してください。

「追加」ボタンを押さないとパスワードが発行されない

アプリケーションパスワードの名前欄に入力して、そのまま待っていました。何も起きません。「入力したら自動で生成されるのかな」と思っていたのですが、違いました。

名前を入力した後に「新しいアプリケーションパスワードを追加」ボタンを押す必要があります。ボタンを押すとパスワードが表示されますが、このとき一度しか表示されません。必ず即コピーしてください。画面を閉じたら二度と確認できないので、メモ帳やパスワードマネージャーへの保存を忘れずに。

n8nのCredentialsがどこにあるかわからない

n8nのUI上でWordPressの接続情報をどこに入れるのか迷いました。基本、一度設定すれば呼び出せるようにどこかに一回だけ保存しておけばいいのですが、これがなれてないとすぐ忘れてしまうんです。

左上の「+」ボタン → 「Add new Credential」 → 検索欄に「WordPress」と入力 → 「WordPress API」を選択 → WordPressのサイトURLとアプリケーションパスワードを入力 → 「Test connection」で確認

n8nのCredentialsは一度登録しておけば、その後のWordPressノードで使い回せます。複数のWordPressサイトを管理している場合も、それぞれCredentialsを登録して切り替えるだけです。

またoverview(TOPページ)のWorkflows のタブのみぎにCrecentialsタブがでてるのでそこで編集、追記などもできます。ここで設定すればいろいろノードで使いまわせます。

テストフロー:WordPress下書きに届いた

まず最小構成のフローで動作確認しました。

  • Manual Trigger(手動実行)
  • WordPressノード(Create Post・ステータスはDraft)

実行したら、WordPressの下書きにテスト記事が届いていました。

「おお、本当に動いた。」とこのとき初めて実感しました。PART1から続いた権限エラーとの格闘がここで一旦報われた感じがしました。こういう瞬間があるから自動化って楽しいんですよね。

次のフロー:RSS収集 → Obsidianに自動保存

WordPressへの接続が確認できたので、本命のRSS収集フローを作ります。構成はこうです。

  • Schedule Trigger(毎朝7時に自動実行)
  • RSS Read(TechCrunchなどの自分の収集したいRSSフィードを取得)
  • Codeノード(JavaScriptでフォーマット・フィルタリング)
  • Convert to File(テキストをバイナリファイルに変換)
  • Write File to Disk(Synology上のObsidian Vaultに保存)

まぁ理想通りとは、なかなかうまくいきませんよね ʅ(◞‿◟)ʃ

こからまた詰まりが続きました。

Write File to Diskはテキストを直接書けない

Write File to Diskノードで「File Content」欄を探しましたが見当たりません。「Input Binary Field」という欄しか表示されていない。

このノードはバイナリデータ(ファイル)の書き込み専用で、テキストを直接入力する欄がない仕様です。テキストを保存したい場合は以下の流れになります:

①Codeノードで整形したテキストを作成 → ②Convert to FileノードでバイナリのBufferに変換 → ③Write File to Diskで書き込む

Codeノードのポイント:$input.all() で全RSS記事をまとめて処理して、Modeは「Run once for all items」に設定します。一件ずつ処理する「Run once for each item」にしてしまうと、記事ごとにファイルが上書きされて最後の1件だけ残る、という失敗をします。

Obsidian VaultをDockerにマウントできない

Write File to DiskでSynology上のObsidian Vaultのパスを直接指定したら「ファイルが存在しない」エラーが出ました。

DockerコンテナはマウントされたパスしかアクセスできないのにVaultを登録していなかった。コンテナの中からはSynologyのフォルダが見えていない状態でした。

Container ManagerのGUIからVaultフォルダを追加しようとしましたが、/volume1/docker/ 以下しか選択できません。シンボリックリンクを作っても表示されませんでした。

結局SSHでDockerコマンドを直接実行してコンテナを作り直しました。-v オプションでObsidian Vaultのフォルダを /obsidian としてマウントするのがポイントです。Container ManagerのGUIでは細かいVolumeの設定に限界があるため、こういった場合はSSH+コマンドが確実です。SynologyサーバーはSSHをONにすればターミナルから操作できます。

権限は777にしたのに「書き込み不可」が続く

VaultをDockerにマウントして、OSレベルでのファイル権限を設定しました。でもまだ「not writable」エラーが出ます。

「権限はちゃんと付けたのに、なぜ?」と調べてわかりました。OSレベルとは別に、n8nがアプリレベルで /obsidian へのアクセスを制限していました。

解決方法:環境変数 N8N_RESTRICT_FILE_ACCESS_TO=/obsidian を追加します。これによりn8nが /obsidian 以下へのファイルアクセスを許可するようになります。この環境変数は公式ドキュメントに目立つ形で書かれておらず、GitHubのIssueを掘り下げてやっと見つけました。「OSの権限は解決した、でもn8n側でもブロックされていた」という二重の罠でした。

環境変数意味
N8N_RESTRICT_FILE_ACCESS_TO/obsidiann8nがアクセスを許可するパスを指定

完成:Obsidianに自動でRSSが溜まり始めた

全部の問題を解決してフローを実行したら、ObsidianのノートにTechCrunchの記事一覧が自動で追記されていました。

Obsidianで自動収集されたもの タイトルごとにも振り分けられます。また別記事にてメモします。

Screenshot

毎朝起きたら前日のテック記事がObsidianに溜まっている状態になりました。「NASがRSSリーダーになった」という感覚が不思議で面白かったです。自分では何もしていないのに、朝には情報が整理されている。これがやりたかったことでした。あとはVScodeでなにか今日のRSSから旬なネタつくってといえば勝手にブログに下書きしてくれます。

まとめ:PART2で詰まったポイント

  • Wordfence → Login SecurityでアプリパスワードがOFFになっていた
  • 「追加」ボタンを押さないとパスワードが発行されない(一度しか表示されない)
  • n8n Credentials:左上「+」→「Add new Credential」→「WordPress API」
  • Write File to Disk:テキスト直接書き込み不可→Convert to File経由が必要
  • Codeノードは「Run once for all items」モードにする
  • Docker Volume:GUIからVaultを追加できない→SSHでコマンド実行が必要
  • N8N_RESTRICT_FILE_ACCESS_TO:n8nアプリレベルのアクセス制限を解除する環境変数

次の記事では、SynologyとObsidianの同期が競合してRSSが消えた話と、RSSをAIで自動分類するフローに進化させた話を書きます。


次回は「SynologyとObsidianの同期が競合してRSSが消えた話と、RSSをAI分類するフローに進化させた話【PART3】」を書きます。(5月1日公開予定)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です