티스토리 뷰

반응형
Notion에서 Tistory로 자동 업로드 #2 (tistory api, notion export)

목표


지난번에 소개해드린 것과 같이 notion페이지를 tistory로 자동 업로드하는 2번째 입니다.

notion에서 원하는 페이지를 export하는 방법과 tistory api로 게시물을 올리는 방법에 대해 알아보겠습니다.

Tistory API 사용하기


Token 발급받기

우선 아래 게시물을 참고해서 Tistory API Token을 가져와야 합니다.

[Python] Tistory API 사용하는 방법(Access Token 받기)
안녕하세요. 오늘은 python을 이용해서 tistory api 를 사용하는 방법에 대해 알아보겠습니다. Tistory API를 사용하면 직접 api를 호출하여, 개인 블로그에 글이나 댓글을 관리(작성, 수정, 삭제 등)을 쉽게 할 수 있습니다. 공식적인 설명은 아래 링크에서 확인 할 수 있습니다. 아래 링크에 접속하여 자신의 티스토리 계정을 등록합니다. 서비스명: 간단하게 이름을 작성(ex.
https://minimin2.tistory.com/82

token 발급까지 완료했다면, 아래 tistory api 공식 사이트에 들어가서 게시물을 업로드하는 방법을 찾아봅니다.

글 작성
블로그에 글을 작성하는 API 입니다. POST https://www.tistory.com/apis/post/write? access_token={access-token} &output={output-type} &blogName={blog-name} &title={title} &content={content} &visibility={visibility} &category={category-id} &published={published} &slogan={slogan} &tag={tag} &acceptComment={acceptComment} &password={password} 기본 매개변수를 제외한 매개변수는 다음과 같습니다. blogName: Blog Name (필수) title: 글 제목 (필수) content: 글 내용 visibility: 발행상태 (0: 비공개 - 기본값, 1: 보호, 3: 발행) category: 카테고리 아이디 (기본값: 0) published: 발행시간 (TIMESTAMP 이며 미래의 시간을 넣을 경우 예약.
https://tistory.github.io/document-tistory-apis/apis/v1/post/write.html

게시물 업로드하는 API

POST https://www.tistory.com/apis/post/write?
  access_token={access-token}
  &output={output-type}
  &blogName={blog-name}
  &title={title}
  &content={content}
  &visibility={visibility}
  &category={category-id}
  &published={published}
  &slogan={slogan}
  &tag={tag}
  &acceptComment={acceptComment}
  &password={password}
  • access_token: 위에서 발급받은 token 키 값
  • output: xml 또는 json 으로 선택할 수 있으며, json으로 응답받으면 한글이 인코딩되어있습니다.(default:xml)
  • blogName: 본인의 블로그 이름 (블로그 주소에서 알 수 있음 https://{blogName}.tistory.com)
  • title, content: 게시할 제목과 내용
  • visibility: 글의 게시 유형, default:0(비공개), 1(보호), 3(발행)
  • category: 본인 블로그의 카테고리 ID 값(추후에 어떻게 알아내는지 다루겠습니다.)
  • published: 발행 시간인데, 시간 설정하지 않을 거라면 작성하지 않아도 됨
  • slogan: 문자 주소라는데 뭔지 잘 모르겠네요..
  • tag: 태그 이름 ","(comma)로 구별합니다. (ex. "tistory, notion, api")
  • acceptComment: 댓글 허용 여부 0-거부, 1-허용(1이 default로 거부할 게 아니라면 작성하지 않아도 됨)
  • password: 보호글인 경우의 비밀번호

파이썬에서 코드로 실행해보기

위 API에서 필수적인 값들만 data dictionary에 담아 요청해 보겠습니다.

import request
url = 'https://www.tistory.com/apis/post/write'
data = {
    'access_token': ACCESS_TOKEN,
    'blogName': BLOG_NAME,
    'output': 'lxml',
    'title': '제목',
    'content': '내용',
    'visibility': '0',
    'category': CATEGORY_ID,
    'tag':'tag1, tag2, tag3'
}
# 업로드 요청
resp = requests.post(url, data=data)
# 게시글 업로드 요청 여부 확인
print(resp.status_code)

(ACCESS_TOKEN, BLOG_NAME, CATEGORIY_ID는 제 개인적인 값을 넣었습니다.)

요청하여 resp.status_code 값이 200으로 뜨면 정상적으로 처리된 것입니다.

실제 tistory 블로그에 들어가 확인해보겠습니다.

빨간 네모 박스 친 것처럼 원하는 카테고리에 제목, 내용, 공개여부, 태그 등이 제대로 들어가있는 것을 확인할 수 있습니다.

여기까지 확인하셨으면, 잠깐 멈추고 notion에서 page를 export 하는 방법에 대해 알아보겠습니다.

notion에서 export하기


  • notion page에서 최우측 상단에 점 세개 클릭 - Export 버튼을 누릅니다.

  • Export format을 HTML로 바꿔서 Export 버튼을 클릭합니다.
  • 다운로드가 완료되면 다운로드된 폴더에 가서 html 파일을 열어서 확인합니다.
  • 저는 visual studio code로 열어봤습니다. html, head, style, body 등등의 태그로 이루어져 있는데, 일단 주요 내용인 body태그 안의 article 태그를 사용할 예정입니다. (아래는 sample html 코드)
💡
html 기본 구조를 이해하시면 더욱 좋습니다.

다음 할 일

  • HTML을 python(BeutifulSoup)로 parsing하여 필요한 내용(제목, 내용, 태그, 카테고리 id 등)을 가져옴


본 게시물은 Notion에서 작성되어, 자동으로 업로드 되었습니다.

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday