[n8n] note と Obsidian の連携設定
note と Obsidian が連携できると良いなと考えている人は多いようですね。ちょっと雑な説明しか残していなかったので、いまの具体的な設定がどのようになっているかを紹介します。
改めまして、全体の構成はこの通りです。
(2025/7/28更新)

RSS Feed Triger
フローの始まり部分です。
毎日 22時に https://note.com/sho7650/rss の RSS Feed へアクセスします。

HTTP Request
RSS の Feed には冒頭の文章のみしか含まれていませんので、コンテンツへアクセスして html をゲットです。
Method は "GET" で URL が "{{ $json.link }}" ですね。ここはこれだけで十分です。

URL の情報については、左側のペインにある "Execute previous nodes" をクリックして、情報を拾ってくることができます。

この様に RSS の情報が構造化されて表示されますから、ここの "link" 部分をドラッグして "URL" に放り込んでしまうのが確実です。

HTML
ここはちょっと厄介です。ドキュメントの構造が分かってないと指定ができません。2025年7月現在、note のコンテンツはこの指定で取得が可能です。このままパクってくださいませ。

コピペ用にここに残しておきますね。
Operation : Extract HTML Content
Extraction Values : 一つ目
Key: title
CSS Selector: h1.o-noteContentHeader__title
Extraction Values : 二つ目
Key: body
CSS Selector: div.note-common-styles__textnote-body
Extraction Values : 三つ目
Key: publishDate
CSS Selector: time
Return Value と Attribute の指定をまちがえないように。
Code (2025/7/28追記)
お題にファイルに利用できない文字があると、保存の段階で失敗します。なのでタイトル内にファイル名として使えない文字があれば、"_" はサニタイズします。

// Loop over input items and add a new field called 'myNewField' to the JSON of each one
// ファイル名に使えない文字を置き換える関数
function sanitizeFileName(inputString) {
const invalidChars = /[<>:"/\\|?*]/g;
return inputString.replace(invalidChars, '_');
}
$json.title = sanitizeFileName($json.title);
return $input.all();なぜか $json で並線でるの許せない。
AI Agent
取得したコンテンツを Obsidian 向けに調整する重要な役割がここです。

LLM へ渡すプロンプトを記します。{{ $json.body }} などが上記で指定したパラメータ名です。ここは Obsidian へ載せたいフォーマットで各自準備ください。
以下の記事を要約し、主要な洞察を3つ抽出してください。
重要となるキーワードを5つ抽出してしてください。キーワードの先頭には必ず # を付けてください。
次のフォーマットで出力してください。
---
# Mandatory fields
id: "<% tp.user.uuid() %>"
# Optional fields
title: "<% tp.file.title %>"
tags: []
source: ""
source_title: ""
source_description: ""
source_image_url: ""
created_date: "<% tp.date.now() %>"
modified_date: "<% tp.date.now() %>"
---
## 要約
<!-- ここに要約を追加 -->
## 主要な洞察
<!-- ここに洞察を追加 -->
## キーワード
<!-- ここに重要なキーワードを追加 -->
{{ $json.body }}この AI Agent にはひとまず Chat Model が一つついてればよしです。みなさまの契約状態にあわせて選択ください。わたしは Anthoropic です。
Convert to File
Obsidian 用の Markdown ファイル形式へと変換するのがこのパートです。ここではファイル形式にするだけで、まだ保存されません。

File Name: {{ $('Code').item.json.title }}.md"Code" のところでサニタイズしたタイトルはここで利用します。そういえば、publish date ちゃんと使ってないな。あと File Name 指定しなくても平気な気がしてる。
Read/Write Files From Disk
なんかまた同じような設定していますが、Convert to File の処理は必須です。バイナリ形式になっていないと、この機能が動きません。設定まではできるんですが、テキストをそのまま保管することはできないようです。残念。

File Path and Name:
/obsidian/03_Extra/Articles/{{ $('Code').item.json.title }}.md私は Docker で /obsidian の PATH を mac のローカルドライブにマッピングしていますので、ここは各自の環境に合わせて変更してください。
こんな感じです。
いいなと思ったら応援しよう!
あなたの支えが、私の心の糧になります。
note の収益はガジェットのレビューや、自費出版に使わせていただきます。