SynologyとObsidianの同期が競合してRSSが消えた話と、RSSをAI分類するフローに進化させた話【n8n PART3】

前回(PART2)でRSSがObsidianに自動保存されるようになりました。完璧に動いていると思ってさぁ、今日の記事はどんなの集めてくれたのかなCLAUDE君と開いたら、まさかの魔法のランプがあるはずと思っていたジャファーが叫んだかのように、「っないぃぃぃーーーーーーーーっ!!!」 Obsidianは真っ白け。この前確認ではたしかにそこに収集記事があったのに、再度確認すると空欄のままでした。

n8nでWordPress接続・RSS収集フローを作ったら、またDockerの権限で詰まった話【PART2】
SynologyのDockerにn8nを入れたら権限エラーで詰まりまくった話【PART1:起動まで】

原因を調べていったら、n8nでもDockerでもなく「Synology DriveとObsidianの同期競合」っぽくて。この記事はその競合問題をなんとか解決というか、とりあえず稼働させるようにできた後、RSSフローをさらに進化させたお話のお話。n8n導入シリーズのとりあえずの最終回です。

この記事でわかること:SynologyとObsidianのTwo-way syncが競合してn8nが書いたRSSが消えた原因と解決策、そしてRSSをカテゴリ分類・スコアリングするフローへの進化。n8nシリーズの最終回です。

スポンサーリンク

目次

症状:iPhoneでは見えるのにMacでは空欄のまま

n8nのフローを手動実行して確認しました。Synologyのファイルをファイルマネージャーで見ると、ちゃんとRSSの内容が書き込まれています。iPhoneのObsidianで確認しても表示されます。なのにMacのObsidianだけ空欄のまま。

「Macのキャッシュの問題?」「Obsidianのバグ?」としばらく見当違いの場所を調べていました。

切り分け:Synology Driveを止めたら動いた

試しにSynology Driveを一時停止してからn8nを手動実行しました。その状態でファイルを確認すると内容が入っています。

つまり、n8nはちゃんと書けていました。Synology Driveが上書きして消していました。

