Develop Note

ChatGPT API와 Tistory: 자동화된 영어 학습 블로그 만들기 본문

개발 (Ko)

ChatGPT API와 Tistory: 자동화된 영어 학습 블로그 만들기

Chalsu 2023. 6. 22. 16:19

Introduction

ChatGPT API를 통합하여 자동화된 영어 학습 콘텐츠를 만드는 시리즈의 세 번째입니다.

다양한 플랫폼을 통합해보고 있습니다. 첫 번째는 SendGrid(이메일), 두 번째는 Slack을 연동했습니다.

API를 사용하면 리소스가 적은 장치에서도 요청 및 응답 형태로 특정 기능을 자동화할 수 있습니다.

저는 WIZnet의 RP2040과 W5500, W5100S 이더넷 기반의 장치를 사용했습니다.

참고로 기존 프로젝트는 다음 링크에서 참조할 수 있습니다.

이번 글에서는 ChatGPT API가 Tistory 플랫폼과 통합되어 자동화된 영어 학습 블로그를 만드는 방법을 살펴봅니다. 최신 언어 모델인 ChatGPT와 인기 블로그 플랫폼인 Tistory를 결합하여 학습자는 개인화된 영어 학습 프롬프트에 액세스하고 언어 능력을 향상시킬 수 있습니다.

Prerequsite

  • Tistory 계정
  • W5100S-EVB-Pico or W5500-EVB-Pico
  • Thonny: Micropython 개발환경

1. Set up the Tistory App

먼저 Tistory 앱을 설정해야 합니다. 여기에는 다음 단계가 포함됩니다.

a. Tistory App 생성

Tistory 앱을 만드는 것은 Tistory API와 ChatGPT를 통합하기 위한 첫 단계입니다.

Tistory API의 공식 문서는 아래 링크에서 확인하실 수 있습니다.

API 호출에 대한 액세스 토큰을 얻으려면 다음 과정을 거쳐야 합니다.

  • 인증 요청 및 인증코드 발급
  • 액세스 토큰 얻기

이 과정은 아래 링크에 설명되어 있습니다.

https://tistory.github.io/document-tistory-apis/auth/authorization_code.html

앱을 생성할 때 App ID와 Secret Key를 확인할 수 있습니다. 이 값은 인증 요청에 필요합니다.

 

인증 요청 및 인증코드 발급

https://www.tistory.com/oauth/authorize?
  client_id={client-id}
  &redirect_uri={redirect-uri}
  &response_type=code
  &state={state-param}

액세스 토큰 얻기

값을 입력하고 브라우저의 주소 표시줄에 붙여넣기만 하면 됩니다. 결과를 바로 확인하려면 F12를 눌러 개발자 도구 창을 엽니다. (크롬 브라우저)

GET https://www.tistory.com/oauth/access_token?
  client_id={client-id}
  &client_secret={client-secret}
  &redirect_uri={redirect-uri}
  &code={code}
  &grant_type=authorization_code

해당 주소로 접속 시 접근 권한 창이 뜨는데 여기에서 허용 버튼을 눌러 권한을 허용합니다.

이 과정을 통해 Tistory 액세스 토큰을 발급받을 수 있습니다.

2. Test the Tistory API

2. 티스토리 API 테스트

티스토리 앱을 설정하고 접근 토큰을 획득했다면, 티스토리 API의 기능을 테스트하는 것이 필수적입니다. 이번 단계에서는 널리 사용되는 파이썬 라이브러리인 requests 라이브러리를 이용해 간단한 Post 코드를 개발하고 테스트해 보겠습니다.

a. 'requests'를 이용한 간단한 포스트 코드 개발 및 테스트하기

requests 라이브러리를 사용하면 티스토리 API의 post.write 엔드포인트로 POST 요청을 보내는 코드 스니펫을 작성할 수 있습니다.

이 코드에는 액세스 토큰, 블로그 이름, 제목, 글의 내용 등 필요한 파라미터가 포함됩니다. 이 코드를 테스트하면 API 호출이 성공적으로 수행되고 생성된 게시물이 티스토리 블로그에 정상적으로 표시되는지 확인할 수 있습니다.

발급한 액세스 토큰이 정상적으로 작동하는지 테스트하는 코드는 아래와 같습니다.

TISTORY_ACCESS_TOKEN, TISTORY_BLOG_NAME 변수에 값을 채웁니다.

