노션에서 티스토리로 글 자동 발행하기

반응형

이전에는 옵시디언에서 글을 작성하고 티스토리에 게시했습니다. 옵시디언은 정말 훌륭한 노트앱이지만 동기화 문제가 자주 발생하여 매우 고생했습니다. 맥북, 아이맥, 윈도우, 아이폰을 오가며 노트를 작성하다 보니 옵시디언에서는 항상 동기화 문제가 발생했습니다. 그래서 제텔카스텐은 옵시디언을 계속 사용하면서 중요한 메모나 노트는 노션으로 작성하기로 결정했습니다.

그리고 노션에서 티스토리에 글을 좀더 간편하게 게시할 수 있는 방법을 알아보았습니다. 

 

N2T

노션에서 티스토리로 글을 발행할 때 파이썬 패키지 N2T를 사용합니다.

https://github.com/jmjeon94/N2T

 

GitHub - jmjeon94/N2T: Notion에서 Tistory로 포스팅을 해줍니다.

Notion에서 Tistory로 포스팅을 해줍니다. Contribute to jmjeon94/N2T development by creating an account on GitHub.

github.com

 

테이블 템플릿 만들기

N2T를 사용하기 위해 템플릿 링크를 클릭하여 복제하여 사용합니다. 

템플릿의 테이블에 대한 설명은 아래와 같습니다.

제목 제목 업로드할 게시물의 제목
카테고리 선택 게시물의 카테고리
태그 다중 선택 게시물의 태그들
상태 선택 발행 요청 또는 수정 요청으로 되어있을 때 게시물을 업로드 합니다.
업로드가 완료되면 발행 완료로 값이 바뀝니다.
링크 URL 발행 완료 후 업로드된 url 링크가 자동 입력됩니다.

 

N2T 코드 내려받기

N2T 코드를 복제(clone)하려면 원하는 디렉터리로 이동한 후 다음 단계를 따르세요.

git clone https://github.com/jmjeon94/N2T.git

cd N2T 명령어를 사용하여 N2T 디렉토리로 이동합니다.

cd N2T

다음 명령어를 사용하여 코드 실행에 필요한 패키지를 설치합니다.

pip3 install -r requirements.txt

 

설정 파일 입력하기

config.py 파일을 열고 각 항목에 맞게 값을 입력하세요. 이 값들은 외부에 노출되지 않도록 각별히 조심해야 합니다.

cfg = dotdict(
    TISTORY=dotdict(
        ID='kakao email',
        PW='kakao password',
        BLOG_NAME='',
        SECRET_KEY='',
        CLIENT_ID='',
        REDIRECT_URI='',
    ),

    NOTION=dotdict(
        TOKEN_V2='',
        TABLE_PAGE_URL='',
        DOWNLOAD_DIR='~/.n2t',
        CODE_BLOCK_THEME='atom-one-dark',

Tistory 설정

  • TISTORY의 ID, PW는 카카오로 연동된 계정으로 카카오 계정과 비밀번호를 입력합니다.
  • BLOG_NAME: 본인의 블로그 이름 xxx.tistory.com 에서 xxx를 입력합니다.
  • SECRET_KEY, CLIENT_ID, REDIRECT_URI: Tistory API 등록 시 발급받은 값을 입력합니다.
    • Tistory API 키 발급 받는 방법은 여기 블로그 내용을 참고합니다.

Notion 설정

  • TOKEN_V2: 노션 token_v2 값을 입력합니다. token_v2 토큰은 크롬 브라우저 개발자 도구에서 확인할 수 있습니다.

  • TABLE_PAGE_URL: 자동으로 업로드할 Notion 페이지 URL을 입력합니다. Notion 페이지 URL은 여기서 확인할 수 있습니다.

 

 

발행하기

비공개로 발행하고 싶다면 main.py 파일을 열고 152번째 라인의 visibility 값을 0으로 변경하세요.

 

터미널에서 아래 명령어를 입력하여 main.py 파일을 실행합니다.

python3 main.py

 

에러 해결하기

저는 N2T에서 티스토리 자동 로그인을 시도했지만 계속 실패했습니다. 이유는 카카오 2단계 인증 때문입니다.

그래서 티스토리 액세스 토큰을 직접 받아서 입력했습니다.  액세스 토큰을 발급받는 방법은 아래 블로그 내용을 참고하십시오.

티스토리 OAuth 인증 with 파이썬 - Access Token 발급 및 API 사용 (tistory.com)

 

티스토리 OAuth 인증 with 파이썬 - Access Token 발급 및 API 사용

티스토리 계정을 카카오 계정으로 전환했다면, 내가 알고 있는 지식으론 티스토리 Access Token은 자동으로 발급받을 수 없다는 결론을 내렸다. 그래서 티스토리 오픈API의 Access Token을 발급받으려

memories.tistory.com

그리고 아래와 같이 config.py 파일에 ACCESS_TOKEN 값을 추가했습니다.

또한 main.py 파일에서 셀레니움을 사용하여 자동 로그인하는 코드를 모두 주석 처리했습니다.

또한, 제가 잘못한 것인지도 모르겠지만, cv.collection.get_rows 함수에서 search 기능이 작동하지 않았습니다. 그래서 cv.collection.get_rows(search=target_status) 대신 cv.collection.get_rows()로 수정했습니다. 또한 cv.collection.get_rows 함수를 호출하면서 받은 응답받은 값에 상태값을 가지고 있는 properties 필드가 없었습니다.  그래서 상태 값을 체크하는 로직을 아래와 같이 전부 주석 처리했습니다.

제 생각에는 노션 API의 변경이 있었던 것 같습니다. 하지만 이렇게 되면 상태값이 발행 요청인 글만 발행하는 것이 아니라 모든 글이 발행됩니다.  이 결과 노션에 작성한 글이 모두 티스토리에 비공개 상태로 업로드되었습니다.

불편하지만 임시방편으로 이렇게 사용하기로 했습니다. 나중에 시간이 나면 N2T코드를 분석해서 이 부분을 개선할 생각입니다.

반응형