背景
毎朝「小売業界の最新ニュース」をSlackに共有していましたが、手作業では時間もかかるし抜け漏れも発生しがちでした。
そこでオープンソースのワークフロー自動化ツール n8n と AIエージェント(Gemini 2.5 Flash) を使って、
ニュース収集 → 要約 → Slack通知 を完全自動化しました。
完成したフロー
n8n上ではこのようなシンプルなフローになりました。
この記事のコードを1つずつコピペしていけばみなさんも同じフローが作れます
全体フロー
- Cron : 平日8:30 JSTに起動
- Code(JavaScript) : GoogleニュースRSS URLを生成
- RSS Feed Read : 記事データを取得
- Code(JavaScript) : 直近24時間以内&最大10件にフィルタ
- AIエージェント(Gemini 2.5 Flash) : 要約を生成
- Code(JavaScript) : Slack投稿用に結合
- Slack : チャンネルに通知
実際のノード設定
1. Code(JavaScript): RSS URL生成
const queries = [
'小売 業界',
'EC 小売',
'ドラッグストア',
'コンビニ',
'スーパー 小売'
];
const urls = queries.map(q =>
`https://news.google.com/rss/search?q=${encodeURIComponent(q)}&hl=ja&gl=JP&ceid=JP:ja`
);
return urls.map(u => ({ json: { url: u } }));
2. RSS Feed Read
-
URL :
{{$json.url}}
これで Code ノードが出力した複数のRSSを順番に取得できます。
3. Code(JavaScript): 24時間フィルタ & 件数上限
const now = Date.now();
const DAY = 24 * 60 * 60 * 1000;
let items = $input.all().map(i => i.json);
items = items.filter(it => {
const t = new Date(it.pubDate || 0).getTime();
return t && (now - t) <= DAY;
});
items.sort((a,b) => new Date(b.pubDate) - new Date(a.pubDate));
items = items.slice(0, 10);
function plain(s) {
return (s || '')
.replace(/<[^>]+>/g, ' ')
.replace(/ /g, ' ')
.trim();
}
return items.map(it => ({
json: {
title: it.title,
link: it.link,
pubDate: it.pubDate,
description: plain(it.contentSnippet || it.content || '')
}
}));
4. AIエージェント(Gemini 2.5 Flash)
接続するときにまずモデルを登録する必要があります。
今回は簡単にAPIを発行できるGeminiを使います。
Googleアカウントを持っていればGoogle AI Studioから発行できます。
System Prompt
あなたは日本語のビジネスニュース編集者です。
入力記事を事実ベースで3文以内に要約し、固有名詞と数値を残してください。
出力は必ず1行、先頭に「・」を付け、文末にURLを丸括弧でつけてください。
User Prompt
タイトル: {{$json.title}}
概要: {{$json.description}}
URL: {{$json.link}}
5. Code(JavaScript): Slack投稿用に結合
const lines = $input.all().map(i => {
const t = i.json.text ?? i.json.completion ?? i.json;
return typeof t === 'string' ? t : JSON.stringify(t);
});
const header = `*本日の小売業界ニュース(${new Date().toLocaleDateString('ja-JP')})*`;
return [{ json: { text: `${header}\n${lines.join('\n')}` } }];
6. Slack(Post Message)
-
Text :
{{$json.text}}
- Channel : 通知したいチャンネルID
Tips
- 1つノードを作ったら「Execute Step」で実験する。
左側に入力前、右側に入力後が表示されるので、これを使ってデバッグやテストができる。
Slackとの認証
Slackアプリを作成 → chat:write
権限を付与 → ワークスペースにインストールすると
xoxb-...
形式のBot Tokenが取得できます。
これを n8n の Slack Credentials に設定します。
実際に通知できた!
Slack Botからニュース要約をチャンネルに投稿できました 🎉
完成したフロー
n8n上ではこのようなシンプルなフローになりました。
ハマりどころ
-
RSS Feed Readの出力:記事はすでに「1アイテムごと」に出るので
i.json.items
ではなくi.json
を扱う - 24時間フィルタ:テスト時は記事がゼロになりやすいので、時間を72hに広げて検証した
-
Slack投稿:Botをチャンネルに
/invite
し忘れると投稿されない
成果
- 毎朝のニュース収集・共有が完全自動化
- Slackを見るだけで業界動向が把握できる
- 情報収集時間がゼロに、抜け漏れも防止
まとめ
n8nを使えば、ニュース収集のような定型作業を短時間で自動化できます。
今回は「小売ニュース」でしたが、キーワードを変えるだけで他業界のトレンド把握にも応用可能です。
そして AIエージェント(Gemini 2.5 Flash) を組み込むことで、人力では大変な要約も自然にこなせるようになりました。