daiso-product-search

daiso-product-search

热门

通过官方Daiso Mall商店/搜索/库存界面,按商店名称和产品关键词查询Daiso产品。当用户想知道特定Daiso商店是否有某产品时使用。

6422Star
735Fork
更新于 2026/7/21
SKILL.md
只读
名称
daiso-product-search
描述

通过官方Daiso Mall商店/搜索/库存界面,按商店名称和产品关键词查询Daiso产品。当用户想知道特定Daiso商店是否有某产品时使用。

Daiso产品搜索

技能功能

使用Daiso Mall官方搜索/商店/库存界面,查询特定Daiso商店的产品库存

  • 通过官方商店搜索查找商店代码。
  • 通过官方产品搜索查找产品候选。
  • 通过官方商店自提库存界面查询该商店的库存。
  • 如果官方界面不提供店内陈列位置,则仅基于库存信息回答。

使用场景

  • "江南站2号店有Ridshot吗?"
  • "帮我查一下Daiso特定商店的库存。"
  • "帮我查一下这个产品在哪个商店有货。"
  • "给我商店名,我帮你查库存。"

不使用场景

  • 既没有商店名也没有产品名,就需要直接断定库存的情况。
  • 需要自动化支付/下单/自提预约的情况。
  • 需要优先使用非官方爬取结果的情况。

前提条件

  • 网络连接
  • node 18+
  • 本仓库的 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令牌生成方法:

  1. GET /api/auth/request → 响应体:JWT明文,保留响应头 x-dm-uid(有效期30秒)
  2. 生成随机16字节IV,使用AES-128-CBC / PKCS7 / 密钥 "PRE_AUTH_ENC_KEY" 加密JWT
  3. 组合 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",并仅提供基于 selPkupStrpickupEligibility(自提可行性)作为辅助信息。

备注

  • 本技能为查询型技能。
  • 坚持官方界面优先原则。
  • 如果官方界面不提供位置信息,不进行强行推测。
  • 认证密钥(PRE_AUTH_ENC_KEY)硬编码在JS包中,可能变更。
  • 调用 selStrPkupStck 时:先调用 /api/auth/request 生成Bearer后尝试。
  • 降级顺序:Bearer库存查询 → 401/403时重新发放令牌并重试一次 → 结构化的阻塞库存 → 可选的 selPkupStr 自提可行性。