도서 노트 생성 자동화 프로젝트 - 1

배경 및 목적

  1. 읽고 싶은 책이 많습니다. 그래서 책 노트를 자주 만듭니다.

  2. 그런데 책 노트 만드는 과정이 은근 번거롭습니다.

    • 책 제목, 저자, 출판사, 출판년도, isbn, 책소개, 목차 등등

  3. 위 과정을 Make로 자동화하려 합니다.

  4. 메인 도구는 Obsidian 입니다. 하지만 Make를 처음 사용해보니 만만한 Notion으로 해보려 합니다.

  5. 이 프로젝트는 점진적으로 개선할 계획입니다. 궁극적으로는

    1. Obsidian Plugin 개발

    2. Notion 책 추가 서비스 개발

활용 툴

실행 과정

워크플로우 개요

이번 과제의 자동화 플로우는 이렇습니다.

  1. 책 제목 입력

  2. 네이버 OpenAPI로 책 정보 호출

  3. Iterator로 데이터구조 정리

  4. 노션 페이지 생성 + 제목과 속성 입력

  5. 노션 페이지의 컨텐츠(내용) 입력

조금 더 자세히 이야기해보겠습니다. 순서는 플로우와 관계 없습니다.

1. 책 정보를 어떻게 가져올까?

두 가지 방법이 떠올랐습니다.

  1. 웹 클리핑하기

  2. OpenAPI 사용하기

가장 먼저 웹 클리핑을 고려했습니다. 왜냐면 OpenAPI 중에는 목차 정보를 제공하는게 없는 것으로 알고 있었기 때문입니다. 그런데 Perplexity로 검색해보니 중앙국립도서관 API가 지원하는 것을 확인했습니다. Perplexity 아니었으면 몰랐을 겁니다. 많이 사랑한다 Perplexity...

중앙국립도서관 OpenAPI를 신청했지만 아직 발급받지 못했습니다. 그래서 이번 과제는 기존에 있던 Naver OpenAPI를 사용했습니다. 어차피 워크플로우는 같을테니 우선 진행해보기로 결정했습니다.

2. OpenAPI 호출 어떻게하지?

HTTPMake a request를 사용했습니다.

URL에는 '요청 URL'을 입력합니다. 이 내용을 수정함으로써 호출 내용을 설정할 수 있습니다. '요청 URL' 규칙은 공식페이지에 있습니다.

'요청 URL'에 검색어를 입력합니다. 이 때 문자를 Encoding 해줘야 합니다.

가령 "이태극"을 인코딩하면 "%EC%9D%B4%ED%83%9C%EA%B7%B9" 입니다.

반대로 코드를 한글로 바꾸는 일을 디코딩이라 합니다.

item에는 네이버 OpenAPI의 Client ID와 Secret을 입력합니다. 이 양식도 물론 페이지에 있습니다. 여기서 요구하는 내용은 OpenAPI마다 다릅니다.

3. Iterator Module

API 호출로 받은 자료구조가 복잡하다. 그런데 Iterator을 거치면 구조가 단순해져서 편하다.

하지만 굳이 이게 없어도 동작에 문제는 없다. 이걸 모듈의 정확한 용도는 아직 이해 못했다.

4. 노션 페이지 생성 + 제목과 속성 입력

NotionCreate a Database Item 모듈을 사용하여 특정 DB에 새로운 노트를 생성합니다.

그리고 제목과 속성을 입력합니다. 이때 Iterator의 아이템을 호출한다.

DB 연동 방법 궁금하신 분들은 아래 영상 참고하세요. (허세임님!!)

https://www.youtube.com/watch?v=r9D0OZfjSA8

5. 노션 페이지 컨텐츠 입력하기

Page ID에는 이전 단계의 모듈에서 생성한 노트의 Database Item ID를 참조한다. 그러면 생성한 노트에 내용을 입력할 수 있다.

입력하려는 내용과 타입(Type)을 적절히 매치하자. 이미지 URL은 Image 타입으로, Description(책소개)는 Heading 2 타입으로, 책소개 내용은 Paragraph로 했다.

결과 및 인사이트

  1. 예전에 Python으로 Notion API를 사용해서 뭘 만들어보려 했던 적이 있다.
    비개발자이라서 그런지 장문의 json 파일과 긴 코드를 보면 벙찐다.
    반면 Make는 UI가 굉장히 친절하다.
    Make로 로직을 설계하고 코딩하는게 좋겠다.

  2. API가 XML을 호출하기 때문에 XML 관련 모듈로 Parse 해줘야하는 줄 알았다. 한참을 삽질하고 나서야 Make에서 알아서 Array와 Collection으로 바꿔주는 걸 알았다. (젠장...)

  3. API가 여러 권의 책을 호출해올 경우 여러 권의 노트를 만들었다. 어쩌면 당연한 건데 생각을 못했다.

What's Next?

다음주 목표

  1. 중앙국립도서관 API 승인 받으면 이제 목차를 입력할 수 있다. 또한 카테고리와 같은 정보도 받을 수 있다고 하는데 이 부분은 테스트 해봐야 할 것 같다.

  2. 생성형 AI를 사용해서 "제목" "소개" "목차"으로 책 내용을 유추하게 만들 것이다. 그리고 태그를 생성해보려 한다.

향후 목표

  1. Chrome Extension을 만들어서 책을 검색하고 선택하는 기능을 구현한다.

  2. 노션으로 자동화를 완성하면 옵시디언용까지 개발한다.

(과연 할 수 있을까?)

6
4개의 답글

👉 이 게시글도 읽어보세요