n8n×ClaudeでRSSをAI要約してNotionに保存する
n8nとClaude APIを連携し、RSSフィードのニュースを自動収集してAIで日本語要約を生成し、Notionデータベースに自動保存するシステムの構築手順を解説します。
はじめに
毎日大量のニュースやブログ記事を手動でチェックするのは時間がかかります。 RSSフィードを購読しているだけでは情報が溜まり、読み切れないまま放置されることも多いです。 そこで本記事では、n8n と Anthropic Claude API を組み合わせて、RSSフィードを自動収集→AI要約→Notionデータベース保存するパイプラインを構築する方法を解説します。 一度セットアップすれば、指定したフィードの最新記事が毎日自動でNotionに要約付きで蓄積されていきます。
システムの全体像
このシステムは以下の6ステップで動作します。
[Schedule Trigger]
↓ 毎朝9時に起動
[HTTP Request: RSS取得]
↓ XMLフィードを取得
[Code Node: XML解析]
↓ 記事リストを抽出
[HTTP Request: Claude API]
↓ 各記事をAI要約
[Code Node: レスポンス解析]
↓ 要約テキストを抽出
[Notion Node: ページ作成]
↓ データベースに保存
n8nはノーコード/ローコードの自動化ツールで、各ノードをビジュアルに接続するだけでワークフローが構築できます。 Claude APIはAnthropicが提供するLLM APIで、日本語の要約生成に優れた精度を発揮します。 Notionは情報蓄積・管理に広く使われているツールで、データベース機能を活用して記事情報を整理できます。
事前準備
Anthropic APIキーの取得
Anthropic ConsoleでAPIキーを発行します。
https://console.anthropic.com/ にアクセスし、「API Keys」から新しいキーを作成してください。
使用するモデルは claude-haiku-4-5-20251001 を推奨します。
Haikuはコストが低く、要約タスクには十分な精度を持っています。
Notionインテグレーションの設定
Notion APIを使うには、インテグレーショントークンとデータベースIDが必要です。
https://www.notion.so/my-integrations でインテグレーションを作成し、シークレットキーを控えます。
次に、記事を保存するNotionデータベースを作成し、インテグレーションにアクセス権限を付与します。
データベースには以下のプロパティを追加しておきます。
- タイトル (Title型): 記事タイトル
- URL (URL型): 元記事のリンク
- 要約 (Text型): AI生成の要約
- 公開日 (Date型): 記事の公開日
- フィード (Select型): フィード元の識別子
n8nのセットアップ
n8nをDockerで起動します。
docker run -d \
--name n8n \
-p 5678:5678 \
-e N8N_TIMEZONE=Asia/Tokyo \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
ブラウザで http://localhost:5678 を開き、アカウントを作成したらセットアップ完了です。
「Credentials」メニューから Anthropic API と Notion の認証情報を事前に登録しておきましょう。
ワークフローの構築
STEP 1: Schedule Trigger
n8nの新規ワークフローを作成し、最初のノードとして Schedule Trigger を追加します。
「Trigger at」を Every Day、時刻を 09:00 に設定することで毎朝9時に自動起動します。
テスト時は「Execute Workflow」ボタンで手動実行できるので、まずは動作確認を優先しましょう。
STEP 2: HTTP Request(RSSフィード取得)
次に HTTP Request ノードを追加し、RSSフィードのURLを設定します。
- Method: GET
- URL:
https://news.ycombinator.com/rss(例: Hacker News) - Response Format: Text
「Response Format」を Text にするのがポイントです。 XML形式のRSSフィードはJSONとして自動解析されないため、テキストとして受け取ってから後続のCodeノードで解析します。
STEP 3: Code Node(XML解析)
Code ノードを追加し、受け取ったXMLをJavaScriptで解析します。
// RSS XMLをパースして記事リストを返す
const xml = $input.first().json.data;
// <item>タグを抽出
const itemMatches = xml.match(/<item>([\s\S]*?)<\/item>/g) || [];
const items = itemMatches.slice(0, 5).map(item => {
const title = (item.match(/<title><!\[CDATA\[(.*?)\]\]><\/title>/) ||
item.match(/<title>(.*?)<\/title>/))?.[1] || '';
const link = (item.match(/<link>(.*?)<\/link>/))?.[1] || '';
const pubDate = (item.match(/<pubDate>(.*?)<\/pubDate>/))?.[1] || '';
const desc = (item.match(/<description><!\[CDATA\[(.*?)\]\]><\/description>/) ||
item.match(/<description>(.*?)<\/description>/))?.[1] || '';
// HTMLタグを除去して300文字に制限
const cleanDesc = desc.replace(/<[^>]+>/g, '').slice(0, 300);
return { title, link, pubDate, description: cleanDesc };
});
return items.map(item => ({ json: item }));
slice(0, 5) で1回の実行につき最新5件のみを処理しています。
API呼び出しコストとNotionのレート制限を考慮した現実的な設定です。
フィードによってはCDATAセクションでタイトルや説明がラップされているため、両パターンに対応した正規表現を用意しています。
STEP 4: HTTP Request(Claude API呼び出し)
HTTP Request ノードを追加してClaude APIへリクエストを送ります。
- Method: POST
- URL:
https://api.anthropic.com/v1/messages - Authentication: Header Auth(
x-api-keyにAnthropicのAPIキーを設定) - Headers:
anthropic-version: 2023-06-01、content-type: application/json - Body: JSON形式(下記参照)
リクエストボディにはn8nの式を使って前ステップのデータを埋め込みます。
{
"model": "claude-haiku-4-5-20251001",
"max_tokens": 300,
"messages": [
{
"role": "user",
"content": "以下の記事タイトルと概要を、日本語で3〜5文に要約してください。\n\nタイトル: {{ $json.title }}\n概要: {{ $json.description }}\n\n要約のみ出力し、余計な前置きは不要です。"
}
]
}
{{ $json.title }} と {{ $json.description }} はn8nの式で、直前のノードから渡されたデータを参照します。
max_tokens: 300 に制限することで、要約が長くなりすぎるのを防ぎコストも抑えられます。
Haikuモデルを使えば1記事あたりの費用は約0.01円程度です。
STEP 5: Code Node(レスポンス解析)
Claude APIのレスポンスから要約テキストを取り出します。
// Claude APIレスポンスから要約テキストを抽出する
const response = $input.first().json;
const summaryText = response.content?.[0]?.text || '要約の取得に失敗しました';
// 上流ノードのデータと合算して返す(ノード名は環境に合わせて変更)
return [{
json: {
title: $('Code: XML解析').item.json.title,
link: $('Code: XML解析').item.json.link,
pubDate: $('Code: XML解析').item.json.pubDate,
summary: summaryText
}
}];
n8nでは $('ノード名').item.json の形式で任意の上流ノードのデータにアクセスできます。
このノードでデータを整形することで、後続のNotionノードへの入力をシンプルに保てます。
STEP 6: Notion Node(データベースへ保存)
最後に Notion ノードを追加します。
- Resource: Database Page
- Operation: Create
- Database: 作成したNotionデータベースを選択
- Title:
{{ $json.title }}
各プロパティのマッピングを設定します。
- URLプロパティ →
{{ $json.link }} - 要約プロパティ →
{{ $json.summary }} - 公開日プロパティ →
{{ $json.pubDate }} - フィードプロパティ →
Hacker News(固定値)
これでワークフローが完成です。 「Save」してから「Execute Workflow」を押すと、Notionに記事が追加されるはずです。
複数フィードの一括処理
複数のRSSフィードを処理する場合は、Schedule Triggerの直後に Code ノードを置いてフィードURLのリストを生成します。
// 処理するRSSフィードのリストを定義する
const feeds = [
{ name: 'Hacker News', url: 'https://news.ycombinator.com/rss' },
{ name: 'TechCrunch', url: 'https://techcrunch.com/feed/' },
{ name: 'Zenn Trend', url: 'https://zenn.dev/feed' },
];
return feeds.map(feed => ({ json: feed }));
このノードの出力は3アイテムになるため、後続のHTTP Request(RSS取得)ノードはそれぞれのURLに対して自動的に3回実行されます。
n8nはデフォルトでアイテムごとにノードを繰り返し実行するため、ループ処理を明示的に書く必要はありません。
「URL」フィールドには {{ $json.url }} を指定するだけで動的にフィードを切り替えられます。
重複保存防止
同じ記事を何度も保存しないように、Notionの検索APIで重複チェックを行います。
HTTP Requestノードを1つ追加し、Notion APIの POST /v1/databases/{database_id}/query を呼び出して、URLプロパティが一致するページが存在するか確認します。
Codeノードでレスポンスを評価し、results.length > 0 なら後続処理をスキップする分岐を設けます。
n8nの IF ノードを使って「重複あり → ワークフロー終了」「重複なし → Claude API → Notion保存」という分岐を実装してください。
運用コスト目安
claude-haiku-4-5モデルの料金(2025年時点)を元に試算します。 1記事あたり入力トークン約200、出力トークン約150として、1記事の費用は約0.008円です。 1日5記事×3フィード=15記事を処理しても月あたり約3.6円と非常に低コストです。 n8nはセルフホスト版を使えば実行費用は発生しないため、VPSやRaspberry Piで動かすのが最もコスト効率に優れます。
プロンプト改善のコツ
要約の品質を高めるためにはプロンプトの工夫が重要です。 出力形式を固定することで後続の処理がしやすくなります。 例えば「1行目に要点、2〜4行目に詳細」のように構造を指示すると、Notionでの表示も整理されます。 記事の分野(テクノロジー、ビジネスなど)をプロンプトに含めることで、分野に適した語彙で要約が生成されやすくなります。 英語記事が多い場合は「日本語で要約」と明示するだけで十分ですが、「専門用語は英語のままでよい」という指示を加えると読みやすさが向上します。
Notionビュー活用術
Notionのデータベースにビューを追加することで、蓄積した記事を効率よく閲覧できます。 フィルタービュー を使えば「フィード = Hacker News」など特定のフィードだけを表示できます。 カレンダービュー では公開日プロパティを基準に記事を時系列で可視化できます。 ギャラリービュー に要約を表示させると、タイトルと要約を一覧で素早くスキャンするのに便利です。 定期的に「既読」プロパティ(チェックボックス型)を追加し、読んだ記事をフィルタアウトするワークフローを組み合わせると、未読管理もスムーズになります。
まとめ
本記事ではn8nとClaude APIを組み合わせてRSSフィードをAI要約しNotionに保存するシステムを構築しました。 6つのノードを接続するだけで、毎日の情報収集を完全に自動化できます。 Claude Haikuモデルの低コストと高精度な日本語要約により、実用的な運用コストに抑えられる点も大きな魅力です。 複数フィードへの拡張や重複防止など、実運用に必要な要素もカバーしているため、そのままプロダクション環境に適用できます。 次のステップとして、Slackへの要約通知やキーワードフィルタリングなどの機能を追加すれば、さらに高度な情報収集基盤が構築できます。