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
- 網路連線
node18+- 此儲存庫的
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 產生方式:
GET /api/auth/request→ 回應內文為 JWT 明文,保留回應標頭x-dm-uid(有效期限 30 秒)- 產生隨機 16 位元組(bytes)IV 後,以 AES-128-CBC / PKCS7 搭配金鑰
"PRE_AUTH_ENC_KEY"加密 JWT - 組合為
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",並僅提供基於selPkupStr的pickupEligibility(可否門市自取)作為輔助資訊。
Notes
- 此為查詢型 Skill。
- 保持優先使用官方介面的原則。
- 若官方介面未提供位置,請勿強行揣測。
- 驗證金鑰(
PRE_AUTH_ENC_KEY)硬編碼於 JS Bundle 中,隨時可能變更。 - 呼叫
selStrPkupStck時:先呼叫/api/auth/request並產生 Bearer 後再嘗試。 - 備用機制順序(Fallback order):Bearer 庫存查詢 → 發生 401/403 時重新取得 Token 並重試 1 次 → 傳回結構化的 blocked 庫存 → 可選的
selPkupStr門市自取可行性。






