구축 개요
블로그를 시작하려고 하면 가장 먼저 부딪히는 장벽이 바로 **호스팅 비용(월 1~3만 원)**과 매일 글을 써야 한다는 창작의 고통입니다. 워드프레스는 호스팅과 서버 관리가 까다롭고, 네이버나 티스토리 같은 플랫폼은 광고 수익화나 디자인 자율성에 명확한 한계가 있습니다.
만약 내 컴퓨터가 꺼져 있어도 클라우드 서버가 알아서 24시간 고품질 IT 및 재테크 글을 쓰고, 내가 옵시디언(Obsidian)으로 쓴 개인 일기와 공부 노트까지 1초 만에 웹사이트로 발행되는 **‘0원 하이브리드 무인 자동화 블로그’**를 가질 수 있다면 어떨까요?
이 글에서는 GitHub Actions + Cloudflare Pages + Google Gemini API + Quartz v5를 결합해 서버 비용 없이 자동화 블로그를 구축한 과정과 주요 문제 해결 경험을 정리합니다.
핵심 아키텍처
이 블로그 시스템은 전 세계에서 가장 신뢰도 높은 3개의 무료 클라우드 플랫폼이 서로 유기적으로 톱니바퀴처럼 맞물려 작동합니다.
graph TD
A[🤖 Google Gemini 2.5 API<br/>일 1,500회 무료 AI 생성] -->|Markdown 글 생성| B[⚙️ GitHub Actions<br/>월 2,000분 무료 크론 서버]
B -->|Git Commit & Push| C[📁 GitHub Repository<br/>v5 브랜치 / content 폴더]
D[📝 내 PC 옵시디언<br/>Enveloppe 플러그인] -->|share: true & Ctrl+P| C
C -->|Webhook 자동 감지| E[☁️ Cloudflare Pages<br/>월 500회 무료 빌드 & CDN 호스팅]
E -->|Quartz v5 초고속 렌더링| F[🌐 라이브 블로그 웹사이트<br/>지식 그래프 & SEO]
-
Google Gemini API (
google-genai): 구글의 차세대 AI 모델(Gemini 2.5 Flash / 2.0 Flash)을 이용하여 최신 IT 트렌드와 재테크 전략 글을 작성합니다. (하루 1,500회 무료 제공량 활용) -
GitHub Actions (무인 스케줄러): 내 PC가 꺼져 있어도 지정된 시간(크론 스케줄)마다 알아서 깨어나 파이썬 스크립트를 실행하고 깃허브에 글을 업로드(Push)합니다.
-
Cloudflare Pages + Quartz v5: 깃허브에 새 글이 올라오면 이를 감지하여 1분 만에 정적 웹사이트로 빌드하고 전 세계 CDN망을 통해 초고속으로 배포합니다. 옵시디언 특유의 **지식 연결 그래프(Graph View)**와 백링크도 함께 활용할 수 있습니다.
구축 중 만난 5가지 기술 이슈
이 시스템을 구축하는 과정에서 최신 라이브러리 및 엔진 버전 업데이트로 인해 발생한 5가지 결정적인 기술적 난관들이 있었습니다. 이를 어떻게 해결했는지 상세히 공유합니다.
1. 구글 레거시 SDK 폐기 경고와 모델 404 에러
- 증상: 파이썬 스크립트 실행 시
FutureWarning: All support for the google.generativeai package has ended경고와 함께404 models/gemini-1.5-flash is not found에러 발생. - 원인: 구글이 기존
google-generativeai라이브러리의 지원을 종료하고, 새 통합 SDK인 **google-genai**로 전면 마이그레이션했습니다. 또한 구버전1.5-flash모델이 API에서 내려갔습니다. - 해결법:
-
라이브러리를 최신
google-genai로 교체하고, 클라이언트 초기화 코드를client = genai.Client(api_key=...)구조로 현대화했습니다. -
모델 호출 시 차세대 모델인 **
gemini-2.5-flash**를 1순위로 호출하고, 실패 시gemini-2.0-flash로 자동 전환되는 안전한 폴백(Fallback) 구조를 설계했습니다.
2. Quartz v5 빌드 실패와 Node.js 22 버전 요구사항
- 증상: Cloudflare Pages 배포 중
npm error notsup Required: {"npm":">=10.9.2","node":">=22"}에러 발생하며 빌드 중단. - 원인: 최근 출시된 최신 Quartz v5가 엔진 요건을 전면 업그레이드하여 Node.js 22 버전 이상 및
npm 10.9.2 이상을 필수로 요구합니다. - 해결법: Cloudflare Pages 화면 ➔
Settings➔Environment variables에서NODE_VERSION환경변수 값을 기존20에서 👉22로 변경하여 즉시 해결했습니다.
3. 플러그인 경로 에러 (Could not resolve "../../.quartz/plugins")
- 증상: Node.js 22 업그레이드 후 패키지 설치는 성공했으나, 빌드 명령어 단계에서
Could not resolve "../../.quartz/plugins"에러 발생. - 원인: Quartz v5부터는 빌드하기 전에 내부 플러그인 설정 파일을 생성하는 사전 빌드(Pre-build) 과정이 필수입니다. 빌드 명령어를
npx quartz build로만 적으면 이 사전 작업이 건너뛰어집니다. - 해결법: Cloudflare Pages의
Build command를npm run build로 교체하여,package.json에 정의된 사전 빌드 및 모듈 경로 매핑이 작동하도록 조정했습니다.
4. Cloudflare 월 500회 빌드 한도와 실행 주기
- 증상: 빠른 글 누적을 위해
1시간 간격(0 * * * *)실행을 검토했으나, Cloudflare 무료 요금제 한도 충돌 위험 발견. - 원인: Cloudflare Pages 무료 요금제는 한 달에 최대 500회 빌드까지만 제공됩니다. 1시간마다 실행하면 월 720회 빌드가 되어 무료 한도를 초과하게 됩니다. 또한 매시 정각(
0분)은 전 세계 봇이 몰려 깃허브 서버 지연이 발생합니다. - 해결법:
-
하루 4번(6시간 간격) 실행되는
17 */6 * * *크론 스케줄을 적용했습니다. -
월 120회 빌드로 **무료 한도의 약 24%**를 사용하면서, 하루 4회 발행이 가능한 운영 기준을 잡았습니다.
-
전 세계 봇이 몰리는 정각을 피한 ‘매시 17분’ 실행으로 지연 없는 100% 칼같은 배포를 구현했습니다.
5. 옵시디언 하이브리드 발행과 Enveloppe 플러그인
- 증상: 옵시디언에서 내가 직접 쓴 메모를 블로그로 발행하려고 할 때, 플러그인 이름과 명령어 혼동 발생.
- 원인: 가장 유명한 옵시디언 깃허브 퍼블리싱 플러그인(
obsidian-git/GitHub Publisher)의 개발자가 프랑스 개발자(Mara-Li)여서, 프랑스어로 편지봉투를 뜻하는Enveloppe라는 명칭과 아이콘을 사용합니다. - 해결법:
-
옵시디언 플러그인 설정에서
"rootFolder": "content"로 설정하여 모든 글이 블로그 본문 폴더로 들어가도록 맞췄습니다. -
글 작성 시 최상단 속성(Properties)에
share: true를 체크하고, 단축키Ctrl + P ➔ enveloppe검색 후Upload all shared notes를 실행하는 하이브리드 발행 흐름을 구성했습니다.
자동화 워크플로우
아래 코드는 블로그 자동 발행의 중심이 되는 .github/workflows/auto_post.yml 워크플로우 예시입니다. 중복 실행 방지(concurrency) 설정을 함께 둡니다.
name: Auto AI Blog Posting
on:
schedule:
# 6시간 간격으로 매시 17분마다 실행 (한국시간: 아침 9:17, 오후 3:17, 밤 9:17, 새벽 3:17)
- cron: '17 */6 * * *'
workflow_dispatch:
# 이전 빌드가 끝나기 전에 새 빌드가 겹칠 경우 중복 실행을 막아주는 안전 장치
concurrency:
group: auto-post-${{ github.ref }}
cancel-in-progress: false
jobs:
post:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: 1. 저장소 체크아웃
uses: actions/checkout@v4
- name: 2. Python 환경 설정
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: 3. 최신 구글 공식 라이브러리(google-genai) 설치
run: pip install google-genai
- name: 4. AI 자동 글쓰기 스크립트 실행
env:
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
run: python scripts/auto_post.py
- name: 5. 깃허브에 변경사항 자동 업로드 (Git Push)
run: |
git config --global user.name "GitHub Action Bot"
git config --global user.email "action@github.com"
git add content/
git commit -m "🤖 Auto AI Post: $(date +'%Y-%m-%d %H:%M')" || exit 0
git push정리 및 다음 단계
이 구성은 별도 서버 없이도 AI 글 생성, GitHub 기반 버전 관리, Cloudflare Pages 배포를 연결할 수 있다는 점이 핵심입니다.
- 완전 무인 자동화: 하루 4번씩 AI가 알아서 고품질 트렌드 글을 채워줍니다.
- 제어권: 옵시디언 안에서 글을 읽고 다듬으며, 직접 작성한 글도
Enveloppe플러그인으로 발행할 수 있습니다. - 평생 무료 호스팅: Cloudflare Pages의 압도적인 속도와 보안, 그리고 Quartz v5의 세련된 디자인을 누릴 수 있습니다. 다음 단계: 검색 등록과 광고 정책 검토
이제 며칠 동안 자동 발행 시스템이 열심히 일해서 글이 15개 이상 쌓이고 나면, 호스팅케이알이나 가비아에서 **나만의 개인 도메인(.com, .kr 등)**을 연 1만 원대에 구매하여 Cloudflare에 연결합니다.
이후 구글 서치콘솔에 사이트맵을 등록하고 광고 정책에 맞춰 콘텐츠 품질을 관리하면, 자동 발행 파이프라인을 장기적으로 운영할 수 있습니다.