공식 패키지 · 자동화와 인프라

RSS와 RSSHub 피드를 실시간 이벤트로

RSS, Atom, JSON Feed(모든 RSSHub 라우트 포함)에 새 항목이 올라오면 열려 있는 브라우저와 앱에 바로 보냅니다. feed-relay는 RSSHub 옆에서 실행되는 작은 오픈소스 Go 서비스입니다.

  • 새 항목은 채널 이벤트, 푸시 알림, 받은편지함 알림으로 재시작 후에도 한 번만 전송됩니다.
  • WebSub 허브가 있는 피드(YouTube 채널 등)는 몇 초 안에 도착합니다. 나머지는 ETag와 Last-Modified로 폴링하므로 바뀌지 않은 피드는 비용이 거의 들지 않습니다.
  • 처음 실행할 때는 피드에 이미 있는 항목을 기억만 하므로, 시작하자마자 사용자에게 알림이 쏟아지지 않습니다.
  • 피드를 추가·미리보기·일시 중지·테스트할 수 있는 웹 콘솔과, 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와 똑같이 동작합니다. 무료 계정 만들기 →