본문으로 건너뛰기
n8n.io 인기 템플릿 해부 · 19/40시리즈 보기 →

n8n으로 RSS 피드 직접 만들기 — 웹훅과 스크레이핑으로 RSS 서버 되기

· 약 8분
Datapopcorn CEO / AI automation educator
이 글과 연결된 글 보기
7편 · 21개 연결
100%
n8n 워크플로우 자동복구 템플릿 — AI가 승인 없이 운영 워크플로우를 직접 고친다n8n Calendly 링크 자동생성 — 웹훅 요청 하나로 1회용 예약 링크 만들기n8n으로 RSS 피드 직접 만들기 — 웹훅과 스크레이핑으로 RSS 서버 되기n8n 고객 온보딩 자동화 — HubSpot 등록과 이메일 드립 시퀀스, AI 없이 만들기폼 제출 한 번으로 서버에 Docker 앱을 배포하는 n8n 워크플로우 — Hostinger 공식 템플릿, 셀프호스팅과 유료 VPS 둘 다 필요n8n Jamf 패치 관리 자동화 — 슬랙으로 받는 소프트웨어 컴플라이언스 리포트n8n으로 반복업무 자동화 포트폴리오 만들기

드래그로 이동 · 휠/두 손가락으로 확대 · 방향키로 글 선택 · 0으로 맞춤. 실선: 본문 링크, 점선: 시리즈·주제의 대표 연결.

표시된 글 7편 목록
전체 글 연결 탐색

RSS 피드를 따로 제공하지 않는 웹페이지도, n8n 웹훅과 스크레이핑 노드 몇 개를 엮으면 RSS 리더가 그대로 구독할 수 있는 피드 주소로 바꿀 수 있습니다. n8n.io 공식 템플릿 마켓플레이스에 공개된 이 워크플로우는 지정한 웹페이지의 HTML을 읽어 RSS(XML) 문서를 직접 조립해 응답합니다.

이 템플릿 하나로 보여줄 수 있는 것​

지금까지 자동화에서 RSS는 대체로 읽는 대상이었습니다. 데이터팝콘 자체 시리즈에도 구글 뉴스 RSS를 매일 아침 읽어 메일 한 통으로 모으는 편이 있습니다. 이 템플릿은 방향이 정반대입니다. RSS 피드를 소비하는 게 아니라, RSS 피드가 없는 웹페이지를 스크랩해서 RSS 피드 자체를 만들어냅니다. 면접에서 "n8n으로 API 만들어본 적 있어요?"라는 질문에 "RSS를 제공하지 않는 사이트를 스크랩해서, RSS 리더가 구독할 수 있는 피드 엔드포인트를 직접 만들었습니다"라고 답할 수 있는 사례입니다.

문장 하나지만 안에 들어간 역량은 세 가지입니다.

  • 웹 스크레이핑 파이프라인 구성 — HTTP Request로 페이지를 가져오고 HTML Extract로 날짜·제목·설명·링크 같은 비정형 데이터를 구조화된 필드로 뽑아본 경험
  • 웹훅 기반 온디맨드 엔드포인트 설계 — 정해진 주기로 도는 스케줄이 아니라, 호출이 들어올 때마다 그 자리에서 최신 데이터를 만들어 응답하는 구조를 설계한 경험
  • 표준 포맷 응답 조립 — 임의의 JSON이 아니라 RSS/XML이라는 정해진 규격에 맞는 응답을 코드로 직접 만들어본 경험

이 세 가지는 RSS뿐 아니라, 자체 API가 없는 외부 서비스를 스크랩해 캘린더(iCal)나 사이트맵처럼 규격이 정해진 포맷으로 응답해야 하는 모든 "웹페이지를 데이터 소스로 쓰는" 자동화에 그대로 쓰입니다.

이 템플릿은 무엇인가​

이 워크플로우는 데이터팝콘이 만든 게 아닙니다. n8n 공식 템플릿 마켓플레이스(n8n.io/workflows)에 Create an RSS feed based on a website's content라는 이름으로 공개된 템플릿이고, 제작자는 Tom입니다. 카테고리는 Document Extraction으로 등록돼 있습니다.

