다양한 주제의 블로그를 운영하거나, 여러 고객사의 블로그를 관리해야 하는 경우, 매번 수동으로 작업하는 것은 비효율적입니다. 다행히도 Blogger API를 사용하면 여러 블로그를 프로그래밍 방식으로 **동시에, 그리고 효율적으로 관리**할 수 있습니다. 이 글에서는 Python을 이용해 Blogger API로 여러 블로그의 목록을 가져오고, 각 블로그의 포스트 및 통계 정보를 자동으로 조회하는 방법을 상세히 설명합니다.
Python 코드 예제: 다중 블로그 정보 조회
아래 코드는 인증 정보를 사용하여 사용자가 소유한 모든 블로그의 목록을 가져오고, 각 블로그의 이름, URL, 최근 포스트 5개, 그리고 총 포스트/페이지 수, 전체 조회수 등의 통계 정보를 출력합니다. 이 예제를 기반으로 블로그 자동화 작업을 시작할 수 있습니다.
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
import os
def manage_multiple_blogs():
try:
# 1. 인증 정보 로드
# 'token.json' 파일에 저장된 OAuth 2.0 인증 정보를 불러옵니다.
# 이 파일이 없다면, OAuth 2.0 인증 플로우를 먼저 완료해야 합니다.
credentials = Credentials.from_authorized_user_file('token.json')
# 2. Blogger API 서비스 객체 생성
# build 함수를 사용하여 'blogger' 서비스의 'v3' 버전에 대한 객체를 생성합니다.
service = build('blogger', 'v3', credentials=credentials)
print("사용자가 관리하는 모든 블로그 정보 조회 중...\n")
# 3. 사용자의 블로그 목록 가져오기
# listByUser 메소드를 통해 'self'(현재 인증된 사용자)의 블로그 목록을 가져옵니다.
blogs = service.blogs().listByUser(userId='self').execute()
# 4. 각 블로그 정보 순회 및 상세 정보 조회
if 'items' in blogs:
for blog in blogs['items']:
blog_id = blog['id']
blog_name = blog['name']
blog_url = blog['url']
print(f"==================================================")
print(f"📝 블로그 이름: {blog_name}")
print(f"🔗 블로그 URL: {blog_url}")
print(f"ID: {blog_id}\n")
# 각 블로그의 최근 포스트 5개 가져오기
posts_response = service.posts().list(blogId=blog_id, maxResults=5).execute()
print("📌 최근 포스트:")
if 'items' in posts_response:
for post in posts_response['items']:
print(f" - {post['title']}")
else:
print(" - 최근 포스트가 없습니다.")
print("")
# 각 블로그의 통계 정보 가져오기
# fields 파라미터를 사용하여 필요한 정보만 요청하여 성능을 최적화합니다.
stats = service.blogs().get(blogId=blog_id, fields='posts,pages,views').execute()
print("📊 통계 정보:")
print(f" - 총 포스트 수: {stats['posts']['totalItems']}")
print(f" - 총 페이지 수: {stats['pages']['totalItems']}")
print(f" - 전체 조회수: {stats['views']}")
print(f"==================================================\n")
except Exception as e:
print(f"❌ 블로그 관리 중 오류가 발생했습니다: {e}")
# 오류 발생 시 상세 로그를 확인하려면 아래 주석을 해제하세요.
# import traceback
# traceback.print_exc()
# 함수 실행
if __name__ == '__main__':
manage_multiple_blogs()
코드 상세 설명 및 동작 원리
이 코드는 Google의 googleapiclient 라이브러리를 사용하여 Blogger API와 통신합니다. 핵심적인 동작은 다음과 같습니다.
- 인증:
Credentials.from_authorized_user_file('token.json')을 통해 OAuth 2.0 인증 정보를 로드합니다. 이는 API에 접근할 수 있는 권한을 부여하는 필수 과정입니다. blogs().listByUser(userId='self'): 이 메소드는 현재 인증된 사용자가 소유한 모든 블로그의 메타데이터(ID, 이름, URL 등)를 배열 형태로 반환합니다.- 반복문과 API 호출:
for루프를 통해 가져온 블로그 목록을 순회합니다. 각 블로그의 고유 ID(blog['id'])를 사용하여posts().list와blogs().get같은 API를 호출, 상세 정보를 조회합니다. - 성능 최적화:
blogs().get(..., fields='posts,pages,views')와 같이fields파라미터를 사용하면 필요한 데이터만 정확히 요청하여 API 호출의 효율성을 높일 수 있습니다.
고급 활용 팁
- 비동기 처리: 수백 개의 블로그를 관리하는 경우, 순차적 API 호출은 시간이 오래 걸릴 수 있습니다. Python의
asyncio라이브러리나 스레딩을 활용하여 여러 블로그에 대한 API 호출을 비동기적으로 처리하면 성능을 크게 향상시킬 수 있습니다. - 견고한 에러 처리:
try-except블록을 각 API 호출마다 적용하여, 특정 블로그의 API 호출이 실패하더라도 전체 스크립트가 중단되지 않고 다음 블로그로 넘어갈 수 있도록 설계하는 것이 좋습니다. - 데이터 구조화: 단순히 정보를 출력하는 대신, 조회한 데이터를 Pandas DataFrame이나 JSON 파일 형태로 저장하면 추후 데이터 분석, 리포팅, 또는 데이터베이스 저장에 용이합니다.
Blogger API는 여러 블로그를 관리하는 작업을 자동화하고 효율화할 수 있는 강력한 도구입니다. 이 가이드의 예제 코드를 기반으로, 포스트 자동 예약, 통계 보고서 생성, 특정 키워드 모니터링 등 다양한 맞춤형 스크립트를 개발할 수 있습니다. API의 잠재력을 최대한 활용하여 블로그 운영의 생산성을 극대화해 보세요!