소개
시도하고자 했던 것과 그 이유
이전 프로젝트에서 marketing_wizard_extand_collector.py (황금키워드 추출기)를 개발하여 마케팅에 필요한 키워드를 자동으로 수집하는 기능을 완성했습니다.
이번에는 여기서 한 단계 더 나아가 마케팅캡틴_자동로그인미완성버전.py를 기반으로 네이버 블로그 자동 포스팅 기능을 추가 개발했습니다.
프로젝트 흐름:
[황금키워드 추출기] → [블로그 콘텐츠 생성] → [네이버 블로 그 자동 포스팅] ← 이번 작업
목표:
AI가 생성한 블로그 콘텐츠를 네이버 블로그에 자동으로 업로드
이미지와 텍스트를 함께 포스팅
사용자 개입 최소화 (발행 버튼만 수동)
이유:
황금키워드로 콘텐츠를 생성한 후, 수동으로 블로그에 복사/붙여넣기하는 반복 작업 자동화
키워드 추출 → 콘텐츠 생성 → 포스팅까지 원스톱 마케팅 자동화 파이프라인 구축
진행 방법
사용 도구
Claude Code: 코드 분석 및 구현
Selenium: 브라우저 자동화
Python: tkinter, ttkbootstrap UI
1. 2단계 로그인(2FA) 문제 해결
문제: 네이버 로그인 시 2단계 인증으로 인해 자동 로그인 불가
해결: 쿠키 기반 세션 저장/로드 방식 구현
def save_naver_cookies(self, driver):
"""네이버 쿠키를 파일에 저장"""
cookies = driver.get_cookies()
with open("naver_cookies.json", "w") as f:
json.dump(cookies, f)
def load_naver_cookies(self, driver):
"""저장된 쿠키로 로그인 시도"""
if os.path.exists("naver_cookies.json"):
with open("naver_cookies.json", "r") as f:
cookies = json.load(f)
for cookie in cookies:
driver.add_cookie(cookie)
return True
return False
결과: 최초 1회만 2FA 인증하면 이후 자동 로그인 가능
2. 이미지 삽입 위치 문제 해결
시도한 방법들:
방법
결과
역순 입력
이미지 없을 때 역순 출력됨 ❌
마커 기반 Ctrl+F 검색
네이버 에디터에서 작동 불안정 ❌
섹션 헤더 기반 검색
복잡하고 불안정 ❌
최종 해결: 텍스트 먼저 전체 입력 → 이미지 순서대로 마지막에 삽입
# Step 1: 본문 텍스트 입력 (마커/프롬프트 제외)
for line in actual_body.split('\n'):
# 불필요한 패턴 건너뛰기
if any(pattern in line for pattern in skip_patterns):
continue
# 텍스트 입력
...
# Step 2: 이미지 순서대로 입력
for img_path in available_images:
self.upload_blog_image(driver, img_path)
3. 불필요한 텍스트 제거
문제: AI 생성 콘텐츠에 마크다운 형식과 이미지 프롬프트가 포함됨
제거 대상:
skip_patterns = [
"**[Image Prompt for Nano Banana]**", # 이미지 마커
"**[TL;DR Summary]**", # 섹션 헤더
"**[Intro:", # 섹션 헤더
"**[Body 1:", # 섹션 헤더
"**(Line Break)**", # 라인 브레이크
"## 2. Blog Post Body", # 마크다운 헤더
]
추가 처리: ## 2. Blog Post Body ~ ## 3. Recommended Hashtags 범위만 추출
4. 이미지 생성 기능 개선
요구사항:
API 비용 부담으로 전체/개별 생성 선택 가능
이미지 스타일 선택 (3D Pixar, Watercolor 등)
이미지 비율 선택 (16:9, 4:3, 1:1 등)
UI 구현:
[1. Intro]
[이미지 미리보기]
[16:9 ▼] [3D Pixar Style ▼] [재생성] [불러오기]
5. 이미지 비율 문제 (미해결)
문제: 16:9, 4:3 등 다양한 비율을 요청했지만 항상 1280x1280으로 생성됨
원인 추정: 사용 중인 이미지 생성 API의 제한 또는 프롬프트 전달 방식 문제
현재 상태: 추가 조사 필요
6. 기존 이미지 불러오기 기능
구현: 각 섹터별 "불러오기" 버튼 추가
def load_custom_image(self, image_type):
"""사용자 지정 이미지 불러오기"""
file_path = filedialog.askopenfilename(
title=f"{image_type.upper()} 이미지 선택",
filetypes=[("이미지 파일", "*.jpg *.jpeg *.png *.gif *.bmp")]
)
if file_path:
self.step6_custom_images[image_type] = os.path.normpath(file_path)
결과: 사용자가 원하는 이미지를 선택하여 포스팅에 사용 가능
7. "작성 중인 글이 있습니다" 팝업 처리
문제: 이전 작성 내용이 남아있으면 팝업이 뜨며 진행 중단
해결: "취소" 버튼 자동 클릭
# "작성 중인 글이 있습니다" 팝업 처리
cancel_selectors = [
"button.cancel",
"button[class*='cancel']",
"//button[contains(text(), '취소')]",
]
for selector in cancel_selectors:
try:
cancel_btn = driver.find_element(By.CSS_SELECTOR, selector)
if cancel_btn.is_displayed():
cancel_btn.click()
break
except:
continue
결과와 배운 점
배운 점과 꿀팁
네이버 에디터 특성 이해가 중요
이미지 삽입 시 커서 위치가 예측과 다르게 이동
Ctrl+F 검색이 브라우저/에디터에서 다르게 동작
단순한 방법이 최선
복잡한 마커 기반 삽입보다 "텍스트 먼저 → 이미지 나중에" 방식이 안정적
쿠키 기반 세션 관리
2FA 인증은 쿠키 저장으로 해결 가능
시행착오
시도
문제점
해결
역순 입력
이미지 없을 때 역순 출력
정순 입력으로 변경
Ctrl+F 마커 검색
에디터에서 불안정
마지막에 이미지 삽입
이미지 비율 지정
API에서 무시됨
미해결 (추가 조사 필요)
도움이 필요한 부분
이미지 생성 API에서 비율(aspect ratio)이 적용되지 않는 문제 해결 방법
앞으로의 계획
이미지 비율 문제 해결
해시태그 자동 입력 기능 추가
예약 발행 기능 검토
도움 받은 글
Claude Code 활용 가이드
[실습 가이드] 마케팅 캡틴: 네이버 블로그 자동 포스팅 기능 정복하기(박카스님)