Claude Code からブログ記事を自動投稿したい。でも、スクリプトにパスワードをベタ書きするのは怖い……ということ、ありませんか?
WordPress の REST API を使えば、コマンドラインから記事を下書き投稿できます。
認証には「アプリケーションパスワード」を使うんですが、そのパスワードをどこに保存するかが問題です。
スクリプトに直書き? .env ファイル? どっちもうっかり Git に上げてしまうリスクがありますよね。ドキドキ。
結論からお伝えすると、1Password CLI(op コマンド)を使えば、パスワードを1Password の中に安全に保管したまま、スクリプトから呼び出せます。Touch ID で認証するので、パスワード文字列がファイルに残ることがありません。
この記事では、1Password CLI のインストールから WordPress アプリケーションパスワードの保存、スクリプトでの活用まで、実際に行った手順をお伝えします。
1Password CLI ってなに?
1Password CLI(コマンド名は op)は、ターミナルから 1Password の保管庫にアクセスできるツールです。
ふだんブラウザや 1Password アプリで使っているパスワードを、コマンドラインから取得できます。スクリプトの中で op item get "アイテム名" と書くだけで、保管庫からパスワードを引っ張ってこれる感じです。
しかも、1Password アプリと連携させると Touch ID で認証 できます。マスターパスワードを毎回打たなくていいのが嬉しい。
Step 1: 1Password CLI をインストールする
Homebrew でインストールします。
brew install 1password-cli
インストールできたか確認します。
op --version
バージョン番号(例:2.32.1)が表示されれば OK です。
Step 2: 1Password アプリと CLI を連携させる
ここが大事なポイントです。 1Password CLI 単体でも使えますが、1Password アプリ(デスクトップ版)と連携させることで、Touch ID 認証が使えるようになります。
1Password アプリを開いて、設定 → 開発者 を開きます。


「1Password CLI と連携」にチェックを入れます。
これだけです。ほっ。
設定が有効になると、ターミナルで op コマンドを実行したときに、1Password アプリ経由で認証されるようになります。
Step 3: Touch ID で認証を確認する
連携が有効になったか確認してみます。
op vault list
初回は 1Password のアクセスリクエストが表示されます。


Touch ID で認証すると、保管庫の一覧が表示されます。
マスターパスワードを打たなくていいのが、めちゃくちゃ快適です。毎回パスワードを打つのが面倒で CLI を避けていた人にもおすすめ。
Step 4: WordPress のアプリケーションパスワードを作成する
WordPress の管理画面で、API 用のパスワードを発行します。
- WordPress 管理画面にログイン
- ユーザー → プロフィール を開く
- 下の方にある「アプリケーションパスワード」セクションで、名前に
claude-codeなど適当な名前を入力 - 「新しいアプリケーションパスワードを追加」をクリック
- 生成されたパスワードをコピー
生成されたパスワードは xxxx xxxx xxxx xxxx xxxx xxxx のようにスペース区切りで表示されます。この画面を閉じると二度と確認できないので、次のステップですぐ 1Password に保存してください。
Step 5: 1Password にアイテムを作成する
1Password アプリで新しいアイテムを作成します。
- アイテム名:
my-wordpress-app-password(スクリプトからこの名前で参照します) - ユーザー名: WordPress のログインユーザー名
- パスワード: Step 4 でコピーしたアプリケーションパスワード
1Password アプリの GUI で作成しても、CLI で作成しても、どちらでも OK です。
Step 6: CLI からパスワードを取得してみる
保存したアイテムからユーザー名とパスワードを取得してみます。
op item get "my-wordpress-app-password" --fields label=username --reveal
ユーザー名が表示されます。
op item get "my-wordpress-app-password" --fields label=password --reveal
アプリケーションパスワードが表示されます。
ここでハマりました
--reveal フラグを付けないと、パスワードの値が取得できません。
[use 'op item get xxx --reveal' to reveal]
こんなメッセージが返ってきます。セキュリティのための仕様で、CONCEALED(秘匿)タイプのフィールドは --reveal を明示的に付けないと中身を返さないんです。
スクリプトに組み込むときも --reveal を忘れずに。ここ、地味にハマるポイントです。
Step 7: スクリプトから使う
実際に WordPress REST API を叩くスクリプトでの使い方です。
#!/bin/bash
# 1Password から認証情報を取得
WP_USER=$(op item get "my-wordpress-app-password" --fields label=username --reveal)
WP_APP_PASS=$(op item get "my-wordpress-app-password" --fields label=password --reveal)
# WordPress REST API で下書き投稿
curl -s -X POST "https://example.com/wp-json/wp/v2/posts" \
-H "Content-Type: application/json" \
-u "${WP_USER}:${WP_APP_PASS}" \
-d '{"title":"テスト記事","content":"本文です","status":"draft"}'
スクリプトを実行すると、Touch ID の認証が求められます。指をかざすだけで認証が通り、パスワードが取得されて API リクエストが飛びます。
パスワード文字列はシェル変数に一時的に入るだけで、ファイルには一切残りません。
op コマンドが呼ばれるたびに Touch ID が必要?
デフォルトでは、一定時間(数分〜30分程度)はセッションがキャッシュされます。スクリプト内で op を2回呼んでも、Touch ID は最初の1回だけです。
この仕組みのメリット
- パスワードがファイルに残らない — .env や設定ファイルへの書き込み不要
- Git に上げてしまうリスクがゼロ — そもそもファイルに存在しない
- Touch ID で認証 — マスターパスワードの手打ち不要
- 1Password で一元管理 — パスワードの変更も 1Password 側だけでOK
- 複数スクリプトで共有 — アイテム名を揃えるだけ
注意点
1Password アプリが起動していないと使えません。 CLI は 1Password アプリ経由で認証しているので、アプリが終了しているとエラーになります。
サーバー環境では別の方法が必要です。 Touch ID が使えないサーバーでは、サービスアカウント(1Password Service Accounts)を使います。この記事ではローカル環境での利用に絞っています。
--reveal を忘れると値が取れません。 パスワードフィールドは必ず --reveal 付きで取得してください。
まとめ
Claude Code からブログ記事を投稿する仕組みを作るとき、パスワード管理が一番気を使うところです。
- 1Password CLI(
opコマンド) で保管庫からパスワードを取得 - 1Password アプリと連携 させて Touch ID 認証
--revealフラグ を忘れずに(CONCEALED フィールドの仕様)- パスワードはファイルに一切残らないので Git 事故のリスクがゼロ
WordPress のアプリケーションパスワードに限らず、API キーやトークンの管理にも同じ仕組みが使えます。
お試しください。







