블로그를 운영하다 보면 WordPress뿐 아니라 Blogger, 티스토리 등 여러 플랫폼에 동시에 노출하고 싶을 때가 있다. 각 플랫폼마다 직접 복붙하는 건 금방 지친다. OpenClaw의 cron 기능과 Google Blogger API를 연동하면, WordPress에 글을 발행하는 순간 Blogger에도 자동으로 미러링할 수 있다.
왜 멀티플랫폼 배포인가
검색 노출을 극대화하려면 콘텐츠를 여러 플랫폼에 배포하는 게 유리하다. Google 검색은 Blogger 콘텐츠를 빠르게 인덱싱하고, WordPress는 SEO 플러그인 생태계가 강력하다. 두 플랫폼을 병행하면 검색 유입 채널이 두 배가 된다. 문제는 동기화 작업이 귀찮다는 것인데, OpenClaw로 이 과정을 완전히 자동화할 수 있다.
준비물
- OpenClaw 설치된 서버 또는 Mac (brew install openclaw 또는 npm i -g openclaw)
- WordPress 사이트 (REST API 활성화 상태)
- Google 계정 및 Blogger 블로그
- Google Cloud Console 프로젝트 (Blogger API 활성화)
- Python 3.x (google-auth, google-api-python-client 라이브러리)
단계별 실습
1단계: Blogger API 인증 설정
Google Cloud Console(console.cloud.google.com)에서 새 프로젝트를 만들고 Blogger API v3를 활성화한다. 사용자 인증 정보에서 OAuth 2.0 클라이언트 ID를 생성하고 credentials.json을 다운로드한다.
pip install google-auth google-auth-oauthlib google-api-python-client requests
# 최초 1회 인증 토큰 발급
python3 -c "
from google_auth_oauthlib.flow import InstalledAppFlow
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', ['https://www.googleapis.com/auth/blogger'])
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as f:
f.write(creds.to_json())
print('토큰 저장 완료')
"
2단계: WordPress 최신 글 가져오기
WordPress REST API는 별도 설정 없이 바로 사용 가능하다. /wp-json/wp/v2/posts 엔드포인트로 최신 글을 가져온다.
import requests
import json
WP_SITE = "https://your-wordpress-site.com"
def get_latest_wp_post():
url = WP_SITE + "/wp-json/wp/v2/posts?per_page=1&status=publish&orderby=date"
resp = requests.get(url, timeout=10)
posts = resp.json()
if not posts:
return None
post = posts[0]
return {
"id": post["id"],
"title": post["title"]["rendered"],
"content": post["content"]["rendered"],
"date": post["date"],
"link": post["link"]
}
3단계: Blogger에 게시하기
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
BLOGGER_BLOG_ID = "your-blogger-blog-id"
def post_to_blogger(title, content):
creds = Credentials.from_authorized_user_file('token.json', ['https://www.googleapis.com/auth/blogger'])
service = build('blogger', 'v3', credentials=creds)
body = {
"kind": "blogger#post",
"title": title,
"content": content
}
result = service.posts().insert(blogId=BLOGGER_BLOG_ID, body=body, isDraft=False).execute()
return result["url"]
4단계: 중복 방지 로직 추가
이미 미러링한 글을 또 올리지 않도록 처리된 WordPress 글 ID를 파일로 관리한다.
MIRROR_LOG = "/Users/username/.openclaw/workspace/data/blogger_mirror_log.json"
def already_mirrored(wp_id):
try:
with open(MIRROR_LOG) as f:
data = json.load(f)
return wp_id in data.get("mirrored_ids", [])
except FileNotFoundError:
return False
def mark_as_mirrored(wp_id):
try:
with open(MIRROR_LOG) as f:
data = json.load(f)
except FileNotFoundError:
data = {"mirrored_ids": []}
data["mirrored_ids"].append(wp_id)
with open(MIRROR_LOG, "w") as f:
json.dump(data, f)
5단계: OpenClaw cron으로 자동화
위 스크립트를 mirror.py로 저장한 뒤, OpenClaw cron으로 30분마다 실행한다.
openclaw cron add --cron "*/30 * * * *" --tz Asia/Seoul --session isolated --agent main --message "mirror.py를 실행해서 WordPress 최신 글을 Blogger에 미러링해줘. 성공하면 결과를 텔레그램으로 알려줘"
실제 활용 예시
교육 관련 콘텐츠를 정기 발행하는 블로그의 경우, WordPress에 신간 도서 소개 글을 올리면 30분 이내에 Blogger에도 자동으로 동일한 글이 발행된다. 원고 한 번으로 두 플랫폼의 독자에게 동시에 도달할 수 있다.
WordPress 글에 원문 출처 링크를 자동으로 추가하고 싶다면 content 끝에 다음 코드를 덧붙이면 된다.
footer = '<p>원문: <a href="' + wp_link + '">' + wp_link + '</a></p>'
blogger_content = wp_content + footer
응용 아이디어
- 티스토리 오픈 API와 연동해서 3중 동시 발행 구현하기
- 카테고리별로 다른 Blogger 블로그에 미러링하기 (예: 도서 리뷰는 A 블로그, 교육 정보는 B 블로그)
- 미러링 시 이미지 alt 텍스트를 자동으로 SEO 최적화해서 올리기
- 발행 후 Google Search Console API로 즉시 색인 요청 자동화하기
- Discord나 Slack 채널에도 동시에 링크 공유하는 멀티채널 배포 파이프라인 구축하기