WordPress サイトに AI 質問応答機能を提供するプラグインの POC 実装です。AWS Bedrock(Amazon Nova)と WordPress 検索を活用し、サイト内の記事情報を基に質問に回答します。
- AI チャット機能: Gutenberg ブロックとして提供される対話型 UI
- WordPress 検索連携: 既存の記事データを活用したコンテキスト生成
- AWS Bedrock 統合: Amazon Nova モデルによる高品質な回答生成
- 管理画面: AWS 認証情報の設定とプラグイン管理
- REST API: セキュアな API エンドポイント
- エラーハンドリング: 管理者向け通知・環境検証
- WordPress: 6.8 以上
- PHP: 8.1 以上
- Composer: AWS SDK PHP のインストールに必要
- Node.js: 18 以上(開発時)
- AWS アカウント: Bedrock Amazon Nova へのアクセス権限
poc-wp-rag/
├── poc-wp-rag.php # メインプラグインファイル
├── includes/ # PHP クラスファイル
│ ├── class-admin.php # 管理画面
│ ├── class-rest-controller.php # REST API コントローラー
│ ├── class-aws-client.php # AWS クライアント
│ ├── class-search-service.php # 検索・コンテキスト生成
│ └── class-error-handler.php # エラーハンドリング
├── src/poc-wp-rag/ # Gutenberg ブロック
│ ├── block.json # ブロック定義
│ ├── edit.js # エディター側コンポーネント
│ ├── save.js # フロントエンド側コンポーネント
│ ├── view.js # Interactivity API
│ └── style.scss # スタイル
├── build/ # ビルド後のファイル
├── package.json
└── README.md
- Composer依存関係のインストール(必須)
composer install- NPM依存関係のインストール
npm install- ブロックのビルド
npm run build- 開発サーバーの起動
npm start# まず依存関係をインストール(必須)
composer install
npm install
npm run build
# WordPress 環境を起動(PHP 8.1)
npm run env:start
# または
npx wp-env start
# ブラウザで http://localhost:8888 にアクセス
# 環境を停止
npm run env:stop
# 環境をクリーンアップ
npm run env:clean# まず依存関係をインストール(必須)
composer install
npm install
npm run build
# wp-now をインストール
npm install -g @wp-now/wp-now
# WordPress 環境を起動
wp-now start
# ブラウザで http://localhost:8881 にアクセス
# 注意: PHP 8.0の場合、Composer依存関係エラーが発生する可能性があります- XAMPP/MAMP/Local by Flywheel 等を使用
- WordPress をインストール
- プラグインディレクトリにファイルを配置
-
プラグインの有効化
- WordPress 管理画面 → プラグイン → 有効化
-
AWS 認証情報の設定
wp-config.phpに以下を追加してください:
define('AWS_ACCESS_KEY_ID', 'your_access_key'); define('AWS_SECRET_ACCESS_KEY', 'your_secret_key'); define('AWS_DEFAULT_REGION', 'us-east-1');
- 管理画面でのAWS設定は不要です。
-
ブロックの使用
- 投稿/ページエディター → ブロック追加
- 「AI Q&A Chat」ブロックを選択
- 設定パネルでプレースホルダーとボタンテキストを調整
質問を送信して AI から回答を取得します。
リクエスト例:
{
"question": "このサイトについて教えてください",
"nonce": "wp_rest_nonce_value"
}レスポンス例:
{
"answer": "このサイトは...",
"sources": [
{
"title": "記事タイトル",
"url": "https://example.com/post"
}
],
"timestamp": 1234567890
}- Interactivity API によるリアルタイムチャット
- 状態管理(メッセージ履歴、ローディング状態)
- エラーハンドリング
- 質問入力・送信・回答表示・ローディング・エラー表示
- Nonce 検証: CSRF 攻撃防止
- 入力サニタイズ: XSS 攻撃防止
- レート制限: 1 分間に 10 リクエストまで
- 文字数制限: 質問は 500 文字まで
- 権限チェック: 適切な権限管理
- プラグイン基本構造
- 管理画面(AWS 設定)
- REST API エンドポイント
- Gutenberg ブロック
- チャット UI
- Interactivity API 実装
- セキュリティ機能
- スタイリング
- AWS SDK PHP 統合
- Bedrock Amazon Nova 連携
- WordPress 検索機能
- コンテキスト生成
- エラーハンドリング
- 環境検証機能
- AWS SDK PHP の統合
- Bedrock Amazon Nova との連携
- WordPress 検索機能の活用
- コンテキスト生成機能
- エラーハンドリングの強化
- 環境検証機能
- 管理者向けエラー通知
- レスポンスキャッシュ機能
- 国際化対応
- 統計情報とログ表示
- パフォーマンス最適化
- フロントエンド: React, WordPress Interactivity API
- バックエンド: WordPress REST API, PHP, AWS SDK PHP
- AI: AWS Bedrock Amazon Nova Pro
- 検索: WordPress WP_Query
- スタイル: SCSS
- ビルド: @wordpress/scripts
- WordPress 標準機能を最大限活用
- シンプルで拡張性のあるアーキテクチャ
- セキュリティとパフォーマンスを重視
- ユーザビリティを考慮した UI/UX
- 実用的なエラーハンドリングとログ機能
質問入力 → 検索実行 → コンテキスト生成 → Bedrock API → AI回答 → 表示
↓ ↓ ↓ ↓ ↓ ↓
UI WP_Query Search Service AWS SDK Claude Frontend
POC_WP_RAG_REST_Controller: API エンドポイントPOC_WP_RAG_Search_Service: 検索とコンテキスト生成POC_WP_RAG_AWS_Client: Bedrock API 連携POC_WP_RAG_Error_Handler: エラーハンドリングPOC_WP_RAG_Admin: 管理画面
wp-config.phpに以下の行を追加:
// AWS Bedrock configuration
define('AWS_ACCESS_KEY_ID', 'your_access_key_id');
define('AWS_SECRET_ACCESS_KEY', 'your_secret_access_key');
define('AWS_DEFAULT_REGION', 'us-east-1');# Composer で AWS SDK をインストール(必須)
composer install
# NPM で開発依存関係をインストール
npm install
# ブロックをビルド
npm run build- WordPress 管理画面でプラグインを有効化
- 管理画面 → AI Q&A で設定を確認
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:GetFoundationModel",
"bedrock:ListFoundationModels"
],
"Resource": "*"
}
]
}-
プラグイン有効化時のエラー
- 必ず
composer installを先に実行してください - AWS SDK がインストールされていないとプラグインが動作しません
- 必ず
-
AWS認証エラー
- wp-config.php の AWS認証情報を確認
- IAM権限を確認
-
Composer依存関係エラー
composer installを実行- PHP 7.4以上(推奨: 8.1)
-
プラグイン設定エラー
- 管理画面でエラー通知を確認
- PHP エラーログを確認
このプロジェクトは POC として開発されています。フィードバックや改善提案は歓迎します。
GPL-2.0-or-later