이글은 Today I Learned로...
하는 방법에 대한 글이 아닙니다 (추후 글 찔 예정)
오늘 골을 뽀개며 고군분투한 결과...!
- github에서 워크플로우를 실행하여
- 지정한 블로그들의 RSS 정보를 받아와 이전 정보와 비교해서 신규 글 업로드 여부를 확인하고
* RSS란? 전부 크롤링하는 대신 읽어와 효율적으로 페이지 내용을 확인할 수 있는 일종의 페이지 - 노션 데이터베이스에 신규 글의 제목과 업로드 일시, URL을 추가하고
- 그렇게 노션 데이터베이스가 업데이트되면 슬랙 봇이 채널에 신규 글이 올라왔다고 알림을 보내주는
로직을 구현했다.
처음부터 이렇게 복잡하게 할 생각은 없었고,,,
RSS의 개념도 오늘 처음 알았다.
많은 시행착오가 있었다...🫠
1안: Make -> Slack
Make를 활용해서 RSS를 받아오고, 슬랙에 쏴줄 생각이었다.
그러나 현재 슬랙 워크스페이스가 무료 플랜이라 10개의 앱이 채워진 상태였고 Make는 추가할 수 없었다.
2안: Make -> Google Spreadsheet
Make로 RSS를 받아 구글 스프레드시트에 추가하는 로직을 구현하려 했으나,
Make에서 구글 스프레드시트를 편집하는 게 생각보다 깔끔하지 않았다.
그리고 구글 스프레드시트의 API 연결이 더 복잡했다.
3안: Make -> Notion
그래서 노션에다 쏴주려고 연결을 하는데...
이 단계에서 막혔다.
RSS 확인 -> 행 추가 라는 개별의 로직을 하나하나 다 만들어야 했던 것이다.
나랑 비슷한 로직을 고민하는 사람이 많았는지 포럼 질문글은 여럿 찾을 수 있었다.


댓글들을 살펴보니, 이터레이터와 어레이 어그리게이터를 이용, 하나의 시나리오로 합치는 방법이 있더라고.


후 그런데 이런 식으로 웹 서비스를 이용해서 RSS를 긁어오는 게 갑자기 싫어졌다.
뭔가 더 간편하게 관리를 하고 싶었다.
4안: 다른 RSS 빌더 찾기...
그래서 여러 RSS를 모아주는 빌더를 찾아내려 했는데, 다 유료였다...
5안: Github -> Notion
제미나이와 챗 지피티로부터 깃허브를 이용해보라는 조언을 듣고 방법을 찾기 시작했다.
노션 개발자용 사이트에서 토큰을 뽑고 데이터베이스와 연결했다.
처음엔 여러 이슈로 워크플로우가 전부 실패했다...

- 임포트 안하고 호출함... ㅋㅋㅋㅋ
Traceback (most recent call last):
File "/home/runner/work/blogupdates/blogupdates/main.py", line 6, in <module>
NOTION_TOKEN = os.environ["NOTION_TOKEN"]
^^
NameError: name 'os' is not defined
Error: Process completed with exit code 1.
- 노션 데이터베이스 아이디 틀림
Traceback (most recent call last):
File "/home/runner/work/tilupdates/tilupdates/main.py", line 20, in <module>
DATABASE_ID = os.environ['NOTION_DATABASE_ID']
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "<frozen os>", line 679, in __getitem__
KeyError: 'NOTION_DATABASE_ID'
Error: Process completed with exit code 1.
하지만!!! LLM들과 머리 싸맨 결과 잘 실행이 되었고...
그런데 추가가 안되었다.
알고보니 또 실수 헤헷
- 받아오는 행의 컬럼명과 main.py 파일에 적은 컬럼명이 달라서 뱉어냄
Traceback (most recent call last):
File "/home/runner/work/blogupdates/blogupdates/main.py", line 19, in <module>
NOTION_TOKEN = os.environ['NOTION_TOKEN']
File "/opt/hostedtoolcache/Python/3.9.25/x64/lib/python3.9/os.py", line 679, in __getitem__
raise KeyError(key) from None
KeyError: 'NOTION_TOKEN'
Error: Process completed with exit code 1.
고쳤더니 잘 받아오고 있다!


6안: Github -> Notion -> Slack
그리고... 현 슬랙 워크스페이스에 노션 앱은 이미 추가가 되어있어서
노션으로 알림을 받아오기로 했다.
어찌저찌 잘 연결해서, 알림 잘 오고 있다!
코딩으로 슬랙봇을 만들어야 하나 했는데, 노션 확장기능으로 엄청 편하게 받아올 수 있었다.


시간 나면 하는 방법도 쓸 예정...
왜냐하면 이런 우회방법을 아무리 찾아도 코드로 슬랙봇 만드는 것만 나와있고
노션 확장기능으로 하는 방법은 없었기 때문이다
어후 오늘은 프레이머보다 이걸 더 많이했네...
하지만! 블로그들을 일일이 눌러 들어가는 시간을 앞으로 아끼게 되었으니 만족한다!
채널에 팀원들도 초대했당.