RSS 피드를 웹훅으로 보내려면 일정한 간격으로 피드를 확인해 새 항목을 찾고, 각 항목을 HTTP POST 요청으로 지정한 URL에 보내는 도구가 필요합니다. Feeder의 Webhook으로 게시 규칙은 키워드 필터와 재시도 기능을 내장해 원하는 수의 피드에 이 작업을 수행합니다. Zapier, Make, IFTTT, n8n 같은 자동화 도구나 직접 서버에서 실행하는 짧은 스크립트로도 처리할 수 있습니다.
RSS를 웹훅으로 보내는 방법은 무엇인가요?
| 방법 | 적합한 경우 | 알아둘 점 |
|---|---|---|
| Feeder의 Webhook으로 게시 규칙 | 여러 피드에 키워드 필터를 적용하고 모든 피드에 동일한 JSON 형식을 사용하려는 경우 | Feeder Professional에 포함되어 있습니다. 자세한 내용은 아래를 참고하세요. |
| Zapier, Make, IFTTT 또는 n8n | 코드를 작성하지 않고 각 항목을 다른 앱으로 전달하려는 경우 | 필드를 직접 매핑해야 합니다. 도구마다 요금제와 한도가 다릅니다. |
| 스크립트 | 모든 것을 직접 제어하려는 개발자 | 직접 호스팅하고 실행 일정을 설정하며, 이미 보낸 항목을 기록해야 합니다. |
Feeder의 Webhook으로 게시 규칙은 어떻게 작동하나요?
Webhook으로 게시 규칙은 Feeder 규칙에서 사용할 수 있는 작업 중 하나입니다. 규칙을 만든 다음 무엇을 해야 하나요?에서 Webhook으로 게시를 선택하고 엔드포인트 URL을 붙여 넣으세요. 감시할 피드나 폴더 또는 모든 피드를 선택할 수 있습니다. 일부 게시물만 보내려면 키워드를 추가하세요. 설정을 마치면 Feeder가 조건에 맞는 새 게시물을 URL로 전송합니다.
웹훅으로 직접 통합 만들기에서 스크린샷과 함께 전체 절차를 확인할 수 있으며, 출시 안내 글에서 규칙이 작동하는 모습을 볼 수 있습니다. 이 페이지의 기술 정보는 웹훅 전송 코드에 기반합니다.
Feeder는 웹훅으로 어떤 데이터를 보내나요?
게시물마다 JSON 본문과 다음 헤더를 포함한 HTTP POST 요청 하나를 보냅니다.
POST /hooks/rss HTTP/1.1
Content-Type: application/json
User-Agent: Feeder-Webhooks/1.0
X-Feeder-Signature: sha256=<HMAC-SHA256 of the body, in hex>
다음은 Feeder 블로그의 게시물에 해당하는 본문 예시입니다. content는 짧게 줄였습니다. Feeder는 한 줄로 전송하지만 읽기 쉽도록 여기서는 줄을 나눴습니다.
{
"version": "2023-06-26",
"message_id": "3f1c9a52-7e4b-4d0a-9b6e-2c8d51f0a7e4",
"post": {
"id": "aff2424a-abc9-11f1-afb3-1a21cf3a468a",
"title": "Feed your AI",
"url": "https://feeder.co/blog/1208-feed-your-ai",
"published": "2026-09-08T20:19:59Z",
"content": "\u003cp\u003eWith Feeder's MCP server, you can connect Feeder to your AI client of choice.\u003c/p\u003e",
"audio_url": null,
"image_url": "https://uploads.feedercdn.com/8XSXZN92WHeb2d17f3440d-feedyourai-1024x538.png"
},
"feed": {
"id": "21f058e947",
"source_url": "https://feeder.co/blog.rss",
"public_url": "https://feeder.co/blog",
"title": "Feeder.co",
"favicon": "https://icons.feedercdn.com/feeder.co"
}
}
| 필드 | 내용 |
|---|---|
version | 형식 버전입니다. 2023-06-26입니다. |
message_id | 메시지마다 새 ID가 부여됩니다. 같은 메시지를 재시도할 때는 ID가 유지되므로 중복을 건너뛸 수 있습니다. |
post.id | Feeder에서 게시물에 부여한 ID입니다. |
post.title | 게시물 제목입니다. |
post.url | 웹사이트 게시물 링크입니다. |
post.published | 게시물이 게시된 시각입니다. RFC 3339 타임스탬프 또는 null로 표시됩니다. |
post.content | 피드에 제공된 게시물 HTML입니다. 전체 글일 수도 있고 요약일 수도 있습니다. |
post.audio_url | 팟캐스트 에피소드처럼 게시물에 첨부된 MP3 주소 또는 null입니다. |
post.image_url | 게시물에 첨부된 이미지 주소입니다. 첨부 이미지가 없으면 본문에서 첫 번째 이미지를 사용하며, 이미지가 없으면 null입니다. |
feed.id | 피드에 부여된 Feeder의 짧은 ID입니다. |
feed.source_url | 피드 주소입니다. |
feed.public_url | 피드가 속한 웹사이트 주소입니다. |
feed.title | 피드 제목입니다. |
feed.favicon | 사이트 아이콘 주소입니다. |
content에서 <, >, & 문자는 각각 \u003c, \u003e, \u0026로 전달됩니다. 이는 유효한 JSON이며 JSON 파서는 이를 다시 HTML 문자로 변환합니다.
웹훅은 언제 실행되나요?
- 새 게시물에만 실행됩니다. 규칙을 저장한 뒤 Feeder가 찾은 게시물에 적용됩니다. 이미 보유한 게시물은 전송하지 않습니다.
- 게시물마다 한 번씩 실행됩니다. 조건에 맞는 게시물마다 요청을 하나씩 보냅니다. 여러 게시물을 묶어 보내지 않습니다. 사이트에서 나중에 게시물을 수정하고 Feeder가 변경 사항을 가져오면 수정된 버전도 전송됩니다.
- 피드를 다음으로 확인한 직후 실행됩니다. Professional에서는 기본적으로 10분마다 피드를 확인하며, 피드별 업데이트 간격을 최소 1분까지 설정할 수 있습니다. 자세한 내용은 Feeder가 피드를 확인하는 주기를 참고하세요.
- 조건에 맞는 게시물만 전송됩니다. 키워드를 지정하면 일치하는 게시물만 전송합니다. 키워드를 지정하지 않으면 모든 새 게시물을 전송합니다. 게시물 필터 또는 중복 필터 규칙에 따라 숨겨진 게시물은 전송하지 않습니다.
엔드포인트가 응답하지 않으면 어떻게 되나요?
Feeder는 최대 60초 동안 응답을 기다립니다. 2xx 상태 코드는 전송 성공으로 처리됩니다. 엔드포인트가 404 또는 500 같은 오류를 반환하거나 전혀 응답하지 않으면 Feeder가 최대 8회 더 재시도합니다.
| 시도 횟수 | 직전 시도 후 전송까지의 대기 시간 |
|---|---|
| 2 | 5초 |
| 3 | 30초 |
| 4 | 1분 |
| 5 | 5분 |
| 6 | 10분 |
| 7 | 30분 |
| 8 | 30분 |
| 9 | 30분 |
첫 시도부터 약 1시간 47분이 지난 뒤 아홉 번째 시도도 실패하면 Feeder는 해당 게시물의 전송을 포기합니다. 실패한 시도는 규칙의 오류 로그에 표시됩니다. 규칙을 열고 오류 로그 열기를 선택하세요. 재시도를 기다리는 중 규칙 URL을 변경하면 이후 재시도는 새 URL로 전송됩니다. 테스트 메시지 게시는 한 번만 전송하며 재시도하지 않습니다.
엔드포인트는 어떻게 처리해야 하나요?
- 빠르게 응답하세요. 먼저 2xx 상태 코드로 응답한 뒤 시간이 오래 걸리는 작업을 처리하면 60초 제한을 충분히 지킬 수 있습니다.
- 중복을 건너뛰세요. 서버가 메시지를 처리했지만 응답이 늦으면 재시도로 같은 메시지가 다시 전달됩니다. 이미 받은
message_id또는post.id값을 저장해 두세요. - 최종 주소를 사용하세요. URL에는
https://example.com/hooks/rss처럼 경로가 있어야 하며, 공용 인터넷에서 접속할 수 있는 서버를 가리켜야 합니다. Feeder는 로컬 또는 사설 네트워크 주소로 게시물을 보내지 않습니다. 리디렉션도 피하세요. 301, 302 또는 303 리디렉션 뒤에는 JSON 본문 없이 GET 요청으로 도착합니다. - 서명을 확인하세요. URL을 아는 사람이라면 누구든 요청을 보낼 수 있으므로 유효한
X-Feeder-Signature가 있는 요청만 신뢰해야 합니다. 확인 방법은 다음 섹션을 참고하세요.
요청이 Feeder에서 왔는지 확인하려면 어떻게 하나요?
Feeder는 규칙의 웹훅 시크릿으로 모든 요청에 서명합니다. 시크릿을 확인하려면 규칙을 열고 고급을 켠 다음 웹훅 시크릿을 복사하고 규칙을 저장하세요. X-Feeder-Signature 헤더에는 sha256= 다음에 해당 시크릿을 사용해 요청 본문에 계산한 HMAC-SHA256의 16진수 값이 들어갑니다.
서명을 확인하려면 JSON을 파싱하기 전에 원본 본문에 같은 HMAC을 계산하고, 두 값을 시간에 따라 실행 시간이 달라지지 않는 방식으로 비교하세요. Python 예시입니다.
import hashlib, hmac
def from_feeder(body, header, secret):
expected = "sha256=" + hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, header or "")
여기서 body는 바이트 형식의 요청 본문입니다. from_feeder가 False를 반환하면 요청을 거부하세요. 재시도 요청에는 현재 규칙의 시크릿으로 서명하므로 시크릿을 변경하면 재시도 요청에도 변경된 시크릿이 적용됩니다.
Feeder에서 웹훅으로 요약을 보낼 수 있나요?
아니요. Webhook으로 게시 규칙은 Feeder가 게시물을 찾는 즉시 게시물마다 요청을 하나씩 보냅니다. 요약을 만들려면 다음 세 가지 방법이 있습니다.
- 직접 모아서 처리하세요. 엔드포인트에서 받은 게시물을 저장한 다음 정해 둔 일정에 따라 직접 요약을 전송합니다.
- 이메일 요약을 사용하세요. Feeder는 Plus와 Professional에서 선택한 피드의 일간, 주간 또는 월간 요약을 이메일로 보낼 수 있습니다. 새 게시물 알림 받기를 참고하세요.
- 피드를 공개하세요. Professional에서는 폴더나 컬렉션을 RSS 또는 JSON 피드로 공개한 다음, 직접 사용하는 도구가 원하는 일정에 따라 피드를 읽도록 할 수 있습니다. 게시물을 RSS 및 JSON 피드로 내보내는 방법을 참고하세요.
Zapier, Make, IFTTT 또는 n8n으로 RSS를 웹훅에 보내려면 어떻게 하나요?
각 도구에서 RSS 트리거와 HTTP 작업을 연결하면 됩니다. 아래 이름은 2026년 9월 28일에 각 도구의 공식 사이트에서 확인했습니다.
| 도구 | 트리거 | 작업 | 참고 사항 |
|---|---|---|---|
| Zapier | RSS by Zapier: 피드의 새 항목 또는 여러 피드의 새 항목 | Webhooks by Zapier: POST | Webhooks by Zapier는 프리미엄 앱이며 Zapier의 유료 요금제에서만 제공됩니다. |
| Make | RSS: RSS 피드 항목 감시 | HTTP: 요청 보내기 | RSS 모듈은 RSS와 Atom 피드를 읽습니다. |
| IFTTT | RSS Feed: 새 피드 항목 | Webhooks: 웹 요청 보내기 | IFTTT는 무료 요금제에서 매시간, Pro 및 Pro+에서 5분마다 피드를 확인합니다. |
| n8n | RSS 피드 트리거 노드 | POST 메서드를 사용하는 HTTP Request 노드 | 폴링 시간에서 피드 확인 주기를 선택합니다. |
이미 사용하는 도구가 있다면 이 방법이 가장 빠릅니다. Feeder와 함께 사용할 수도 있습니다. Webhook으로 게시 규칙의 대상으로 Zapier의 Catch Hook 트리거 또는 n8n의 Webhook 노드를 지정하세요. 그러면 Feeder가 피드를 감시하고 게시물을 필터링하며, 이후 작업은 워크플로에서 처리할 수 있습니다.
스크립트로 RSS를 웹훅에 보내려면 어떻게 하나요?
다음 Python 스크립트는 피드 하나에서 새 항목을 찾아 웹훅으로 보냅니다. 전송한 항목을 seen.txt에 기록하므로 각 항목은 한 번만 전송됩니다. 처음 실행하면 그 시점에 피드에 있는 모든 항목을 전송합니다.
import json, pathlib, urllib.request
import feedparser # pip install feedparser
FEED_URL = "https://example.com/feed.xml"
WEBHOOK_URL = "https://example.com/hooks/rss"
seen_file = pathlib.Path("seen.txt")
seen = set(seen_file.read_text().split()) if seen_file.exists() else set()
for entry in reversed(feedparser.parse(FEED_URL).entries):
key = entry.get("id") or entry.get("link")
if not key or key in seen:
continue
payload = {"title": entry.get("title"), "url": entry.get("link"), "published": entry.get("published")}
request = urllib.request.Request(WEBHOOK_URL, data=json.dumps(payload).encode(),
headers={"Content-Type": "application/json"})
urllib.request.urlopen(request, timeout=30)
seen.add(key)
seen_file.write_text("\n".join(seen))
Python 3과 feedparser 패키지(pip install feedparser)가 필요합니다. cron을 사용해 15분마다 실행하는 등 일정에 맞춰 실행하세요. 예시는 다음과 같습니다. */15 * * * * cd /path/to/folder && python3 rss_to_webhook.py. 엔드포인트가 오류를 반환하면 스크립트가 중단되고 다음 실행 때 같은 항목을 다시 시도합니다.
자주 묻는 질문
Webhook으로 게시 규칙을 사용해 RSS를 Slack, Teams 또는 Discord 웹훅으로 보낼 수 있나요?
직접 보낼 수는 없습니다. Feeder는 해당 앱에서 기대하는 메시지 형식이 아니라 자체 JSON 형식으로 전송합니다. 대신 Feeder의 Slack에 게시, Microsoft Teams에 게시 또는 디스코드에 게시 규칙을 사용하거나 Zapier, Make 또는 n8n을 중간에 연결하세요.
웹훅은 어떤 Feeder 요금제에 포함되어 있나요?
Webhook으로 게시 기능은 Professional에 포함되어 있습니다. 게시물을 필터링하거나 별표 표시하거나 모으는 규칙은 Plus에서도 사용할 수 있습니다.
웹훅에 전체 글이 포함되나요?
피드가 제공하는 내용이 포함됩니다. 피드에 전체 글이 있으면 content에 전체 글이 들어가고, 요약만 있는 피드라면 요약이 들어갑니다.
규칙을 저장하기 전에 엔드포인트를 테스트할 수 있나요?
네. 테스트 메시지 게시를 누르면 피드의 실제 게시물 하나를 URL로 보냅니다. 계정에 게시물이 있는 피드가 하나 이상 있어야 합니다.
Feeder 사용해 보기
Feeder는 웹, iOS, Android에서 사용할 수 있는 RSS 리더이며 Chrome, Firefox, Edge용 확장 프로그램도 제공합니다. 무료 요금제에서는 광고 없이 최대 200개 피드를 구독할 수 있고, 피드는 최대 30분마다 업데이트됩니다. Plus에서는 2,500개 피드를 구독하고 최대 5분마다 업데이트할 수 있으며 이메일 요약을 이용할 수 있습니다.