동아리원들과 함께 사용하는 노션 워크스페이스에서 최신 업계 동향을 빠르고 간편하게 받아보기 위해 노션에 RSS 넣는 법을 찾아보다가 다음과 같은 방법을 알게 되었다.


참고한 사이트

https://www.producthunt.com/posts/notion-feeder?utm_source=other&utm_medium=social


https://github.com/ravgeetdhillon

배포한 사람의 깃허브 프로필을 들어가보니 역시나 인도인이었다,,

젠장 또 인도인이야. 나는 그들을 숭배할 수밖에 없어

https://github.com/ravgeetdhillon/notion-feeder

해당 내용은 깃허브 사이트에 올라와있다. readme를 참고하면서 한 단계씩 따라가보자.

예시 구동 화면


1. 노션 내 API 만들기

노션 API 통합 페이지

https://www.notion.so/profile/integrations

새 API 통합 생성

API 이름은 ‘RSS Feed’, 유형은 ‘프라이빗’, 로고는 알맞은 것을 넣은 뒤 저장

API 통합 페이지에서 방금 만든 API 편집

여기서 우리가 중요하게 봐야하는 것은 프라이빗 API 통합 시크릿이다. 키를 복사해두자.

현재 API에게 권한이 주어져있지 않기 때문에 노란색 바탕의 경고문구가 뜨는 것을 볼 수 있다.

사용 권한 탭 - 편집 권한 - 페이지 선택

정상적으로 권한이 부여된 모습


2. 피드 데이터베이스 템플릿 복제하기

복제할 데이터베이스 페이지

https://ravsamhq.notion.site/Feeder-fa2aa54827fa42c2af1eb25c7a45a408

페이지 상단의 아이콘들 중 사각형 두 개가 겹쳐있는 아이콘 클릭

피드를 받기 원하는 워크스페이스와 추가 대상 선택

템플릿을 페이지로 분류하기 때문에 워크스페이스 단위로 복제할 수 있는 듯하여, 개인 페이지로 복제한 뒤 팀원들과 공유하고 있는 공유 페이지 내부로 템플릿을 옮겼다.


3. 데이터베이스와 API 연결

복제한 템플릿 페이지(Feeder) - Reader - 우측 상단의 ‘…’ - 연결

활성화된 연결에 방금 만든 API가 없다면 추가해준다. 시크릿 코드를 입력하라고 하면 아까 복사해뒀던 키를 넣어준다. 나 같은 경우는 바로 연결이 되어있어서 해당 단계를 건너뛰었다.

Feeds 페이지에도 동일한 작업 진행


4. Fork

인도인 깃허브 주소

https://github.com/ravgeetdhillon/notion-feeder

인도인 깃허브 페이지 상단에서 ‘Fork’ 클릭

Fork 생성

Fork는 다른 사람이 배포한 레포를 내 레포로 복제해서 입맛에 맞게 사용할 수 있기 때문에 상당히 편리하다.


5. Actions

Fork한 본인 레포로 이동 - 해당 레포 상단에서 Actions 탭 접근

이해했음

‘Get Feed’ - Enable workflow

Github Actions는 워크플로우를 자동화해주는 역할을 한다.

활성화된 모습

레포 Settings - Security - Actions

다음과 같은 환경변수 필드들이 필요하다.

NOTION_API_TOKEN

NOTION_READER_DATABASE_ID

NOTION_FEEDS_DATABASE_ID

NOTION_API_TOKEN: 아까 만든 RSS Feed API의 시크릿코드

database id는 데이터베이스의 페이지에 접속하여 볼 수 있는데, https://www.notion.so/{workspace_name}/{database_id}?v={view_id}에서 database_id에 해당하는 부분이다.

예를 들어 Reader 페이지 url이 다음과 같다고 하자. https://www.notion.so/abc/xyz?v=123 그러면 xyz가 database id이다.

정상적으로 추가가 된 모습


8. release workflow file 삭제

.github/workflows/release.yml

release.yml 파일은 원본 레포에서만 필요하기 때문에 삭제해준다.


