AI 블로그 자동화를 구축하면서 가장 공을 들였던 부분 중 하나는 바로 시각적인 요소였다. 텍스트만 빽빽한 글보다는 적절한 이미지가 섞여 있어야 독자가 읽기 편할 것이라 생각했기 때문이다. 그래서 KidStory 블로그를 처음 설계할 때, Gemini API를 활용해 본문 중간중간 세 곳에 어울리는 이미지를 자동으로 생성해 끼워 넣는 방식을 채택했다. 본문 마커가 있는 자리에 알아서 이미지가 콕콕 박히는 모습을 처음 봤을 때는 꽤 뿌듯했다.
하지만 완벽해 보였던 이 시스템을 실제로 운영하면서 점차 예상치 못한 문제들이 고개를 들기 시작했다. 과도한 욕심이 부른 비효율을 직면하고, 결국 블로그 이미지 전략을 전면 수정하기로 마음먹었다. 화려함을 덜어내고 본질에 집중하게 된 나의 개발 일지를 공유해 본다.
화려함 뒤에 숨은 비효율: 3장의 이미지가 불러온 문제들
글 하나에 이미지가 3장씩 들어가니 확실히 첫인상은 풍성해 보였다. 하지만 실제 사용자 경험과 운영 측면에서는 득보다 실이 많았다. 가장 먼저 체감한 문제는 페이지 로딩 속도의 저하였다. 웹 최적화가 중요한 블로그에서 고용량의 이미지가 3장씩 로드되는 것은 상당한 부담이었다.
게다가 이미지 생성 비용이 정확히 3배로 드는 것도 뼈아픈 부분이었다. AI 블로그 자동화에서 API 호출 비용은 장기적인 운영을 결정짓는 핵심 요소인데, 매 포스트마다 발생하는 비용이 무시할 수 없는 수준으로 쌓여갔다. 그렇다고 그만큼 글의 완성도가 3배로 올라갔느냐 하면 그것도 아니었다.
결정적으로 검색엔진 최적화(SEO)나 소셜 미디어 공유 시 사용되는 썸네일은 결국 단 한 장의 대표 이미지뿐이었다. 본문 중간에 들어가는 3장의 이미지는 굳이 없어도 글의 핵심 맥락을 파악하는 데 지장이 없었다. 오히려 독자의 시선을 분산시키는 요소가 되기도 했다. 결국 효율성을 극대화하기 위해 '글 하나당 대표 이미지 1장'으로 정책을 통일하기로 결심했다.
과감한 가지치기: 대표 이미지 1장으로 전환하는 과정
정책을 바꾸기로 결정한 후 가장 먼저 손댄 곳은 Gemini 프롬프트였다. 기존에는 본문 중간에 이미지 삽입 마커를 생성하도록 복잡하게 지시했지만, 이제는 본문 마커 지시를 아예 삭제했다. 대신 정확히 본문을 대표하는 단 1개의 이미지만 생성하도록 프롬프트를 직관적으로 수정했다.
생성된 단 한 장의 이미지를 본문 중간이 아닌, 글 최상단의 히어로 이미지로 배치하는 작업도 진행했다. 이를 위해 기존에 본문 파싱 후 이미지를 매핑하던 복잡한 구조를 걷어냈다. 대신 글의 가장 위에 히어로 이미지를 삽입하는 insertHeroImage 함수와 buildHeroTag 로직을 새롭게 적용하여 구조를 전면 개편했다.
덕분에 본문 템플릿 코드도 한결 깔끔해졌다. 본문 중간에 불규칙하게 들어가던 이미지 레이아웃을 신경 쓸 필요가 없어졌고, 글 전체의 통일감과 가독성도 대폭 향상되었다. 대표 이미지 하나만으로도 충분히 시각적인 임팩트를 줄 수 있다는 확신이 섰다.
코드의 단순화: 재시도 로직과 유지보수 부담 덜어내기
이러한 블로그 이미지 전략의 변화는 백엔드 코드의 복잡도 역시 극적으로 낮춰주었다. 특히 이미지 생성이 중간에 실패했을 때 백그라운드에서 재시도를 처리하던 completePendingImages 로직의 단순화가 가장 큰 수확이었다.
기존에는 3장의 이미지가 모두 잘 생성되었는지 검증하고, 실패한 순번에 맞춰 배열을 순회하며 재시도하는 복잡한 배열 처리 로직이 필수적이었다. 비동기 처리 과정에서 예외가 발생하면 디버깅을 하느라 머리를 싸매야 하는 날이 많았다. 하지만 이제는 단일 이미지 처리 방식으로 전환되면서 예외 처리와 재시도 흐름이 놀라울 정도로 명확해졌다.
이제 코드는 단 한 장의 대표 이미지가 성공적으로 빌드되었는지만 체크하면 된다. 배열을 제어하며 발생하던 잠재적 버그 가능성이 원천적으로 차단되면서 전체적인 시스템의 유지보수 안정성이 비약적으로 상승했다. 불필요한 코드를 걷어내는 과정에서 개발자로서의 카타르시스마저 느낄 수 있었다.
비우고 나니 비로소 얻은 것들: 전환 후의 확실한 변화
이번 개편을 통해 '많이 채워 넣는 것'만이 능사가 아니라는 점을 뼈저리게 배웠다. 대표 이미지 1장 방식으로 통일한 이후, 블로그 로딩 속도는 훨씬 가벼워졌고 사용자 이탈률을 낮추는 데 기여하고 있다. 또한 가파르게 상승하던 이미지 생성 비용이 3분의 1 수준으로 뚝 떨어져 지갑의 평화도 되찾았다.
무엇보다 코드와 데이터 구조가 단순해지면서 향후 시스템을 유지보수하는 데 드는 정신적 에너지가 크게 줄었다. 진정한 효율은 불필요한 요소를 걷어내고 핵심에 집중할 때 비로소 완성된다는 것을 이번 삽질과 해결 과정을 통해 다시금 깨달았다. 앞으로도 불필요한 오버 엔지니어링을 경계하며 지속 가능한 자동화 블로그를 가꾸어 나갈 생각이다.