컴퓨터뽀개버리기

[노션 & 깃헙] 노션 글을 깃헙에 연동하기~ 본문

꾸준히 보자/꿀팁

[노션 & 깃헙] 노션 글을 깃헙에 연동하기~

그순간을기억해 2024. 4. 21. 03:09
반응형

개요

업무를 하거나 책을 읽고 내용을 정리할 때 대부분을 노션에 작성하고 있다.

여기에 정리해둔 내용을 깃헙에 업로드하고 싶어서 방법을 찾아보고 내용을 정리해본다!

우선 노션은 API를 제공해준다.

제공해주지만 내가 원하는 기능에 딱 맞는 API는 없다.

1. 노션 API는 데이터베이스 페이지를 기반으로 접근가능하도록 되어있다.
2. 페이지 내 모든 요소는 블록, 리스트 등으로 마크다운처럼 컨텐츠만 깔끔하게 제공해주지 않는다.

그래서 나만의 방법을 만들었다!


1. 노션 API 발급

https://www.notion.so/my-integrations

 

내 위키, 문서, 프로젝트를 모두 한 곳에서 만나는 커넥티드 워크스페이스 | Notion (노션)

사용하는 모든 업무 앱을 Notion 하나에 담아 팀원들과 함께하는 올인원 워크스페이스를 꾸려 보세요.

www.notion.so

여기 링크에서 발급받으면 되고, API 문서도 제공해준다.

나는 제공해주는 API중에 POSTMAN 컬렉션 문서와 아래 링크를 많이 참고했다.

(https://developers.notion.com/reference/get-block-children)

 

Retrieve block children

Returns a paginated array of child block objects contained in the block using the ID specified. In order to receive a complete representation of a block, you may need to recursively retrieve the block children of child blocks.👍Page content is represente

developers.notion.com

2. 노션 페이지에 API 연결

[연결 항목] 에서 아까 생성한 API를 선택해주면 해당 페이지에만 접근 권한이 생긴다.

3. API에 필요한 database ID와 Block ID를 확인하기

데이터베이스 설정에서 [보기 링크 복사]를 선택하면 링크가 나온다

여기서 [/roongji/{{database_id}}?v=] ID값을 확인할 수 있다.

https://www.notion.so/roongji/cc1a2f5b4e404473ae...b74eff0d5?v=f3f2adba4e9749198d...750b05&pvs=4

4. Postman 데이터베이스 확인하기

POSTMAN variable에 발급받은 API와 Database_ID값을 입력해주고

POST요청을 날리면 PAGE_ID 값을 확인할 수 있다.

results 아래 ID값 (a9589~~) 확인한 PAGE_ID 값으로 페이지 내 컨텐츠에 접근할 수 있다.

5. 페이지 내 컨텐츠 값 가져오기

이번엔 ID값에 위에서 얻은 PAGE_ID값을 넣어주면 된다.

 

notion API에서는 이 값을 block으로 표현되어 있는데, 노션은 페이지 내 각 요소를 블록으로 표현하기 때문이다.

좀 더 자세히 설명하면,

페이지 내에 들여쓰기를 하면 그것 또한 개별 블록으로 저장되어 있다.

(좌 API body값 / (우) 노션 데이터

type : paragraph 은 우측 캡쳐(노션 화면)에서 보듯이 일반 텍스트 글을 말하는건데 API호출 시 "인덱스 컬럼 순~~" 은 response 값에서 찾으면 없다.

대신 좌측 캡처에서 컬럼을 보면 has_children = true 인 것을 알 수 있다.

    노션에서 작성할 땐 한번 들여쓰기하고 작성했을 뿐인데 이 값이 분리되어 저장되어 있는 것이다.

즉 블록ID에 있다는 뜻이다.

그래서 정확히 말하면 page_id가 아니라 block_id 인 것이다.

 

그리고 노션은 마크다운 문법을 사용할 수 있지만 API를 얻은 데이터는 JSON형태로 전달해준다.

(JSON구조는 위 링크에서 확인하거나 직접 호출한 결과로 볼 수 있다.)

 

페이지 글을 API로 가져왔다고해서 바로 다른 에디터에 쓸 수 있는 형태가 아니라 변환이 필요하다는 것이다.

 

노션글을 예시로 좀 더 살펴보면

이렇게 표현되기 때문에 변환할때 상위/하위 관계를 잘 파악해서 변환해줘야 한다.

 

Response JSON 데이터를 마크다운으로 변환

나는 페이지를 깃헙에 자동으로 업로드하기 위해 아래 작업을 진행하려고 한다.

1. Python으로 API로 데이터 수집

2. JSON을 마크다운으로 변환

3. 해당 결과를 깃헙으로 업로드

4. 노션에서 체크로 자동 업로드하도록 기능 추가

 

우선 1~2번을 만드는 코드를 작성했다!

모든 형태를 변환하기 보단 주로 내가 사용하는 마크다운 문법을 변환했다.

작성한 코드는 깃헙에서 볼 수 있다.

 

https://github.com/smeil123/notion_to_github

 

GitHub - smeil123/notion_to_github: 노션 글을 깃헙으로 연동하는 기능

노션 글을 깃헙으로 연동하는 기능. Contribute to smeil123/notion_to_github development by creating an account on GitHub.

github.com

 

반응형