OpenAI API로 WordPress 포스팅 초안 자동 생성하기

OpenAI API WordPress 자동화 완전 정복 – 포스팅 초안을 AI가 대신 써주는 방법

OpenAI API WordPress 자동화를 제대로 구현하면, 블로그 운영에 들이는 시간을 절반 이하로 줄일 수 있다. 주제만 던져주면 AI가 초안을 써주고, WordPress REST API를 통해 임시저장까지 자동으로 올라가는 구조. 처음엔 그냥 신기한 실험이라 생각했는데, 실제로 써보니까 콘텐츠 기획에만 집중할 수 있게 돼서 생산성이 확실히 달라졌다.

이 글에서 다루는 건 ChatGPT 블로그 자동 포스팅의 실전 구현이다. Python으로 OpenAI API를 호출해서 글 초안을 생성하고, WordPress REST API로 자동 업로드하는 전체 흐름을 단계별로 정리했다. 코딩 경험이 많지 않아도 따라올 수 있도록 최대한 구체적으로 작성했다.

특히 WordPress REST API 연동 부분은 처음 접하는 분들이 막히는 포인트가 꽤 있다. 인증 방식, Application Password 설정, 포스트 상태 제어까지, 실제로 삽질했던 부분들을 빠짐없이 담았다. Ubuntu 서버 기준이지만, 로컬 Windows 환경에서도 Python만 있으면 동일하게 동작한다.

완성하면 AI 콘텐츠 자동화 파이프라인이 하나 생기는 거다. 키워드 입력 하나로 초안이 WordPress 임시저장함에 들어오는 경험, 한번 해보면 블로그 운영 방식이 달라진다.

이 글에서 다루는 환경
Python 3.10+ / OpenAI API gpt-4o-mini 모델 / WordPress 6.x + REST API / Ubuntu 24.04 또는 Windows 로컬 환경 모두 적용 가능

OpenAI API WordPress 자동화 개요와 전체 구조

OpenAI API 사용법을 블로그 자동화에 연결하는 아이디어는 단순하다. OpenAI API가 텍스트를 생성하고, WordPress REST API가 그 텍스트를 포스트로 올려준다. 두 개의 API를 Python으로 이어주는 게 전부다. 구조 자체는 복잡하지 않은데, 막상 처음 구현하려면 각 단계에서 막히는 포인트가 생긴다. 그걸 하나씩 짚어가면서 진행할 거다.

전체 흐름을 한눈에 보면 이렇다. 키워드나 주제를 Python 스크립트에 입력하면, OpenAI API가 블로그 초안을 생성하고, 그 결과를 WordPress REST API로 전송해서 임시저장 상태로 올린다. 작성자는 임시저장된 글을 열어서 검토하고 수정한 뒤 발행하면 된다. AI가 초안을 쓰고, 사람이 마무리하는 구조다.

1. 키워드 입력

Python 스크립트에 포스팅할 주제나 키워드를 입력한다. 한 줄이면 충분하다.

2. OpenAI API 호출

gpt-4o-mini 모델이 프롬프트를 받아서 블로그 초안 HTML을 생성한다.

3. WordPress 업로드

REST API로 생성된 초안을 임시저장 상태로 WordPress에 자동 업로드한다.

4. 검토 후 발행

WordPress 관리자에서 초안을 열어 검토하고 수정한 뒤 발행한다.

왜 완전 자동 발행이 아니라 임시저장으로 끝내냐고 할 수 있다. 솔직히 말하면, AI가 생성한 글을 검토 없이 바로 발행하는 건 아직 위험 부담이 있다. 사실 오류, 어색한 문장, SEO 최적화 부족 같은 문제가 생길 수 있다. 임시저장으로 올려두고 사람이 한 번 눈으로 확인하는 게 현실적으로 안전하다.

이 자동화로 절약할 수 있는 시간

블로그 초안 작성에 보통 1~2시간이 걸린다면, 이 자동화 후에는 검토와 수정에만 20~30분이 걸린다. 주제 선정과 키워드 리서치 시간은 그대로지만, 실제 타이핑에 들이는 시간이 거의 사라진다. 주당 3~4개 포스팅을 목표로 한다면 체감 효과가 크다.
방식 초안 작성 시간 검토 시간 월 포스팅 가능량
수동 작성 1~2시간/편 30분 8~12편
OpenAI API 자동화 2~3분/편 20~30분 20~30편
실무 팁 완전 자동화보다 반자동화가 현실적으로 더 좋은 결과를 낸다. AI 초안을 30% 정도 수정해서 발행하는 글이, 100% AI가 쓴 글보다 SEO 성과와 독자 반응이 훨씬 좋다. 사람의 경험과 관점이 들어가야 검색 상위노출도 잘 된다.

