코드를 하나씩 붙여보는 실전 편
안녕하세요! 오늘은 지난 편에서 계획했던 내용을 실제로 하나씩 만들어보는 시간을 가져보겠습니다. 이 글은 “나도 해볼까?” 하는 분들이 따라 할 수 있도록 최대한 쉽게, IT 칼럼형으로 풀어쓴 튜토리얼입니다. 어려운 코드는 걱정하지 마세요. 한 줄 한 줄 차근차근 설명해드리겠습니다.
먼저 Python에서 RSS 피드를 긁어오기 위해 feedparser라는 라이브러리를 씁니다. 설치는 간단합니다. pip install feedparser로 설치하고 아래 코드를 써보세요.
import feedparser
rss_url = 'https://techcrunch.com/feed/'
feed = feedparser.parse(rss_url)
for entry in feed.entries:
print(entry.title)
print(entry.link)
print(entry.published)
이렇게 하면 최신 글의 제목, 링크, 날짜를 불러올 수 있습니다. 여기까지 실행되면 “아, 됐다!” 하고 기뻐하셔도 됩니다.
다음 문제는 같은 글이 계속 반복되지 않게 막는 겁니다. 간단히는 글의 link나 guid(고유값)를 파일에 기록하고, 다음 실행에서 이 값이 있으면 건너뛰는 방식으로 해결합니다.
import json
try:
with open('processed.json', 'r') as f:
processed = json.load(f)
except FileNotFoundError:
processed = []
if entry.link not in processed:
# 처리할 코드
processed.append(entry.link)
with open('processed.json', 'w') as f:
json.dump(processed, f)
처음엔 어렵게 생각하지 말고 “그냥 리스트에 기록한다”라고 생각하세요.
내가 원하는 주제만 골라보죠. 예를 들어 ‘디자인 시스템’, ‘UX’, ‘AI’ 같은 키워드가 제목에 있으면 통과, 아니면 제외.
include_keywords = ['디자인 시스템', 'UX', 'AI']
exclude_keywords = ['광고', '이벤트']
def match_keywords(text):
if any(word in text for word in exclude_keywords):
return False
return any(word in text for word in include_keywords)
if match_keywords(entry.title):
print('선택된 글:', entry.title)
이제 내가 보고 싶은 글만 남습니다.
드디어 하이라이트! 긴 글을 AI로 300자 이내로 요약해봅시다. 우선 pip install openai로 설치하고, OpenAI에서 API 키를 받아주세요.
import openai
openai.api_key = '발급받은_API_키'
def summarize(text):
prompt = f"다음 내용을 한국어로 300자 이내로 요약해줘: {text}"
response = openai.ChatCompletion.create(
model="gpt-4-turbo",
messages=[{'role': 'user', 'content': prompt}]
)
return response['choices'][0]['message']['content']
실행해보면 처음엔 “와… 진짜 AI가 다 해주네” 싶을 거예요. 여기서 중요한 건, prompt(지시문)를 명확히 주는 겁니다. “대충 알아듣겠지”는 AI에겐 통하지 않습니다.
이제 요약된 내용을 블로그에 올려봅시다. 워드프레스는 REST API로 글 등록이 가능합니다. Application Password를 발급받고, requests 라이브러리로 업로드하면 됩니다.
import requests
def post_to_wordpress(title, content, username, app_password, site_url):
url = f"{site_url}/wp-json/wp/v2/posts"
auth = (username, app_password)
data = {'title': title, 'content': content, 'status': 'publish'}
response = requests.post(url, auth=auth, json=data)
print(response.status_code)
이 부분에서 인증이나 SSL 문제로 막히는 경우가 많습니다. 혹시 에러가 뜨면 천천히 원인을 하나씩 찾아보세요. (물론 저도 ChatGPT에게 물어보며 해결했습니다.)
짧은 요약이나 링크를 트위터에 올리고 싶다면 tweepy라는 라이브러리를 씁니다.
import tweepy
auth = tweepy.OAuth1UserHandler(api_key, api_secret, access_token, access_secret)
api = tweepy.API(auth)
api.update_status("방금 업로드한 글: " + entry.link)
280자 제한에 맞게 요약을 잘라내는 처리도 같이 넣어주면 더 좋습니다.
여기까지 왔다면 다 끝난 게 아닙니다. 가장 중요한 건 작게 작게 테스트입니다. RSS → 중복 제거 → 키워드 필터 → 요약 → 업로드. 각 단계가 잘 작동하는지 따로따로 실행해보세요. 무작정 한꺼번에 돌리면 어디서 막히는지 알 수 없습니다.
처음엔 인코딩 문제, API 제한, 에러 메시지로 스트레스 받을 수 있어요. 하지만 하나하나 해결해가면서 배우는 게 이 사이드 프로젝트의 묘미입니다. 저도 몰랐던 것들을 수없이 검색하고 실험하면서 배웠습니다. 중요한 건 멈추지 않는 겁니다.
✅ RSS 긁어오기 테스트
✅ 중복 제거 테스트
✅ 키워드 필터 테스트
✅ AI 요약 테스트
✅ 블로그 업로드 테스트
하나라도 성공했다면 오늘은 충분히 큰 진전입니다.
오늘은 실제로 코드를 붙여보고, 어떻게 기능들을 단계별로 완성해가는지 살펴봤습니다. 다음 편에서는 이걸 매일 자동으로 실행할 수 있게 GitHub Actions로 배포하고, 유지보수 팁까지 정리해보겠습니다. 어렵지 않아요. 이제 거의 다 왔습니다.