daiso-product-search

daiso-product-search

熱門

使用 Daiso Mall 官方門市/搜尋/庫存介面,透過門市名稱與商品關鍵字查詢大創(Daiso)商品。當使用者想確認特定大創門市是否有某項商品現貨時使用。

6422星標
735分支
更新於 2026/7/21
SKILL.md
唯讀
名稱
daiso-product-search
描述

使用 Daiso Mall 官方門市/搜尋/庫存介面,透過門市名稱與商品關鍵字查詢大創(Daiso)商品。當使用者想確認特定大創門市是否有某項商品現貨時使用。

Daiso Product Search

What this skill does

使用 Daiso Mall 官方搜尋/門市/庫存介面,確認特定大創門市的商品庫存

  • 透過官方門市搜尋找出門市代碼。
  • 透過官方商品搜尋找出候選商品。
  • 透過官方門市自取庫存介面確認該門市的庫存狀況。
  • 若官方介面未提供門市內的擺放/陳列位置,則僅以庫存狀況為重點回答。

When to use

  • 「江南站 2 號店有 Reedle Shot 嗎?」
  • 「幫我查一下大創特定門市的庫存」
  • 「幫我確認這款商品哪家門市有貨」
  • 「給大創門市名稱後,幫我查看該門市的庫存」

When not to use

  • 在完全沒有門市名稱與商品名稱的情況下,需要直接斷定庫存時
  • 需要將結帳、下單或自取預約流程自動化時
  • 需要優先使用非官方爬蟲結果時

Prerequisites

  • 網路連線
  • node 18+
  • 此儲存庫的 daiso-product-search 套件或相同邏輯

Required inputs

1. Ask the store name first if it is missing

若缺少門市名稱,請勿直接查詢,先向使用者詢問。

  • 建議提問:請問要確認哪一家大創門市?請提供門市名稱(例如:江南站2號店)。
  • 若有多家相似門市:符合條件的門市有多家,請選擇一家確切的門市名稱。

2. Ask the product name or keyword if it is missing

商品名稱或搜尋關鍵字也是必要資訊。

  • 建議提問:請提供要尋找的商品名稱或搜尋關鍵字,例如:VT Reedle Shot 100
  • 若搜尋範圍過寬:搜尋關鍵字範圍太廣,請一併提供品牌或容量等細節。

Official Daiso Mall surfaces

  • store keyword catalog: https://www.daisomall.co.kr/api/ms/msg/selStrSrchKeyword
  • store search: https://www.daisomall.co.kr/api/ms/msg/selStr
  • store detail: https://www.daisomall.co.kr/api/dl/dla-api/selStrInfo
  • product search summary: https://www.daisomall.co.kr/ssn/search/Search
  • product search list: https://www.daisomall.co.kr/ssn/search/SearchGoods
  • product summary list: https://www.daisomall.co.kr/ssn/search/GoodsMummResult
  • auth (未登入 JWT 簽發): https://www.daisomall.co.kr/api/auth/request
  • store pickup stock: https://www.daisomall.co.kr/api/pd/pdh/selStrPkupStck需要身份驗證
  • pickup eligibility fallback: https://www.daisomall.co.kr/api/ms/msg/selPkupStr
  • optional online stock cross-check: https://www.daisomall.co.kr/api/pdo/selOnlStck

Workflow

1. Resolve the store

先透過官方門市搜尋 API 確認門市。

const { searchStores } = require("daiso-product-search")

const storeResult = await searchStores("강남역2호점", {
  limit: 5
})

console.log(storeResult.items)

若有多個候選門市,僅顯示前 2~3 個並請使用者再次確認。

2. Resolve the product

透過官方 SearchGoods 介面尋找候選商品。

const { searchProducts } = require("daiso-product-search")

const productResult = await searchProducts("VT 리들샷 100", {
  limit: 10
})

console.log(productResult.items)

若有多個候選商品,按以下優先順序簡短整理:

  • 完全符合的名稱
  • 包含品牌 + 容量/型號(色號)的名稱
  • 評論數/搜尋評分較高的候選商品
  • 若需要交叉比對線上庫存,需一併保留候選商品的 onldPdNo

3. Check the store pickup stock

呼叫 selStrPkupStck 時若未附帶 Authorization 標頭會傳回 403
不需登入,直接透過 /api/auth/request 取得未登入 JWT,經 AES-CBC 加密後放在 Bearer 標頭傳送。

Bearer Token 產生方式:

  1. GET /api/auth/request → 回應內文為 JWT 明文,保留回應標頭 x-dm-uid(有效期限 30 秒)
  2. 產生隨機 16 位元組(bytes)IV 後,以 AES-128-CBC / PKCS7 搭配金鑰 "PRE_AUTH_ENC_KEY" 加密 JWT
  3. 組合為 bearer = base64(IV) + base64(密文) 後,透過 Authorization: Bearer <bearer>X-DM-UID: <uid> 標頭傳送

Body 為 {pdNo, strCd} 的物件陣列,可一次查詢多家門市。
若回應中的 stck 欄位為 "0" 或空值,即表示無庫存。

const { getStorePickupStock } = require("daiso-product-search")

const stock = await getStorePickupStock({
  pdNo: "1049275",
  strCd: "10224"
})

console.log(stock)

4. Use the end-to-end helper when both names are already known

const { lookupStoreProductAvailability } = require("daiso-product-search")

const result = await lookupStoreProductAvailability({
  storeQuery: "강남역2호점",
  productQuery: "VT 리들샷 100"
})

console.log(result.selectedStore)
console.log(result.selectedProduct)
console.log(result.pickupStock)

5. Respond conservatively

回覆請簡明扼要地整理:

  • 門市名稱
  • 商品名稱
  • 門市庫存數量或無庫存
  • 必要時附上線上庫存參考值
  • 若官方介面未提供門市內的擺放/陳列位置,請明確說明「官方介面僅能確認門市庫存」。

Done when

  • 門市名稱與商品名稱皆已確認。
  • 已透過官方介面找到候選門市與候選商品。
  • 已至少傳回一次官方門市庫存查詢結果。
  • 若無位置資訊,已明確告知無法提供。

Failure modes

  • 若門市名稱過於寬泛,可能會同時搜尋到同一商圈的多家分店。
  • 若商品名稱過於寬泛,可能會混入許多其他容量/型號(色號)的候選商品。
  • 官方庫存可能因查詢時間差,導致實際到店時的數量有所變動。
  • 目前確認的官方介面可能無法直接提供門市內的貨架/陳列位置
  • selStrPkupStck 傳回 403 → 重新呼叫 /api/auth/request 並重新建構 Bearer 後重試。
  • 若重試 Bearer 後仍傳回 401/403,庫存數量應標示為 retrievalStatus: "blocked",並僅提供基於 selPkupStrpickupEligibility(可否門市自取)作為輔助資訊。

Notes

  • 此為查詢型 Skill。
  • 保持優先使用官方介面的原則。
  • 若官方介面未提供位置,請勿強行揣測。
  • 驗證金鑰(PRE_AUTH_ENC_KEY)硬編碼於 JS Bundle 中,隨時可能變更。
  • 呼叫 selStrPkupStck 時:先呼叫 /api/auth/request 並產生 Bearer 後再嘗試。
  • 備用機制順序(Fallback order):Bearer 庫存查詢 → 發生 401/403 時重新取得 Token 並重試 1 次 → 傳回結構化的 blocked 庫存 → 可選的 selPkupStr 門市自取可行性。