블로그 자동 포스팅 제작기 (3)

자동화, 배포, 그리고 앞으로의 이야기

by 황디

안녕하세요! 이제 드디어 마지막 편입니다.

이제까지 우리는 RSS 데이터를 긁어오고, 키워드를 필터링하고, AI로 요약하고, 블로그나 트위터에 업로드하는 과정을 하나하나 만들었습니다.

그런데… 매번 수동으로 실행하면 너무 귀찮겠죠?

그래서 이번에는 자동화에 도전합니다.




① 왜 자동화가 필요할까?

처음에는 로컬에서 ‘python rss_filter_bot.py’를 실행하면 됐습니다. 하지만 매일 아침 실행할 거라면? 출근길에 잊어버리면? 결국 자동으로 돌게 만들어야 합니다. 저는 여기서 GitHub Actions라는 무료 서비스를 사용했습니다.




② GitHub Actions란?

GitHub Actions는 GitHub 저장소에 올려둔 코드를 정해진 시간에 자동으로 실행해주는 서비스입니다. 무료 요금제에서도 꽤 넉넉한 사용량을 줍니다. 예를 들어 매일 오전 7시에 ‘rss_filter_bot.py’를 실행하도록 설정할 수 있습니다.




③ 워크플로 만들기

우선 GitHub에 코드를 올립니다. 그다음 ‘.github/workflows/rss-filter.yml’ 같은 파일을 만들고, 여기에 아래 같은 내용을 넣습니다.


name: RSS Filter Bot

on:
schedule:
- cron: "0 22 * * *" # (UTC 기준, 한국 오전 7시)

jobs:
run-bot:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Install dependencies
run: pip install -r requirements.txt

- name: Run bot
run: python rss_filter_bot.py
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
WP_USERNAME: ${{ secrets.WP_USERNAME }}
WP_PASSWORD: ${{ secrets.WP_PASSWORD }}
TW_API_KEY: ${{ secrets.TW_API_KEY }}
TW_API_SECRET: ${{ secrets.TW_API_SECRET }}
TW_ACCESS_TOKEN: ${{ secrets.TW_ACCESS_TOKEN }}
TW_ACCESS_SECRET: ${{ secrets.TW_ACCESS_SECRET }}

이걸 올려두면 이제 GitHub가 매일 알아서 실행해줍니다.




④ API 키와 환경 변수 관리

중요한 API 키나 비밀번호를 코드에 직접 적으면 안 됩니다.

GitHub에서는 ‘Settings → Secrets’에 등록하면 워크플로에서 ‘${{ secrets.KEY_NAME }}’ 형태로 불러올 수 있습니다. Python에서는 ‘os.environ.get(“KEY_NAME”)’로 환경 변수를 불러오게 만들면 됩니다.

이 방식 덕분에 코드에는 민감한 정보가 하나도 남지 않습니다.




⑤ 테스트와 로깅

자동화에서 중요한 건 “잘 돌고 있는지 확인할 수 있게 만드는 것”입니다. 저는 ‘import logging’을 써서 ‘logging.info(“업로드 성공”)’, ‘logging.error(“에러 발생”)’ 같은 기록을 남겼습니다. 그리고 실행 로그를 GitHub Actions에서 확인했습니다.




⑥ 유지보수 팁

처음에는 ‘rss_filter_bot.py’ 하나로 다 넣었지만, 나중엔 ‘rss.py’, ‘filter.py’, ‘summary.py’, ‘publish.py’로 나눴습니다. 이렇게 하면 나중에 문제를 고치거나 새 기능을 붙이기가 훨씬 쉽습니다. 그리고 버전 관리는 무조건 GitHub! Git은 사이드 프로젝트의 친구입니다.




⑦ 배포 후 느낀 점

가장 큰 깨달음은 이겁니다.

“완벽한 코드보다 돌아가는 코드가 최고다.”

처음에는 ‘아, 이거 리팩토링해야 하는데…’, ‘좀 더 예쁘게 짜야 하는데…’ 이런 생각을 했지만, 막상 배포하고 나니 안정성이 훨씬 중요하다는 걸 알게 됐습니다.




⑧ 앞으로 해보고 싶은 것

✅ Google Trends에서 실시간 인기 키워드 가져와 연동

✅ Instagram, Threads 같은 플랫폼 확장

✅ 카테고리별 맞춤 요약 (예: 디자인 뉴스는 감성 톤, 테크 뉴스는 분석 톤)

✅ 오픈소스화 (설정 파일만 바꾸면 누구나 쓸 수 있게)

이런 걸 하나씩 추가해보고 싶습니다.




⑨ 오늘의 미션 정리

✅ GitHub Actions로 자동화 성공

✅ Secrets로 안전한 키 관리

✅ 로그 남기기

✅ 유지보수 계획 세우기

하나라도 성공했다면 당신은 이미 ‘나만의 자동화 봇’을 가진 사람입니다.




⑩ 마무리

여기까지 세 편에 걸쳐 블로그 자동 포스팅 제작기를 따라와 주셔서 정말 감사합니다.

사이드 프로젝트는 완벽하지 않아도 괜찮습니다. 나를 성장시키는 재미, 배우는 즐거움이 가장 큰 보상입니다. 혹시 이 글을 보고 비슷한 걸 만들고 싶거나, 질문이 있다면 언제든 댓글 주세요.

제가 겪은 시행착오와 배움을 기꺼이 나누겠습니다.


함께 자동화의 세계에 발을 들여주셔서 고맙습니다!

keyword
작가의 이전글블로그 자동 포스팅 제작기 (2)