Gemini 2.5 Pro로 구축한 AI 블로그 자동화 시스템

Gemini 2.5 Pro로 구축한 AI 블로그 자동화 시스템

최신 Google Gemini 2.5 Pro 모델을 활용하여 완전 자동화된 블로그 포스팅 시스템을 구축했습니다. 이 글에서는 실제 구현된 시스템의 아키텍처, 주요 기능, 그리고 코드 예시를 공유합니다.


프로젝트 개요

이 프로젝트는 다음 세 가지 핵심 목표를 달성합니다:

  • Google AdSense 정책 준수: 가치있는 콘텐츠만 자동 포스팅
  • 품질 관리: 6가지 차원의 자동 품질 검증
  • 최신 AI 활용: Gemini 2.5 Pro 모델 사용

시스템 아키텍처

8단계 자동화 파이프라인:

  1. 카테고리 선택 (7개 라운드-로빈)
  2. 키워드 선택 (중복 체크)
  3. 한글 콘텐츠 생성 (2500-3500자)
  4. 품질 검증 (6개 차원)
  5. 영문 번역
  6. 이미지 생성
  7. WordPress 발행
  8. Search Console 등록

Gemini 2.5 Pro 선정 이유

기존 문제:

# 이전 시도 (실패)
response = client.models.generate_content(
    model="gemini-2.0-pro",  # v1beta에서 지원 안 함
    contents=[prompt]
)
# Error: 404 NOT_FOUND

해결책:

from google import genai

client = genai.Client(api_key=os.getenv('GEMINI_API_KEY'))

response = client.models.generate_content(
    model="gemini-2.5-pro",  # v1beta 완벽 지원
    contents=[prompt]
)

result = response.text

선정 이유:

  • v1beta API 완벽 지원
  • 강력한 문맥 이해
  • 정확한 한글 처리
  • 빠른 응답 (60-120초)
  • 고품질 구조화 콘텐츠

핵심 구현 코드

1. 콘텐츠 생성

def generate_detailed_post(category, keyword):
    # Gemini 2.5 Pro content generation
    from google import genai
    
    client = genai.Client(api_key=os.getenv('GEMINI_API_KEY'))
    
    prompt = "Write detailed post about " + keyword
    
    response = client.models.generate_content(
        model="gemini-2.5-pro",
        contents=[prompt]
    )
    
    return response.text

2. 중복 키워드 회피

def is_keyword_duplicate(new_kw, recent_kws, threshold=0.75):
    # Jaccard similarity for duplicate detection
    
    def jaccard(str1, str2):
        set1 = set(str1.lower().split())
        set2 = set(str2.lower().split())
        inter = len(set1 & set2)
        union = len(set1 | set2)
        return inter / union if union > 0 else 0
    
    for kw in recent_kws:
        if jaccard(new_kw, kw) >= threshold:
            return True
    return False

3. 품질 검증 (6개 차원)

def validate_content(content, keyword):
    # Auto quality validation
    
    issues = []
    
    # 1. Character count (minimum 6000)
    if len(content) < 6000:
        issues.append("too_short")
    
    # 2. Header count (minimum 3)
    headers = content.count('

') + content.count('

') if headers < 3: issues.append("insufficient_headers") # 3. Keyword frequency (2-12 times) freq = content.lower().count(keyword.lower()) if freq < 2 or freq > 12: issues.append("keyword_freq_out_of_range") # 4. Duplicate paragraphs (<20%) # 5. Value signal (4+ points) # 6. AI section required return len(issues) == 0

4. WordPress 자동 발행

def publish_to_wordpress(title, content, category_id):
    # WordPress REST API publishing
    
    wp_url = os.getenv('WP_URL')
    auth = (os.getenv('WP_USER'), os.getenv('WP_APP_PW'))
    
    post_data = {
        "title": title,
        "content": content,
        "status": "publish",
        "categories": [category_id]
    }
    
    response = requests.post(
        wp_url + "/wp-json/wp/v2/posts",
        json=post_data,
        auth=auth
    )
    
    return response.status_code in [200, 201]

데이터 구조

참고 사이트 (23개 소스)

{
  "sources": [
    {
      "category": "Technology",
      "websites": [
        {"name": "D2", "url": "https://d2.naver.com"},
        {"name": "Kakao Tech", "url": "https://tech.kakao.com"}
      ]
    },
    {
      "category": "AI",
      "websites": [
        {"name": "OpenAI", "url": "https://openai.com"},
        {"name": "Anthropic", "url": "https://anthropic.com"}
      ]
    }
  ]
}

품질 검증 설정

{
  "duplicate_threshold": 0.75,
  "min_chars": 6000,
  "min_headers": 3,
  "min_value_score": 4,
  "require_ai_section": true
}

성능 지표

  • 포스팅 소요 시간: 2.5-5분
  • 평균 콘텐츠: 6500자
  • 이미지 성공률: 95%+
  • 품질 통과율: 92%+

배운 점

1. API 버전 관리 - 최신 모델 이름과 API 버전 호환성 확인 필수

2. 품질 검증 필수 - AdSense 정책 만족을 위해 자동 생성 콘텐츠도 검증 필수

3. 중복 회피 중요 - Jaccard 유사도로 최근 200개 키워드와 비교

다음 단계

  • 자동 스케줄링 (매일 9:00, 15:00)
  • Google Analytics 연동
  • 트렌드 키워드 자동 수집
  • 이미지 스타일 고도화

참고한 관점

이 프로젝트는 다음 기술 리소스를 참고했습니다:

  • 기술: D2, Kakao Tech, NHN Cloud
  • AI: OpenAI, Anthropic, Google DeepMind
  • 클라우드: AWS, Google Cloud, Azure

AI 활용 팁:

  • ChatGPT: 빠른 프로토타이핑
  • Claude: 코드 리뷰
  • Gemini: 실시간 정보 및 이미지

태그: AI, Gemini, 자동화, 블로그, Python, WordPress, AdSense

하지만 아직까지 구글 서치콘솔에 조회수와 애드센스입장에서는 가치있는 포스팅이 많지않은 상태입니다.
일단은 내가 필요해서 내가 진행한걸 차분히 기록하는걸로 해야겠어요


English version: Read this article in English

Leave a Comment

Smart Dog