path
Jin's Lab
코드로 실험하고 기록하는 개발 일지 · J.Lab
커리어 성장 자기 계발 방향성 탐색

Jin's Lab

코드로 실험하고 기록하는 개발 일지. 커리어와 삶의 방향을 탐색하며 기록하는 공간입니다

AIContentGeneration

부업 블로그 자동 발행 시스템 처음부터 만든 후기

J.Lab · 2026-06-21

안녕하세요, 여러분! 오늘은 지난 몇 달간 매달렸던 ‘부업 블로그 자동 발행 시스템’ 구축기를 풀어볼까 합니다. 현재, 제 블로그는 거의 자동으로 글을 발행하고 있어요.

이 시스템을 처음부터 만들면서 겪었던 삽질과 희열을 여러분과 공유하고 싶습니다. 바쁜 직장인이지만 블로그를 통해 꾸준히 수익을 내고 싶은 분들께 제 이야기가 도움이 되길 바랍니다!

블로그 자동화, Notion과 Gemini로 시작하다

시스템 구상은 게으름과 시간 부족 때문이었습니다. 아이디어는 많은데, 글 쓸 시간이 없어 블로그 접겠다 싶었죠. '글쓰기 과정을 자동화할 수 없을까?' 고민하다 블로그 자동화를 목표로 삼았습니다. 핵심은 모든 과정을 최소화하는 것이었죠.

Notion에 '키워드 DB'를 만들고, 상태를 '대기중'으로 설정해 시스템이 읽어갈 항목들을 관리했습니다. 다음은 본문 생성! Gemini API가 눈에 들어왔습니다.

본문 내용, 라벨, 이미지 프롬프트까지 JSON 형태로 한 번에 생성하도록 설계했죠. 그러나 툭하면 503 에러가 발생했습니다. API 자체의 일시적인 문제임을 깨닫고 Apps Script 블로그 자동화의 핵심인 ‘자동 재시도’ 로직을 구현했습니다.

8초부터 60초까지 지수 백오프 방식으로 재시도하도록 설정해 503 에러 실패를 획기적으로 줄였습니다. 이 삽질 하나가 시스템 안정성을 크게 높여줬습니다. 개발은 삽질의 연속임을 다시 한번 느꼈죠.

개발자가 책상에 앉아 코드를 짜는 모습, 주변에 클라우드와 자동화를 상징하는 아이콘들이 떠다니는 아이소메트릭 일러스트.

아이디어를 이미지로: AI 생성부터 Google Drive까지

텍스트만으로는 블로그가 심심하죠. 시각적인 요소는 독자 몰입도에 필수적입니다. AI 이미지 생성 기능을 시스템에 포함시키기로 했습니다. 여러 모델 테스트 끝에 HuggingFace의 FLUX.1-schnnell 모델이 제 블로그 스타일에 적합하다고 판단했어요. Gemini에서 생성해준 이미지 프롬프트 덕분에 글 내용과 딱 맞는 이미지를 만들 수 있었습니다.

문제는 생성된 이미지를 어떻게 블로그에 올릴 것인가? Blogger API는 외부 URL 이미지를 첨부할 수 있지만, 안정적인 호스팅이 필요했습니다.

Google Drive를 활용했습니다. 이미지를 Drive에 업로드하고, 공개 접근 URL인 lh3.googleusercontent.com 주소를 얻어내는 방식이었죠. 처음엔 공유 권한 설정이나 URL 추출 방식 때문에 애를 먹었지만, 결국 성공했습니다.

이 과정에서 자동 글쓰기 시스템의 퍼즐 조각 하나가 더 맞춰지는 느낌이었습니다.

노션에서 제미니, AI 이미지 생성, 블로그 게시물로 이어지는 자동화된 워크플로우를 나타내는 추상적인 플로우차트 일러스트.

자동 발행의 완성: Blogger API 연동과 스케줄링

본문 HTML, 라벨, 이미지 URL까지 모든 준비가 끝났습니다. 이제 마지막 관문은 Blogger API를 통해 이 모든 것을 제 블로그에 발행하는 것이었습니다.

Blogger API는 직관적이었지만, OAuth 인증과 각 요소를 정확한 형식으로 전달하는 데 시간이 좀 걸렸습니다. 특히 bodyHtml 필드에 생성된 HTML 콘텐츠를 그대로 넣어주고, 라벨들을 배열 형태로 전달하는 부분이 중요했습니다. 이미지 URL은 본문 HTML 안에 <img src="이미지URL"> 형태로 삽입했죠.

발행 성공 시, Notion DB의 해당 항목 상태를 '검수 대기'로 업데이트했습니다. 나중에 발행된 글들을 한 번에 확인하고 수정할 수 있죠. 가장 중요한 건, 이 모든 과정이 자동으로 이루어지도록 하는 것이었습니다.

