シゴト自動化ラボ WORK AUTOMATION LAB 運営者情報

2026-06-23 

WordPressブログにAI記事を毎日自動投稿する全手順|Pythonコピペで動く実録パイプライン
AIで仕事を自動化する(非エンジニア向け)

WordPressブログにAI記事を毎日自動投稿する全手順|Pythonコピペで動く実録パイプライン

当サイトはアフィリエイトプログラムを利用しており、紹介リンク経由での申込により報酬を得る場合があります。記事内で紹介するサービスには筆者が実際に使用しているものと、客観情報として比較掲載しているもの(未使用・PR表記あり)が含まれます。

結論:このサイト自体が「毎日動いている」実例です#

このページを読んでいるあなたがいま見ているjidoulab.comの記事は、ClaudeAPI・WordPress REST API・Xserverのcronジョブを組み合わせたパイプラインで自動生成・自動投稿されています。コードは約120行。Pythonを「少し触ったことがある」程度なら、この記事の手順をそのままコピーして1〜2時間で動かせます(あくまで著者の体感であり、環境や習熟度によって異なります)。

本記事でわかること

  1. Claude API(記事生成)→ WordPress REST API(自動投稿)→ Xserver cronジョブ(日次化)の3ステップ全手順
  2. コピペで動くPythonコード全文(最小構成・約120行)
  3. Pythonを書きたくない人向けのノーコード版選択肢(Yoom + ChatGPT)
  4. 詰まりやすいポイント:wp-json認証エラー・アプリパスワード発行手順

まず確認:コードを書かない「ノーコード版」も選べる#

「Pythonは触れるけど、できればコードを書きたくない」という人も多い。そういう場合はノーコード自動化ツール「Yoom」とChatGPT(またはClaude)を組み合わせる方法が現実的です。

方式初期コスト(目安)月額費用(目安)向いている人
Python自作(本記事)1〜2時間(著者体感)APIコストのみ(1記事 5〜15円程度)Pythonを少し触れる・カスタムしたい
Yoom + ChatGPT30分〜1時間Yoom月額 9,800円〜(税抜)+ APIコストコードを書きたくない・手早く始めたい
Zapier + Make + AI30分〜2時間プランによる(月額 2,000〜20,000円台)英語UIでも問題ない

本記事ではコードを書くPython自作版を詳しく解説します。ノーコード版の比較はAI自動投稿のSaaS vs API費用比較でまとめています。

ノーコード版の注意点

Yoomなどのノーコードツールは操作は簡単ですが、月額固定費が発生します。記事本数が少ないうちはPython自作のほうが圧倒的に安い。毎月30本以上の安定運用を目指すならノーコードも選択肢に入ります。


全体の流れ:3ステップパイプライン#

手順

  1. ClaudeAPIで記事を生成する(Pythonスクリプト)
  2. WordPress REST APIで下書きとして投稿する(同スクリプト内)
  3. Xserverのcronジョブで毎日自動実行する(サーバー設定)

ステップ1:ClaudeAPIで記事テキストを生成する#

必要なもの#

  • Anthropic APIキー(console.anthropic.comで発行)
  • Python 3.9以上
  • anthropicライブラリ(pip install anthropic

最小構成のコード(全文)#

以下が実際にjidoulab.comで動かしているコードをシンプルに抽出したものです。本番では追加のエラーハンドリングや品質チェック処理を入れていますが、まず動かすための最小版です。

# auto_post.py — AI記事自動投稿スクリプト(最小構成)
import os
import json
import requests
import anthropic
from datetime import datetime

# --- 設定 ---
CLAUDE_API_KEY = os.environ["ANTHROPIC_API_KEY"]
WP_URL        = "https://yourdomain.com/wp-json/wp/v2/posts"
WP_USER       = os.environ["WP_USER"]           # WordPressのユーザー名
WP_APP_PASS   = os.environ["WP_APP_PASSWORD"]   # アプリパスワード(後述)

# 今日のキーワード(本番ではCSVやDBから読む)
KEYWORD = "WordPressブログ 更新頻度 SEO"

# --- 1. Claude APIで記事を生成 ---
def generate_article(keyword: str) -> dict:
    client = anthropic.Anthropic(api_key=CLAUDE_API_KEY)
    prompt = f"""
あなたはSEOに詳しいブログライターです。
キーワード「{keyword}」に関して、
・見出し(H2×3、H3×適宜)
・本文800字以上
・HTML形式(<h2>/<h3>/<p>タグのみ)
で記事を書いてください。タイトルも含めてください。
出力形式: JSON {{ "title": "...", "content": "..." }}
"""
    message = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=4096,
        messages=[{"role": "user", "content": prompt}]
    )
    raw = message.content[0].text
    # JSONブロックを抽出
    start = raw.find("{")
    end   = raw.rfind("}") + 1
    return json.loads(raw[start:end])

