Appearance
Xツイートまとめ 機能セットアップ
PR #1155 でマージされた「Xツイートまとめ」機能を動作させるには、以下の準備が必要です。
必要なもの
| 項目 | 用途 |
|---|---|
| X API Bearer Token | X(Twitter)からツイートを取得する |
| Claude API Key | Anthropic Claude でツイートを要約する |
1. X API Bearer Token の取得
1-1. X Developer Portal へ登録
- X Developer Portal にアクセス
- X(Twitter)アカウントでサインイン
- 利用規約に同意して Developer アカウントを申請・有効化
1-2. プロジェクトとアプリを作成
- 左メニュー「Projects & Apps」→「Overview」→「+ Add App」をクリック
- アプリ名を入力(例:
slot-kouryaku-summary) - 用途の質問に答えて作成を完了
1-3. Bearer Token を発行
- 作成したアプリの「Keys and tokens」タブを開く
- 「Bearer Token」欄の「Generate」または「Regenerate」をクリック
- 表示されたトークン(
AAAAAAA...の形式)をコピーして、パスワードマネージャなどの安全な場所に保管してください。- Git で追跡されるファイルに直接書き込まない(
.gitignoreで除外しているローカル用 env(例:.localenv)への記載は問題ありません) - Issue / PR / チケット / チャットツール(Slack 等)に貼り付けて共有しない
- 画面キャプチャ(スクリーンショット)や画面共有でトークンが映り込まないようにする
- ログやコンソール出力にトークンを出力しない
- Git で追跡されるファイルに直接書き込まない(
注意: Bearer Token は一度しか表示されません。紛失した場合や、GitHub・チャット等に誤って投稿してしまった場合は、必ず「Regenerate」で再発行し、古いトークンは速やかに無効化してください。
必要な API アクセスレベル
この機能は X API v2 の以下のエンドポイントを使用します:
| エンドポイント | 用途 | 必要な Access Level |
|---|---|---|
GET /2/tweets/search/recent | キーワード検索 | Basic 以上 |
GET /2/users/by/username/:username | ユーザー名 → ID変換 | Free 以上 |
GET /2/users/:id/tweets | ユーザータイムライン取得 | Free 以上 |
注意: 無料プラン(Free)では
tweets/search/recent(キーワード検索)が利用できません。キーワード検索を使う場合は Basic プラン以上が必要です。
2. Claude API Key の取得
2-1. Anthropic Console へ登録
- Anthropic Console にアクセス
- アカウントを作成またはサインイン
- 支払い方法を設定(APIは従量課金制)
2-2. API Key を発行
- 左メニュー「API Keys」→「+ Create Key」をクリック
- キー名を入力(例:
slot-kouryaku-summary) - 「Create Key」をクリック
- 表示された API Key(
sk-ant-api...の形式)をコピーして、パスワードマネージャなどの安全な場所に保管してください。- Git で追跡されるファイルに直接書き込まない(
.gitignoreで除外しているローカル用 env(例:.localenv)への記載は問題ありません) - Issue / PR / チケット / チャットツール(Slack 等)に貼り付けて共有しない
- 画面キャプチャ(スクリーンショット)や画面共有でキーが映り込まないようにする
- ログやコンソール出力にキーを出力しない
- Git で追跡されるファイルに直接書き込まない(
注意: API Key は一度しか表示されません。紛失した場合や誤って外部に漏えいした場合は、速やかに無効化して新しいキーを発行してください。
使用モデルと料金の目安
この機能は claude-3-haiku-20240307(最も低コストのモデル)を使用します。1回の要約生成あたりの入力トークン数はツイート数に依存します(20件で概ね 1,000〜3,000 トークン程度)。
3. WordPress への設定
ローカル環境でも利用できます。 ローカルの WordPress(例: Local by Flywheel)でテーマを有効にし、以下 3-3 の管理画面で API キーを登録すれば、ツイート取得・要約・下書き保存まで同じ手順で試せます。
3-1. デプロイ(新規環境の場合)
本番環境に初めてデプロイする場合は、通常のデプロイ手順を実行してください。
bash
./bin/build.sh3-2. DI キャッシュの削除
core_src/config/di.php に新しいバインディングが追加されたため、キャッシュを削除して再生成させます。
プロジェクトルートから以下のスクリプトを実行してください:
bash
./bin/clear-php-di-cache.sh本番環境など wp-content が標準パスにない場合は、環境変数で指定します:
bash
WP_CONTENT_DIR=/path/to/wp-content ./bin/clear-php-di-cache.sh3-3. WordPress 管理画面で API キーを登録
- WordPress 管理画面にログイン
- 左メニュー「Xツイートまとめ」→「設定」を開く
- 「X API Bearer Token」欄に取得した Bearer Token を入力
- 「Claude API Key」欄に取得した API Key を入力
- 「設定を保存」をクリック
3-4. 接続テスト
設定ページの「接続テスト」ボタンで各 API への接続を確認できます。
- 「X API テスト」: Bearer Token が正しく設定されていれば「接続に成功しました」と表示
- 「Claude API テスト」: API Key が正しく設定されていれば「接続に成功しました」と表示
4. 動作確認(4ステップUIに沿ったフロー)
- Step 1: ツイートを取得(取得)
- 管理画面「Xツイートまとめ」のメインページを開く
- 検索方法(ユーザータイムライン or キーワード検索)を選択
- 検索クエリと取得件数を入力して「ツイートを取得」をクリック
- Step 2: ツイートを確認(プレビュー)
- 取得したツイート一覧が期待どおりに表示されていることを確認する
- Step 3: 要約を生成(要約)
- 必要に応じて対象ツイートの選択や除外を行い、「要約を生成」をクリック
- 生成された要約本文を確認し、必要があれば編集する
- Step 4: 下書きを保存(下書き)
- 記事タイトルを入力し「下書きを保存」をクリック
- WordPress 管理画面の「投稿」→「下書き」に新しい記事が保存されていることを確認する
トラブルシューティング
API キーが設定されていないエラー
「Bearer Token が設定されていません」「Claude API Key が設定されていません」というエラーが表示される場合は、3-3. API キーの登録 の手順を確認してください。
X API 接続テストが失敗する
接続テストは ユーザータイムライン(@X のツイート取得)で行うため、Free プランでも利用可能です。
HTTP 401 Unauthorized の場合
- 使用するトークン: 「Keys and tokens」の 「Bearer Token」 を使用してください。API Key and Secret や Access Token and Secret(OAuth 1.0a / OAuth 2.0 ユーザートークン)ではありません。
- 再発行: Developer Portal で「Bearer Token」の Regenerate を実行し、表示されたトークンをその場でコピーして設定画面に貼り付け・保存してください(Bearer Token は 1 アプリあたり 1 本のため、再発行すると古いトークンは無効になります)。
- プロジェクト・アプリ: 対象プロジェクトの Products で Free(または Basic)が付与されているか、アプリが停止・削除されていないか確認してください。
- トークンの動作確認(curl): トークンが X API で有効かどうか、WordPress 外で確認できます。ターミナルで以下を実行し(
YOUR_BEARER_TOKENを実際のトークンに置き換え)、"id":が含まれる JSON が返ればトークンは有効です。401 が返る場合はトークンかアプリの設定を見直してください。bashcurl -s -w "\nHTTP_CODE:%{http_code}" -H "Authorization: Bearer YOUR_BEARER_TOKEN" "https://api.twitter.com/2/users/by/username/X" - 接続テスト失敗時の詳細なエラー内容は、UI には表示されません。PHP エラーログ(
error_log)に出力される[TwitterFetchService] X API error: ... body=の行を確認してください。
HTTP 429 Too Many Requests の場合
- X API のレート制限に達しています。Free プランではリクエスト数に上限があります。
- 15分ほど時間をおいてから再度ツイート取得を試してください。連続して取得を繰り返すと 429 になりやすいです。
Claude API 接続テストが失敗する
- 「credit balance is too low」と表示される場合
- Anthropic のクレジット残高が不足しています。Anthropic Console の「Plans & Billing」でクレジットの購入またはプランのアップグレードを行ってください。
- HTTP 400 の場合(上記以外)
- API Key が正しくコピーされているか確認してください(先頭の
sk-ant-api03-を含め、前後のスペース・改行なし) - Anthropic Console で該当キーが無効化されていないか確認し、必要なら新規キーを発行して差し替えてください
- API Key が正しくコピーされているか確認してください(先頭の
- Anthropic Console で支払い方法が設定されているか確認してください
- 利用規約・地域制限に抵触していないか確認してください
管理画面に「Xツイートまとめ」メニューが表示されない
DI キャッシュが古い可能性があります。3-2. DI キャッシュの削除 の手順を実行してください。