んもぉ〜〜〜〜〜シノロジー君っなにやってんだよ〜〜o(`ω´ )o

何が起きていたか(同期競合の仕組み):

① n8nがSynology上のファイルに追記 → Synologyのファイルが更新される
② Synology DriveがMac側とSynology側、両方の更新を検知
③「同じファイルが両方で変更されている=競合」と判断
④ MacのObsidianがファイルを開いていてタイムスタンプが更新されていたため、Mac側(空の状態)を「最新」と誤判定
⑤ n8nが書き込んだ内容がMacの空ファイルで上書きされて消える

「Two-way sync(双方向同期)」の落とし穴でした。NAS側だけで更新される想定なのに、Macのファイルのタイムスタンプが変わることでSynology Driveが競合と判断してしまう。

とりあえずの解決:全デバイスをWebDAV経由に統一する

根本的な解決策は「Synology Driveを経由しなければ競合しない」です。完全自動化ではなくなりましたが、iPhone のObsidianはアプリひらけば同期がかかる設定や、1分起きとか、スワイプで同期することもできますのでそこまで苦にならず、Mac側もプラグインのWebDavいれればCommand+Qでsyncメニュー出て簡単に同期できます。 つまり・・・・手動じゅわぁないかぁ。。。おもてたんとちがう・・・( ゚д゚)

iPhoneはすでにRemotely Save(WebDAV経由)でSynologyと同期していました。MacのObsidianも同じようにRemotely Saveを導入して、Synology DriveのSync対象からObsidian Vaultを外しました。

変更前変更後
Macの同期方法Synology Drive(Sync)Remotely Save(WebDAV)
iPhoneの同期方法Remotely Save(WebDAV)変更なし
n8nの書き込み先Synology(直接)変更なし

Synology Driveの同期対象からVaultを外して、全デバイスをWebDAV経由に統一したら安定しました。n8nが書いたファイルがMacにも正常に反映されるようになりました。Synology DriveはVault以外のフォルダ(Projectsなど)だけ同期するように変更しました。

まぁつまりは、SynologyにObisidianのデーターバックアップはとれてないということです・・・あ、これは個別にバックアップで、1方向でNASに設定すればすむ話。 第二の脳のナレッジベースは重要です、これはバックアップしないとですね。

RSSフローを進化させた:カテゴリ分類+スコアリング

競合問題が解決した後、RSS収集フローをもう少しみやすくしたいなと。今は持ってきた記事のタイトル(URLリンク含む)がたんに羅列されているだけ。しかも英語の記事から集めるようにしました。これは英語学習の目的とたんにかいがいのフォーラムの方が情報が早いから。

追加した機能はこちらです。

  • 記事タイトルのキーワードでカテゴリ自動分類(AI・LLM / Apple・iOS / セキュリティ / その他)
  • ニュースの種類でスコアリング(🚨事件・問題 / 🆕新機能・発表 / 📰その他)
  • 今日の記事だけに絞る(UTC→JST変換で日本時間に対応)
  • カテゴリごとに上位5件に絞り込む(あまり多いとCLUADEのトークンの無駄にもなるしそもそもそこまでチェックできないからね〜)

「🆕【新機能】OpenAIが○○を発表」「🚨【問題】○○でデータ流出」のように種類がわかるだけで、流し読みのスピードが上がりました。全部読もうとしなくて良くなって、「今日のAI系ニュースだけ」という使い方が自然にできるようになりました。

まだ解決できていないこと

全部うまくいったわけではありません。

文字化け問題(暫定対応中):既存ファイルを読んで先頭に新しい日付のデータを挿入しようとすると、Synology WebDAVが付加するバイナリメタデータで文字化けが発生します。BOM除去・制御文字除去などを試みましたが、初回だけ文字化けが出る問題が解消できませんでした。現状は「新しい日付のデータが下に追加されていく」方式で妥協しています。何か知ってる人いたらご教示ください。。。 文字ばけが入っても気にしないなら日付の新しい順で上からできるんですが、なんか妥協できない性格でして・・・(;´Д`A

GeminiによるAIコメント自動付与(未着手):注目記事に日本語の一言コメントをつけるためGemini APIをHTTP Requestノードで呼ぼうとしましたが、JSON Bodyに動的テキストを展開するとJSONエラーが続いて解決できませんでした。こちらはまだ積み残しです。

「全部完璧に動いた」という話ではなく、こういった積み残しが正直あります。でもそれを含めて、実際に運用しながら改善していく過程を記録するのがこのブログのスタンスなので、そのまま書いておきます。

3本のシリーズを振り返って

PART1からPART3を通じて詰まったポイントは合計14個ありました。

  • PART1(起動まで):Volume Settings・N8N_HOST・環境変数変更・Permission denied・N8N_SECURE_COOKIE・アクセスURL(6個)
  • PART2(フロー構築):Wordfence・アプリパスワードの発行・Credentials・Write File to Disk・Docker Volume・N8N_RESTRICT_FILE_ACCESS_TO(6個)
  • PART3(競合・進化):同期競合の原因特定・WebDAV統一(2個)

どれも「やってみないとわからない」ものばかりでした。GUI・権限・環境変数・Docker設定・同期競合と、分野もバラバラ。一つ解決するとまた次が出てくる、という連続でした。

  • 毎朝、テック系RSSが自動でObsidianに整理されている
  • カテゴリ・スコアリング付きで流し読みが楽になった
  • Synologyが「情報収集サーバー」として動いている
  • 月0円(電気代のみ)で動き続けている

NASをバックアップ用途でしか使っていない方がいたら、Dockerを試してみることをおすすめします。詰まりポイントは多いですが、一度動いてしまえば何もしなくても動き続けてくれます。


シリーズの記事一覧はカテゴリ「Synology」からどうぞ。次はまた別のSynology・n8n活用ネタを書く予定です。

コメントを残す

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