OpenAI API 키 발급과 Python 환경 세팅

OpenAI API 사용법의 첫 단계는 API 키 발급이다. OpenAI Platform(platform.openai.com)에 접속해서 계정을 만들고, 상단 메뉴의 “API Keys”에서 새 키를 생성하면 된다. 키는 생성 직후에만 전체 내용을 볼 수 있으니, 바로 복사해서 안전한 곳에 저장해두자. 한 번 창을 닫으면 다시는 볼 수 없다.

API 키 발급 후에는 크레딧 충전이 필요하다. OpenAI API는 무료 티어가 없어졌고, 선불 충전 방식으로 운영된다. 최소 5달러부터 충전 가능하다. gpt-4o-mini 기준으로 블로그 초안 하나 생성하는 데 0.01달러 내외라서, 5달러면 수백 개 생성할 수 있다.

주의사항 API 키는 절대 코드에 직접 넣거나 GitHub에 올리면 안 된다. 환경변수나 별도 .env 파일로 관리해야 한다. 키가 유출되면 타인이 내 크레딧을 무단으로 사용할 수 있다.

이제 Python 환경을 세팅해보자. Ubuntu 서버와 Windows 로컬 환경 모두 동일한 방식으로 진행된다.

# Ubuntu 서버 기준 Python 설치 확인 python3 –version # pip 설치 확인 pip3 –version # 가상환경 생성 (권장) python3 -m venv wp-auto-env source wp-auto-env/bin/activate # Windows 로컬 환경이라면 # python -m venv wp-auto-env # wp-auto-env\Scripts\activate # 필요한 패키지 설치 pip install openai requests python-dotenv

패키지 설명을 간단히 하면, openai는 OpenAI API 공식 Python 라이브러리고, requests는 WordPress REST API 호출에 쓰인다. python-dotenv는 .env 파일에서 API 키를 불러오는 데 사용한다.

# 프로젝트 디렉토리 생성 mkdir wp-auto-posting cd wp-auto-posting # .env 파일 생성 (API 키 저장) cat > .env << 'EOF' OPENAI_API_KEY=sk-proj-여기에-발급받은-키-입력 WP_URL=https://여기에-워드프레스-주소.com WP_USERNAME=워드프레스-관리자-아이디 WP_APP_PASSWORD=워드프레스-앱-비밀번호 EOF # .gitignore에 .env 추가 (Git 사용 시) echo ".env" >> .gitignore echo “wp-auto-env/” >> .gitignore

WP_APP_PASSWORD는 WordPress Application Password인데, 일반 로그인 비밀번호가 아니다. STEP 4에서 발급 방법을 자세히 다루니 일단은 빈칸으로 두고 진행해도 된다.

# 설치 확인 및 간단한 API 연결 테스트 python3 << 'EOF' from openai import OpenAI from dotenv import load_dotenv import os load_dotenv() client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "안녕하세요. API 연결 테스트입니다. 한 줄로 답해줘."}], max_tokens=100 ) print(response.choices[0].message.content) EOF

응답이 정상적으로 출력되면 환경 세팅은 끝이다. “안녕하세요” 같은 짧은 답변이 나오면 성공이다. 에러가 나면 대부분 API 키가 잘못 입력됐거나, openai 패키지 버전 문제다.

openai 패키지 버전 주의

2024년 이후 openai 패키지는 v1.x 버전을 사용한다. 구버전(v0.x)과 API 호출 방식이 완전히 달라서, 오래된 예제 코드를 그대로 쓰면 에러가 난다. pip show openai로 버전을 확인하고, pip install --upgrade openai로 최신 버전으로 유지하는 게 좋다. 이 글의 모든 코드는 v1.x 기준이다.
실무 팁 가상환경(venv)을 쓰는 게 강력하게 권장된다. 다른 Python 프로젝트와 패키지 버전 충돌이 생기는 걸 막아준다. 특히 Ubuntu 서버에서 시스템 Python과 충돌하면 골치 아프니까, 처음부터 가상환경 안에서 작업하자.

