目次
🎯 目的
- ECサイトのレビュー一覧ページからレビュー本文を抽出
run_log.csvと照合して新規レビューだけを抽出- ChatGPT(Web版)に感情判定プロンプトを入力して実行
- 結果(本文/判定結果/実行日時)をExcelに追記
- API不要、Web操作だけで完結する構成!
📦 構成ファイル(推奨構成)
ReviewSentimentBot/
├─ main_flow.padx
├─ modules/
│ ├─ ScrapeReviews.padx ← レビュー抽出
│ ├─ CheckNewReviews.padx ← 差分判定
│ ├─ AnalyzeSentiment.padx ← ChatGPT連携
│ ├─ WriteToExcel.padx ← 結果記録
│ └─ WriteToRunLog.padx ← run_log更新
├─ data/
│ ├─ run_log.csv ← レビューID既読管理
│ ├─ sentiment_results.xlsx ← 出力先Excel
│ ├─ prompt.txt ← ChatGPTプロンプトテンプレ
├─ config.json ← 設定(対象URL、時間など)
📄 run_log.csv(例)
レビューID,取得日時
rev_12345,2025/09/10 09:30
rev_12346,2025/09/11 09:30
📄 sentiment_results.xlsx(出力形式)
| レビューID | レビュー本文 | 判定結果 | 処理日時 |
|---|---|---|---|
| rev_12347 | 商品が届かない… | ネガティブ | 2025/09/11 |
📄 prompt.txt(プロンプトテンプレ)
以下の顧客レビューが「ポジティブ」「ネガティブ」のどちらかを判定してください。
【レビュー】
{{REVIEW_TEXT}}
回答形式:
判定:ポジティブ または ネガティブ
理由:簡潔に説明
🛠 フロー全体の流れ(概要)
[1] ECサイトのレビュー一覧をクロール(ScrapeReviews)
↓
[2] run_log.csvと照合して新規レビューだけ抽出(CheckNewReviews)
↓
[3] ChatGPTにテンプレプロンプト+レビュー文を入力 → 返答取得(AnalyzeSentiment)
↓
[4] 結果を sentiment_results.xlsx に追記(WriteToExcel)
↓
[5] run_log.csv にレビューIDを記録(WriteToRunLog)
🛠 実装手順(初心者向けに解説)
✅ STEP1:レビュー一覧を抽出(ScrapeReviews.padx)
1. ChromeでECサイトのレビュー一覧ページを開く
(例:https://example.com/products/123/reviews)
2. UI要素からレビュー要素を抽出
- レビューID(例:
data-review-id="rev_12345") - 本文 →
div.review-bodyやspan.comment-textなど
3. 1レビュー = 1レコード(レビューID+本文)としてリスト化
[
{"id": "rev_12347", "text": "この商品すごく気に入っています!"},
{"id": "rev_12348", "text": "全然届きません。詐欺ですか?"}
]
→ 出力:AllReviews
✅ STEP2:新規レビューだけを抽出(CheckNewReviews.padx)
1. run_log.csv を読み込み → ReadLogList
2. 比較処理:
AllReviewsの中でidがReadLogListに存在しないものだけ抽出
If Review["id"] NOT IN run_log.csv → NewReviews に追加
→ 出力:NewReviews
✅ STEP3:ChatGPT連携で感情分析(AnalyzeSentiment.padx)
1. 新しいタブで ChatGPT のカスタムGPTページを開く
(例:https://chat.openai.com/g/g-abc123/sentiment-analyzer)
2. prompt.txt を読み込み
→ {{REVIEW_TEXT}} を Review["text"] に置換
3. テキストボックスに貼り付け → Enterで送信
4. 応答テキストを読み取る
- 「判定:ポジティブ」などの箇所を抽出
5. 結果構成:
{
"id": "rev_12347",
"text": "この商品すごく気に入っています!",
"sentiment": "ポジティブ",
"datetime": "2025/09/11 10:00"
}
→ 出力:AnalyzedResults
✅ STEP4:Excelに結果追記(WriteToExcel.padx)
ファイル:sentiment_results.xlsx
- 1行に1レビューを以下の構成で追加
| レビューID | レビュー本文 | 判定結果 | 処理日時 |
→ 「Excelに行を追加」で AnalyzedResults を一括出力
✅ STEP5:run_log.csvにID記録(WriteToRunLog.padx)
AnalyzedResultsの各レビューIDを、現在日時とともにrun_log.csvに追記
rev_12347,2025/09/11 10:00
✨ 補足Tips
✅ 安定したプロンプト送信のコツ
- テキスト入力欄 → DOM取得不可なら TAB→Ctrl+V+Enter で対応
- 応答取得 → 「回答形式」指定で正規表現抽出が楽になります
✅ セレクタが崩れたときの対処
| 要素 | 代替手法 |
|---|---|
| レビューDOM | innerText+正規表現で抽出も可能 |
| ChatGPT応答 | 回答パターンを固定すれば「文字列一致」で対応可 |
✅ 差分判定を厳密にしたい場合
- レビューID+本文のハッシュ値を
run_log.csvに保存すると「編集済みレビューの再取得」にも対応可能です
🧪 テスト手順(3分で確認)
- テストレビューを2件登録(実際のサイト or HTMLダミー)
run_log.csvを空にする- フローを実行
- ChatGPTにメッセージが送られるか確認
sentiment_results.xlsxに1件ずつ追加されているか確認- 再実行して「同じレビューは処理されない」ことを確認
❓ よくある質問(FAQ)
Q1. ChatGPTの応答が崩れることは?
A. あります。テンプレプロンプトで「判定:●●」と明示すれば、判定文のパースが安定します。
Q2. APIを使った方が早くない?
A. APIは便利ですが、ChatGPTのCustom GPTを非開発者でも使えるようにRPAで操作する方法は導入が簡単です(トークン管理も不要)。
Q3. Excelが開いてても大丈夫?
A. 閉じたブックから読み書きするアクション を使えば、ユーザーがExcelを開いていても影響しません。
Q4. 毎朝自動で動かしたい
A. Windowsタスクスケジューラで、PADフローを 平日9:00に自動起動できます(GUIで簡単に設定可能)。
