正直、最初は半信半疑でした。

AIを使ってブログ記事を自動生成し、WordPressに自動投稿する仕組みを作る、そんな夢みたいな話が自分にもできるとは思っていなかったのです。

ところが実際にやってみたら、Claude Code × WordPress REST API の自動投稿の仕組みは本当に動きました

認証まわりで何度か詰まりましたが、最終的にREST APIのBasic認証で記事投稿に成功することができました。

この記事で一番お伝えしたいのは、「Claude Codeに渡したプロンプトの全文」です。どんな指示をすれば、どんなシステムが生成されるのか

その全プロセスを包み隠さずお伝えします。

Claude Codeとは、AIにプログラミング作業を手伝ってもらう道具です。

質問に答えるだけのチャットではなく、コードを読んで、直して、必要なコマンドまで実行を手伝ってくれる開発アシスタントです。

ClaudeCodeの料金プラン2026年版|無料/Pro/有料の違いと使い方・方法を解説

ワードプレスにClaude Codeを導入したきっかけ

私がClaude Codeに興味を持ったのは、AI講師として活動しながらも、自分自身の情報発信がどうしても後回しになっていたからです。

セミナーで「AIで業務効率化できますよ!」と言っている本人が、毎週のWPでの記事執筆に追われている、、この矛盾をずっと感じていました。

ワードプレスでSEOを意識した記事を1本書くのに、リサーチから執筆やファクトチェック、編集まで含めると数時間かかります。

セミナー準備や企業研修対応をこなしながら、安定した更新頻度を保つのは正直きつい状況でした。

そこで向き合ったのが、Anthropicが提供するAIコーディングツール「Claude Code」です。コマンドラインから自然言語でClaudeに指示を出すだけで、複雑なプログラムを自律的に書いてくれるツールで、エンジニアの間では「コーディング革命」とも言われています。

私はプログラマーではありません。

Pythonは正直よくわからない状態からのスタートでした。それでも「AIに指示するだけでシステムが作れるなら、自分にも挑戦できるかもしれない」と思い立ち、挑戦を決めました。

副業ライターはこの方法を知ることで、作業効率が飛躍的にアップすることでしょう。

AIライティング副業の始め方【初心者おすすめ】在宅ライターの仕事を解説


Claude Codeのインストールと初期設定

まずはClaude Codeのセットアップから。

まず、Node.jsをインストールします。

※Node.jsとは、サーバ上で動くJavaScriptの実行環境のことです。

nodejsをダウンロード・インストール

次に、ターミナルで以下のコマンドを実行するだけです。

npm install -g @anthropic-ai/claude-code

インストール後、AnthropicのAPIキーを環境変数に設定します。

export ANTHROPIC_API_KEY="your-api-key-here"

ターミナルで claude と打てば対話形式でClaudeとやりとりができる状態になります。

最初に試したとき、「あ、本当に動いてる」と少し感動しました。

ClaudeCodeの料金プラン2026年版|無料/Pro/有料の違いと使い方・方法を解説


【核心】Claude Codeに渡したプロンプト全文を公開します

Claudecodeの書き方

ここが今回の記事で一番重要な部分です。

Claude Codeに対して「こんなシステムを作ってほしい」と伝えた指示の全文を、そのまま公開します。

以下のアフィリエイト記事自動生成パイプラインをPythonで作ってください。

## 構成
1. SerpAPIで「Claude 使い方」「AIツール 比較」などのキーワードを取得
2. Claude APIで記事生成(8000字)
3. WordPress.com REST APIで自動投稿
4. GitHub Actionsで毎朝9時・13時・18時に自動実行(3記事/日)

## 記事生成のシステムプロンプト
「あなたはAI講師です。実際の授業経験をもとに、初心者に分かりやすく、
かつ専門性のある記事を書いてください。記事末尾にはアフィリエイトリンクの
プレースホルダー[AFFILIATE_LINK]を挿入してください。」

## 技術要件
- Python 3.11
- .envでAPIキー管理
- ログをoutput.logに保存

## ファイル構成
.env / main.py / generate.py / post.py / .github/workflows/daily.yml

これだけです。たったこれだけの指示で、Claude Codeは動き始めました。

なぜこの形式で書いたのか

