벤치마킹 글 자동 작성 코드

이 코드는 벤치마킹하는 사이트에서 새로운 글이 올라왔을 때 해당 글의 내용을 txt 파일로 내 컴퓨터에 저장하고, 저장된 내용을 노션 AI를 이용해 단어와 말투를 바꿔 글을 자동으로 작성해줍니다.

사용 방법

  1. 코드를 다운로드하고 필요한 라이브러리를 설치합니다.
  2. 코드 내의 주석을 참고하여 사용자가 원하는 설정을 변경합니다.
  3. 코드를 실행합니다.
  4. 벤치마킹하는 사이트에 새로운 글이 올라오면, 코드가 자동으로 해당 글의 내용을 txt 파일로 저장하고, 노션 AI를 이용해 자동으로 글을 작성해줍니다.

주의 사항

  1. 코드를 실행하기 위해서는 노션 API 토큰과 비밀번호가 필요합니다. 이 정보들은 코드 내에서 설정해야 합니다.
  2. 노션 AI를 이용해 글을 작성하려면 미리 작성한 템플릿이 필요합니다. 이 템플릿은 코드 내에서 설정할 수 있습니다.
  3. 이 코드는 벤치마킹하는 사이트마다 다르게 작동할 수 있습니다. 코드를 수정하여 각 사이트에 맞게 설정해야 합니다.
# 필요한 라이브러리 import
import requests
from bs4 import BeautifulSoup
import re
import time
import os
import openai
from notion_client import Client

# Notion API key 값 입력
notion = Client(auth="YOUR_NOTION_API_KEY")

# Notion 페이지 URL 입력
page_url = "YOUR_PAGE_URL"

# Notion 페이지 내 템플릿 block 이름 입력
template_name = "YOUR_TEMPLATE_NAME"

# OpenAI API key 값 입력
openai.api_key = "YOUR_OPENAI_API_KEY"

# 확인해야 할 사이트 URL 입력
url = "YOUR_SITE_URL"

# 무한루프 돌리기
while True:
    # 사이트 HTML 가져오기
    req = requests.get(url)
    html = req.text

    # 가져온 HTML에서 게시글 URL 가져오기
    soup = BeautifulSoup(html, 'html.parser')
    new_post = soup.find('a', href=re.compile(YOUR_SITE_REGEX))

    # 가져온 URL이 이전 URL과 다르다면 새 게시글이 업로드된 것이므로 글 작성 시작
    if new_post['href'] != previous_url:
        # 새 게시글 URL과 제목 가져오기
        new_post_url = new_post['href']
        new_post_title = new_post.text

        # 새 게시글 내용 가져오기
        new_post_req = requests.get(new_post_url)
        new_post_html = new_post_req.text
        new_post_soup = BeautifulSoup(new_post_html, 'html.parser')
        new_post_content = new_post_soup.find(YOUR_POST_CONTENT_SELECTOR).text

        # 가져온 게시글 내용 텍스트 파일로 저장
        with open('new_post.txt', 'w', encoding='utf-8') as f:
            f.write(new_post_content)

        # Notion 페이지에서 템플릿 block 가져오기
        results = notion.databases.query(
            **{
                "database_id": YOUR_DATABASE_ID,
                "filter": {
                    "title": {
                        "equals": template_name
                    }
                }
            }
        )
        template_block_id = results['results'][0]['id']

        # 템플릿 block을 복사하여 새 페이지 생성
        new_page = notion.pages.duplicate(
            page_id=template_block_id,
            **{
                "parent": {
                    "page_id": YOUR_PARENT_PAGE_ID
                }
            }
        )

        # 새 페이지 제목을 새 게시글 제목으로 수정
        notion.pages.update(
            **{
                "page_id": new_page['id'],
                "properties": {
                    "title": {
                        "title": [
                            {
                                "text": {
                                    "content": new_post_title
                                }
                            }
                        ]
                    }
                }
            }
        )

        # 새 페이지 내용을 OpenAI API로 생성
        prompt = YOUR_OPENAI_PROMPT
        response = openai.Completion.create(
            engine=YOUR_OPENAI_ENGINE,
            prompt=prompt,
            temperature=YOUR_OPENAI_TEMPERATURE,
            max_tokens=YOUR_OPENAI_MAX_TOKENS,
            n=YOUR_OPENAI_N,
            stop=YOUR_OPENAI_STOP,
        )

        # 생성된 글을 Notion 페이지에 추가
        notion.pages.update(
            **{
                "page_id": new_page['id'],
                "properties": {
                    "text": {
                        "rich_text": [
                            {
                                "text": {
                                    "content": response.choices[0].text
                                }
                            }
                        ]
                    }
                }
            }
        )

        # 이전 URL을 새로운 URL로 업데이트
        previous_url = new_post['href']

    # 60초마다 새 게시글이 올라왔는지 확인
    time.sleep(60)