公式パッケージ · 自動化とインフラ

RSS と RSSHub のフィードをリアルタイムイベントに

RSS、Atom、JSON Feed(RSSHub のどのルートでも)に新しい記事が出たら、開いているブラウザやアプリにすぐ届けます。feed-relay は RSSHub の隣で動く、小さなオープンソースの Go サービスです。

  • 新しい記事はチャンネルのイベント、プッシュ通知、受信箱の通知として、再起動をまたいでも 1 回だけ届きます。
  • WebSub ハブのあるフィード(YouTube チャンネルなど)は数秒で届きます。それ以外は ETag と Last-Modified でポーリングするので、更新のないフィードはほとんど負荷になりません。
  • 初回起動ではフィードにある既存の記事を覚えるだけなので、起動しただけでユーザーに大量に届くことはありません。
  • フィードの追加・プレビュー・一時停止・テストができる Web コンソールと、AI エージェントがフィードを管理できる MCP サーバーを内蔵。変更は Hibira アプリを通じて、開いているコンソールにすぐ届きます。
feed relay のコンソール:github.com/vercel/next.js/releases を貼り付けると対応する RSSHub ルートが見つかり、フィードを追加する前にプレビューで最新のリリースを確認できます。
feed relay のコンソール:github.com/vercel/next.js/releases を貼り付けると対応する RSSHub ルートが見つかり、フィードを追加する前にプレビューで最新のリリースを確認できます。

サインインすると、コード例にご自身のクラスターホストが入ります。 サインイン

  1. インストール

    # docker-compose.yml, with HIBIRA_APP_ID, HIBIRA_APP_KEY and HIBIRA_APP_SECRET in .env
    services:
      rsshub:
        image: diygod/rsshub:latest
      feed-relay:
        image: ghcr.io/hibira-io/feed-relay:latest
        env_file: .env   # also ADMIN_PASSWORD for the console, MCP_TOKEN for /mcp
        environment:
          RSSHUB_URL: http://rsshub:1200
        ports:
          - "8080:8080"
        volumes:
          - ./feed-relay.yaml:/config/feed-relay.yaml:ro
          - relay-data:/data
    volumes:
      relay-data:
  2. 設定する

    # feed-relay.yaml
    hibira:
      url: https://ws.hibira.io
      app_id: ${HIBIRA_APP_ID}
      key: ${HIBIRA_APP_KEY}
      secret: ${HIBIRA_APP_SECRET}
    feeds:
      - name: releases
        url: /github/release/hibira-io/pusher-server   # an RSSHub route
        channel: releases
      - name: go blog
        url: https://go.dev/blog/feed.atom
        channel: news
        interval: 10m
  3. 使う

    import Pusher from 'pusher-js';
    
    const pusher = new Pusher('YOUR_APP_KEY', {
      cluster: 'hkg',
      wsHost: 'ws.hibira.io',
      enabledTransports: ['ws', 'wss'],
    });
    
    // { feed: { name, title }, id, title, link, summary, author, image, published }
    pusher.subscribe('releases').bind('new-item', (item) => {
      console.log(item.feed.title, item.title, item.link);
    });

始める前に

  • アプリのシークレットは、アプリの作成時とシークレットのローテーション時に一度だけ表示されます。サーバーにだけ置き、ブラウザやゲームのビルドには入れないでください。
  • Free プランの 4 KB 上限に収まるよう、各イベントは 3,500 バイト以内にします(まず要約を短くします)。記事全文は item.link から取得してください。
  • サーバーを動かしたくない場合は、n8n、Make、Activepieces、Node-RED の RSS トリガーに Hibira ノードをつなげば同じことができます(ワークフローがポーリングします)。
  • 利用が認められたフィードだけを中継し、各サイトの利用規約に従ってください。
  • Free プランでコンソールのリアルタイム更新を使うには、コンソールのアドレス(例:http://localhost:8080)をアプリの許可オリジンに追加してください。
  • Free プランでは、ページを読み込むすべてのオリジンをアプリの許可オリジンに登録してください(開発中は http://localhost:3000、その後は自分のドメイン)。"*" は有料プランで使えます。

ダッシュボードのアプリキーを使ってください。シークレットはサーバー側だけに置きます。チャンネル、イベント、認可エンドポイントは Pusher とまったく同じように動作します。 無料でアカウントを作成 →