WordPress自動投稿システムの設計と実装
WordPress自動投稿システムの設計と実装
背景
SEO記事を毎日4本投稿するには、手動では追いつかない。そこで、Markdownファイルから自動でWordPress投稿するシステムを構築しました。
システム構成
Markdown記事
↓
Python スクリプト
↓
WordPress REST API
↓
投稿完了
技術スタック
- Python 3.11
- WordPress REST API
- python-wordpress-xmlrpc – WordPress連携
- Markdown – 記事フォーマット
実装のポイント
1. WordPress REST API認証
Application Passwordを使用:
import requests
from requests.auth import HTTPBasicAuth
def wordpress_auth():
return HTTPBasicAuth(
'obaba', # ユーザー名
os.getenv('WP_APP_PASSWORD') # Application Password
)
def create_post(title: str, content: str, status: str = 'draft'):
url = 'https://obaba-win.com/wp-json/wp/v2/posts'
data = {
'title': title,
'content': content,
'status': status, # 'draft' or 'publish'
'categories': [1], # カテゴリID
}
response = requests.post(
url,
json=data,
auth=wordpress_auth()
)
return response.json()
2. Markdownの変換
import markdown
def convert_markdown_to_html(md_content: str) -> str:
html = markdown.markdown(
md_content,
extensions=[
'fenced_code', # コードブロック
'tables', # テーブル
'toc' # 目次
]
)
return html
3. 画像のアップロード
def upload_image(image_path: str) -> int:
"""
画像をWordPressにアップロード
Returns:
attachment_id
"""
url = 'https://obaba-win.com/wp-json/wp/v2/media'
with open(image_path, 'rb') as f:
files = {'file': f}
response = requests.post(
url,
files=files,
auth=wordpress_auth()
)
return response.json()['id']
4. カテゴリの自動判定
def determine_category(title: str, content: str) -> int:
categories = {
'開発実績': 1,
'AI活用': 2,
'自動化': 3,
'エラー解決': 4,
}
for category, category_id in categories.items():
if category in title or category in content:
return category_id
return 1 # デフォルト
使用例
# Markdownファイルから投稿
post_from_markdown('06_openclaw複数アカウント自然言語管理.md')
今後の改善
- アイキャッチ画像の自動生成
- SEOメタデータの自動設定
- 投稿予約機能
開発時間: 3日
投稿数: 10本以上