9. 시간대 변경

이제 피드가 국제표준시 기준으로 12시 30분에 업데이트된다. 하지만 이 시간은 한국 기준으로 오후 9시 30분이기 때문에 하루가 다 지났을 때 RSS 피드가 업데이트되게 된다. 그렇기에 시간을 변경해줄 필요가 있다.

.github/workflows 내부에 있는 main.yml 파일을 확인해보면 다음과 같이 구성되어있다.

name: Get Feed

on:
  schedule:
    - cron: '30 12 * * *' # 6pm IST
  workflow_dispatch:

jobs:
  get-feed:
    runs-on: ubuntu-latest
    env:
      NOTION_API_TOKEN: $
      NOTION_READER_DATABASE_ID: $
      NOTION_FEEDS_DATABASE_ID: $
      RUN_FREQUENCY: 86400 # in seconds
    steps:
      - name: Setup Node
        uses: actions/setup-node@v2
        with:
          node-version: 14

      - name: Update Notion Feed
        run: |
          curl -o index.js https://raw.githubusercontent.com/ravgeetdhillon/notion-feeder/build/dist/index.js
          node index.js

코드 상단에 있는 cron: '30 12 * * *' 부분을 cron: '0 0 * * *'으로 바꾸어준다. 그러면 한국 시간 기준으로 오전 9시에 RSS 피드가 업데이트 된다.

피드가 업데이트되는 주기도 바꾸고 싶다면 RUN_FREQUENCY: 86400 에서 숫자에 해당하는 부분을 바꾸면 된다. 현재는 24시간에 해당하는 86400초로 설정되어있는데 주기를 6시간으로 바꾸기 원하기 때문에 RUN_FREQUENCY: 21600으로 변경해준다.


10. RSS 피드 주소 입력

Feeds 데이터베이스 - RSS를 받고 싶은 주소를 입력 - Enabled 체크 표시

IT 뉴스와 트렌드들을 받아보기 위해 다음과 같이 5개의 주소를 선택했다.


RSS 주소

GeekNews - https://feeds.feedburner.com/geeknews-feed
전자신문 - https://rss.etnews.com/Section901.xml
IT동아 뉴스 - https://it.donga.com/feeds/rss/news/
AI 타임스 - https://www.aitimes.com/rss/allArticle.xml
아이뉴스24 IT - https://rss.inews24.com/rss/news_it.xml


11. 워크플로우 실행

Actions - Run workflow

새로고침해보면 노란색 원이 돌아가면서 열심히 실행중인 것을 볼 수 있다.

완료된 모습

초록색 체크표시가 뜨면 정상적으로 Feed 업데이트가 완료된 것이다.

실행 로그를 자세히 살펴보니 약 150개에 달하는 피드를 가져왔다. 시간도 2~3분 정도 걸렸던 것 같다.

노션 페이지로 돌아가보니 피드가 빼곡히 차인 모습을 볼 수 있다. 새롭게 가져온 기사들은 ‘🔥’으로 표시된다.

제목을 클릭하여 본문 페이지에 들어가보니 기사를 가져오다가 중간에 잘려져 있었다. 가져오는 방식에 문제가 있었나 싶었지만, RSS 주소에서 원본을 확인해보니 기사들이 원래 잘린 채로 들어가 있는 것을 볼 수 있었다. 하지만 헤드라인과 대략적인 내용만 확인하면 되니 크게 문제가 되지 않을 것 하다. 또한 각각의 피드에 대해 원문 기사 url도 속성값으로 함께 가져오기 때문에 흥미로운 내용이라면 편하게 기사 원문 페이지에 접근할 수 있다.

기사는 기본적으로는 Unread로 표시되며, 본문 페이지로 들어가서 Read를 체크하면 읽음처리가 된다. 북마크에 저장하고 싶으면 Starred로 담을 수도 있다.

이렇게 노션에 RSS 피드를 받아보는 법을 익혀볼 수 있었다 :)

새로운 것을 알아가고 적용하는 것은 항상 재밌고 설렌다!