깃허브 블로그와 노션 연동하기 [배경]
깃허브 블로그와 노션 연동하기 #배경
깃허브 블로그와 노션 연동하기 [배경]
여기서는 프로젝트 배경과 구조에 대해 간략하게 설명한다. 자세한 내용은 각 파트에서 확인할 수 있다.
[관련 포스팅]
배경
블로그를 시작하고 나서 주로 노션을 이용하여 포스팅했다. 노션에서 작업한 이유는 3가지가 있다.
- 기존의 필기를 노션에서 했기에, 노션에 과거 정리했던 자료가 많다.
- 노션을 오래 사용하다 보니, 단축키 등이 손에 익어 편리하다.
- SaaS로 인터넷이 가능한 곳이면 어디서든 작업할 수 있다.
노션에서 작업을 하면, 포스팅을 위해 노션을 마크다운 문서로 추출한 뒤 포스팅을 진행했다. 여기서 노션을 마크다운으로 추출하는 시간이 수작업을 동반했다. 발생하는 문제는 크게 2가지가 있었다.
1번째 문제) 노션이 마크다운 기반이지만, 마크다운의 완벽하게 호환되지 않는다. 그래서 깨지는 문법이 생각보다 많았고 이를 내가 직접 변환해야 했다.
예를 들어 -
ABC
의 경우 마크다운으로 변환하면 아래의 사진처럼 깨진다.
2번째 문제) 1번의 이유로 노션과 마크다운 문서가 달라졌기에, 업데이트가 필요하면 노션이 아닌 Vscode와 같은 IDE에서 진행해야 했다.
우선 위처럼 수작업이 진행되다 보면, 노션과 블로그의 내용이 달라진다. 이것은 관리 포인트가 두 곳으로 늘어나는 문제가 있다. “많아봤자 수작업할 일이 얼마나 많겠어?”라고 생각했다. 하지만, 막상 블로그를 관리하니 내용을 업데이트할 일이 많았다.
또한, 노션 사용기간이 길다보니 대부분의 어셋이 있고 포스팅에서 이를 활용할 가능성이 크다. 그렇기에 노션에서 마크다운으로 추출하고 이를 블로그에 포스팅하는 자동화 프로젝트를 시작하게 되었다.
[포스트를 업로드할 경우, 진행되는 프로세스]
프로젝트 구조
여기서는 프로젝트에 대해 간략하게 설명한다. 자세한 내용은 인프라 편과 프로젝트 편에서 확인할 수 있다.
프로젝트는 크게 노션의 문서를 마크다운으로 추출하는 부분과 포스팅을 구글 검색에 노출하는 부분으로 나뉜다.
Posting Lambda는 “노션의 문서를 마크다운으로 추출하는 부분”을 담당하고, Indexing Lambda는 “포스팅을 구글 검색에 노출하는 부분”을 담당한다.
[Infra]
- API Gateway: HTTPS API 요청을 받아, Lambda를 호출한다.
- Posting Lambda: 요청으로 들어온 URL에서 Page ID, title을 확인한 뒤 노션 페이지를 추출 및 가공한다.
- SQS: Posting Lambda에서 들어온 URL을 저장하고 대기한 뒤, Indexing Lambda에게 건내준다.
- Indexing Lambda: URL에 대해 Google Search Console API를 호출하여 색인 생성 요청을 보낸다.
- Secrets Manager: 노션, 구글, 깃허브 등 여러 애플리케이션의 시크릿 정보를 저장한다.
[프레임워크 및 라이브러리]
프로젝트와 관련된 자세한 설명은 다음 “프로젝트”편에서 확인할 수 있습니다.
- Posting Lambda: javascript(notion-to-md, notionhq/client, octokit/rest, aws-sdk, axios)
- Indexing Lambda: Python(boto3, google.oauth2, googleapiclient)
프로세스
우리는 노션에서 포스팅 내용을 작성하고, 링크만 클릭하면 포스팅이 완료된다. 링크를 클릭하면 내부적으로 다음과 같은 프로세스가 진행된다.
- 노션에서 포스팅 작업을 진행한다.
- 포스팅이 완료되면, 노션 함수에서 만들어주는 URL을 클릭한다.
- API Gateway가 URL을 수신하고, 이를 Lambda에 전달한다.
- Lambda는 노션의
Page ID
를 통해 데이터를 추출, 가공하고 포스팅을 진행한다. 포스팅이 성공적으로 완료되면 포스팅 URL을 SQS에 전송한다. - 5분 후(설정 값) SQS는 인덱싱 처리를 담당하는 Lambda에 메시지를 전달한다.
- Lambda는 URL을 넘겨받고, Google API를 통해 인덱싱 요청을 보낸다.
정리
이번 포스팅에서는 프로젝트를 시작하게 된 배경, 구조, 프로세스에 대해 작성했다. 사실 프로젝트는 작년에 대부분 마무리되었고, 이번에 Google Search Console 인덱싱 자동화를 포스팅하며 이 프로젝트도 업로드하게 되었다.
💡 프로젝트는 GitHub에 있으니, 편하게 코드를 쓰실 수 있습니다.