NFMな記事は見たくない

皆様、情報の取得方法はどうしていますか?
TwitterやDiscover、ニュースサイト/アプリやテレビなどを使っていますか?

私は令和にもなって情報の取得元はRSSで賄っています。
GoogleのDiscoverやTwitterの公式アカウント、ハッカドールなどいろいろ試しましたが、過度にパーソナライズされて二分間憎悪させられたり、サ終してしまったりと、未だに良い情報取得方法を得れていません。

昔の人は賢いもので、ブログ記事などの更新はRSSという仕組みで配信しており、最近は対応しているブログもホームページも減ってきましたが、それでもまだまだ多くのサイトがRSS配信をしてくれています。

なので、RSSリーダーを使用して新着記事を閲覧しているのですが、
toB向けの記事や自分の興味のない範囲の記事、広告目的の記事などは見たくはありません。

それを解決するために、不要なRSSエントリーを削除するアプリをCloudflare WorkersとCloudFlare Workers KVを使って実装してみました。

RSS Filter

GitHubでrssfilterを公開しています。

Cloudflare Wrangler使えば数コマンドで環境を構築できます。
アクセス制限は実装するのがめんどくさそうだったので、Cloudflare Accessを使って設定画面などへのアクセスを制限してください。

構築

まず、リポジトリをクローンして依存関係をインストールします。

git clone https://github.com/JO3QMA/rssfilter.git
cd rssfilter
npm install
KVネームスペースの作成

設定の保存にCloudflare KVを使用するため、デプロイ前にKVネームスペースを作成する必要があります。

  1. ログイン:
    npx wrangler login
    
  2. 本番用KVの作成:
    npx wrangler kv:namespace create RSSFILTER_CONFIG
    
  3. プレビュー用KVの作成(推奨):
    npx wrangler kv:namespace create RSSFILTER_CONFIG --preview
    
  4. wrangler.jsonc の更新: コマンドの出力結果(ID)を wrangler.jsonc に設定してください。
    "kv_namespaces": [
      {
     "binding": "RSSFILTER_CONFIG",
     "id": "ここに本番用IDを設定",
     "preview_id": "ここにプレビュー用IDを設定"
      }
    ]
    
デプロイ

Cloudflare Workersへのデプロイは以下のコマンドで実行できます。

npm run deploy
アクセス制限(推奨)

管理画面(/settings)および設定API(/api/settings)は、認証なしでアクセスできる状態では第三者に設定を書き換えられるリスクがあります。 本番環境で運用する際は、Cloudflare Access (Zero Trust) を使用して、/get 以外のパスへのアクセスを制限することを強く推奨します。

推奨設定例:

  • 対象: your-worker.workers.dev/*
  • ポリシー:
    • Path が /get で始まる場合: Bypass (誰でもアクセス可能)
    • それ以外: Allow (メール認証や特定のIPアドレスのみ許可)

使い方

https://your-worker.workers.dev/get?site=(RSSのURL) にアクセスすることでフィルターされたRSSが返ってきます。
https://your-worker.workers.dev/ に直接アクセスすると上記URLをコピーできる簡易なUIがあります。

RSS Filter Top Page

設定

https://your-worker.workers.dev/settings にアクセスするとフィルター設定を編集できます。 グローバル設定とサイトごとの設定があり、それぞれ記事タイトルとURLを正規表現でフィルターできます。 一つでも一致すればそのエントリーはフィルターされます。

RSS Filter Settings Page

まとめ

RSSで広告記事とか興味ないジャンルとかが大量に流れてくる対策ができて満足しています。

ただ、RSSって古い仕組みで使ってる人が案外少ないことを他の人と話していて実感します。