HOME / BLOG
BLOG

WordPressでGoogle AnalyticsとSearch ConsoleのデータをAIで分析するダッシュボードを作ってみた

デフォルト画像

WordPressでGoogle AnalyticsとSearch Consoleのデータを集められるようになったので、次はAIに分析させるダッシュボードを作ってみます。PV・検索クリック・表示回数・順位を渡して、改善点や次に書く記事案まで出せるようにすると、運営の判断がかなり速くなります。

AIに任せる範囲

  • 伸びている記事の抽出
  • 改善すべき記事の抽出
  • CTRが低い記事のタイトル改善案
  • 追加すべき内部リンク案
  • 次に書くべき記事タイトル案

REST APIでAI解析結果を返す

add_action('rest_api_init', function () {
    register_rest_route('nines/v1', '/analytics/ai-suggestion', [
        'methods' => 'GET',
        'callback' => function () {
            $data = nines_get_recent_analytics_summary();
            $suggestion = nines_generate_ai_analytics_suggestion($data);

            return rest_ensure_response([
                'generated_at' => current_time('mysql'),
                'suggestion' => $suggestion,
            ]);
        },
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        },
    ]);
});

プロンプト

AIには自由に考えさせすぎず、出力形式を固定します。データにないことを断定しない、という条件も必ず入れておきます。

あなたはWordPressメディアの編集長です。
以下のアクセス解析データから、実行しやすい改善点を提案してください。

出力形式:
1. 今伸びている記事
2. 改善すべき記事
3. 追加すべき内部リンク
4. 次に書くべき記事タイトル案を3つ

注意:
- データにないことを断定しない
- PVだけでなく検索クリックと表示回数も見る
- 1項目は短く、すぐ作業できる言い方にする

データ:
{{analytics_json}}

OpenAI APIに投げるPHP例

APIキーはwp-config.phpや環境変数に置き、テーマファイルへ直書きしないようにします。解析に使うデータは集計値だけにして、個人情報を含めない構成にします。

function nines_generate_ai_analytics_suggestion(array $analytics): string
{
    $api_key = defined('OPENAI_API_KEY') ? OPENAI_API_KEY : '';

    if (!$api_key) {
        return 'OPENAI_API_KEYが設定されていません。';
    }

    $prompt = str_replace(
        '{{analytics_json}}',
        wp_json_encode($analytics, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT),
        file_get_contents('/home/xskjnine5611/kjnine.com/public_html' . '/prompts/analytics-suggestion.txt')
    );

    $response = wp_remote_post('https://api.openai.com/v1/responses', [
        'headers' => [
            'Authorization' => 'Bearer ' . $api_key,
            'Content-Type' => 'application/json',
        ],
        'timeout' => 30,
        'body' => wp_json_encode([
            'model' => 'gpt-4.1-mini',
            'input' => $prompt,
        ]),
    ]);

    if (is_wp_error($response)) {
        return 'AI解析の取得に失敗しました。';
    }

    $body = json_decode(wp_remote_retrieve_body($response), true);

    return $body['output_text'] ?? 'AI解析結果を取得できませんでした。';
}

フロント側のボタン

async function loadAiSuggestion() {
  const panel = document.querySelector('#ai-suggestion');
  panel.textContent = 'AIが解析中です...';

  const response = await fetch('/wp-json/nines/v1/analytics/ai-suggestion');
  const data = await response.json();

  panel.textContent = data.suggestion;
}

document.querySelector('#run-ai-analysis').addEventListener('click', loadAiSuggestion);

実運用での注意点

  • AIの提案を自動反映しない
  • 記事削除やタイトル変更は人間が判断する
  • API利用料が増えないようにキャッシュする
  • 解析対象は直近7日・28日などに絞る
  • 機密情報や個人情報を送らない

関連リンク

参考資料

まとめ

AIダッシュボードは、アクセス解析を「確認する画面」から「次の作業を決める画面」へ変えてくれます。まずは改善点と次の記事案を出すだけの小さな機能から作り、慣れてきたら内部リンク提案やリライト候補の自動抽出へ広げると実用的です。