# --- 2. WordPress REST APIで投稿 ---
def post_to_wordpress(title: str, content: str, status: str = "draft") -> dict:
    auth = (WP_USER, WP_APP_PASS)
    payload = {
        "title":   title,
        "content": content,
        "status":  status,  # "draft" or "publish"
    }
    resp = requests.post(WP_URL, json=payload, auth=auth, timeout=30)
    resp.raise_for_status()
    return resp.json()

# --- メイン ---
if __name__ == "__main__":
    print(f"[{datetime.now()}] 生成開始: {KEYWORD}")
    article = generate_article(KEYWORD)
    result  = post_to_wordpress(article["title"], article["content"], status="draft")
    print(f"[{datetime.now()}] 投稿完了: ID={result['id']} URL={result['link']}")

コードをそのままコピーする前に必ずやること

  • yourdomain.com を自分のWordPressのドメインに書き換える
  • 環境変数(ANTHROPIC_API_KEY / WP_USER / WP_APP_PASSWORD)を設定する
  • status="draft" のまま試し動作してから "publish" に変える(誤投稿防止)

ステップ2:WordPressのアプリパスワードを発行する#

ここが一番詰まるポイントです。WordPress REST APIへの投稿にはアプリパスワードが必要で、通常のログインパスワードとは別物です。

発行手順#

  1. WordPress管理画面(/wp-admin)にログイン
  2. 右上のユーザー名 → 「プロフィール」をクリック
  3. 下にスクロールして「アプリケーションパスワード」セクションを探す
  4. 「新しいアプリケーションパスワード名」に任意の名前(例:auto-post)を入力
  5. 「新しいアプリケーションパスワードを追加」をクリック
  6. 表示される xxxx xxxx xxxx xxxx xxxx xxxx 形式のパスワードをコピー(この画面を閉じると二度と見えません)

コピーしたパスワードは環境変数 WP_APP_PASSWORD に設定します。スペースは含めたまま使えます。

アプリパスワードが表示されない場合

WordPressが「SSL(HTTPS)環境でない」か、プラグインがREST APIをブロックしている可能性があります。Disable REST API系プラグインが有効な場合は一時無効化してテストしてください。XserverはデフォルトでHTTPS有効なので通常は問題ありません。

動作確認(ターミナルで実行)#

curl -X POST https://yourdomain.com/wp-json/wp/v2/posts \
  -u "your_username:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"テスト投稿","content":"本文テスト","status":"draft"}'

201 Created が返ればOK。401 Unauthorized が出る場合はユーザー名かアプリパスワードが間違っています。403 Forbidden の場合はREST APIがブロックされています。


ステップ3:Xserverのcronジョブで毎日自動実行する#

スクリプトが動いたら、次はサーバーに「毎朝6時に自動実行」を設定します。

