NeccoSpeak – AI チャットボット & 音声チャット

説明

NeccoSpeak は、 Web サイトで使っていただける、サイト内情報を案内する AI エージェントを簡単に構築するためのプラグインです。ご自身の OpenAI API キーで動く AI チャットボット (リアルタイム音声チャット対応) を WordPress サイトに追加します。テキストチャットで訪問者の質問に24時間365日応答し、音声ならサイトに話しかけるだけで、答えを音声で聞くこともできます。

SaaS や追加のアカウント登録、月額費用は不要で、開発者が運営するサーバーも一切介しません。必要なのは WordPress とご自身の OpenAI API キーだけです。利用料金は OpenAI に直接支払い、コストもデータもご自身の管理下に置けます。

音声チャット: テキスト入力せずに、話せる

NeccoSpeak の一番の特徴は AI 音声チャットです。訪問者はハンズフリーで質問し、答えを音声で聞けます。いわばサイトに音声アシスタントが備わるイメージで、アクセシビリティ、モバイル利用、タイプするより話したい人に自然にフィットします。内部的には、サーバーが発行するワンタイムトークンを使って訪問者のブラウザが WebRTC で OpenAI Realtime API に直接接続します。本物の API キーがブラウザに渡ることはありません。音声チャットの利用には HTTPS とブラウザのマイク権限の許可が必要です。

どんな用途に使える ?

  • 24時間365日の FAQ・サポート – 営業時間・料金・サービス内容などのよくある質問に休みなく応答します。
  • オンラインストア – 配送・返品・ストアポリシーについて、ページを探し回らせずその場で質問してもらえます。
  • 多言語の訪問者 – OpenAI のモデルは通常、追加設定なしで訪問者が書いた言語のまま返答します。
  • ブログ・コンテンツサイト – 読者がサイト内に関して質問できる窓口を用意できます。
  • クライアントサイト – 企業は、SaaS アカウントを増やさずに導入できます。クライアントごとに自身のキーを使い、請求もデータも各自が所有します。

チャットボットの人格を設定してご利用いただけます。AI設定タブで役割、ビジネスの内容、営業時間、ポリシー、口調を設定すれば、その通りに答えます。

NeccoSpeak を選ぶ理由

  • 自己完結 – サードパーティの SaaS を介しません。データはあなたのサーバー・訪問者のブラウザ・OpenAI の間だけを流れます。ただし、オプションの追加CSS ボックスから外部 URL を参照した場合はこの限りではありません (詳しくは後述の「外部サービス」を参照)。
  • セキュアな設計 – API キーは AES-256-CBC で暗号化保存され、ブラウザには一切送信されず、管理画面でもマスク表示されます。
  • 設定完了までフットプリントゼロ – 無効時やキー未設定時はウィジェットを一切読み込まず、訪問者による外部通信も一切発生しません。
  • 予算の保護 – IP 単位のレート制限とサイト全体の上限 (チャットは毎時・毎日、音声は毎日) で、ボットや悪質な訪問者による OpenAI 利用料金の高騰を防ぎます。
  • 新モデルへの対応にアップデート不要 – モデルは、OpenAI から自動で取得した、キーで利用可能なモデルの一覧から選びます。Chat Completions API 対応の新しい OpenAI モデルも、プラグインを更新せずにこの一覧に表示されます。

機能

  • テキストチャットウィジェット + 音声チャット
  • 表示ルール: 全ページ/指定 URL のみ/指定 URL を除外
  • タイトル・ウェルカムメッセージ・ブランドカラーをカスタマイズ可能
  • キーで利用可能なモデルの一覧 (自動取得) からモデルを選択
  • アシスタントの役割・目標、会社情報、FAQ、話し方、回答ルールを設定可能
  • IP 単位およびサイト全体のレート制限でコストを抑制

コスト管理