ChatGPT로 블로그 초안 생성하는 Python 스크립트

환경 세팅이 끝났으면 본격적으로 ChatGPT 블로그 자동 포스팅의 핵심 파트를 만들어볼 차례다. OpenAI API로 블로그 초안을 생성하는 스크립트다. 여기서 프롬프트 설계가 가장 중요하다. 프롬프트를 어떻게 짜느냐에 따라 결과물 품질이 완전히 달라진다.

기본 초안 생성 스크립트

먼저 단순한 버전부터 만들어보자. 키워드를 입력하면 블로그 초안 텍스트를 반환하는 함수다. 이걸 기반으로 나중에 기능을 붙여나가면 된다.

# generate_draft.py from openai import OpenAI from dotenv import load_dotenv import os load_dotenv() client = OpenAI(api_key=os.getenv(“OPENAI_API_KEY”)) def generate_blog_draft(keyword: str, target_length: int = 1500) -> dict: “”” 키워드를 받아서 블로그 초안을 생성한다. 반환값: {“title”: 제목, “content”: 본문 HTML, “excerpt”: 요약} “”” system_prompt = “”” 당신은 한국어 기술 블로그 전문 작가입니다. SEO에 최적화된 블로그 포스팅 초안을 작성합니다. 다음 규칙을 반드시 지켜주세요: – 본문은 HTML 형식으로 작성 (h2, h3, p, ul, li 태그 사용) – 자연스러운 한국어 구어체 사용 – 포커스 키워드를 제목과 첫 문단에 포함 – 실용적인 예시와 구체적인 수치 포함 – DOCTYPE, html, head, body 태그는 사용하지 않음 “”” user_prompt = f””” 다음 키워드로 블로그 포스팅 초안을 작성해줘. 키워드: {keyword} 목표 글자 수: {target_length}자 이상 응답 형식: TITLE: [제목] EXCERPT: [150자 내외 요약] CONTENT: [HTML 본문 내용] “”” response = client.chat.completions.create( model=”gpt-4o-mini”, messages=[ {“role”: “system”, “content”: system_prompt}, {“role”: “user”, “content”: user_prompt} ], max_tokens=4000, temperature=0.7 ) raw_text = response.choices[0].message.content # 응답 파싱 title = “” excerpt = “” content = “” lines = raw_text.split(‘\n’) content_start = False for i, line in enumerate(lines): if line.startswith(“TITLE:”): title = line.replace(“TITLE:”, “”).strip() elif line.startswith(“EXCERPT:”): excerpt = line.replace(“EXCERPT:”, “”).strip() elif line.startswith(“CONTENT:”): content_start = True content = ‘\n’.join(lines[i+1:]) break return { “title”: title, “content”: content.strip(), “excerpt”: excerpt } # 테스트 실행 if __name__ == “__main__”: keyword = “Ubuntu 서버 보안 설정 기초” result = generate_blog_draft(keyword) print(f”제목: {result[‘title’]}”) print(f”요약: {result[‘excerpt’]}”) print(f”본문 길이: {len(result[‘content’])}자”) print(“\n— 본문 미리보기 (앞 300자) —“) print(result[‘content’][:300])
실제 출력 예시 키워드 “Ubuntu 서버 보안 설정 기초”를 입력하면 다음과 같은 결과가 나온다. 제목: “Ubuntu 서버 보안 설정 기초 – 처음 세팅할 때 반드시 해야 할 10가지”, 요약: “Ubuntu 서버를 처음 설치했다면 보안 설정이 최우선이다. UFW 방화벽, SSH 키 인증, fail2ban까지 핵심 보안 설정을 단계별로 정리했다.” 본문은 h2/h3 태그 구조로 1800자 내외가 생성된다.

프롬프트 고도화 – SEO 최적화 버전

기본 버전이 잘 동작하면, 프롬프트를 더 구체적으로 다듬어보자. SEO를 의식한 구조, 내부 링크 안내, 포커스 키워드 밀도까지 프롬프트에 명시할수록 결과물 품질이 올라간다.

