概要
wpctlは、Markdown・テキスト・HTMLファイルをWordPress REST API経由で投稿・更新できる、Python製のCLIツール兼ライブラリです。
- PyPI: https://pypi.org/project/wpctl/ (2026-08-05にv1.2.0を公開)
- GitHub: https://github.com/ryoh-ya/wpctl
- License: MIT
- Python: 3.12以上
pip install wpctl
WordPress公式のCLIとしてWP-CLIがありますが、PHP製でサーバー側の管理全般(プラグイン管理やDB操作など)を対象にしています。wpctlはREST API経由でPythonから叩ける投稿専用ツールという位置付けで、CIやスクリプト、AIエージェントのワークフローに投稿処理を組み込みたい場合に向いています。
もう一つの特徴が、Markdown⇔HTMLの変換に対応している点です。WordPress本体は本文をHTMLで保持しますが、wpctlは投稿時にMarkdownをHTMLへ変換して送信し、post show --format mdでは逆にHTMLをMarkdownへ変換して取り出せます。書き込み・読み出しの両方をMarkdownのまま扱えます。
作った直接のきっかけも、この変換部分でした。WordPressへ投稿できるツールはいくつかありましたが、Markdown⇔HTML変換に対応したものが見当たらず、Markdown原稿をそのまま投稿・取得できる手段が欲しくて自作しています。
認証設定
投稿にはWordPressの「アプリケーションパスワード」を使った認証が必要です。環境変数、またはwpctl auth setで作成する設定ファイル(.wpctl_conf)のいずれかで管理できます。
# 対話形式で設定(値は自分のサイトの情報に置き換える)
wpctl auth set
# 設定状況の確認(値はマスクされて表示される)
wpctl auth status
優先順位は「環境変数 > プロジェクト設定 > ユーザー設定」です。wpctl auth setでプロジェクト設定ファイルを作成すると、.gitignoreへ.wpctl_confが自動で追記されます。
使い方
投稿
wpctl post create --status publish --categories "1,2" --tags "tech,python" article.md
--status省略時はdraftになります。タイトル省略時はMarkdown内の最初の#見出しが使われます。
更新
wpctl post update --id 42 --tags "tech,python" article.md
一覧・詳細取得
wpctl post get --status draft
wpctl post show --format md 42
post show --format mdは、既存記事をMarkdownとして取り出せるので、リライトや記事の棚卸しにも使えます。
Pythonライブラリとしての利用
import wpctl
result = wpctl.create_post(
content="# タイトル\n\n本文...",
content_format="md",
status="draft",
)
CLI呼び出しの代わりに、スクリプトやAIエージェントの処理内から直接投稿ロジックを呼び出せます。
開発について
wpctl自体も、基盤部分とディレクトリ構成は自分で設計・実装し、post createやauth setといった個々の機能はAIエージェントへの指示ベースで実装しました。設計の骨格を自分で決めておくと、機能追加をAIに任せてもディレクトリ構成やコマンド設計がぶれにくい、という手応えがありました。
活用例: AIエージェントによる記事投稿フロー
筆者が関わっている社内プロジェクトでは、次の流れで技術ブログを運用しています。
- AIエージェントが記事のドラフト(構成・本文)を作成する
- 人間が内容を確認し、公開を承認する
- 承認後、AIエージェントが
wpctl経由でWordPressへ投稿する
認証情報の発行・設定は事前に人間がwpctl auth setで行い、AIエージェント側には値を発行させません。投稿の実行(draft作成含む)も、必ず人間の承認を得てから行うようにしています。Markdown原稿とREST APIだけで投稿処理を組み込める点が、この「下書きは自動化し、公開判断は人間が行う」という運用と噛み合っています。
まとめ
-
pip install wpctlで導入可能 - コマンドは
post create/update/get/showとauth set/statusが中心 - Markdown駆動の執筆環境やAIエージェントのワークフローに投稿処理を組み込みたい場合に向いている
不具合や要望があれば、GitHubのIssueからお送りください。