訪問者のチャット利用はご自身の OpenAI アカウントに課金されるため、NeccoSpeak には最初からブレーキが組み込まれています。IP 単位の毎分制限に加え、サイト全体の上限 (テキストチャットは毎時・毎日、音声セッションは毎日) があります。上限に達すると、制限ウィンドウがリセットされるまで以降のリクエストは一時エラーで拒否され、請求額の増加が止まります。
※チャットは IP ごと10件/分+サイト全体200件/時・1,000件/日、音声は IP ごと10件/分+サイト全体200件/日

サイトの情報とツール (オプション)

これらの設定で、アシスタントがあなたのサイトをどこまで使えるかを選べます。ページごとの追加の指示とページ一覧は「会話フロー」タブ、ツールは「モデル・詳細設定」タブ、サイト内コンテンツ検索は「AI設定」タブの「コンテンツ同期」カードにあります。

  • ページ別の指示 (既定で有効) – 投稿・固定ページの編集画面に「NeccoSpeak」ボックスが追加され、そのページ専用の追加指示、ウェルカムメッセージの上書き、ウィジェットの表示・非表示を設定できます。
  • 読み取り専用ツール (既定で有効) – テキストチャットでも音声会話でも、アシスタントがサイト内検索やページ情報の取得を行えるようになります。各ツールを実際に使うには、個別のチェックボックスもオンにしてください。GPT-5.6 以降のモデルでは、テキストチャットではこれらのツールを使いません (音声会話には影響しません)。
  • ページ一覧 (オプション) – 公開済みページの一覧をアシスタントに渡し、訪問者を適切なページへ案内できるようにします。音声会話でもテキストチャットでも、訪問者に求められたときにアシスタントがそのページを訪問者のブラウザで開くこともできます。GPT-5.6 以降のモデルでは、テキストチャットはページを案内するだけで、開きはしません。アシスタントが生成したリンクは自サイトと照合され、存在しないページへのリンクは自動的に取り除かれます。
  • 現在の日時 – サイトのタイムゾーンでの現在日時が、設定不要で常にアシスタントへ渡されます。
  • サイトコンテンツ検索 (オプション) – 投稿・固定ページの抜粋をプラグイン専用のデータベーステーブルに保存し、テキストチャットでも音声会話でも、アシスタントがサイトの内容を直接引用して回答できるようにします。索引の作成にも検索にも外部サービスは使いません。

オプションの2つ (ページ一覧・サイトコンテンツ検索) はオンにするまで動作せず、いずれの機能も新たな外部サービスには接続しません。

音声会話では、検索やページ情報の取得のリクエストは訪問者のブラウザからご自身のサイトに送られ、その結果が音声会話の一部として OpenAI に渡されます (詳しくは後述の「外部サービス」を参照)。

利用条件と免責事項

  • 無保証 – 本プラグインは無料のオープンソースソフトウェア (GPLv2 or later) として、現状有姿 (as-is) で提供され、明示・黙示を問わずいかなる保証もありません。無償での提供のため、開発者 (neccos) はサポートや SLA、継続提供の義務を負いません。
  • OpenAI との契約・料金 – 本プラグインはご自身の OpenAI API キーで動作し、AI の利用には OpenAI の規約・ポリシーが適用されます。利用料金は OpenAI からご自身のアカウントへ直接請求されます。開発者が運営するサーバーやサービスは存在せず、開発者は OpenAI との契約・請求・サービスに一切関与しません。
  • データの流れ – チャット本文と音声はご自身のキーで OpenAI に送信され、OpenAI の規約に基づいて処理されます。送信先は OpenAI のみで、開発者 (neccos) がこれらのデータを受け取ることは一切ありません。 プラグインが WordPress 内に保存するのは、管理者が入力した設定 (API キーは暗号化) と、レート制限カウンターや監査ログなどの運用データだけで、いずれもアンインストール時に削除されます (詳しくは後述の「サイトに保存されるデータ」を参照)。
  • サイト運営者の責任 – 次の3点はサイト運営者の責任です: (1) OpenAI の規約を守ること、(2) 入力内容が OpenAI に送信されることを訪問者に知らせ、GDPR などの適用法が求める同意を得ること、(3) ご自身のプライバシーポリシーなど関連文書を整備すること。あわせて、チャットや音声に機微な情報を入力しないよう利用者へご案内ください。
  • AI 応答の内容 – AI が生成する応答の正確性・適法性・有用性は保証されません。本プラグインと AI 応答の利用は、サイト運営者および利用者自身の責任でお願いします。

