Notion에서 Tistory로 자동 업로드 #2 (tistory api, notion export)
목표
지난번에 소개해드린 것과 같이 notion페이지를 tistory로 자동 업로드하는 2번째 입니다.
notion에서 원하는 페이지를 export하는 방법과 tistory api로 게시물을 올리는 방법에 대해 알아보겠습니다.
Tistory API 사용하기
Token 발급받기
우선 아래 게시물을 참고해서 Tistory API Token을 가져와야 합니다.
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}
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을 python(BeutifulSoup)로 parsing하여 필요한 내용(제목, 내용, 태그, 카테고리 id 등)을 가져옴
본 게시물은 Notion에서 작성되어, 자동으로 업로드 되었습니다.