お客様アンケートをQRコードで集めるシステムを、Googleの口コミ規約を守る作りでAIと1日で作った記録
この記事は バイブコーディング的仕事ブログ(VWork Blog)へ移りました。 最新版はこちらです → https://exbridge.jp/vibeblog/2026-10-23-okyakusama-anketo-qr-google-kiyaku.html
名古屋でAIシステムの開発をしている小嶋です。飲食店・美容室・クリニック・宿のための「Kurage お客様アンケート」を作りました。席やレジに置いたQRコードから、お客様が1分で答えるアンケートです。この記事は、その作り方の記録です。
Kurage お客様アンケート(デモ) https://proto.exbridge.jp/kanketo/#ref=vibeblog-kanketo
きっかけ:AIに口コミを書かせるサービスは、規約に触れかねない
最初に相談されたのは、「アンケートに答えると、AIが口コミの文章を作り、それをGoogleマップに貼ってもらう仕組み」でした。実際に、似たサービスはいくつも出ています。
作る前に、Googleの「マップユーザーの投稿コンテンツに関するポリシー」を読みました。そこには、販売者が次のことをするのを禁じると書かれています。
- 肯定的なクチコミを選択的に募る
- インセンティブと引き換えに投稿を頼む
- 特定のコンテンツを含めるよう依頼する
「満足したお客様だけをGoogleに案内する」作りは1つ目に、「お店が用意したAIが文章を書く」作りは3つ目に、正面からぶつかります。違反すると、口コミが消されたり、ビジネスプロフィールが停止されたりすることがあります。罰を受けるのは、導入したお店の側です。
そこで、口コミを集めるシステムではなく、お客様の声を集めてお店の改善に使うシステムとして作り直しました。Googleへの案内は、おまけの扱いです。
決めたこと:AIにさせてよいのは「整える」まで
作りの決めごとは3つです。
- Googleへの案内は、評価の高い低いに関係なく、答えた人全員に同じボタンで出す。
- 口コミと引き換えの特典は付けない。 画面にも「特典はありません」と書く。
- AIは、お客様が自由記入に書いた言葉だけを整える。 ほめ言葉・数字・お店が狙う言葉は足さない。不満はそのまま残す。
3つ目は、プロンプトで頼むだけでは守られません。AIはときどき言葉を足します。そこで、AIが返した文を機械で確かめる関数を置きました。次のどれかに当たったら、AIの文は出さず、お客様が書いたひと言をそのまま返します。
- 長さが、もとの言葉の2.2倍を超える
- もとの言葉に無い数字が入っている
- 「おすすめ」「最高」「recommend」「추천」など、もとの言葉に無いほめ言葉が入っている
- もとの言葉との重なり(日本語・中国語・韓国語は2文字の並び、英語は単語)が、日本語などで35%、英語で40%に届かない
たとえば「パスタはおいしかったけど、料理が出てくるまで30分くらい待った」は、「パスタはおいしかったですが、料理が出てくるまで30分ほど待ちました。」に整いました。待ち時間の不満は、弱めずに残っています。
作る途中で見つけた3つの落とし穴
1. PHPの trim() に「」を渡すと、日本語が文字化けする
AIの返事の前後に付く「」を取ろうとして、trim($out, "「」") と書きました。ところが trim() はバイト単位で削るので、「」を作るバイトと同じバイトで始まる文字(たとえば「パ」)の頭まで削ってしまい、文字化けした結果、JSONにできずに空の返事になりました。正規表現(/u)で前後だけを取る形に直しました。
2. 出力の言語を指定しないと、英語の感想を日本語に訳す
アンケートは日本語・英語・中国語・韓国語に対応しています。英語の感想「coffee was good, a bit noisy near the door」を渡すと、AIは日本語に訳して返しました。プロンプトは日本語で書いていたので、それに引っぱられたようです。
このときは、上の確かめる関数が「もとの言葉と重ならない」と判定して止めたので、お客様に訳文は出ていません。そのうえで、AIに渡す文の頭に「出力の言語:English(訳さない)」と書くようにしました。4つの言語とも、もとの言語のまま整うことを確かめています。
3. 選択肢を言語ごとに保存すると、集計が割れる
「また来たいと思いますか」の答えを、お客様の言語のまま保存していました。集計の画面を作ったら、「はい」「Yes」「네」「想」が別々に数えられていました。どの言語で答えても、日本語の選択肢で保存するように直しました。
できあがったもの
お客様の画面では、QRコード(NFCタグも可)から開いて、星をタップし、ひと言を書くだけです。名前や連絡先は聞きません。
お店の管理画面には、次のものがあります。
- 回答の一覧とCSVの書き出し。低い評価(初期設定は星2以下)は、その場でお店にメール
- 集計:総合の星の分布、設問ごとの平均、席や担当ごと、言語ごと
- ひと言のAIまとめ:よく褒められている点・よく出ている不満・直すと効きそうなこと
- 口コミへの返信の下書き:Googleの口コミを貼り付けると、お店からの返信をAIが下書きする
- 席ごと・担当ごとのQRコードの印刷
返信の下書きにも、決めごとを入れました。「店からの補足」に書いたこと以外の約束(割引・返金・改善の日付など)はしません。最初は、補足が空なのに「スタッフへの教育を徹底します」と書いてしまったので、補足が空なら「いただいた声をお店で共有します」程度にとどめるようにしました。
本体はPHPの1ファイル(約56KB)で、データはSQLiteのファイルです。レンタルサーバーに置くだけで動きます。デモのAIは、当社のサーバーで動かしている gemma4 を使っています。
よくある質問
お客様アンケートの答えは、Googleの口コミになりますか?
なりません。答えはお店の管理画面に溜まるだけです。Googleに書くかどうかは、お客様が自分で決めます。
AIが口コミを書くのは、規約違反ではないのですか?
このシステムのAIは、お客様が自分で書いたひと言を読みやすく整えるだけで、書いていないことは足しません。整えた文がもとの言葉から離れすぎたときは、書いたひと言をそのまま返します。使うかどうかも、お店が設定で選べます。
どんなお店で使えますか?
飲食店・美容室・クリニック・宿泊の設問の雛形があり、設問は設定ファイルで自由に変えられます。
導入について
Kurage App Store で、ソースコードごと税込110,000円で販売しています。
Kurage お客様アンケート(Kurage App Store) https://kappstore.exbridge.jp/app.php?id=0ef9191df8969b56#ref=vibeblog-kanketo