SKILL.md
只读
名称
daiso-product-search
描述
通过官方Daiso Mall商店/搜索/库存界面,按商店名称和产品关键词查询Daiso产品。当用户想知道特定Daiso商店是否有某产品时使用。
Daiso产品搜索
技能功能
使用Daiso Mall官方搜索/商店/库存界面,查询特定Daiso商店的产品库存。
- 通过官方商店搜索查找商店代码。
- 通过官方产品搜索查找产品候选。
- 通过官方商店自提库存界面查询该商店的库存。
- 如果官方界面不提供店内陈列位置,则仅基于库存信息回答。
使用场景
- "江南站2号店有Ridshot吗?"
- "帮我查一下Daiso特定商店的库存。"
- "帮我查一下这个产品在哪个商店有货。"
- "给我商店名,我帮你查库存。"
不使用场景
- 既没有商店名也没有产品名,就需要直接断定库存的情况。
- 需要自动化支付/下单/自提预约的情况。
- 需要优先使用非官方爬取结果的情况。
前提条件
- 网络连接
node18+- 本仓库的
daiso-product-search包或相同逻辑
必要输入
1. 如果缺少商店名,先询问
如果没有商店名,不要直接查询,先询问。
- 推荐提问:
어느 다이소 매장을 확인할까요? 매장명(예: 강남역2호점)을 알려주세요. - 如果有多个相似商店:
후보 매장이 여러 개예요. 정확한 매장명을 하나만 골라주세요.
2. 如果缺少产品名或关键词,先询问
产品名/搜索词也是必需的。
- 推荐提问:
찾을 상품명이나 검색어도 알려주세요. 예: VT 리들샷 100 - 如果太宽泛:
검색어가 너무 넓어요. 브랜드나 용량까지 같이 알려주세요.
官方Daiso Mall界面
- 商店关键词目录:
https://www.daisomall.co.kr/api/ms/msg/selStrSrchKeyword - 商店搜索:
https://www.daisomall.co.kr/api/ms/msg/selStr - 商店详情:
https://www.daisomall.co.kr/api/dl/dla-api/selStrInfo - 产品搜索摘要:
https://www.daisomall.co.kr/ssn/search/Search - 产品搜索列表:
https://www.daisomall.co.kr/ssn/search/SearchGoods - 产品摘要列表:
https://www.daisomall.co.kr/ssn/search/GoodsMummResult - 认证(非登录JWT发放):
https://www.daisomall.co.kr/api/auth/request - 商店自提库存:
https://www.daisomall.co.kr/api/pd/pdh/selStrPkupStck← 需要认证 - 自提资格备用:
https://www.daisomall.co.kr/api/ms/msg/selPkupStr - 可选在线库存交叉验证:
https://www.daisomall.co.kr/api/pdo/selOnlStck
工作流程
1. 解析商店
首先通过官方商店搜索API解析商店名。
const { searchStores } = require("daiso-product-search")
const storeResult = await searchStores("강남역2호점", {
limit: 5
})
console.log(storeResult.items)
如果有多个商店候选,只显示前2~3个并再次确认。
2. 解析产品
通过官方 SearchGoods 界面查找产品候选。
const { searchProducts } = require("daiso-product-search")
const productResult = await searchProducts("VT 리들샷 100", {
limit: 10
})
console.log(productResult.items)
如果有多个产品候选,按以下优先级简要整理:
- 完全匹配的名称
- 包含品牌+容量/型号的名称
- 评论数/搜索分数高的候选
- 如果需要在线库存交叉验证,保留候选的
onldPdNo
3. 查询商店自提库存
selStrPkupStck 在没有 Authorization 头的情况下调用会返回 403。
无需登录,通过 /api/auth/request 获取非登录JWT,使用AES-CBC加密后作为Bearer头传递。
Bearer令牌生成方法:
GET /api/auth/request→ 响应体:JWT明文,保留响应头x-dm-uid(有效期30秒)- 生成随机16字节IV,使用AES-128-CBC / PKCS7 / 密钥
"PRE_AUTH_ENC_KEY"加密JWT - 组合
bearer = base64(IV) + base64(암호문),然后以Authorization: Bearer <bearer>和X-DM-UID: <uid>头发送
请求体为 {pdNo, strCd} 对数组,可一次查询多个商店。
响应中的 stck 字段为 "0" 或空值表示无库存。
const { getStorePickupStock } = require("daiso-product-search")
const stock = await getStorePickupStock({
pdNo: "1049275",
strCd: "10224"
})
console.log(stock)
4. 当商店名和产品名都已确认时,使用端到端辅助函数
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. 保守回答
回答应简短明确。
- 商店名
- 产品名
- 商店库存数量或无库存
- 如有需要,提供在线库存参考值
- 如果官方界面不提供店内陈列位置,明确说明
공식 표면에서는 매장 재고까지만 확인된다。
完成条件
- 商店名和产品名均已确认。
- 通过官方界面找到了商店候选和产品候选。
- 至少返回了一次官方商店库存结果。
- 如果没有位置信息,明确告知没有。
失败模式
- 商店名太宽泛可能导致同一商圈的多家分店同时出现。
- 产品名太宽泛可能导致不同容量/型号的候选混杂。
- 官方库存存在时间差,实际到店时数量可能不同。
- 目前确认的官方界面可能不直接提供店内通道/陈列位置。
selStrPkupStck返回403 → 重新调用/api/auth/request并重新构建Bearer后重试。- 重试Bearer后仍返回401/403,则将库存数量标记为
retrievalStatus: "blocked",并仅提供基于selPkupStr的pickupEligibility(自提可行性)作为辅助信息。
备注
- 本技能为查询型技能。
- 坚持官方界面优先原则。
- 如果官方界面不提供位置信息,不进行强行推测。
- 认证密钥(
PRE_AUTH_ENC_KEY)硬编码在JS包中,可能变更。 - 调用
selStrPkupStck时:先调用/api/auth/request生成Bearer后尝试。 - 降级顺序:Bearer库存查询 → 401/403时重新发放令牌并重试一次 → 结构化的阻塞库存 → 可选的
selPkupStr自提可行性。