Xserverのcron設定手順#

  1. Xserverのサーバーパネル(https://www.xserver.ne.jp/login_server_panel.php)にログイン
  2. 左メニューから「cron設定」→「cron設定追加」をクリック
  3. 以下のように入力する
項目入力値
実行間隔毎日
6
0
コマンド/usr/bin/python3 /home/アカウント名/auto_post.py
  1. 「確認画面へ進む」→「追加する」で完了

Xserverでのファイルパスについて

Xserverのcronでは /home/アカウント名/ がホームディレクトリです。FTPやSSHでスクリプトをアップロードした際の配置先を確認してください。which python3 でPythonのパスを確認してから設定すると確実です。

環境変数の渡し方(Xserver cron)#

Xserverのcronはシェル環境変数を引き継がないため、スクリプト内か別の方法で渡す必要があります。最も安全な方法は .env ファイルを使うことです。

# スクリプトの先頭に追加
from dotenv import load_dotenv
load_dotenv("/home/アカウント名/.env")

.env ファイル(パーミッション600に設定):

ANTHROPIC_API_KEY=sk-ant-xxxxxxxx
WP_USER=your_username
WP_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx

pip install python-dotenv が必要です。Xserverでは pip3 install --user python-dotenv とすると自分のホームに入ります。


AI出力の品質チェックをどう組み込むか#

「AI記事をそのまま自動公開は怖い」——これは実際に私が最初に感じたことです。jidoulabでは以下のルールで運用しています。

運用で採用しているチェック体制

  • 初期は必ず status="draft" で投稿し、手動確認してから公開(自動公開は3か月慣れてから)
  • Claudeのプロンプトに「事実として確認できないことは書かない・数値には出典を書く」を明記
  • 投稿後に管理画面の通知メールで毎朝確認(異常があればすぐ削除できる)

完全自動化で残るリスク

  • AIが古い情報や誤情報を生成する可能性はゼロにならない
  • キーワードが偏ると薄い記事が量産されSEO評価が下がる
  • APIの料金が予期せず増加する可能性がある(上限設定を必ずコンソールで行う)
claude-opus-4-5 使用・800〜1,200字 / 1記事あたり APIコスト 5〜15円(税抜・目安)1記事あたりの生成コスト(著者実測・2026年6月時点)

ClaudeとChatGPT、自動投稿用途ではどちらが費用対効果が高いか#

競合記事が触れていない視点として、API選定の実コスト比較を載せます。

項目Claude API(claude-3-haiku)ChatGPT API(gpt-4o-mini)
入力(100万トークンあたり・円)約37円約22円
出力(100万トークンあたり・円)約188円約90円
1記事あたり費用(目安)3〜10円2〜6円
日本語精度(著者体感)高い・文章が自然高い・やや直訳調
レート制限(初期)中程度中程度

※料金は2026年6月時点の公式料金表を基に算出。為替・プランにより変動します。著者体感であり保証しません。

コストだけ見るとChatGPTのgpt-4o-miniがやや安い。ただし著者の体感では、日本語ブログ記事の「読みやすさ」ではClaudeのほうが微差で自然に感じます。どちらも小さいモデルなら1記事数円程度なので、まずは両方で生成して読み比べるのがおすすめです。


Xserverを選ぶ理由:cronジョブ・SSH・Python環境が揃っている#

自動投稿パイプラインを動かすには、サーバーがcron・SSH・Python3をサポートしている必要があります。jidoulab.comはXserverのビジネスプランを使っています。

Xserverを選んだ理由(著者の視点)

  • cronジョブがサーバーパネルのGUI上で簡単に設定できる
  • SSH接続が標準対応でデプロイが楽
  • Python 3系がサーバーに標準インストール済み
  • WordPressとの相性も良く、REST APIが通常の設定で使える

詳しいサーバー比較はブログ自動化向けサーバーの選び方、XserverのAPI活用全般はXserverでのブログ自動化完全ガイドにまとめています。

PRXserverを試してみるエックスサーバー

よくある質問#

Q. Pythonをほとんど知らなくてもこのコードは動かせますか?#

コピーして環境変数を書き換えるだけで動く設計にしています。ただし「エラーが出たときに何が起きているかわからない」という状態だと詰まりやすいのも事実です。あくまで個人の体感ですが、Pythonの pip install.env ファイルの概念を理解している程度(3〜5時間の学習程度)あれば、ほぼ再現できると思います。

Q. 毎日自動投稿するとSEOに悪影響はありませんか?#

薄い内容の記事を大量に出しても検索評価は上がりません。本記事のコードでは品質チェックとして「draft状態で投稿→確認後に公開」を推奨しています。Google は量より質を評価する方向に進んでいるため、自動投稿しながらも内容の確認フローを外さないことが重要です。詳しくはWordPressブログをAIで始める方法で運用の考え方をまとめています。

Q. XserverではなくConoHa WINGでも同じ手順で動きますか?#

cronジョブの設定画面の場所は異なりますが、基本的な手順は同じです。ConoHa WINGもcron・SSH・Python3に対応しています。ただし著者はXserverでのみ実動作を確認しているため、ConoHa WINGでの動作は「おそらく動く」レベルであり保証はできません。


まとめ#

AI記事の自動投稿パイプラインは、Claude API・WordPress REST API・Xserver cronジョブの3点セットで最小構成なら1〜2時間で動き始めます(著者体感)。

大事なのは「動かすことよりも運用フローを決めること」です。特に品質チェックのステップを省くと、誤情報記事が自動公開されてしまうリスクがあります。まずは status="draft" で動かして、自分の目で確認してから公開するフローに慣れてください。

PRXserverで自動投稿環境を整えるエックスサーバー