공식 설명에 따르면 이 템플릿은 웹페이지의 콘텐츠를 파싱해 그 데이터로 RSS 피드를 만듭니다. 공식 예시로 쓰인 대상은 노코드 데이터베이스 서비스 Baserow의 릴리즈 노트 페이지입니다. 새 버전이 릴리즈 노트에 올라올 때마다, 이 워크플로우를 거치면 그 내용이 RSS 아이템 형태로 나온다는 뜻입니다. 준비물로는 HTML과 CSS 선택자에 대한 기본적인 이해가 필요하다고 명시돼 있습니다. 이 워크플로우가 스크랩하는 대상 페이지마다 HTML 구조가 다르기 때문에, 어느 요소가 날짜이고 어느 요소가 제목인지를 CSS 선택자로 직접 지정해줘야 해서입니다.

n8n 설치나 기본 노드 조작법은 n8n으로 반복업무 자동화 포트폴리오 만들기에 정리돼 있으니, 이 글은 이 템플릿의 구조 자체에 집중합니다.

구조 — Trigger / Task / Target​

공식 문서의 "How it works"를 데이터팝콘 방식인 Trigger/Task/Target 세 칸으로 정리하면 이렇습니다.

  • Trigger — Webhook 노드입니다. 다만 이 웹훅은 새 이벤트가 생겼다고 외부 서비스가 알려주는 방식이 아니라, RSS 리더 같은 호출하는 쪽이 "지금 최신 상태를 줘"라고 요청할 때마다 그 자리에서 실행되는 온디맨드 엔드포인트입니다. 공식 문서도 이 노드를 "직접 만드는 나만의 RSS 피드 엔드포인트"라고 설명합니다.
  • Task — Set 노드로 피드 자체의 URL·링크 같은 메타정보를 채운 뒤, HTTP Request로 대상 페이지를 가져오고, HTML Extract로 게시물마다 날짜·제목·설명·링크 네 가지 필드를 뽑습니다. Item Lists가 뽑힌 게시물 목록을 하나씩 순회하고, Date & Time이 날짜 형식을 통일한 뒤, Function Item이 게시물 하나하나를 RSS 아이템으로, Function이 그 아이템들을 모아 최종 RSS/XML 응답 코드로 조립합니다.
  • Target — Respond to Webhook 노드입니다. 조립된 RSS/XML 문서를 호출한 쪽에 그대로 돌려줍니다. 이 응답 자체가 표준 RSS 규격을 따르는 문서라서, 일반적인 RSS 리더 앱에 이 웹훅 URL을 그대로 등록하면 구독이 됩니다.

만들기​

공식 문서는 번호 매겨진 Setup 단계 대신 노드별로 동작 방식을 설명하는 형식입니다. 그 순서를 그대로 만드는 순서로 옮기면 이렇습니다.

0. 대상 페이지와 CSS 선택자 미리 확인하기​

이 템플릿은 코드보다 먼저 확인할 게 있습니다. 스크랩할 페이지를 브라우저 개발자 도구로 열어, 게시물 하나하나가 어떤 HTML 태그와 클래스로 감싸여 있는지, 그 안에서 날짜·제목·설명·링크가 각각 어느 요소에 들어있는지를 확인해두는 작업입니다. 공식 문서가 "HTML과 CSS 선택자에 대한 기본적인 이해"를 준비물로 못 박은 이유이기도 합니다. 이 단계를 건너뛰고 바로 워크플로우를 만들면, 뒤의 HTML Extract 노드에 넣을 선택자가 없어 진행이 막힙니다.

1. Webhook — 피드 엔드포인트 만들기​

Webhook 노드를 캔버스에 놓으면 n8n이 고유한 URL을 하나 발급합니다. 이 URL이 곧 이 워크플로우가 서빙하는 RSS 피드 주소입니다. 스케줄 트리거처럼 정해진 시간에 스스로 도는 게 아니라, 이 URL을 호출하는 쪽(RSS 리더, 또는 브라우저)이 있을 때만 동작합니다.

2. Set — 피드 자체의 메타정보 채우기​

RSS 문서에는 개별 게시물 목록과 별개로, 피드 자체의 제목·링크·설명 같은 메타정보가 들어갑니다. Set 노드가 이 피드 수준의 URL과 링크 값을 미리 채워, 뒤에서 최종 XML을 조립할 때 그대로 가져다 쓸 수 있게 합니다.

3. HTTP Request — 대상 페이지 가져오기​

HTTP Request 노드로 스크랩할 페이지(공식 예시는 Baserow 릴리즈 노트 페이지)를 요청해 HTML 전체를 받아옵니다.

4. HTML Extract — 게시물 필드 뽑기​

HTML Extract 노드에서 0번 단계에서 확인한 CSS 선택자를 넣어, 페이지 안의 게시물마다 날짜·제목·설명·링크 네 필드를 뽑아냅니다.

