ワンクリックでWordPressに記事を投稿する仕組みをPythonで作る

AI開発日記

毎日記事を書いていると「管理画面を開いて、新規投稿を押して、タイトルを入力して…」という流れが地味に面倒ですよね。
実は PythonとWordPress REST API を使えば、ワンクリックで記事を投稿する仕組みを自分のPCに作ることができます。

この記事では、実際に動くまでの流れを分かりやすく解説します。
この方法なら、誰でも「毎朝記事を書いてワンクリックで投稿!」が実現できます。


1. 仕組みの全体像

  • WordPressには REST API という投稿用の仕組みが標準で入っています。
  • Pythonスクリプトから POST /wp-json/wp/v2/posts にデータを送れば記事が作成されます。
  • タイトルや本文をテキストファイルにしておけば、Pythonが自動で読み込んで記事にしてくれます。

最終的に、次のような流れで投稿できます👇

  1. title_u8.txt にタイトルを書く
  2. content_u8.html に本文(HTMLもOK)を書く
  3. デスクトップの「ワンクリック投稿」をダブルクリック
  4. すぐWordPressに記事が投稿される!(成功すると投稿URLが表示される)

2. 必要なもの

  • Python(3.10以上推奨)
  • ライブラリ requests
    pip install requests
    
  • WordPressの「アプリケーションパスワード」
    (管理画面 → ユーザー → プロファイル → アプリケーションパスワードから発行できます)

3. フォルダ構成

例えば C:\kijisakusei に以下のファイルを置きます:

C:\kijisakusei
  ├ post_to_wp.py        ← 投稿スクリプト
  ├ .env                 ← ユーザー名やパスワードを保存
  ├ title_u8.txt         ← 毎日編集するタイトル
  └ content_u8.html      ← 毎日編集する本文

4. .env の書き方

.env ファイルに認証情報を入れておきます。

WP_URL=https://あなたのサイトURL/wp-json/wp/v2/posts
WP_USER=WordPressのユーザー名
WP_APP_PASSWORD=発行したアプリケーションパスワード
CATEGORY_IDS=8
STATUS=draft
  • CATEGORY_IDS:投稿先のカテゴリーID(複数ならカンマ区切り)
  • STATUSdraft(下書き)、publish(公開)など

5. Pythonスクリプト(post_to_wp.py)

記事投稿を自動化するメインスクリプトです。
(タイトルと本文をUTF-8ファイルから読み込み、WordPressへ送信します)

# -*- coding: utf-8 -*-
import json, os, sys
import requests
from requests.auth import HTTPBasicAuth

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

def load_env(path):
    env = {}
    if os.path.exists(path):
        with open(path, "r", encoding="utf-8") as f:
            for line in f:
                line = line.strip()
                if not line or line.startswith("#") or "=" not in line:
                    continue
                k, v = line.split("=", 1)
                env[k.strip()] = v.strip()
    return env

def read_text(path):
    with open(path, "r", encoding="utf-8") as f:
        return f.read()

def main():
    env = load_env(os.path.join(BASE_DIR, ".env"))
    WP_URL  = env.get("WP_URL")
    WP_USER = env.get("WP_USER")
    WP_APP  = env.get("WP_APP_PASSWORD")
    STATUS  = env.get("STATUS", "draft")
    cats    = [int(x) for x in env.get("CATEGORY_IDS", "1").split(",")]

    title   = read_text(os.path.join(BASE_DIR, "title_u8.txt")).strip()
    content = read_text(os.path.join(BASE_DIR, "content_u8.html"))

    payload = {"title": title, "content": content, "status": STATUS, "categories": cats}

    res = requests.post(WP_URL, json=payload, auth=HTTPBasicAuth(WP_USER, WP_APP))
    print("HTTP Status:", res.status_code)
    try:
        data = res.json()
        print(json.dumps(data, ensure_ascii=False, indent=2))
        if res.status_code == 201:
            print("✅ 投稿成功:", data["link"])
    except Exception:
        print(res.text)

if __name__ == "__main__":
    main()

6. ワンクリックで実行する

oneclick_post.bat を作ってデスクトップにショートカットを置けば、ダブルクリックで実行できます。

@echo off
chcp 65001 >nul
cd /d "%~dp0"

notepad title_u8.txt
notepad content_u8.html

python post_to_wp.py
pause

7. 実際に使ってみる

  1. title_u8.txt に記事タイトルを入力(例: 「アプリ開発3日目」)
  2. content_u8.html に本文を書く(段落や画像タグもOK)
  3. 「ワンクリック投稿」をダブルクリック
  4. PowerShellに「✅ 投稿成功: https://example.com/?p=123」 と表示されれば成功!

まとめ

  • WordPress REST API と Python を組み合わせれば、記事投稿を完全自動化できる
  • タイトルと本文をファイルに書いて保存 → ダブルクリックで即投稿!
  • 毎日のルーチンを大幅に時短できる

👉 これで「誰でもワンクリックで毎日記事投稿できる環境」が完成です。
明日からの更新がぐっとラクになりますよ ✨


コメント