이 코드는 벤치마킹하는 사이트에서 새로운 글이 올라왔을 때 해당 글의 내용을 txt 파일로 내 컴퓨터에 저장하고, 저장된 내용을 노션 AI를 이용해 단어와 말투를 바꿔 글을 자동으로 작성해줍니다.
사용 방법
- 코드를 다운로드하고 필요한 라이브러리를 설치합니다.
- 코드 내의 주석을 참고하여 사용자가 원하는 설정을 변경합니다.
- 코드를 실행합니다.
- 벤치마킹하는 사이트에 새로운 글이 올라오면, 코드가 자동으로 해당 글의 내용을 txt 파일로 저장하고, 노션 AI를 이용해 자동으로 글을 작성해줍니다.
주의 사항
- 코드를 실행하기 위해서는 노션 API 토큰과 비밀번호가 필요합니다. 이 정보들은 코드 내에서 설정해야 합니다.
- 노션 AI를 이용해 글을 작성하려면 미리 작성한 템플릿이 필요합니다. 이 템플릿은 코드 내에서 설정할 수 있습니다.
- 이 코드는 벤치마킹하는 사이트마다 다르게 작동할 수 있습니다. 코드를 수정하여 각 사이트에 맞게 설정해야 합니다.
# 필요한 라이브러리 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)