import requests
import json

# set Tistory API endpoint URL and access token
TISTORY_API_URL = "https://www.tistory.com/apis/post/write"
TISTORY_ACCESS_TOKEN = "<Access token>"

# set Tistory blog name and post data
TISTORY_BLOG_NAME = "<Blog name>"
TISTORY_POST_TITLE = "First Post"
TISTORY_POST_CONTENT = "This is Post Content"

# create Tistory API request headers
headers = {
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
}

# create Tistory API request data
data = {
    "access_token": TISTORY_ACCESS_TOKEN,
    "output": "json",
    "blogName": TISTORY_BLOG_NAME,
    "title": TISTORY_POST_TITLE,
    "content": TISTORY_POST_CONTENT
}

# send Tistory API request using requests
response = requests.post(TISTORY_API_URL, headers=headers, data=data)
print(f'response: {response.content.decode("utf-8")}')

# parse response data and print status
response_data = json.loads(response.content.decode("utf-8"))
print(response_data["status"])

요청이 성공하면 다음과 같이 status, postId, url을 응답으로 받을 수 있습니다.

아래는 API를 사용하여 게시된 첫 번째 게시물입니다.

3. Write Application Code

다음 단계는 ChatGPT 영어 학습 프롬프트를 생성하는 메인 코드를 작성하고 ChatGPT API를 티스토리 API와 연동하는 것입니다.

a. ChatGPT 영어 학습 프롬프트 생성하기

자동화된 영어 학습 블로그에서 학습 경험을 향상시키기 위해 ChatGPT의 기능을 활용하여 개인화된 영어 학습 프롬프트를 생성할 수 있습니다. 이 단계에서는 학습 질문과 답변을 포함하도록 티스토리 게시물의 반환 형식을 수정합니다.

b. 티스토리 게시물의 반환 형식 수정하기

위 링크는 이전에 진행했던 Slack 연동 프로젝트입니다. 이때 사용했던 프롬프트를 기반으로 업데이트된 프롬프트를 만들었습니다.

첫 번째 중요한 조건은 응답 형식을 HTML 형식으로 생성하는 것입니다. 그 다음에는 블로그 포스팅이기 때문에 설명이 더 필요했습니다.

다음 문구를 추가했습니다: 먼저 ChatGPT를 사용하여 프롬프트 초안을 작성하고 내용을 더하고 빼서 프롬프트를 만들었습니다.

The Title: The title of content have to contain the featured 2 intermediate-level English words with HTML format.

Other Content: Inscribe the remaining sections of the blog post, such as introductions, conclusions, and supplementary information, in Korean while maintaining a formal tone. Integrate relevant examples, anecdotes, or personal insights in Korean to captivate the readers and establish a deeper connection with the content.

Practical Applications: Incorporate practical, real-life examples or scenarios in Korean that vividly demonstrate the application of the discussed language skills in everyday situations. This approach enables learners to grasp the significance and effectiveness of their learning journey.

The Title

그리고 블로그 포스트는 제목이 필요하기 때문에 HTML 코드에서 제목을 추출하는 코드를 추가로 작성했습니다. 정규식 패턴을 사용합니다.

def get_title(content):
    title = None
    try:
        # Define the regex pattern to match the title tag
        pattern = r"<title>(.*?)</title>"

        # Find the match using regex
        match = re.search(pattern, content)

        # Extract the title if a match is found
        if match:
            title = match.group(1)
            print(title)
    except Exception as e:
        print(e)

    return title

c. Integrate ChatGPT API with Tistory API

urequests 라이브러리를 사용하여 Micropython과 호환되도록 코드를 수정하는 작업이 포함됩니다.

4. W5500-EVB-Pico Firmware

W5500-EVB-Pico는 IoT 애플리케이션 개발에 사용할 수 있는 개발 보드입니다. 이 단계에서는 펌웨어를 업로드하고 애플리케이션 코드를 업데이트합니다.

a. Upload Firmware

첫 번째 단계는 W5500-EVB-Pico에 Micropython 펌웨어를 업로드하는 것입니다.

보드는 다음과 같이 연결할 수 있습니다. 5V 마이크로 USB로 전원을 공급하고 LAN 케이블을 연결하여 이더넷 네트워크를 사용합니다.

