diff --git a/docs/shopping.md b/docs/shopping.md
index e1414df0df..bba122f814 100644
--- a/docs/shopping.md
+++ b/docs/shopping.md
@@ -165,3 +165,9 @@ pageClass: routes
### 小米有品每日上新
+
+## 有赞
+
+### 商品上新
+
+
diff --git a/lib/router.js b/lib/router.js
index acd5535ed9..3bfcdbddfb 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -1651,6 +1651,9 @@ router.get('/wechat-open/community/xyx-announce', require('./routes/wechat-open/
router.get('/wechat-open/community/pay-announce', require('./routes/wechat-open/community/pay-announce'));
router.get('/wechat-open/pay/announce', require('./routes/wechat-open/pay/announce'));
+// 有赞
+router.get('/youzan/goods/:id', require('./routes/youzan/goods'));
+
// 币世界快讯
router.get('/bishijie/kuaixun', require('./routes/bishijie/kuaixun'));
diff --git a/lib/routes/youzan/goods.js b/lib/routes/youzan/goods.js
new file mode 100644
index 0000000000..df50398f4b
--- /dev/null
+++ b/lib/routes/youzan/goods.js
@@ -0,0 +1,32 @@
+const got = require('@/utils/got');
+
+module.exports = async (ctx) => {
+ const id = String(ctx.params.id);
+
+ const link = `https://h5.youzan.com/wscshop/feature/goods/all?kdt_id=${id}`;
+ const api_link = `https://h5.youzan.com/wscshop/showcase/goods/allGoods.json?pageSize=20&page=1&offlineId=0&order=&order_by=createdTime&kdt_id=${id}`;
+
+ const response = await got({
+ method: 'get',
+ url: api_link,
+ headers: {
+ Referer: link,
+ },
+ });
+ const goods = response.data.data.list;
+
+ const out = goods.map((good) => {
+ const item = {
+ title: good.title,
+ description: `价格:${good.price}
`,
+ link: `https://detail.youzan.com/show/goods?alias=${good.alias}`,
+ };
+ return item;
+ });
+
+ ctx.state.data = {
+ title: `${id} 商铺上新`,
+ link: link,
+ item: out,
+ };
+};