# SEO 최적화 프롬프트 버전 def generate_seo_draft(keyword: str, related_keywords: list = None) -> dict: related_kw_text = “” if related_keywords: related_kw_text = f”관련 키워드 (자연스럽게 포함): {‘, ‘.join(related_keywords)}” system_prompt = “”” 당신은 Rank Math SEO 기준으로 최적화된 한국어 기술 블로그 글을 쓰는 전문가입니다. “”” user_prompt = f””” 포커스 키워드: {keyword} {related_kw_text} 아래 구조로 블로그 포스팅 초안을 HTML로 작성해줘: 1. H1 제목: 포커스 키워드가 앞부분에 위치 2. 도입부 (p 태그 2~3개): 첫 문장에 포커스 키워드 포함 3. H2 섹션 4~5개: 각 섹션마다 H3 소제목 1~2개 포함 4. 각 섹션 300~400자 분량 5. 마지막 섹션: 핵심 요약 또는 체크리스트 추가 조건: – 코드나 명령어가 필요하면 태그로 감싸줘 - 목록은
  • 태그 사용 - 숫자 데이터나 구체적 수치 반드시 포함 - 이모티콘 사용 금지 응답 형식: TITLE: [60자 이내 제목] EXCERPT: [150자 내외 메타 설명] CONTENT: [HTML 본문] """ response = client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt} ], max_tokens=4000, temperature=0.7 ) raw_text = response.choices[0].message.content # 파싱 로직은 위와 동일 return parse_response(raw_text) def parse_response(raw_text: str) -> dict: title, excerpt, content = "", "", "" lines = raw_text.split('\n') for i, line in enumerate(lines): if line.startswith("TITLE:"): title = line.replace("TITLE:", "").strip() elif line.startswith("EXCERPT:"): excerpt = line.replace("EXCERPT:", "").strip() elif line.startswith("CONTENT:"): content = '\n'.join(lines[i+1:]).strip() break return {"title": title, "content": content, "excerpt": excerpt}
실무 팁 temperature 값은 0.7이 블로그 글에 적당하다. 0에 가까울수록 일관되고 건조한 글이 나오고, 1에 가까울수록 창의적이지만 사실 오류가 생길 수 있다. 기술 블로그처럼 정확성이 중요한 콘텐츠는 0.5~0.7 사이가 좋다.
주의사항 gpt-4o-mini는 비용 효율적이지만 가끔 부정확한 기술 정보를 생성할 수 있다. 특히 명령어, 버전 번호, 설정 값 같은 구체적인 기술 정보는 발행 전에 반드시 직접 검증해야 한다. AI 초안은 어디까지나 초안이다.

WordPress REST API 연동과 Application Password 설정

WordPress REST API 연동에서 가장 많이 막히는 부분이 인증이다. WordPress에 글을 자동으로 올리려면 관리자 권한으로 API를 호출해야 하는데, 일반 로그인 비밀번호를 그대로 쓰는 건 보안상 좋지 않다. WordPress 5.6부터 제공하는 Application Password를 사용하는 게 올바른 방법이다.

Application Password 발급 방법

WordPress 관리자 페이지에서 발급한다. 경로는 관리자 > 사용자 > 프로필이다. 페이지 하단으로 스크롤하면 “애플리케이션 비밀번호” 섹션이 있다. 애플리케이션 이름을 입력하고 (예: “auto-posting-script”) “새 애플리케이션 비밀번호 추가” 버튼을 누르면 된다.

주의사항 Application Password는 생성 직후 한 번만 표시된다. 반드시 바로 복사해서 .env 파일에 저장해두자. 공백이 포함된 형태로 표시되는데, 공백을 제거하고 저장해야 한다. 예: “AbCd EfGh IjKl” → “AbCdEfGhIjKl”
Application Password가 안 보인다면

WordPress가 HTTPS가 아닌 HTTP로 운영되면 Application Password 기능이 비활성화된다. wp-config.php에 define('WP_ENVIRONMENT_TYPE', 'local');을 추가하면 로컬 환경에서도 활성화할 수 있다. 실서버라면 SSL 인증서를 먼저 설치하는 게 맞다.

REST API 연결 테스트

Application Password를 발급받았으면, 먼저 curl로 연결이 되는지 확인해보자. Python 코드 짜기 전에 API 자체가 동작하는지 확인하는 게 순서다.

# REST API 연결 테스트 (터미널에서 실행) # 내 사이트 정보 확인 curl https://내-워드프레스-주소.com/wp-json/wp/v2/ # 인증 테스트 (현재 사용자 정보 조회) curl -u “관리자아이디:ApplicationPassword” \ https://내-워드프레스-주소.com/wp-json/wp/v2/users/me # 정상 응답 예시: {“id”:1,”name”:”관리자”,”roles”:[“administrator”],…}

Python으로 WordPress에 포스트 업로드

연결이 확인됐으면 Python 코드로 실제 포스트를 올려보자. WordPress REST API 공식 문서(developer.wordpress.org)에 따르면 포스트 생성은 /wp-json/wp/v2/posts 엔드포인트에 POST 요청을 보내면 된다.

# wp_poster.py import requests import base64 import os from dotenv import load_dotenv load_dotenv() def post_to_wordpress(title: str, content: str, excerpt: str = “”, status: str = “draft”) -> dict: “”” WordPress REST API로 포스트를 업로드한다. status: “draft”(임시저장) 또는 “publish”(발행) “”” wp_url = os.getenv(“WP_URL”) username = os.getenv(“WP_USERNAME”) app_password = os.getenv(“WP_APP_PASSWORD”) # Basic 인증 헤더 생성 credentials = f”{username}:{app_password}” token = base64.b64encode(credentials.encode()).decode() headers = { “Authorization”: f”Basic {token}”, “Content-Type”: “application/json” } endpoint = f”{wp_url}/wp-json/wp/v2/posts” payload = { “title”: title, “content”: content, “excerpt”: excerpt, “status”: status, # draft = 임시저장 “format”: “standard” } response = requests.post(endpoint, json=payload, headers=headers) if response.status_code == 201: post_data = response.json() return { “success”: True, “post_id”: post_data.get(“id”), “post_url”: post_data.get(“link”), “edit_url”: f”{wp_url}/wp-admin/post.php?post={post_data.get(‘id’)}&action=edit” } else: return { “success”: False, “status_code”: response.status_code, “error”: response.text } # 테스트 실행 if __name__ == “__main__”: result = post_to_wordpress( title=”테스트 포스팅 – 자동화 확인용”, content=”

이 글은 WordPress REST API 자동화 테스트입니다.

“, excerpt=”자동화 테스트 포스팅”, status=”draft” ) if result[“success”]: print(f”업로드 성공! 포스트 ID: {result[‘post_id’]}”) print(f”편집 링크: {result[‘edit_url’]}”) else: print(f”업로드 실패: {result[‘error’]}”)
API 응답 코드 의미 해결 방법
201 Created 포스트 생성 성공 정상
401 Unauthorized 인증 실패 Application Password 재확인, 공백 제거
403 Forbidden 권한 없음 계정에 editor 이상 권한 필요
404 Not Found REST API 비활성화 보안 플러그인이 REST API 막고 있는지 확인
실무 팁 일부 보안 플러그인(Wordfence, iThemes Security 등)이 REST API 접근을 차단하는 경우가 있다. 401이나 403 에러가 계속 나온다면 보안 플러그인 설정에서 REST API 허용 여부를 먼저 확인하자. 플러그인 없이 기본 WordPress만으로 테스트해보는 것도 방법이다.

자동 포스팅 완성 스크립트와 실전 도입 효과

앞에서 만든 초안 생성 함수와 WordPress 업로드 함수를 하나로 합쳐서 완성형 파이프라인을 만들어보자. 키워드 하나를 넣으면 초안 생성부터 WordPress 임시저장까지 한 번에 처리되는 스크립트다.

# main.py – 완성형 자동 포스팅 파이프라인 from generate_draft import generate_seo_draft, parse_response from wp_poster import post_to_wordpress import sys def auto_post(keyword: str, related_keywords: list = None): print(f”[1/3] 초안 생성 중… 키워드: {keyword}”) draft = generate_seo_draft(keyword, related_keywords) if not draft[“title”] or not draft[“content”]: print(“[ERROR] 초안 생성 실패. 응답 형식을 확인해주세요.”) return print(f”[2/3] 초안 생성 완료”) print(f” 제목: {draft[‘title’]}”) print(f” 본문 길이: {len(draft[‘content’])}자”) print(f”[3/3] WordPress 업로드 중…”) result = post_to_wordpress( title=draft[“title”], content=draft[“content”], excerpt=draft[“excerpt”], status=”draft” ) if result[“success”]: print(f”\n[완료] 임시저장 성공!”) print(f” 포스트 ID: {result[‘post_id’]}”) print(f” 편집 링크: {result[‘edit_url’]}”) else: print(f”\n[ERROR] 업로드 실패: {result[‘error’]}”) # 실행 if __name__ == “__main__”: # 명령줄 인자로 키워드 받기 if len(sys.argv) > 1: kw = sys.argv[1] related = sys.argv[2:] if len(sys.argv) > 2 else [] auto_post(kw, related) else: # 기본 테스트 auto_post( keyword=”Ubuntu 24.04 Nginx 설치 가이드”, related_keywords=[“LEMP 스택”, “PHP 8.3”, “서버 세팅”] )
# 실행 방법 # 가상환경 활성화 source wp-auto-env/bin/activate # 기본 실행 python3 main.py # 키워드 지정 실행 python3 main.py “WordPress 속도 최적화” “캐시 플러그인” “WP Rocket” # 여러 키워드 배치 처리 for keyword in “Redis 설치” “OPcache 설정” “MySQL 튜닝”; do python3 main.py “$keyword” sleep 3 # API rate limit 방지 done

도입 효과 데이터

2분 초안 생성
소요 시간
~$0.01 포스팅 1개당
API 비용
1500자+ 평균 생성
초안 분량
30분 검토 및
수정 시간

콘텐츠 생산성 비교

OpenAI API 자동화 + 검토 후 발행 85%
AI 초안만 사용 (수동 편집 없음) 70%
수동 작성 (베테랑 작성자) 50%
수동 작성 (초보 블로거) 30%

구축 단계 타임라인

1단계 – OpenAI API 키 발급 및 Python 환경 세팅 (10분)
platform.openai.com에서 키 발급, 가상환경 생성, openai/requests/python-dotenv 패키지 설치
2단계 – 초안 생성 스크립트 작성 및 테스트 (15분)
generate_draft.py 작성, 프롬프트 튜닝, 출력 결과 품질 확인
3단계 – WordPress Application Password 발급 및 REST API 테스트 (10분)
WordPress 관리자에서 App Password 발급, curl로 연결 확인, wp_poster.py 작성
4단계 – 파이프라인 통합 및 배치 처리 설정 (10분)
main.py로 전체 흐름 통합, 명령줄 실행 테스트, 배치 처리 스크립트 완성
완료 – 키워드 입력 하나로 WordPress 임시저장까지 자동화
이제 검토와 수정에만 집중하면 된다. 타이핑에 들이는 시간이 거의 사라진다.
실무 팁 배치 처리 시 API 호출 사이에 sleep 3 정도는 넣어주는 게 좋다. OpenAI API rate limit에 걸리면 429 에러가 나고 스크립트가 중단된다. 한 번에 여러 개를 돌릴 때는 try/except로 에러 처리도 추가해두자.

프롬프트 최적화와 콘텐츠 품질 높이는 방법

스크립트가 동작하는 것과 좋은 글이 나오는 것은 다른 문제다. AI 콘텐츠 자동화의 품질은 결국 프롬프트 설계에서 결정된다. 같은 gpt-4o-mini 모델이라도 프롬프트를 어떻게 짜느냐에 따라 발행 직전 수준의 초안이 나오기도 하고, 처음부터 다시 써야 할 수준이 나오기도 한다. 직접 여러 번 테스트하면서 효과 있었던 방법들을 정리했다.

블로그 특성을 System Prompt에 명시하기

가장 효과적인 방법은 내 블로그의 타겟 독자와 글쓰기 스타일을 System Prompt에 구체적으로 정의하는 거다. “기술 블로그 작가입니다”보다 아래처럼 구체적으로 쓸수록 결과물이 달라진다.

system_prompt = “”” 당신은 keytechcore.com의 기술 블로그 작가입니다. [블로그 특성] – 대상 독자: Ubuntu 서버를 운영하는 1~3년차 개발자 및 블로거 – 주요 주제: 서버 관리, WordPress 최적화, Linux 설정, AI 도구 활용 – 글쓰기 스타일: 실무 경험 기반의 구어체, 개인 경험담 포함, 이모지 사용 안 함 – 구조: 도입부에서 문제 제시, 본문에서 단계별 해결, 마무리에서 요약 [작성 규칙] – H2 태그로 4~5개 섹션 구분 – 각 섹션에 실제 명령어 또는 코드 포함 (pre/code 태그) – 구체적인 수치와 버전 정보 포함 (예: Ubuntu 24.04, PHP 8.3) – “~하면 됩니다” 대신 “~하면 된다” 스타일의 직접적인 문체 – 포커스 키워드는 첫 문단에 자연스럽게 포함 “””

출력 품질을 높이는 추가 프롬프트 기법

# 기법 1: Few-shot 예시 포함 (짧은 샘플 제공) user_prompt = f””” 키워드: {keyword} 좋은 블로그 도입부 예시: — PHP 8.3 OPcache 설정을 제대로 하면 WordPress 응답 속도가 체감할 수 있을 만큼 달라진다. 실제로 적용 전후 GTmetrix 점수가 72점에서 94점으로 올랐다. 이 글에서는 Ubuntu 24.04 환경에서 OPcache를 최적화하는 7단계를 정리했다. — 위 예시처럼 구체적인 수치와 실무 경험이 담긴 도입부로 시작해줘. 그리고 이어서 전체 본문을 작성해줘. “”” # 기법 2: 단계별 분리 생성 (긴 글일 때) # 제목/목차 먼저 생성 → 각 섹션 순서대로 생성 # 토큰 한계를 넘지 않으면서 더 긴 글 완성 가능 def generate_outline_then_content(keyword: str) -> dict: # 1단계: 목차 생성 outline_response = client.chat.completions.create( model=”gpt-4o-mini”, messages=[{ “role”: “user”, “content”: f”‘{keyword}’ 주제로 블로그 포스팅 목차를 5개 섹션으로 만들어줘. 각 섹션 제목만 줘.” }], max_tokens=300 ) outline = outline_response.choices[0].message.content # 2단계: 목차 기반 전체 본문 생성 content_response = client.chat.completions.create( model=”gpt-4o-mini”, messages=[{ “role”: “user”, “content”: f”아래 목차로 블로그 본문을 HTML로 작성해줘.\n\n목차:\n{outline}\n\n키워드: {keyword}” }], max_tokens=4000 ) return { “outline”: outline, “content”: content_response.choices[0].message.content }

실행 가이드 요약

01 환경 세팅 Python 가상환경 생성, openai/requests/python-dotenv 설치, .env 파일에 API 키 저장
02 초안 생성 스크립트 generate_draft.py 작성, System Prompt에 블로그 특성 정의, 테스트 실행으로 품질 확인
03 WordPress 연동 Application Password 발급, wp_poster.py 작성, curl로 REST API 연결 테스트
04 파이프라인 완성 main.py로 전체 통합, 키워드 입력 → 임시저장까지 원클릭으로 동작 확인

최종 체크리스트

  • OpenAI API 키 발급 및 .env 저장 완료
  • Python 가상환경 및 패키지 설치 완료
  • generate_draft.py 작성 및 초안 생성 테스트 성공
  • WordPress Application Password 발급 완료
  • wp_poster.py 작성 및 임시저장 테스트 성공
  • main.py 통합 파이프라인 완성
  • System Prompt에 내 블로그 특성 반영 완료
  • 배치 처리 및 rate limit 대응 코드 추가
내부 링크 추천: Claude Code로 블로그 자동화하기 / AI 블로그 글쓰기 CSS 분리 가이드도 함께 보면 자동화 파이프라인을 더 탄탄하게 만들 수 있다.

FAQ – 자주 묻는 질문

Q. OpenAI API 비용이 얼마나 드나요? 매달 부담이 되지 않나요?
gpt-4o-mini 기준으로 블로그 초안 하나 생성하는 데 약 0.005~0.01달러가 든다. 한 달에 30개 포스팅 초안을 생성해도 0.3달러 내외다. 최소 충전 금액인 5달러면 수백 개를 생성할 수 있다. 가장 큰 비용은 API 요금이 아니라 초안을 검토하고 수정하는 사람의 시간이다.
Q. gpt-4o 대신 gpt-4o-mini를 쓰는 이유가 있나요?
블로그 초안 생성 용도라면 gpt-4o-mini로 충분하다. gpt-4o 대비 비용이 약 15배 저렴하면서, 한국어 블로그 글쓰기 품질 차이는 크지 않다. 다만 매우 전문적인 기술 내용이나 복잡한 코드가 많이 필요한 경우라면 gpt-4o를 써볼 만하다. 처음에는 gpt-4o-mini로 시작해서 품질이 부족하다 싶으면 모델을 올리는 게 효율적이다.
Q. 생성된 글을 그대로 발행해도 SEO에 문제가 없나요?
AI가 생성한 글 자체가 SEO 패널티를 받는 건 아니다. 다만 검토 없이 그대로 올린 글은 사실 오류, 어색한 표현, 얕은 전문성 때문에 독자 이탈률이 높아지고 결국 SEO 성과가 낮아진다. 초안을 30% 이상 수정해서 실제 경험과 관점을 추가한 글이 훨씬 좋은 결과를 낸다. 자동화는 타이핑 시간을 줄이는 도구지, 편집을 대체하는 건 아니다.
Q. WordPress Application Password 설정이 안 보여요.
두 가지 원인이 대부분이다. 첫째, HTTP 환경이면 보안상 비활성화된다. wp-config.php에 define(‘WP_ENVIRONMENT_TYPE’, ‘local’);을 추가하면 로컬에서 활성화할 수 있다. 둘째, 일부 보안 플러그인(iThemes Security 등)이 Application Password 기능 자체를 끄는 경우가 있다. 플러그인 설정에서 해당 옵션을 확인해보자.
Q. Windows 로컬 환경에서도 동일하게 동작하나요?
된다. Python 3.10 이상이 설치되어 있으면 동일하게 동작한다. 가상환경 활성화 명령어만 다르다. Windows에서는 wp-auto-env\Scripts\activate를 사용한다. XAMPP 환경에서 로컬 WordPress를 운영 중이라면 WP_URL을 http://localhost로 설정하면 된다.
Q. 카테고리나 태그도 자동으로 설정할 수 있나요?
가능하다. WordPress REST API의 posts 엔드포인트에서 categories와 tags 파라미터를 지원한다. 카테고리 ID를 미리 확인해두고 payload에 “categories”: [5, 8] 형태로 추가하면 된다. AI에게 적합한 태그 키워드를 생성하도록 프롬프트를 추가하고, 태그 이름으로 REST API를 통해 태그 ID를 조회한 뒤 포스트에 연결하는 방식으로 확장할 수 있다.
Q. 포스팅 스케줄링도 자동화할 수 있나요?
된다. WordPress REST API의 date 파라미터에 발행 날짜를 지정하면 예약 발행이 가능하다. status를 “future”로, date를 ISO 8601 형식의 미래 날짜로 설정하면 된다. Python의 datetime 모듈로 날짜를 계산하고, cron으로 스크립트를 주기적으로 실행하면 완전 자동 스케줄링 파이프라인을 만들 수 있다.

핵심 요약

준비물은 세 가지
OpenAI API 키, Python 3.10+, WordPress Application Password. 이 세 가지만 있으면 된다. 서버 없이 로컬 Windows 환경에서도 동일하게 구현 가능하다.
비용 효율적인 자동화
gpt-4o-mini로 초안 하나당 약 0.01달러 수준이다. 한 달 30편 기준 0.3달러. API 비용보다 절약되는 시간이 훨씬 크다.
반자동화가 정답
초안 생성은 AI가, 검토와 수정은 사람이. 이 역할 분담이 콘텐츠 품질과 SEO 성과 모두를 잡는 현실적인 방법이다.

타이핑에 쓰던 시간을 기획과 검토에 쓰자

OpenAI API WordPress 자동화의 진짜 가치는 글을 대신 써주는 게 아니라, 블로그 운영의 병목을 없애주는 데 있다. 초안 작성에 2시간 걸리던 게 30분 검토로 바뀌면, 그 시간에 키워드 리서치를 더 하거나 내부 링크 전략을 다듬을 수 있다. 세팅은 한 번, 효과는 계속된다. 지금 바로 API 키 발급부터 시작해보자.


함께 보면 좋은 글: AI 키워드 분석기 완전 가이드 / Claude Code 블로그 자동화 가이드

OpenAI API WordPress 자동화 블로그 포스팅 자동 생성 파이프라인 구조도