
AIブログを自動化するには、複数のAPIキーと環境変数の管理が欠かせません。ところが私はその設定を1か所間違えただけで、想定外の課金が発生してしまいました。月間上限の$5.5が1分も経たないうちに消えたあのときの焦りは、今でも忘れられません。
この記事はブログ自動化シリーズの第1章です。序章では「何が自動化できるか」「どんな仕組みか」を解説しました。第1章では環境構築に必要なツールの全体像と、私がやらかしたAPIキーのトラブルを通じて「同じ失敗をしないための鉄則」をお伝えします。
自動化に必要な環境とツール
必要なもの一覧
まず、このブログ自動化システムを動かすために必要なものを整理します。
| 必要なもの | 詳細 |
|---|---|
| OS | macOS |
| Claudeプラン | Pro(月$20) |
| Claude Code | v2.1以上 |
| レンタルサーバー | REST APIが使えるもの |
| WordPress | REST APIが有効な状態 |
| Git・GitHubアカウント | バージョン管理用 |
この中で特に重要なのが「REST APIが使えるサーバー」です。WordPressへの自動投稿はREST API経由で行うため、これが通らないサーバーだとシステム自体が動きません。
なぜClaude Codeなのか
Claude.ai(ブラウザのチャット)とClaude Code(ターミナルで動くAIエージェント)は、同じClaudeを使っていても役割がまったく違います。
- Claude.ai:設計相談・ルール設計・新機能の検討
- Claude Code:ファイル操作・エージェント実行・WordPress自動投稿
Claude Codeはターミナルから直接ファイルを読み書きでき、bashやPythonスクリプトも実行できます。「bash run.sh 1本で記事を自動生成する」という仕組みは、このClaude Codeがあって初めて成立します。
そして重要なのですが、Claude Codeの利用にAPIキーは不要です。Claude Proプランのサブスクリプション内でClaude Codeが使えます。ここを混同すると、後述のトラブルに直結します。
必要なAPIキーとそれぞれの役割
システム全体では複数のAPIキーを.envファイルで管理します。
| APIキー | 用途 | 費用 |
|---|---|---|
| Anthropic API | 画像キーワード自動生成 | 月1〜2円程度 |
| Pexels API | 画像取得(メイン) | 無料 |
| Unsplash API | 画像取得(サブ) | 無料 |
| WordPressアプリパスワード | 記事自動投稿 | 無料 |
Anthropic APIはClaude Codeとは別物で、画像取得時の「英語キーワード変換」にだけ使います。PexelsやUnsplashなどの無料画像サイトは海外サービスがほとんどで、日本語の見出しやタイトルのままでは精度の高い画像が見つかりにくいためです。そこで軽量なHaikuモデルを使い、「見出しを英語の検索キーワードに変換」してから画像を取得する仕組みにしています。
処理は「見出し→英語キーワード変換」だけのごく軽いもので、月の使用量は1〜2円程度です。
なお、画像自動取得を使わない場合や英語キーワードを手動で指定する場合は、Anthropic APIは不要です。設定をスキップしても、記事生成・WordPress自動投稿など他の機能は問題なく動きます。必要な人だけ設定すれば大丈夫です。
この小さなAPIキーが、後述するトラブルの元凶になりました。
APIキーの管理でやらかした話
何が起きたか
環境構築を終えて「よし、テスト実行だ」と意気込んでrun.shを動かした直後のことです。Anthropic Consoleの支出が急に跳ね上がり、設定していた月間支出上限の$5.5に達したという通知が届きました。
Claude Code(Proプランで動くはず)なのに、なぜかAnthropicのAPI課金が走っている。焦りながら原因を調べると、環境変数の設定ミスが見つかりました。
原因は「全環境変数の一括読み込み(set -a方式)」だった
問題は.envファイルの読み込み方法にありました。最初、私は次のように書いていました。
# ❌ やってはいけない方法
set -a
source .env
set +a
このset -a方式は.env内のすべての変数を一括でexportします。「楽だから」という理由でこの方式を使ったのですが、.envにはANTHROPIC_API_KEYも書かれていたため、claudeコマンド実行時にAPIキーが環境変数として渡されてしまいました。
Claude Codeは通常、Proプランのサブスクリプション内で動きます。しかし環境変数にANTHROPIC_API_KEYが存在すると、そちらを優先してAPI課金モードで動作する仕様になっています。
画像1枚取得のためのAPIキーのつもりが、Claude Code全体がAPIキー課金で動いていたのです。
$5.5が1分で消えた——上限設定だけが命綱だった
私が設定していた月間支出上限は$5.5(Anthropic Consoleで設定できる最低額)でした。おかげで被害は$5.5で止まりましたが、恐ろしかったのは1分も経たないうちにその$5.5が全額消費されたことです。
上限を設定していなければ、青天井で課金が続いていたかもしれません。ゾッとしました。
その後は$1ずつ慎重に上限を引き上げながら調整し、今は必要最低限のラインに落ち着いています。
これから始める人へ:APIキー管理の鉄則
同じ失敗をしないために、私が実装した安全ルールを共有します。
.envの全変数一括export(set -a方式)は使わない→ 必要な変数だけ個別にexportするclaudeコマンド実行前に必ず unset ANTHROPIC_API_KEY を入れる→ 誤渡しを防ぐ安全装置ANTHROPIC_API_KEYは画像取得専用(image-fetcher.py)のみで使う- Anthropic Consoleで月間支出上限を必ず設定する(最初は$1〜$5程度が安心)
特にunset ANTHROPIC_API_KEYは、run.shのclaudeコマンド実行直前に必ず入れてください。これを入れておけば、うっかり.envを全読み込みしてしまった場合でも、claudeコマンドにAPIキーが渡らなくなります。
サーバーとWordPressの準備
REST APIが使えるサーバーを選ぶ
WordPress自動投稿はREST API経由で行うため、サーバー側でAPIが通る必要があります。私が使っているのはエックスサーバー
です。
WordPress REST APIが標準で有効になっており、管理画面からWAF(セキュリティ設定)の調整も簡単に行えます。実際に数ヶ月運用していますが、自動投稿スクリプト(wp-post.sh)との相性は良好で、特に詰まることなく動いています。
ドメインの取得
ドメインはムームードメイン
で取得しました。画面がシンプルで、エックスサーバーとのネームサーバー設定も数クリックで完了します。
初期費用を抑えたい場合、.comより.xyzや.siteのほうが安価なケースも多いので、取得前に比較してみることをおすすめします。
アプリケーションパスワードの発行
WordPress自動投稿に必要なアプリケーションパスワードは、管理画面から発行します。
- WordPress管理画面 → ユーザー → プロフィール
- 一番下までスクロール
- アプリケーションパスワード名に「blog-agent」と入力
- 「新しいアプリケーションパスワードを追加」をクリック
- 表示されたパスワードを.envに保存(一度しか表示されないので注意)
このパスワードが、wp-post.shがWordPress REST APIに接続するための鍵になります。
まとめ
環境構築でいちばん注意すべきはAPIキーの管理方法です。私の失敗を反面教師に、set -a方式は避け、unset ANTHROPIC_API_KEYを安全装置として必ず組み込んでください。そしてAnthropicコンソールの月間支出上限は、最初から低めに設定しておくことを強くおすすめします。
次の第2章では、実際にどんな構成でエージェントが動くのか——run.shのしくみと記事生成パイプラインを解説する予定です。
この記事で使っているツール
レンタルサーバーはWordPress REST APIが標準で使え、WAF設定も管理画面から簡単に行えるエックスサーバーを使っています。
ドメインはムームードメインで取得しました。エックスサーバーとのネームサーバー設定も数クリックで完了し、初期費用を抑えやすいのが特徴です。