外部サービス

本プラグインは、AI 応答の生成のために外部サービス OpenAI API (api.openai.com) と通信します。これはプラグインの中核機能であり、AI チャット/音声機能の利用時に通信が発生します。音声会話は OpenAI Realtime API への直接接続 (WebRTC) で、本プラグインは既定で STUN/TURN サーバーを使用しません (第三者サーバーへの追加通信は発生しません)。

オプションの「リンクチェック」設定がオンの場合、本プラグインは 自サイト自身 にもリクエストを送ります。これは、アシスタントが生成したリンクが実在するページかどうかを、訪問者に表示する前に確認するためのもので、送信先は自サイトのみです (第三者に送られることはありません)。プラグインが送るリクエストは、OpenAI 宛ても自サイト宛ても共通の許可リストでチェックされ、DNS 解決の結果がプライベート IP やリンクローカル IP を指す場合は拒否されます。自サイト宛てのリクエストだけはこの IP チェックの対象外となるため、Docker やリバースプロキシの内側、イントラネット上のサイトでも問題なく動作します。なお、サイトコンテンツ検索・読み取り専用ツール・Contact Form 7 連携は、いずれも外部サービスには接続せず、ご自身のサーバーと訪問者のブラウザの中だけで完結します。

OpenAI API

  • 送信先エンドポイント:
    • https://api.openai.com/v1/chat/completions (テキストチャット応答の生成。PHP プロキシ経由)
    • https://api.openai.com/v1/realtime/client_secrets (音声会話用のワンタイムトークンの発行。PHP OpenAI)
    • https://api.openai.com/v1/realtime/calls (音声会話の WebRTC セッション確立。ブラウザから OpenAI へ直接送信)
    • https://api.openai.com/v1/models (使えるモデルの一覧の取得。管理者が「モデル・詳細設定」または「音声設定」タブを開いたときのみ。6時間キャッシュ。PHP OpenAI)
  • 送信データ (テキストチャット): 訪問者がチャット欄に入力したメッセージ本文、会話履歴、AI設定の内容から組み立てた指示 (有効にしている場合は、ページごとの案内、ページ一覧、サイトコンテンツの抜粋、ツールの結果も含みます)、使用中のモデル名、temperature と応答の最大長 (既定値は 1.0 と 800 トークン)。これらは訪問者がメッセージを送信した時点で、PHP プロキシ経由で OpenAI に送信されます。サーバー側マスキング (セキュリティタブの PII 保護。新規インストールでは既定でオン、既存のサイトは現在の設定のまま) がオンの場合、訪問者のメッセージに含まれる、選択した種類の個人情報 (メールアドレス・電話番号・クレジットカード番号) は送信前に置き換えられます。8〜15桁の数字の並びは電話番号として扱うため、日付や注文番号などもマスクされることがあります。アシスタント側のメッセージはマスクされません。
  • 送信データ (モデル一覧の取得): 管理者 (manage_options 権限) が設定画面でモデル一覧の取得を使ったときだけ、API キーを認証に使ってサーバーサイド (PHP) から OpenAI にリクエストが送られます。送信されるのは認証情報のみで、チャット本文や訪問者のデータは送信されません。レスポンス (モデル ID の一覧) はサーバーサイドで一時的にキャッシュされます。これはモデルのメタデータの取得であり、OpenAI のトークン課金は発生しません。API キーがブラウザに渡ることはありません。
  • 送信データ (音声会話が有効な場合): 設定から組み立てた音声セッション用の指示を含むワンタイムトークンの発行リクエスト (PHP OpenAI) に加え、訪問者のマイク音声が WebRTC でブラウザから OpenAI に直接送信されます。送信は訪問者が音声会話を開始した時点で発生します。音声モード中に入力したテキストと、音声アシスタントによるサイト内検索・ページ情報の取得・サイトコンテンツ検索の結果 (ページのタイトルと抜粋。URL は含みません) も、同じ接続でブラウザから OpenAI に送信されます。これらの検索は、訪問者のブラウザからご自身のサイトの REST エンドポイント /neccospeak/v1/tool へのリクエストで行われます。このエンドポイントは OpenAI に接続せず API キーも使わず、レート制限 (IP ごと30回/分、サイト全体2,000回/日) があります。禁止ワードとサーバー側の PII マスキングは音声モードには適用されません。チェックされるのは、音声アシスタントがこれらのツールに渡す検索キーワードだけです。
  • 送信のタイミング: 通信が発生するのは、訪問者がメッセージを送信するか音声会話を開始したときだけです。プラグインが未設定 (無効またはキー未設定) の場合、通信は一切発生しません。
  • 目的: 入力に対する AI 応答 (テキストまたは音声) を生成して返すため。