W5500-EVB-Pico 보드를 위한 Miropython 펌웨어는 아래 링크에서 다운로드할 수 있습니다.

현재 날짜 기준 최신 펌웨어 버전: v1.20.0 (2023-04-26) .uf2 [릴리스 노트](최신)

보드의 BOOTSEL 버튼을 누른 상태에서 RUN 버튼을 누르면 PC에 RPI-RP2 드라이브가 나타납니다. 여기에서 다운로드한 .uf2 파일을 복사합니다.

펌웨어가 업로드되고 드라이브가 자동으로 인식 해제됩니다.

b. Update Application Code using urequests for Micropython

리소스가 제한된 환경에서 ChatGPT API와 Tistory API를 통합하기 위해 Micropython 기반 장치에 적합한 urequests 라이브러리를 사용하여 코드를 수정합니다.

c. Error handling

Micropython 코드를 업데이트하고 테스트하는 과정에서 발생한 에러를 메모해 둡니다.

PC 환경으로 Python에서 테스트할 때는 문제가 없었지만 Micropython의 urequests 라이브러리를 사용할 때 파라미터가 약간 다르기 때문에 문제가 발생했습니다.

결론적으로 헤더 인코딩 형식을 설정하면 쉽게 풀 수 있는 문제였는데, 해결하는데 시간이 조금 걸렸습니다.

이전에 Slack 연동 프로젝트 테스트 코드가 도움이 되었습니다.

헤더는 다음과 같이 수정했습니다.

# Previous: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}
# Modified
headers["Content-Type"] = "application/json; charset=utf-8"

다음은 성공적으로 실행되었을 때의 예시 로그입니다.

5. Review the Result

ChatGPT API와 Tistory API를 연동하여 영어 학습 프롬프트를 생성한 후에는 Tistory 블로그에 생성된 게시물을 검토합니다.

이 단계는 자동화된 프로세스 기능이 예상대로 작동하고 생성된 콘텐츠가 정확하고 시각적으로 매력적인지 확인합니다.

일관적인 응답을 받는 것은 쉽지 않습니다. 처음에는 더 엉망인 답변을 받았는데, 프롬프트를 수정하면서 나아지는 답변을 볼 수 있었습니다.

자동으로 생성된 영어 학습 블로그 게시물은 다음과 같습니다.

여전히 다음과 같은 문제가 있습니다.

  • 중복된 영어 단어 응답: 별도 DB 필요
  • 주제를 벗어난 답변을 하는 경우
  • 정보가 충분하지 않은 응답 제공

프롬프트에 대한 이해와 다양한 테스트가 필요합니다.

결론적으로, ChatGPT API와 Tistory 플랫폼의 통합은 자동화된 영어 학습 블로그를 생성할 수 있는 흥미로운 가능성을 열어줍니다.

6. Next plan

다음 단계는 더 많은 게시물 작성, ChatGPT API와 Tistory API 간의 통합 개선 또는 Tistory 블로그를 향상시키기 위해 ChatGPT API를 사용하는 다른 방법 탐색이 포함될 수 있습니다.

FAQs

이 FAQ는 ChatGPT가 글을 내용을 토대로 만들어준 것입니다. 도움이 될만한 항목들을 남겨 둡니다.

Q1. 영어 이외의 언어로 ChatGPT API를 사용할 수 있나요?

예, ChatGPT API는 여러 언어를 지원하므로 사용자가 학습 프롬프트를 생성하고 영어 이외의 다양한 언어로 콘텐츠를 만들 수 있습니다.

Q2. 자동 영어 학습 블로그에 Tistory를 사용하면 어떤 이점이 있나요?

Tistory는 사용자 친화적인 인터페이스와 다양한 사용자 지정 옵션을 제공하여 자동화된 영어 학습 블로그를 만드는 데 이상적인 플랫폼입니다. 학습 프롬프트를 게시 및 구성하고, 학습자와 참여하고, 진행 상황을 추적하는 데 필요한 도구를 제공합니다.

Q3. 생성된 연구 프롬프트의 형식을 수정할 수 있습니까?

Tistory의 사용자 지정 옵션을 사용하면 기본 설정에 따라 생성된 학습 프롬프트의 형식을 수정할 수 있습니다. 이미지, 비디오 및 기타 멀티미디어 요소를 통합하여 시각적으로 매력적인 대화형 학습 자료를 만들 수 있습니다.

Comments