0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【n8n × RSS】APIキー不要!恋愛バズ記事を自動収集するワークフローを作った

0
Posted at

はじめに

特定ジャンルのバズ記事を毎日チェックするの、面倒ですよね。

今回は n8n を使って、APIキーなし・完全無料でバズ記事を自動収集する仕組みを作ってみました。

何ができるの?

⏰ 毎日決まった時間に自動実行
  → 📰 はてブの人気記事(RSS)を取得
  → 📰 Google Newsの検索結果(RSS)を取得
  → 📝 重複排除 & 件数を絞り込み
  → 💾 n8n内部に保存

APIキーも外部サービスの登録も一切不要です。

使った技術

技術 用途
n8n ワークフロー自動化
RSS はてブ / Google News から記事取得

ワークフローの構成

収集フロー

スケジュール実行で、RSSフィードから記事を取得して保存します。

ポイント解説

1. RSSフィードを使う理由

はてなブックマークGoogle Newsは、どちらもRSSフィードを公開しています。

https://b.hatena.ne.jp/search/tag?q=<検索ワード>&mode=rss
https://news.google.com/rss/search?q=<検索ワード>&hl=ja&gl=JP&ceid=JP:ja

RSSなので、APIキーの取得もアカウント登録も不要。好きなキーワードを指定するだけです。

💡 <検索ワード> の部分を変えれば、どんなジャンルでも対応できます。
例: 恋愛, 旅行, グルメ, プログラミング など

2. 整形 & 絞り込み(Codeノード)

取得したRSS記事を、使いやすいJSON形式に整形します。

const allItems = items;
const seen = new Set();
const unique = [];

for (const item of allItems) {
  const link = item.json.link || item.json.guid || '';
  if (link && !seen.has(link)) {
    seen.add(link);
    
    const title = item.json.title || 'untitled';
    
    // HTMLタグを除去して説明文を生成
    const rawDesc = item.json.contentSnippet || item.json.content || '';
    const description = rawDesc.replace(/<[^>]*>/g, '').substring(0, 150);
    
    unique.push({
      json: { title, description, sourceUrl: link }
    });
  }
}

// 件数を絞って返す
return unique.slice(0, 5);

ポイント:

  • Set でURLベースの重複排除
  • 正規表現でHTMLタグを除去
  • slice で件数制限

3. 保存には staticData を使う

n8nには $getWorkflowStaticData('global') という便利な機能があります。

const staticData = $getWorkflowStaticData('global');
const newPosts = items.map(i => i.json);
const existing = staticData.posts || [];

// 新しい記事 + 既存の記事をマージ
const allPosts = [...newPosts, ...existing];

// タイトルで重複排除
const seen = new Set();
const deduped = allPosts.filter(post => {
  if (seen.has(post.title)) return false;
  seen.add(post.title);
  return true;
});

staticData.posts = deduped.slice(0, 20);

これを使うと外部DBやファイル保存なしで、ワークフロー内にデータを永続化できます。

⚠️ 最初は Write File ノードを使おうとしましたが、バイナリ変換のエラーが出たので staticData 方式に変更しました。こっちのほうがシンプルです。

実行結果

テスト実行した結果:

ノード 取得件数 状態
RSS ① 40件
RSS ② 71件
整形 & 絞り込み 5件
保存 10件(累積)

実行時間: 約1.6秒 で完了。全ノードエラーなし。

カスタマイズ例

検索ジャンルを変更する

RSSノードのURLの検索ワードを変えるだけ:

ジャンル 検索ワード例
恋愛 恋愛
旅行 旅行
テクノロジー AI+ChatGPT
グルメ グルメ+おすすめ

保存件数を変更する

// この数値を変えるだけ
staticData.posts = deduped.slice(0, 20);  // ← 20件保持

実行頻度を変更する

Schedule Triggerノードの設定を変えるだけ:

  • 毎日: "field": "days"
  • 毎週: "field": "weeks"
  • 毎時: "field": "hours"

まとめ

項目 内容
構築時間 約30分
APIキー 0個
外部サービス登録 なし
実行時間 約1.6秒/回

RSSフィードと staticData を組み合わせることで、外部APIに依存しないシンプルな自動収集システムが作れました。

ジャンルを変えれば、カフェ情報・ニュース・技術記事など、なんでも収集できます。ぜひ試してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?