약 4분 읽기
프로젝트 개요
저는 AI 블로그 자동발행 시스템을 구축했습니다. 이 시스템은 OpenAI의 GPT-4o-mini API를 활용하여 자동으로 블로그 글을 작성하고, WordPress REST API를 통해 예약 발행을 합니다. Unsplash에서 자동으로 썸네일을 첨부하고, JSON 파싱 오류를 처리하여 안정성을 높였습니다.
기술 스택
- Python
- WordPress REST API
- OpenAI GPT-4o-mini API
- n8n
- JSON
문제와 배경
블로그 운영에 있어 지속적으로 콘텐츠를 생산하는 것이 매우 중요한데, 수작업으로 작성하면 시간과 비용이 많이 소모됩니다. 이에 따라 자동으로 블로그 글을 작성하고 발행할 수 있는 시스템을 구축하여 효율성을 높이고자 했습니다.
설계 결정
처음에는 n8n을 이용해 자동화하려 했으나, 여러 번의 실패 후 Python urllib를 이용해 직접 구현하기로 결정했습니다. Python은 강력한 라이브러리와 API 호출 능력을 제공하며, 제가 원하는 기능을 유연하게 구현할 수 있었습니다.
핵심 구현
아래는 OpenAI API를 호출하여 블로그 글을 생성하는 코드입니다:
import urllib.request
import json
def generate_blog_post(prompt):
url = "https://api.openai.com/v1/engines/gpt-4o-mini/completions"
headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}
data = json.dumps({"prompt": prompt, "max_tokens": 500}).encode('utf-8')
req = urllib.request.Request(url, data=data, headers=headers)
with urllib.request.urlopen(req) as response:
result = json.loads(response.read())
return result['choices'][0]['text']
다음은 WordPress REST API를 통해 글을 예약 발행하는 코드입니다:
def publish_to_wordpress(title, content):
url = "https://your-wordpress-site.com/wp-json/wp/v2/posts"
headers = {"Authorization": "Bearer YOUR_JWT_TOKEN", "Content-Type": "application/json"}
post_data = {
"title": title,
"content": content,
"status": "future", # 예약 발행
"date": "2023-10-10T10:00:00" # 원하는 발행 시간
}
data = json.dumps(post_data).encode('utf-8')
req = urllib.request.Request(url, data=data, headers=headers)
with urllib.request.urlopen(req) as response:
print(response.read())
겪은 문제와 해결
n8n을 사용하면서 여러 번 API 호출에 실패했습니다. 그 원인은 API 키의 권한 문제와 JSON 파싱 오류로, 이를 해결하기 위해 fallback 처리를 추가했습니다. 또한, 토픽에 대한 중복 방지를 위해 MD5 해시를 사용하여 구분했습니다.
결과
이 시스템을 통해 블로그 글을 자동으로 생성하고 발행하는 데 드는 비용이 글당 약 20-30원이었으며, 한 달에 50편의 글을 자동으로 발행하는 성과를 거두었습니다. 기존의 수작업보다 약 80%의 비용 절감과 시간을 단축할 수 있었습니다.