IT / / 2025. 7. 10. 16:38

파이썬으로 나만의 블로그 글 자동 생성기 만들기 (feat. Gemini & Tkinter)

반응형

안녕하세요! 오늘은 제가 최근에 진행했던 재미있는 파이썬 프로젝트, '블로그 글 자동 생성 GUI 애플리케이션'의 개발 진행사하을 공유해 보려고 합니다. 간단한 아이디어에서 시작해 사용자의 피드백을 반영하며 점차 진화해나가는 과정이 정말 흥미로웠는데요. 지금부터 그 전체 과정을 단계별로 소개해 드릴게요!

 

 

1단계: 아이디어 구상과 기본 GUI 뼈대 세우기

모든 것은 "블로그 주제만 입력하면 AI가 알아서 글감을 찾아주면 어떨까?"라는 생각에서 시작됐습니다.

 

초기 요구사항:

  • 사용자가 블로그 주제를 입력한다.
  • Gemini API가 관련성 높은 인기 블로그 제목 10개를 제안해 준다.
  • 생성될 글의 저장 경로와 최소/최대 글자 수를 직접 설정할 수 있다.
  • 제안된 제목 중 하나를 클릭하면, 해당 제목으로 빈 텍스트(`.txt`) 파일이 지정된 경로에 생성된다.

 

이 요구사항을 바탕으로, 파이썬의 기본 GUI 라이브러리인 `tkinter`를 사용해 기본적인 UI 뼈대를 만들었습니다. 주제를 입력하는 `Entry`, 각종 설정을 위한 `Frame`, 그리고 생성된 제목을 보여줄 `Listbox` 등으로 구성된 간단한 애플리케이션이었죠.

 

2단계: 핵심 기능 구현 - Gemini API 연동과 본문 생성

이제 아이디어를 실제로 구현할 차례입니다. `google-generativeai` 라이브러리를 설치하고, 사용자가 입력한 주제를 바탕으로 Gemini API를 호출해 10개의 블로그 제목을 받아오는 `blog_generator.py` 모듈을 작성했습니다. 또한, 사용자가 API 키를 안전하게 관리할 수 있도록 `.env` 파일을 활용하는 기능도 추가했습니다.

 

Gemini API는 무료로 키를 제공하고 있어서 저는 개인 프로젝트라 Gemini로도 충분 했어요.

 

가장 큰 변화는 여기서 일어났습니다. 처음에는 제목만 생성했지만, "생성된 제목을 클릭하면 해당 제목으로 본문까지 완성된 글을 만들자!"는 아이디어가 추가되었습니다. 이제 사용자가 제목을 선택하면, 미리 정의된 프롬프트와 글자 수 설정에 맞춰 Gemini가 매력적인 블로그 본문을 생성하고, 이를 `.txt` 파일로 저장해 주는 기능이 완성되었습니다.

 

이렇게 '블로글 자동 생성기 만들기' 입력하고 인기 제목 생성을 눌러보겠습니다.

 

생성된 제목 목록에 이렇게 10개가 나옵니다.

 

제목이 마음에 들면 클릭하게 되면 블로그 글이 txt 파일로 저장되는 겁니다.

 

3단계: 사용자 피드백 반영과 기능 고도화

프로토타입이 완성되자, 실제 사용성을 높이기 위한 여러 개선 작업이 이어졌습니다.

 

출력 형식의 진화:

  • .txt → .html → Tistory 맞춤형 HTML 조각: 처음에는 단순 텍스트로 저장했지만, 가독성을 높이기 위해 완전한 HTML 문서로 변경했습니다. 최종적으로는 티스토리 편집기에 바로 붙여넣을 수 있도록, `<p data-ke-size="size16">`와 같이 티스토리에서 사용하는 서식이 적용된 HTML 조각을 생성하도록 발전했습니다.
  • Html로 붙여넣어야 복붙한 글이 되지 않으니깐 이렇게 설정을 했어요. 글도 깔끔하게 나오고 해당 글을 이용해서 추가적은 수정과 정돈을 해야 하거든요.

 

프롬프트 커스터마이징:

  • 사용자가 직접 글의 톤앤매너, 구조 등을 제어할 수 있도록, GUI에서 프롬프트를 직접 확인하고 수정 후 저장하는 기능을 추가했습니다.

 

4단계: UI/UX 혁신 - ttkbootstrap와 비동기 처리

기능은 만족스러웠지만, `tkinter`의 기본 디자인은 아쉬움이 남았습니다. 사용자의 "UI가 낡아 보인다"는 피드백을 적극 수용하여, `ttkbootstrap` 라이브러리를 도입했습니다.

 

'superhero' 다크 테마를 적용하자, 애플리케이션은 마치 새로 태어난 것처럼 세련되고 현대적인 모습으로 바뀌었습니다. 또한, API 호출 시 UI가 멈추는(freezing) 문제를 해결하기 위해 `threading`과 `queue`를 도입했습니다. 이제 글 생성과 같은 시간이 걸리는 작업은 백그라운드에서 실행되고, 사용자에게는 프로그레스 바와 상태 메시지를 통해 실시간으로 진행 상황을 알려주어 훨씬 쾌적한 사용 경험을 제공하게 되었습니다.

 

 

마무리하며: 앞으로의 계획

단순한 토이 프로젝트로 시작했지만, 사용자와의 소통을 통해 기능을 개선하고 디자인을 다듬어가면서 '쓸모 있는' 애플리케이션으로 발전해나가는 과정은 정말 보람찼습니다. 앞으로는 블로그 글에 어울리는 이미지를 AI로 함께 생성해 주는 기능을 추가해 볼 계획입니다.

 

여러분도 자신만의 아이디어가 있다면, 일단 작게라도 시작해 보세요. 직접 만들고 개선해나가는 과정 속에서 코딩의 진짜 재미를 느끼실 수 있을 겁니다!

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유