指示を書く上で意識したのは「完成形のイメージを構造化して伝える」ことです。

  • 構成でシステム全体の流れを示す
  • システムプロンプトで生成する記事のトーンを指定する
  • 技術要件で制約条件を明示する
  • ファイル構成で期待するアウトプットの形を示す

プログラミングの知識がなくても、「何を作りたいか」が明確であれば、Claude Codeはそれをコードに変換してくれます。逆に言えば、指示の精度がシステムの精度に直結するのです。

ClaudeCodeの料金プラン2026年版|無料/Pro/有料の違いと使い方・方法を解説


Claude Codeが生成したファイル構成

指示を受けたClaude Codeは、以下のファイル群を次々と生成していきました。

affiliate-pipeline/
├── .env                          # APIキー管理
├── main.py                       # 全体を統括するメインスクリプト
├── generate.py                   # Claude APIで記事を生成
├── post.py                       # WordPress.com REST APIで投稿
├── requirements.txt              # 必要なPythonライブラリ
└── .github/
    └── workflows/
        └── daily.yml             # GitHub Actions設定

「これを全部作ってもらえるの?」と最初は信じられませんでしたが、Claudeは一つひとつ丁寧にコードを生成しながら、それぞれのファイルの役割も説明してくれました。

generate.py:記事生成の核心部分

渡したシステムプロンプトが、コードの中にそのまま組み込まれています。

python
import anthropic
import os
from dotenv import load_dotenv

load_dotenv()

def generate_article(keyword: str) -> dict:
    client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
    
    system_prompt = """あなたはAI講師です。実際の授業経験をもとに、
初心者に分かりやすく、かつ専門性のある記事を書いてください。
記事末尾にはアフィリエイトリンクのプレースホルダー[AFFILIATE_LINK]を挿入してください。"""
    
    user_prompt = f"""
以下のキーワードでSEOに最適化されたブログ記事を作成してください。

キーワード: {keyword}
文字数: 8000字以上
形式: HTML(h2・h3タグを使用)
冒頭に記事タイトルを「TITLE:」で始まる行として記載すること
"""
    
    message = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=8192,
        system=system_prompt,
        messages=[{"role": "user", "content": user_prompt}]
    )
    
    raw = message.content[0].text
    lines = raw.strip().split("\n")
    title = ""
    body_lines = []
    
    for line in lines:
        if line.startswith("TITLE:"):
            title = line.replace("TITLE:", "").strip()
        else:
            body_lines.append(line)
    
    return {"title": title, "content": "\n".join(body_lines)}

post.py:WordPress.com REST APIへの投稿

WordPress.comのREST APIは、自己ホスト型のWordPressとは認証の仕組みが異なります。OAuth2トークンを使った認証が必要で、ここに最初つまずきました。

python
import requests
import os
from dotenv import load_dotenv

load_dotenv()

def post_to_wordpress(title: str, content: str, status: str = "draft") -> dict:
    site_id = os.getenv("WP_SITE_ID")
    token = os.getenv("WP_ACCESS_TOKEN")
    
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    
    data = {
        "title": title,
        "content": content,
        "status": status,  # "draft" or "publish"
    }
    
    response = requests.post(
        f"https://public-api.wordpress.com/rest/v1.1/sites/{site_id}/posts/new",
        headers=headers,
        json=data
    )
    
    if response.status_code in [200, 201]:
        result = response.json()
        print(f"投稿成功:{result.get('URL', '(URLなし)')}")
        return result
    else:
        print(f"エラー {response.status_code}: {response.text}")
        return {}

認証エラーとの格闘|ここが一番の山場だった

仕組みとしては正しいコードが生成されたのですが、実際に動かすと認証エラーが出ました。

WordPress.comのAPIアクセスにはOAuthトークンが必要で、その取得手順が想定より複雑でした。

  1. WordPress.com Developerサイトでアプリケーションを登録
  2. Client IDとClient Secretを取得
  3. 認証フローを経てアクセストークンを発行

※認証手順は、WordPress.com公式のOAuth2解説Getting Startedが参考になります。

アプリ登録からトークン取得まで確認できます。

Claudeに「401エラーが出ています、どうすればいいですか?」と相談しながら、この手順を一つずつ進めていきました。エラーメッセージをそのままClaude Codeに貼り付けると、原因を分析して修正案を出してくれる。