Notion Blogger 연동의 핵심은 Apps Script 트리거 설정입니다. 저는 하루 세 번, 새벽 4시, 오전 7시, 오전 10시에 스크립트가 실행되도록 설정했습니다. 제가 잠자거나 출근 준비를 하는 동안에도 시스템이 조용히 일하기를 바랐기 때문입니다.

매일 아침 새로운 글들이 발행되어 있는 것을 보며 뿌듯함을 느낍니다.

제미니, 허깅페이스, 블로거 등 여러 API들이 구글 앱스 스크립트를 중심으로 연동되어 돌아가는 개념적인 일러스트.

마치며: 나의 개발 여정은 계속된다

블로그 자동 발행 시스템 구축 과정은 파란만장한 개발 여정이었습니다. 수많은 에러와 디버깅, 밤샘 코딩의 연속이었지만, 완성된 시스템이 매일 자동으로 제 블로그에 새로운 글을 발행하는 모습을 볼 때마다 엄청난 성취감을 느낍니다.

이 시스템 덕분에 콘텐츠 기획과 심화 연구에 더 많은 시간을 할애할 수 있게 되었어요. 진정한 블로그 자동화의 힘을 체감하고 있습니다.

이번 프로젝트를 통해 Gemini API, HuggingFace API, Google Apps Script, Blogger API 등 다양한 기술 스택을 깊이 있게 다룰 수 있었고, 견고한 에러 핸들링의 중요성도 다시 한번 깨달았습니다.

앞으로는 이미지 생성 AI 모델 고도화, 콘텐츠 품질 AI 검증 기능 추가 등 시스템을 더 발전시켜 나갈 계획입니다. 여러분도 지루하고 반복적인 작업을 자동화하여 생산성을 높이는 경험에 도전해보시길 강력히 추천합니다! 이 경험이 여러분의 개발 여정에도 긍정적인 자극이 되기를 바랍니다.

AIContentGeneration AppsScript BlogAutomation BloggerAPI DeveloperJourney GeminiAPI HuggingFace NotionIntegration
← 이전 글
최근 게시물
소개
path
J.Lab

커리어와 삶의 방향을 탐색하며
기록하는 공간입니다

카테고리
403 Forbidden Error 1 AIContentGeneration 1 AIImageGeneration 1 API Automation 1 api-troubleshooting 1 AppsScript 1 AutomationTroubleshooting 1 BlogAutomation 2 BloggerAPI 1 BloggerCustomization 2 BloggerTemplateEditing 1 BloggerThemeCustomization 1 BloggerXMLStructure 1 BloggingTools 1 BWidgetBIncludable 1 CardClickHandler 1 CodeLog 1 CSSOverlay 1 DatabaseDesign 1 DeveloperJourney 2 DevJourney 1 ExecutionLimit 1 FaviconEmbedding 1 FluxModel 1 FreeAIImage 1 FrontEndDev 1 GAS Blogger API 1 gas-automation 1 GASTimeout 1 GCP Project Linkage 1 GeminiAPI 1 GmailRestrictions 1 Google Apps Script 1 google-apps-script 1 GoogleAppsScript 2 HTMLWidgetBlogger 1 HuggingFace 1 HuggingFaceAPI 1 jlab-codelog 1 JLabDevLog 1 notion-api 1 notion-database 1 NotionAutomation 1 NotionIntegration 1 OAuth Scope 1 pagination 1 PollinationsAI 1 PositionAbsolute 1 RandomDelay 1 SidebarLinks 1 TechJournal 1 WebAccessibility 1 WebDevelopmentTips 1 WebDevJourney 1 WorkflowAutomation 1 XMLSpecialCharacters 1
인기 글
Notion 자동화 시간 범위 설계 — select 옵션 방식의 함정과 트리거 분리 전략
Notion 자동화 시간 범위 설계 — select 옵션 방식의 함정과 트리거 분리 전략
부업 블로그 자동 발행 시스템 처음부터 만든 후기
부업 블로그 자동 발행 시스템 처음부터 만든 후기
Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
블로그 이미지 자동화 삽질기 — HuggingFace로 시작해 Pollinations로 갈아탄 이야기
블로그 이미지 자동화 삽질기 — HuggingFace로 시작해 Pollinations로 갈아탄 이야기
Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
Notion API page_size 함정 — 우선순위 항목이 조회에서 빠지는 이유와 해결법
Notion API page_size 함정 — 우선순위 항목이 조회에서 빠지는 이유와 해결법
GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
다른 블로그
IssueLog
IssueLog
issuelog.jinbytes.com
KidStory
KidStory
kidstory.jinbytes.com
IT Story
IT Story
jinbytes.com
© Jin's Lab · J.Lab · All Rights Reserved
jinbytes.com · Powered by Blogger