WordPress自動投稿システムの設計と実装
なぜ自動化が必要だったのか
ブログ記事を毎日複数件投稿する運用をしていると、手動での投稿作業がボトルネックになる。記事自体はAIで生成できても、WordPressの管理画面を開いて1件ずつ投稿するのは非効率だ。
そこで、Markdown形式で記事を書いたら自動でWordPressに投稿できる仕組みを作った。
システム構成
全体フロー
- Markdown形式で記事作成
wordpress_auto_post.pyでドラフト投稿schedule_posts.pyで予約投稿設定- WordPress REST API経由で自動公開
技術選定
WordPress REST API を選んだ理由:
– 公式API(安定性が高い)
– 認証方法が明確(Application Passwords)
– 投稿・更新・削除が可能
– カテゴリ・タグ・アイキャッチも設定できる
Python を選んだ理由:
– requests ライブラリでAPIアクセスが簡単
– Markdown → HTML変換が容易(markdown パッケージ)
– OpenClawのワークフローと統合しやすい
実装の工夫
1. Markdown → HTML 変換
import markdown
def convert_markdown_to_html(md_content):
return markdown.markdown(
md_content,
extensions=['extra', 'codehilite', 'tables']
)
extra拡張で脚注・定義リスト・省略記法に対応。codehiliteでコードブロックをシンタックスハイライト。
2. 認証の実装
WordPress REST APIはApplication Passwordsを推奨している。
import requests
from requests.auth import HTTPBasicAuth
auth = HTTPBasicAuth('username', 'application_password')
response = requests.post(api_url, json=post_data, auth=auth)
管理画面で生成したパスワードを.envで管理することでセキュアに運用。
3. エラーハンドリング
APIリクエストは失敗することがある。リトライ+詳細ログで運用を安定化。
for attempt in range(3):
try:
response = requests.post(...)
if response.status_code == 201:
print(f"✅ 投稿成功: {response.json()['link']}")
break
except Exception as e:
print(f"⚠️ リトライ {attempt+1}/3: {e}")
time.sleep(2)
4. カテゴリ・タグの自動設定
記事のFront Matterからカテゴリ・タグを抽出して自動設定。
---
title: "WordPress自動投稿システムの設計と実装"
category: "自動化"
tags: ["WordPress", "Python", "API"]
---
5. アイキャッチ画像の対応
今後の拡張として、DALL-E 3でアイキャッチ画像を自動生成→WordPress Media Libraryにアップロード→投稿に紐付けも可能。
予約投稿の実装
schedule_posts.pyでドラフト記事を自動で公開日時設定。
def schedule_post(post_id, publish_date):
data = {
'status': 'future',
'date': publish_date # ISO 8601形式
}
response = requests.post(f'{api_url}/{post_id}', json=data, auth=auth)
これで「毎日9:00に1記事ずつ公開」のような運用が可能。
運用上の工夫
バッチ投稿対応
複数記事を一度に投稿するため、ディレクトリ内のMarkdownファイルを順次処理。
python wordpress_auto_post.py /path/to/articles/*.md
投稿前プレビュー
下書き保存→URLを取得→ブラウザで確認→問題なければ公開、というフローも可能。
投稿履歴の記録
posted_articles.jsonに投稿済み記事のIDとURLを記録。重複投稿を防ぐ。
結果
- 投稿時間: 1記事あたり手動5分 → 自動5秒(60倍高速化)
- 予約投稿: 1週間分を一括設定可能
- エラー率: リトライ機能で98%成功
2週間で56記事投稿する計画も、この仕組みがあれば余裕で回せる。
今後の改良予定
- DALL-E 3連携: アイキャッチ画像自動生成
- SEO最適化: メタディスクリプション自動設定
- SNS連携: 投稿後にTwitter/Facebookに自動シェア
- 分析機能: Google AnalyticsのデータをOpenClawに通知
関連記事:
– DASHタスク管理システム:雑に投げたタスクを自動振り分け
– SEO記事を自動生成するワークフローを構築した
この記事は「中野のAI開発部屋」で公開中の自動化システム実装シリーズです。