Import bulk .md file to Notion / 대량 마크다운 파일을 Notion으로 import해보기

Dahun Yoo·2020년 6월 13일
2

Lessons learned

목록 보기
5/13
post-thumbnail

요새 Notion이 무료이용 시 1000블록 제한이 없어지면서 많은 분들이 관심가지실 것 같습니다.
velog 이용하시는 분들은 특히나 넘쳐흐르는 정보들을 주체하지못해서 Notion을 이용한 개인 wiki의 구축을 하고자 하는 분들도 있을 것 같은데요,
기존에 작성해놓은 마크다운 파일들을 import할 때에 저와 같은 문제를 겪으시는 분들이 있을 것 같아, 제가 해결한 방법을 공유하고자 합니다!🥰


Import .md file

Import는 notion의 데스크탑 버전 혹은 Web버전에서 할 수 있는데요, 우측 상단에 ... 을 누르시고, Import 를 클릭하신 후에 몇가지 옵션중에 Text & Markdown 을 선택하시면 됩니다.
이후 열리는 업로드 창에서, 여러개의 .md 파일들을 선택하여 OK 를 하면 한 번에 업로드할 수 있습니다. import한 후에는 하나의 별개의 page로 작성됩니다.

자, 여기서 문제가 발생합니다.

어라...? code block의 상태가...?


작아서 잘 보이실지 모르겠으나, 같은 파일임에도 불구하고 code block 내부의 개행이 깨져있고 어떤 텍스트는 의도치 않은 표로 분리되어 있습니다.

잘은 모르겠지만..아마 마크다운 에디터마다의 코드블록 처리가 달라서 생긴 문제인 것 같은데요
(혹은 Notion의 처리문제)
이렇다보니...대량의 파일을 가지고 이사하고자 하시는 분은 꽤나 골치거리입니다. 😢
제목정도만 수정하는 거라면 모르겠는데, 언제 내부를 다 수정하냐~ 이것이지요.


구글링하다보니 찾았다...찬양해야할 갓갓갓 개발자😇

구글링을 하다보니, 이미 어느 유저가 python으로 notion용 마크다운 파일 importer를 만들어놓은 것이었습니다....!!

https://github.com/Cobertos/md2notion

기존에 다른 유저가 작성해놓은, API를 이용하여 Notion을 작성하는 notion-py 라는 client code를 사용하여 import해준다고 합니다.

README.MD 에도 기재되어있듯, Code block을 제대로 살려주면서 (개행포함) 제대로 된 언어를 인식하도록 해준다! 라고 되어있습니다. (Notion이 지원하지 않는 언어면, 최대한 가까운 언어로.)
감사한 마음으로 star🌟를 찍어주고 바로 실행해보았습니다.

사전준비

저는 터미널로 진행하였으며, notion에서 정보를 얻기 위해서는 Web으로 접속하셔야합니다. 🙏🏻

일단 컴퓨터에 python3가 설치되어 있어야겠습니다...🖥

다음, 해당 라이브러리를 설치해줍니다.

pip install md2notion

cookie값을 확인해줍니다.

cookie값은 notion web에 접속하신 후 아래와 같은 순서로 확인해줍니다.
개발자도구 > Cookies > notion 선택 > token_v2 선택


token_v2 값을 잘 복사해서 어딘가에 보관해주세요.

import하고자 하는 page의 URL을 확인해줍니다.


import할 마크다운 파일들이 포함될, parent page의 URL을 확인해줍니다.

import하고자 하는 .md file의 경로를 확인합니다.

저는 특정 폴더 내부에 있는 모든 파일을 import할 것이기 때문에,
해당 폴더경로에 뒤에 다시 /*.md 를 지정해주겠습니다.

터미널에서의 실행

실행 커맨드는 아래와 같습니다.
python -m md2notion {token_v2} {parent_page_url} {filepath}

python3를 설치했는데, python 으로 커맨드 실행 시 에러가 나신다면 기본 인터프리터가 python3로 되어있지 않을 수 있습니다. 그럴때는 python3 -m md2notion 으로 실행해보세요.


실행하면은, 자동으로 읽어들이기 시작합니다. 특정 문서안에 h5를 선언해놓았는데, notion은 h5가 없어서 제일 작은 값인 h3 로 formatting되나봅니다.

ㄷㄱㄷㄱㄷㄱ 결과는...?


자 요로코롬 잘 읽어들여서 파일제목을 페이지의 제목으로 변환하여서 import하고 있습니다.
여담으로 저는 기존의 Github pages의 파일을 import하였는데요, 사용하던 jekyll template이 업로드를 하려면 파일명에 날짜를 작성해야해서 파일명에 다 날짜가 있습니다.

깨졌던 파일도 잘 Import되었다.

본 글의 위쪽에도 파일을 첨부하였는데요, 개행이 깨져있던 code block이나 정체불명의 테이블도 없이, 깨끗하고 깔끔하게 import되었습니다.

이후 작업은 제목의 수정이나 List Page 를 작성해서 import한 파일들을 옮긴 후에 tagging 작업정도를 해주면 될 것 같습니다.

매번 저렇게 긴 Command를 입력해야해...?

저는 평소에 Bear 로 금방금방 휘갈기고 있었는데요, Bear 에서 Export할 폴더를 미리 생성해준 다음, python 이나 Bash 같은 스크립트로 만들어주면 길게길게 입력할 필요는 없을 것 같아요!
parameter로 import하고자하는 URL정도만 입력해주면 되겠죠?

끝!

profile
QA Engineer

0개의 댓글