この対話型のデバッグが、プログラミング未経験者には本当に助かりました。

最終的に認証が通り、下書き投稿に成功したときの安堵感は言葉では表現しにくいものがありました。

※なお、WordPress.comには認証まわりで関連する仕組みもありますが、本記事では実際に私が使ったOAuth認証に絞って解説します。

関連知識は別記事でまとめます。

ClaudeCodeの料金プラン2026年版|無料/Pro/有料の違いと使い方・方法を解説


WPにおける現在の運用状況|まず「手動で確実に動く」を固める

現時点では、手動での確認・実行ステージです。

1. main.py を手動で実行
2. SerpAPIがキーワードを取得
3. Claude APIが記事を生成
4. WordPress.comに「draft(下書き)」として自動投稿
5. 管理画面で内容を確認・微調整してから公開

status="draft" にして、いきなり公開しないようにしているのは意図的な設計です。AIが生成した記事をそのまま公開するのではなく、人間が確認するフローを必ず挟む。この判断は、AI講師として「AIとの正しい付き合い方」を伝え続けている立場からも、大切にしたいポイントです。

確認チェックリスト(毎回やっていること)

  • 事実誤認がないか
  • 著者(私)の口調・言葉遣いとズレていないか
  • SEOタイトル・メタディスクリプションは適切か
  • 内部リンクを追加できる箇所はないか

このチェックに要する時間は1本あたり平均10〜15分。以前は1本書くのに数時間かかっていたことを考えると、劇的な効率化です。

GitHub Actionsは次のステップ

最初のプロンプトにはGitHub Actionsによる定期実行も含めていましたが、こちらはコードは生成されたものの、まだ実際の自動実行は試していません。

yaml
# .github/workflows/daily.yml(生成されたコード)
name: Daily Article Post

on:
  schedule:
    - cron: '0 0 * * *'   # JST 9:00
    - cron: '0 4 * * *'   # JST 13:00
    - cron: '0 9 * * *'   # JST 18:00
  workflow_dispatch:

jobs:
  post-article:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      - run: pip install -r requirements.txt
      - run: python main.py
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          SERPAPI_KEY: ${{ secrets.SERPAPI_KEY }}
          WP_SITE_ID: ${{ secrets.WP_SITE_ID }}
          WP_ACCESS_TOKEN: ${{ secrets.WP_ACCESS_TOKEN }}

「動く仕組みを確実に固めてから、自動化を段階的に広げる」という順番を守りたいと思っています。


ワードプレス自動投稿をやってみてわかったこと

Claude Codeへの指示は「設計書」として書く

今回最も実感したのは、プロンプトの質がそのままシステムの質になるということです。

「ブログ記事を自動投稿したい」という漠然とした指示では、漠然としたコードが返ってきます。構成・要件・ファイル構成まで明示した指示を渡したことで、想定に近いシステムが一度に生成されました。

エラーは「対話の続き」として解決できる

認証エラーが出たとき、「どうしよう…」ではなく「Claudeに聞けばいい」と思えたことが大きかったです。エラーメッセージをそのまま貼り付けて「これが出ました、なぜですか?」と聞くだけで、原因分析と修正案が返ってきます。

完全自動化より「正しい自動化」を目指す

AIが生成した記事を無確認で公開することは、読者への責任という観点からすべきではないと考えています。

「下書き自動生成→人間確認→公開」というフローは、効率化と品質担保の両立として、今後も維持していくつもりです。


まとめ:「丸投げ」ではなく「任せる設計」がポイント

Claude Codeへの指示をご覧になって、「これだけの指示で動くの?」と思った方もいるかもしれません。

実際には、最初の指示が精度高く書けていたからこそ、生成されたコードもほぼ期待通りのものでした。

Claude Codeは「丸投げ」するツールではなく、「設計を渡すと実装してくれる」ツールです。

何を作りたいかを言語化する力。

それはAIがどれだけ進化しても、人間側に必要なスキルであり続けると思います。

今回の体験を通じて、私自身もそれを改めて実感しました。

同じことを試してみたい方の、少しでも参考になれば嬉しいです。

また、Claude Codeの料金・使い方を詳しく知りたい方はこちらもご覧ください。

ClaudeCodeの料金プラン2026年版|無料/Pro/有料の違いと使い方・方法を解説