diff --git a/README.md b/README.md
index 469782da04..b905676a65 100644
--- a/README.md
+++ b/README.md
@@ -268,6 +268,9 @@ RSSHub 是一个轻量、易于扩展的 RSS 生成器,可以给任何奇奇
- 文章
- 大连工业大学
- 教务处新闻
+- 上海科技大学
+ - 信息科技与技术学院
+ - 活动
- 上海交通大学
- 电子信息与电气工程学院
- 学术动态
diff --git a/docs/README.md b/docs/README.md
index f55daee698..cd9500a0a8 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -2223,6 +2223,14 @@ type,分类
参数: 无
+## 上海科技大学
+
+### 信息科技与技术学院 -- 活动
+
+举例: [https://rsshub.app/shanghaitech/sist/activity](https://rsshub.app/shanghaitech/sist/activity)
+
+路由: `/shanghaitech/sist/activity`
+
## 上海交通大学
### 电子信息与电气工程学院 -- 学术动态
diff --git a/router.js b/router.js
index 93efe3185b..2f2adcbce6 100755
--- a/router.js
+++ b/router.js
@@ -473,6 +473,9 @@ router.get('/mygalgame', require('./routes/galgame/mygalgame'));
// DPU
router.get('/dpu/jiaowu/:type?', require('./routes/dpu/jiaowu'));
+// 上海科技大学
+router.get('/shanghaitech/sist/activity', require('./routes/shanghaitech/sist/activity'));
+
// 上海交通大学
router.get('/sjtu/seiee/academic', require('./routes/sjtu/seiee/academic'));
diff --git a/routes/shanghaitech/sist/activity.js b/routes/shanghaitech/sist/activity.js
new file mode 100644
index 0000000000..e49ce4c58d
--- /dev/null
+++ b/routes/shanghaitech/sist/activity.js
@@ -0,0 +1,59 @@
+const axios = require('../../../utils/axios');
+const cheerio = require('cheerio');
+const url = require('url');
+
+const host = 'http://sist.shanghaitech.edu.cn/';
+
+module.exports = async (ctx) => {
+ const link = url.resolve(host, 'cn/News.asp?mid=102');
+ const response = await axios.get(link);
+
+ const $ = cheerio.load(response.data);
+
+ const list = $('.pagebv tr')
+ .slice(0, 10)
+ .map((i, e) => ({
+ link: $(e)
+ .find('td:nth-of-type(2) a')
+ .attr('href'),
+ date: $(e)
+ .find('td:last-of-type')
+ .text()
+ .replace('[', '')
+ .replace(']', ''),
+ }))
+ .get();
+
+ const out = await Promise.all(
+ list.map(async (item) => {
+ const itemUrl = url.resolve(host, `cn/${item.link}`);
+ const cache = await ctx.cache.get(itemUrl);
+ if (cache) {
+ return Promise.resolve(JSON.parse(cache));
+ }
+
+ const response = await axios.get(itemUrl);
+ const $ = cheerio.load(response.data);
+ const single = {
+ title: $('.pagebv tr:first-of-type')
+ .text()
+ .trim(),
+ link: itemUrl,
+ author: '上海科技大学信息科技与技术学院',
+ description: $('.pagebv tr:last-of-type')
+ .html()
+ .replace(/src="\//g, `src="${url.resolve(host, '.')}`)
+ .trim(),
+ pubDate: new Date(item.date),
+ };
+ ctx.cache.set(itemUrl, JSON.stringify(single), 24 * 60 * 60);
+ return Promise.resolve(single);
+ })
+ );
+
+ ctx.state.data = {
+ title: '上海科技大学信息科技与技术学院 -- 活动',
+ link,
+ item: out,
+ };
+};