OpenAI に送信されたデータには OpenAI の規約・ポリシーが適用されます。ご利用前に必ずご確認ください。

  • 利用規約: https://openai.com/policies/terms-of-use/
  • プライバシーポリシー: https://openai.com/policies/privacy-policy/
  • API データ利用ポリシー: https://openai.com/policies/api-data-usage-policies/

追加CSS ボックス (オプション)

ウィジェット設定タブの追加CSS ボックス (編集には「unfiltered_html」権限が必要) は、管理者がご自身のホスティング先の画像・フォントを参照できるよう、url(https://…) や @font-face { src: url(https://…) } を意図的に許可しています。そのため、管理者がこうしたルールを追加すると、フロントエンドのページ表示のたびに、訪問者のブラウザが CSS 内で参照されたサードパーティのホストからそのリソースを取得することがあります。これは完全に管理者の制御下にあります。プラグインは既定では追加CSS を一切含んでおらず、管理者が明示的に追加しない限り、サードパーティのホストに接続することはありません。

サイトに保存されるデータ (外部サービスなし)

「会話を復元」が有効な場合、会話は訪問者自身のブラウザ (sessionStorage) に一時的に保存され、同じタブ内でのページ遷移をまたいで維持されます。タブを閉じると消去されます。「初回表示モーダル」の免責事項が有効な場合は、true/false の「確認済み」フラグのみが保存されます (設定に応じて localStorage または sessionStorage)。どちらもサーバーへ送信されることはなく、訪問者を特定できる情報も一切保存しません。

ご自身の WordPress データベース内。 本プラグインは、ご自身のサーバー上にある独自の4つのデータベーステーブルに運用記録を保持することもあります。ここにあるものが外部へ送信されることは一切ありません — 開発者へも、OpenAI へも、いかなる第三者へも送信されません。いずれのテーブルも、プラグインをアンインストールすると削除されます。

  • 設定の監査ログ (既定で有効): 管理者がどの設定を、いつ、誰が変更したかを記録します。API キーと追加CSS は伏せ字のプレースホルダーとして記録され、実際の値が記録されることはありません。90日を過ぎた記録は削除されます。
  • 設定のバージョン履歴 (常に有効): 比較やロールバックができるよう、設定の直近30件までのスナップショットを保持します — API キーがスナップショットに含まれることはなく、ロールバックは変更履歴タブからワンクリックで行えます。
  • トークン使用量の集計 (既定で有効): 日別・モデル別に、API レスポンスから記録されたリクエスト数とトークン数です。訪問者に関するデータはいかなる種類も含まれません。
  • 匿名の利用イベント (既定では無効): ウィジェットの表示回数、メッセージ数、音声開始回数、CTA クリック数です。
  • サイトコンテンツ索引 (既定では無効): オプションのサイトコンテンツ検索をオンにすると、ご自身の公開済み投稿・固定ページの抜粋が分割され、プラグイン自身のデータベーステーブルに保存されるため、アシスタントがそれらを引用できるようになります。ここにあるものが送信されるのは、実際に回答内で引用されたときに、その回答のプロンプトの一部として OpenAI に送られる場合だけです — プロンプトの他の部分が送信されるのと同じ扱いです。

これらのテーブルのいずれにも、IP アドレス、Cookie、訪問者を識別する情報は一切保存されません。利用イベントは、訪問者自身のタブ内 (sessionStorage) にのみ存在し、そのタブを閉じると消えるランダムな値でグルーピングされます — これを使って、後日の訪問や別のタブで同一人物を再識別することはできません。

スクリーンショット

インストール

  1. 管理画面の「プラグイン」「新規追加」からインストール (またはアップロード) し、有効化します。
  2. 管理画面サイドバーのトップレベルメニュー「NeccoSpeak」を開き、ご自身の OpenAI API キーを貼り付けます。キーは暗号化して保存され、以後はマスク表示されます。
  3. 必要に応じて、モデル、アシスタントの役割や指示、ウェルカムメッセージ、ブランドカラー、表示ルールを設定します。
  4. 以上です。有効化してキーを設定すれば、表示ルールに一致するページでチャットウィジェットが動き始めます。音声会話は既定で有効です (HTTPS 必須。テキストチャットにも HTTPS を強く推奨します) — 不要な場合は音声設定でオフにできます。

設定が完了するまでは、ウィジェットの読み込みも外部通信も一切発生しません。

FAQ

開発者のアカウントやサーバーは必要 ?

いいえ。NeccoSpeak は自己完結型で、必要なのは WordPress とご自身の OpenAI API キーだけです。

本当に無料 ?

プラグイン自体は無料のオープンソース (GPL) です。AI の利用分は、ご自身のキーを通じて OpenAI の料金体系でご自身のアカウントに課金されます。詳細は OpenAI の公式料金をご確認ください。

チャットボットはサイトの内容を知っている ?

既定では、AI モデルと、AI設定タブで入力した内容に基づいて回答します。営業時間・価格・ポリシーなどの重要な情報は会社情報や FAQ 設定に書いておけば活用されます。オプションのサイトコンテンツ検索 (AI設定タブのコンテンツ連携カード) とページ一覧 (会話フロータブのナビゲーション設定にある URL マップ) を有効にすると (どちらも既定では無効)、ご自身の公開済み投稿・固定ページから抜粋を引用し、適切なページへ訪問者を案内することもできます。

API キーは安全に扱われる ?

キーは AES-256-CBC でデータベースに暗号化保存されます。フロントエンド (ブラウザ) には一切出力されず、管理画面でもマスク表示されます。

訪問者に OpenAI 料金を使い込まれない ?

チャットエンドポイントには IP 単位・毎分のレート制限とサイト全体の毎時・毎日の上限があり、音声トークン発行には IP 単位・毎分の制限とサイト全体の毎日の上限があります。上限を超えると応答は一時的に制限されます (503)。このほか、表示ルールでウィジェットを出すページを絞れば悪用の機会自体を減らせます。チャット API は自サイトのページ以外からのリクエストを受け付けない仕組み (同一オリジンチェック) も備えていますが、これは偽装可能なため確実な防御はレート制限が担います。

音声チャットに必要なものは ?

音声チャットは既定で有効です (音声設定タブの「音声機能」) — あとはサイトを HTTPS (SSL) で配信するだけです。利用時にブラウザのマイク権限が要求されます。音声はワンタイムトークンを使って WebRTC でブラウザから OpenAI に直接送られ、API キーがブラウザに渡ることはありません。

サイトは重くなる ?

未設定 (無効またはキーなし) の間は、フロントエンドには何も読み込まれません。稼働後も、表示ルールに一致するページにだけ小さなウィジェットを読み込みます。

新しいモデルが出たらプラグインの更新が必要 ?

いいえ。モデルは、設定画面が OpenAI から自動で取得する、API キーで現在利用できるモデルの一覧から選びます (メタデータのみで、トークン課金はありません)。

応答はストリーミング表示される ?

はい。応答は一度に全部ではなく、タイプライターのように少しずつ表示される仕様です。ブラウザがすでに受信済みの応答を徐々に表示する仕組みのため、サーバー側の追加処理は不要です。OS の「モーション低減」設定にも対応しています。

コンテンツ検索でページの内容が OpenAI に送られる ?

いいえ — 検索自体はご自身のサーバー上で、ご自身のデータベースに対して完結します。実際に訪問者の質問に関連すると判断されて選ばれた抜粋だけが、プロンプトの他の部分と同じように OpenAI に送信されます (音声会話では、検索結果として訪問者のブラウザから OpenAI に渡されます)。

オプションのツールは、サイトの何かを変更できる ?

いいえ。2つのツール (サイト内検索・ページ検索) はどちらも読み取り専用で、アシスタントは情報を調べるだけで、何かを作成・編集・削除することは一切できません。訪問者のためにページを開く動作や Contact Form 7 のフォームへの自動入力は訪問者自身のブラウザ内だけで行われ、フォームを代わりに送信することはありません。現在の日時はツールではなく自動的に渡される情報なので、そもそも変更できるものがありません。

自分のネットワークで音声がつながらないのはなぜ ?

音声はブラウザを OpenAI に直接接続します (WebRTC)。OpenAI の Realtime API は STUN/TURN を必要としないため、本プラグインは既定で STUN/TURN サーバーを使いません。ごく一部の制限の強いネットワーク (UDP 遮断、対称 NAT など) では音声が接続できない場合があります。その場合はテキストチャットをご利用ください。上級者は window.NECCOSPEAK_RTC_ICE_SERVERS で独自の STUN/TURN サーバーを設定できます (その場合、その接続先は開示すべき対象になります)。

Android で音声の音量をゼロまで下げられないのはなぜ ?

これは Android 版 Chrome の仕様であり、本プラグインが制御しているものではありません。音声通話中は、その音声がデバイスの通話音量に紐づけられ、Android はこれを完全な無音まで下げさせません。通話中にアシスタントの声を完全に消したい場合は、デバイスの音量ボタンではなく、ウィジェットの音声コントロールバーにあるスピーカーミュートボタンをお使いください。どの端末でもアシスタントの声を完全にミュートできます。

プラグインを更新したのに、ウィジェットが以前のバージョンのまま表示・動作する

古いキャッシュが残っていることが原因です。キャッシュ系プラグイン (ページキャッシュのほか、「JS の圧縮・結合」用のキャッシュがあればそれも) と、サイトの前段にある CDN のキャッシュをすべて削除してから、ページをハードリロードしてください。ウィジェットの JavaScript は複数のファイルに分かれており、ブラウザや CDN がそれぞれを個別にキャッシュするため、一部のファイルだけが更新後も古いまま残ることがあります。ブラウザの開発者コンソールに「Version mismatch」という警告が出ていれば、この状態が起きているサインです。

評価

2026年8月24日
最高に使いやすく、デザインも自由NeccoSpeak は、サイト内の情報を案内する AI エージェントを、Web サイトの訪問者向けに簡単に導入できる WordPress プラグインです。ご自身の OpenAI API キーを使って動作する、リアルタイム音声チャット対応の AI チャットボットを WordPress サイトに追加できます。テキストチャットで訪問者からの質問に24時間365日対応できるほか、サイトに話しかけるだけで回答を音声で聞くこともできます。SaaS の契約や追加のアカウント登録、月額費用は不要です。開発者が運営するサーバーを経由することもありません。必要なのは WordPress とご自身の OpenAI API キーだけです。OpenAI の利用料金はご自身で直接支払うため、コストもデータもご自身で管理できます。
0件のレビューをすべて表示

貢献者と開発者

NeccoSpeak – AI チャットボット & 音声チャット はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。

貢献者

“NeccoSpeak – AI チャットボット & 音声チャット” は1ロケールに翻訳されています。 翻訳者のみなさん、翻訳へのご協力ありがとうございます。

“NeccoSpeak – AI チャットボット & 音声チャット” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログを RSS で購読してみてください。

変更履歴

0.3.2

  • Navigation: the assistant can open any public page of your site it finds by search — not only the pages in the page list. Only published, public, non-excluded pages on your own site are allowed.
  • Answers: by default the assistant answers in one to three short sentences based on your site’s content and points to the matching page, instead of giving general advice. Your own “level of detail” setting always wins.
  • Content index: it now builds itself automatically, includes custom post types (services, case studies, news and so on), and keeps the latest posts ready for “what’s new” questions. New “Content types” checkboxes let you exclude whole post types.
  • Voice: after moving to another page, a “Continue talking” button resumes the conversation. The microphone is never turned on automatically.
  • Reliability: temporary upstream errors (5xx, network) are retried once automatically in the chat and in the browser. The assistant no longer claims to know live information such as weather or the current time.
  • AI role templates: eight ready-made roles for corporate sites (reception, support, sales, recruiting, visit booking, press and partners, FAQ, knowledge search) that also fill in the goals.

0.3.1

  • 音声チャット: 最初のあいさつを、訪問者のブラウザの言語で話すようにしました (分からないときはサイトの言語)。音声でもサイト内検索とページ情報の取得が使えるようになり、AI が最初に今のページを確認するので、ページごとの追加の指示が効くようになりました。
  • テキストチャット: 「ページへ移動」で実際にそのページを開くようにしました。今のページを URL から判別するので、ページごとの追加の指示が効きます。また、ツールに対応していないモデル (GPT-5.6 以降など) で「通信に問題が発生しました」と出ていた問題を直しました — 自動でツールなしで送り直します。
  • Contact Form 7: 音声とアクションボタンのどちらからでも自動入力できるようにしました。入力後はフォームまでスクロールし、入力した欄を少しの間だけ強調します。
  • 個人情報の伏せ字: 電話番号やカード番号の見落としを直し、隣の数字まで伏せないようにしました。サーバー側での伏せ字を「セキュリティ」タブに表示し、新しく入れたサイトでは最初から ON にしました。
  • 管理画面: すべての項目名と説明を、初めての方にも分かる言葉に書き直しました (英語・日本語とも)。変更履歴・ダッシュボード・公開バーでは、内部の名前ではなく項目名を表示します。初期設定のチェックリストとタブへのリンクも、今のタブ構成に合わせました。
  • 修正: 回答のばらつき (temperature)・回答の最大の長さを保存した値で表示するようにし、「スマホ専用の設定」のスイッチが正しく保存されるようにしました。「テキストに戻る」ボタンの名前も実際の動きに合わせました。
  • 翻訳: WordPress.org の言語パックがない、または足りないときは、プラグイン同梱の日本語訳を使います。

0.3.0

  • 管理画面: 9つのタブ (ダッシュボード、ウィジェット設定、AI設定、会話フロー、音声設定、モデル・詳細設定、セキュリティ、プレビュー、変更履歴) を軸にした構成へ作り直し、下書き 公開のワークフローを導入しました — 自由に編集し、変更点の要約を画面上部に固定表示で確認しながら、準備ができたら公開できます。
  • 設定のバージョン履歴は直近30世代までワンクリックでロールバックでき、誰が・何を・いつ変更したかを記録する完全な監査ログに裏付けられています。
  • プレビュータブはサンドボックス化された iframe 内でウィジェットをその場で描画するため、編集中に見える内容が実際のフロントエンドと一致します。
  • アイコンピッカー、CTA (コールトゥアクション) エディター、API キーで利用可能な音声モデルのワンクリック取得を追加しました。
  • チャットウィジェット: ランチャーが iframe 内で開く、同一オリジンのドキュメント (?neccospeak_frame=1) として作り直し、専用の Content-Security-Policy を持たせました — スクリプトの実行は同一オリジンとリクエストごとの nonce に限定され、ネットワークアクセスもこのサイトと api.openai.com のみに制限されます。
  • クイックアクションと CTA ボタンを備えたホーム画面、Markdown 形式の応答、ページ遷移をまたぐセッションの復元、テーマ・ランチャーの全面カスタマイズに対応しました。
  • ウィジェット用に Bootstrap Icons 1.13.1 をローカルに同梱しました (詳しくは前述の「サードパーティ製リソース」を参照) — CDN へのリクエストはありません。
  • 音声チャット: 画面を切り替えても音声セッションが最初から再接続されることなく維持されるようになりました。訪問者は通話中にマイクデバイスを切り替えられます。音声は訪問者自身の言語に追従するようになりました。また、ブラウザタブが非アクティブな間は音声会話がブロックされるようになりました。
  • 音声関連の修正: 再接続時に挨拶が重複する問題、会話履歴の順序が乱れる不具合、マイクボタンが稀に再表示されない問題、ステータス表示をオフにした際のクラッシュを修正しました。
  • コンテンツとツール: ページ別の指示、オプションのページ一覧、オプションの読み取り専用ツール (サイト内検索、ページ検索)、サイト内検索用のオプションのサイトコンテンツ索引、Contact Form 7 連携を追加し、現在の日時をテキストチャット・音声会話の両方へ常に自動的に渡すようになりました。
  • 更新前に知っておくべき変更点:
    1. 設定画面が「設定 NeccoSpeak」から、管理画面サイドバーの独立したトップレベルメニュー「NeccoSpeak」へ移動しました — ブックマークをお使いの場合は更新してください。
    2. 更新後はページキャッシュと CDN のキャッシュを削除してください。 以前の assets/widget.js / assets/widget.css フロントエンドをまだ参照している古いキャッシュ済み HTML は、キャッシュを消去するまで 404 になります。
    3. 会話ログのサーバーサイド保存機能は完全に撤去され、そのデータベーステーブルは更新時に自動的に削除されます。0.1.1 にはこの機能自体がなかったため、既存データが失われることはありません。
    4. 訪問者によるフィードバック評価、初回訪問時のプライバシー通知、「現在の日時」ツール設定は、いずれも撤去されました。その代わり、日時は常に自動的に渡されるようになったため、機能の後退ではなく純粋な改善です。
    5. 従来のウィジェットフロントエンドは、上述の iframe + CSP 方式に置き換えられました。
    6. ブラウザタブが非アクティブな間は音声会話がブロックされるようになりました (新しい挙動です。詳しくは前述の「音声チャット」を参照)。
    7. 音声チャット、クイックアクション/CTA、読み取り専用ツール、ページ別の指示、Contact Form 7 連携は既定で有効になりました — 不要な場合はそれぞれの設定タブでオフにできます。
    8. API キー、表示ルール、外観設定、レート制限は、いずれもそのまま変更なく引き継がれます。

0.1.1

  • 国際化: 管理画面を含むすべてのユーザー向け文字列のソース言語を英語にし、プラグイン全体を翻訳可能にしました。
  • 日本語 (ja) 翻訳を同梱しました。日本語で運用中のサイトでは管理画面もウィジェットも完全にローカライズされたままです。
  • 絵文字グリフ (ランチャー・閉じる・マイク) を、ブランドカラーとボタン状態に追従する鮮明なインライン SVG アイコンに置き換えました。
  • チャット・音声・セキュリティ・データ処理に機能変更はありません。

0.1.0

  • 初回リリース。
  • 自己完結型・BYO キーの軽量 AI チャットウィジェット。
  • テキストチャット (軽量な PHP プロキシ経由で OpenAI に中継し、応答を一括で返却)。
  • オプションの音声会話 (既定では無効。ワンタイムトークン + WebRTC でブラウザが OpenAI に直接接続。HTTPS 必須)。
  • API キーは AES-256-CBC で暗号化保存。フロントエンドには送信せず、管理画面ではマスク表示。
  • IP 単位のレート制限、表示ルール (全ページ/指定 URL のみ/除外)、外観カスタマイズ。
  • 未設定時は読み込みも外部通信もゼロ。