STEP 1 フロントから送信
→ title / maker / series / thumbnail URL
→ watchListが未ロードの場合は /load を自動fetch(LIST照合に必要) STEP 2 Google テキスト検索(Custom Search API)
→ クエリ:{maker} {series} ref(例:OMEGA De Ville ref)
→ 上位5件のタイトル+スニペットを収集 STEP 3 Google 画像検索(searchType=image)
→ 同クエリで画像URL を最大5件取得・Base64変換(失敗はスキップ) STEP 4 Claude Haiku 4.5 へ投げる
→ 画像:出品画像1枚 + Google参考画像 最大5枚(計最大6枚)
→ テキスト:メーカー・シリーズ・タイトル・Google検索スニペット STEP 5 結果を返してLIST照合
→ 推測RefをwatchList(メモリ内)と照合(完全一致 or 前方一致)
→ LIST登録済み → 「🔄 このリストカードに置き換え」ボタン表示
→ LIST未登録 → 「📥 タスクに追加」ボタン表示
🔍 Google検索クエリの仕組み
条件
クエリ例
シリーズ名が判明している場合
OMEGA De Ville ref
シリーズ不明の場合
OMEGA watch ref {タイトルの英数字}
※ シリーズを軸にすることで、SeamasterをDe Villeと誤認するシリーズ混在を防止。
🔗 LIST照合ロジック
推測されたRefをwatchListと照合。スペース・ハイフン・ドットを除去した正規化文字列で比較。 マッチ条件(いずれか):
① 完全一致:normalize(ref) === normalize(w.ref_no)
② 前方一致:AIのRefがLISTのRefで始まる(Cal番号混入対策)
例:AI「511.0471.625」→ LIST「511.0471」にマッチ
③ 逆前方一致:LISTのRefがAIのRefで始まる