PIN認証
8桁英数のPIN認証で不正アクセスを防止。ファイルベースのセッション管理で有効期限2時間のトークンを発行。
Briefing Utility with Transcription, Live Exchange & Reporting
OpenAI APIを活用した、軽量ブラウザベースのAIテキストチャット。
会話からの自動要約・メール送信まで、ワンストップで完結。
BUTLERは、OpenAI Chat Completions APIを活用したブラウザベースのAIテキストチャットアプリケーションです。 Webブラウザさえあれば特別なインストールなしに利用でき、PHPによる軽量なサーバーサイド構成で手軽にデプロイ可能です。
アクセス制御には8桁英数字のPIN認証を採用しており、認証後はAIとのリアルタイムなテキスト対話が可能です。 応答はSSE(Server-Sent Events)を用いた擬似ストリーミング方式で表示され、まるでAIがタイピングしているかのような自然な体験を実現します。
また、会話終了後にはAIが自動で要約を生成し、その内容をワンクリックでメール送信することができます。 会議の議事録やヒアリング結果のレポートなど、ビジネスシーンでの活用を想定した機能をワンストップで提供します。
8桁英数のPIN認証で不正アクセスを防止。ファイルベースのセッション管理で有効期限2時間のトークンを発行。
OpenAI GPT-4oモデルとのリアルタイムテキスト対話。会話コンテキストを保持した自然な対話体験。
サーバーサイドで生成した応答を3文字ずつ15ms間隔で送信。タイピングのようなリアルタイム表示を実現。
会話終了後にAIが自動で要約を生成。システムプロンプト内の要約ルールにも対応し、フォーマットのカスタマイズが可能。
生成した要約をワンクリックでメール送信。会議の議事録やヒアリング結果の共有に活用可能。
対話開始前にシステムプロンプトを自由に設定可能。AIの振る舞いやトーンを用途に合わせてカスタマイズ。
8桁英数PINでアクセス認証
AIの振る舞いを指示するプロンプトを入力(任意)
AIとリアルタイムにテキスト対話
会話の自動要約を確認し、メールで送信
| レイヤー | 技術 | 備考 |
|---|---|---|
| フロントエンド | HTML / CSS / JavaScript | SPA構成、外部FW不使用 |
| バックエンド | PHP 8.x | APIエンドポイント提供 |
| AI API | OpenAI Chat Completions API | GPT-4oモデル |
| 認証 | PIN + ファイルベーストークン | 有効期限2時間 |
| ストリーミング | Server-Sent Events (SSE) | 擬似ストリーミング方式 |
| メール送信 | PHP mail() / SMTP | 要約テキスト送信 |
| データ保存 | JSONファイル | セッション・会話履歴 |
butler/
├── index.html メインHTML(SPA)
├── css/
│ └── style.css スタイルシート
├── js/
│ └── app.js フロントエンドロジック
├── api/
│ ├── auth.php PIN認証API
│ ├── chat.php チャットAPI(SSE)
│ ├── summary.php 要約生成API
│ └── mail.php メール送信API
├── data/
│ ├── sessions/ セッショントークン保存
│ └── logs/ 会話ログ保存
├── config.php 設定ファイル(APIキー等)
└── .htaccess アクセス制御
/api/auth.php
PINコードを検証し、認証トークンを発行します。
{
"pin": "A1b2C3d4"
}
{
"success": true,
"token": "a3f8c1...e7b2d9",
"expires_in": 7200
}
/api/chat.php
ユーザーのメッセージをAIに送信し、SSEでストリーミング応答を返します。
{
"token": "a3f8c1...e7b2d9",
"message": "今日の会議の議題を整理してください",
"system_prompt": "あなたは優秀な秘書です。",
"history": []
}
data: {"chunk": "かし"}
data: {"chunk": "こま"}
data: {"chunk": "りま"}
...
data: {"done": true}
/api/summary.php
会話履歴からAIが要約テキストを生成します。
{
"token": "a3f8c1...e7b2d9",
"history": [
{"role": "user", "content": "..."},
{"role": "assistant", "content": "..."}
]
}
{
"success": true,
"summary": "【要約】本日の会議では..."
}
/api/mail.php
生成された要約テキストを指定のメールアドレスへ送信します。
{
"token": "a3f8c1...e7b2d9",
"to": "user@example.com",
"subject": "会議要約レポート",
"body": "【要約】本日の会議では..."
}
{
"success": true,
"message": "メールを送信しました"
}
OpenAI APIキーはサーバーサイド(config.php)にのみ保管され、フロントエンドには一切露出しません。クライアントからAPIキーへ直接アクセスすることは不可能です。
8桁英数字のPIN認証後、暗号学的に安全なランダムトークンを発行。トークンには2時間の有効期限が設定され、期限切れ時は再認証が必要です。
セッショントークンはPHPの random_bytes() 関数により生成され、予測困難な暗号学的に安全な乱数を使用しています。
フロントエンドでのリアルタイムバリデーションに加え、バックエンドでも全入力値を検証。二重チェックにより不正データの混入を防止します。
DOM操作には textContent および createElement() を使用し、innerHTML の直接利用を回避。スクリプトインジェクションのリスクを排除しています。
通信経路の暗号化のため、本番環境ではHTTPSでの運用を強く推奨しています。PIN・トークン・会話データを安全に保護します。
| 項目 | 要件 |
|---|---|
| サーバー | PHP 8.0以上(8.1以上推奨) |
| PHP拡張 | curl, json, mbstring, openssl |
| Webサーバー | Apache(mod_rewrite推奨)/ Nginx |
| 外部API | OpenAI API キー(Chat Completions API対応) |
| メール送信 | PHP mail() が使用可能な環境、またはSMTP設定 |
| ブラウザ | Chrome / Edge / Firefox / Safari(最新版推奨) |
| 通信 | HTTPS推奨(SSL/TLS証明書) |
| ディスク | セッション・ログ保存用の書き込み権限(dataディレクトリ) |