매일 정해진 시간에 블로그가 스스로 올라간다면
블로그를 꾸준히 운영하는 것은 쉽지 않다. 아이디어가 있어도 직접 글을 쓰고 발행하는 과정이 번거롭다. OpenClaw의 cron 기능과 AI를 결합하면 매일 정해진 시간에 자동으로 블로그 포스팅이 발행되도록 설정할 수 있다. 이 글에서는 WordPress 블로그에 매일 자동으로 AI가 작성한 글을 올리는 전체 프로세스를 단계별로 안내한다.
준비물
- OpenClaw 설치 완료 (공식 사이트: openclaw.ai)
- WordPress 블로그 및 DB 접근 권한
- Python 3 (SSH 명령 실행용)
- 주제 목록 파일 (JSON 형식)
OpenClaw는 Node.js 기반의 AI 비서 프레임워크로, 터미널 한 줄로 설치할 수 있다:
npm install -g openclaw
openclaw init
1단계: 포스팅 주제 목록 준비
먼저 AI가 글을 쓸 주제 목록을 JSON 파일로 만든다. OpenClaw 워크스페이스(기본값: ~/.openclaw/workspace)에 저장하면 AI가 직접 읽을 수 있다.
~/.openclaw/workspace/data/blog_topics.json
{
"posted": [],
"topics": [
{ "id": 1, "title": "파이썬으로 배우는 알고리즘 기초", "topic": "정렬 알고리즘 원리와 파이썬 예제" },
{ "id": 2, "title": "ChatGPT 활용 업무 자동화", "topic": "반복 업무를 AI로 줄이는 실전 방법" },
{ "id": 3, "title": "NAS로 나만의 클라우드 만들기", "topic": "Synology NAS 초기 설정 가이드" }
]
}
posted 배열에 완료된 id를 기록해두면 중복 발행을 방지할 수 있다.
2단계: cron 작업 등록
OpenClaw CLI로 매일 원하는 시간에 실행될 cron 작업을 등록한다. 아래는 매일 오전 10시에 실행되는 예시다:
openclaw cron add --cron '0 10 * * *' --tz Asia/Seoul --session isolated --agent main --message '블로그 자동 포스팅 실행: data/blog_topics.json에서 미게시 항목 1개 선택해서 AI로 글 작성 후 WordPress DB에 INSERT하고 결과를 텔레그램으로 알려줘'
등록된 cron 목록은 다음 명령으로 확인한다:
openclaw cron list
스케줄을 변경하거나 삭제할 때:
openclaw cron edit [id] --cron '0 9 * * 1-5' # 평일 오전 9시로 변경
openclaw cron rm [id] # 삭제
3단계: AI 글쓰기 및 DB INSERT 자동화
cron이 실행되면 OpenClaw의 isolated 세션에서 AI 에이전트가 깨어난다. 에이전트는 JSON 파일에서 미게시 주제를 선택하고, HTML 포맷으로 블로그 글을 작성한 뒤 SSH를 통해 WordPress DB에 직접 INSERT한다.
Python으로 SSH + MySQL 실행 예시:
import subprocess
ssh_cmd = [
"sshpass", "-p", "비밀번호",
"ssh", "-p", "22", "user@your-server.com",
"python3", "-c",
"""
import mysql.connector
conn = mysql.connector.connect(
unix_socket='/run/mysqld/mysqld.sock',
user='wp_user', password='비밀번호', database='wordpress_db'
)
cursor = conn.cursor()
cursor.execute('''
INSERT INTO wp_posts
(post_author, post_date, post_date_gmt, post_content, post_title,
post_status, post_type, comment_status,
post_content_filtered, to_ping, pinged)
VALUES (1, NOW(), UTC_TIMESTAMP(), %s, %s,
'publish', 'post', 'open', '', '', '')
''', (content, title))
conn.commit()
print(cursor.lastrowid)
"""
]
result = subprocess.run(ssh_cmd, capture_output=True, text=True)
post_id = result.stdout.strip()
INSERT 시 post_content_filtered, to_ping, pinged 세 컬럼에 빈 문자열을 반드시 명시해야 오류 없이 저장된다.
4단계: 카테고리 지정
INSERT 후 반환된 post_id로 카테고리를 연결한다. wp_term_relationships 테이블에 행을 추가하면 된다. 예를 들어 카테고리 ID가 4인 경우:
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id, term_order)
VALUES ([post_id], 4, 0);
카테고리 ID는 WordPress 관리자 > 카테고리 화면에서 해당 카테고리의 URL 파라미터(tag_ID=4)로 확인할 수 있다.
5단계: 완료 알림
포스팅이 끝나면 텔레그램으로 결과를 받는다. OpenClaw message 명령을 활용한다:
openclaw message send --channel telegram --to [chatId] --message '[자동포스팅 완료] 제목 - URL: https://yourblog.com/?p=ID'
AI 에이전트가 직접 message 도구를 호출해서 알림을 보내는 것도 가능하다.
실제 활용 예시
두온교육 출판사 블로그에서는 이 방식으로 OpenClaw 활용 사례를 매일 1개씩 자동 발행하고 있다. 30개의 주제를 미리 준비해두고, 매일 오전 10시에 AI가 선택해서 2000자 내외의 실습 가이드를 작성한 뒤 자동으로 발행한다. 별도 관리 없이 한 달 치 콘텐츠가 운영된다.
응용 아이디어
- 뉴스 큐레이션 블로그: RSS 피드에서 최신 기사를 가져와 AI가 요약 및 논평을 붙여서 발행
- 상품 리뷰 자동화: 쇼핑몰 DB에서 신규 상품 데이터를 읽어 AI가 소개글 작성
- 다중 플랫폼 배포: WordPress 발행 후 동일 내용을 Blogger, Tistory에도 자동 미러링
- 시리즈 연재: 주제 파일을 시리즈 단위로 구성해서 강의형 연재 블로그 운영
- 요일별 다른 주제: cron 표현식으로 월요일은 기술 글, 수요일은 리뷰, 금요일은 팁 형식으로 분류
한 번 설정해두면 주제 목록 파일만 주기적으로 보충하면 된다. AI가 글을 쓰고, cron이 발행하고, 텔레그램이 알려준다. 블로그 운영에서 반복되는 수작업을 대부분 제거할 수 있다.