5. Item Lists — 게시물별로 순회​

HTML Extract 결과는 페이지 하나에서 뽑아낸 목록 형태로 들어옵니다. Item Lists 노드가 이 목록을 게시물 하나당 아이템 하나로 나눠, 뒤의 노드들이 게시물 단위로 처리할 수 있게 만듭니다.

6. Date & Time — 날짜 포맷 통일​

원본 페이지의 날짜 표기가 RSS 규격이 요구하는 날짜 포맷과 다를 수 있어, Date & Time 노드가 이를 변환합니다.

7. Function Item과 Function — RSS 아이템과 XML 응답 조립​

Function Item 노드가 게시물 하나마다 RSS <item> 하나를 만들고, Function 노드가 그 아이템들과 2번에서 채운 피드 메타정보를 합쳐 최종 RSS/XML 응답 코드를 조립합니다. 이 두 노드와 앞서 나온 Item Lists는 이름에서 알 수 있듯 예전 n8n 노드입니다. 지금 n8n에서는 이 노드들이 팔레트에서 빠졌거나, 비슷한 역할을 Code 노드나 Split Out 노드 같은 더 유연한 노드가 대신하는 경우가 많습니다. 정확히 어떤 노드가 무엇을 대체하는지는 템플릿을 실제로 열어봐야 확인되므로, 임포트 후 노드에 경고 표시가 뜨면 그 노드부터 최신 버전으로 바꿔보는 걸 권합니다.

8. Respond to Webhook — 완성된 피드 반환​

Respond to Webhook 노드가 7번에서 조립한 RSS/XML 문서를 1번 Webhook의 응답으로 돌려줍니다. 이 흐름이 끝나야 비로소 호출한 쪽(RSS 리더)이 피드 내용을 받아볼 수 있습니다.

주의할 점 · 제약​

공식 문서에 적힌 내용과 노드 구성에서 드러나는 제약을 그대로 옮기면 세 가지입니다.

  • CSS 선택자 지식이 전제조건입니다. 공식 문서가 명시한 유일한 준비물이 "HTML과 CSS 선택자에 대한 기본적인 이해"입니다. 노드를 배치하는 것보다 대상 페이지의 HTML 구조를 읽어내는 쪽이 이 템플릿의 진짜 난이도입니다.
  • 선택자가 페이지 구조에 묶여 있습니다. 공식 예시가 Baserow 릴리즈 노트 페이지 하나에 맞춰 만들어진 만큼, HTML Extract의 선택자도 그 페이지의 구조를 전제로 합니다. 다른 사이트에 그대로 가져다 쓸 수는 없고, 대상이 바뀌면 그 페이지의 구조에 맞게 선택자를 다시 잡아야 합니다.
  • 예전 노드 3종이 쓰였습니다. Function, Function Item, Item Lists는 지금 n8n 팔레트의 기본값과 다를 수 있는 노드들입니다. 임포트한 뒤 정상 동작하는지, 최신 노드로 옮겨야 하는지 확인이 필요합니다.

포트폴리오·면접 포인트​

포트폴리오에는 웹훅 URL을 브라우저 주소창에 직접 쳐서 RSS/XML 응답이 그대로 나오는 화면과, 그 URL을 RSS 리더 앱에 등록해 게시물이 목록으로 뜨는 화면 두 개를 캡처해두면 됩니다. 공식 예시인 Baserow 대신 RSS를 제공하지 않는 다른 사이트(예: 특정 커뮤니티의 공지 게시판)로 바꿔서 선택자를 직접 다시 잡아봤다면, 그 과정 자체가 좋은 이야깃거리가 됩니다.

면접에서 "왜 굳이 RSS를 직접 만들었나요?"라는 질문이 들어올 수 있습니다. "이 사이트가 RSS를 공식 제공하지 않아서, 웹훅으로 엔드포인트를 만들고 그 안에서 페이지를 스크랩해 RSS 규격에 맞는 XML을 직접 조립해 응답하도록 구성했다"고 답하면, 단순히 데이터를 가져오는 것과 그 데이터를 다른 시스템이 표준으로 소비할 수 있는 포맷으로 만드는 것의 차이를 이해하고 있다는 인상을 줄 수 있습니다.

다음 액션​

다음 편은 이메일에 첨부된 영수증에서 지출 항목을 추출해 구글시트에 쌓는 템플릿입니다. 영수증 인식에 Mindee라는 OCR 서비스를 쓰는데, 지금까지 시리즈에서 다룬 문서 처리 템플릿들과는 또 다른 서비스 조합입니다.