diff --git a/docs/README.md b/docs/README.md
index 5847456d4..465e6df19 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1194,6 +1194,10 @@ category 列表:
+### 山东大学
+
+
+
## 传统媒体
### 央视新闻
diff --git a/router.js b/router.js
index cc84ae779..89d2df199 100644
--- a/router.js
+++ b/router.js
@@ -555,6 +555,9 @@ router.get('/kmust/job/jobfairs', require('./routes/universities/kmust/job/jobfa
router.get('/hust/auto/notice/:type?', require('./routes/universities/hust/auto/notice'));
router.get('/hust/auto/news/', require('./routes/universities/hust/auto/news'));
+// 山东大学
+router.get('/sdu/grad/academic', require('./routes/universities/sdu/grad/academic'));
+
// ifanr
router.get('/ifanr/appso', require('./routes/ifanr/appso'));
diff --git a/routes/universities/sdu/grad/academic.js b/routes/universities/sdu/grad/academic.js
new file mode 100644
index 000000000..aed4fcb89
--- /dev/null
+++ b/routes/universities/sdu/grad/academic.js
@@ -0,0 +1,49 @@
+const axios = require('../../../../utils/axios');
+const cheerio = require('cheerio');
+const url = require('url');
+
+const host = 'http://www.grad.sdu.edu.cn/';
+
+module.exports = async (ctx) => {
+ const link = url.resolve(host, 'default_xshd_news.site?isDto=&beanName=xshd_newsPageBean&typeCode=0108&pageSize=20&pageIndex=1');
+ const response = await axios.get(link);
+
+ const $ = cheerio.load(response.data);
+
+ const list = $('#div_more_news a')
+ .map((i, e) => $(e).attr('href'))
+ .get();
+
+ const out = await Promise.all(
+ list.filter((itemUrl) => itemUrl.startsWith('http')).map(async (itemUrl) => {
+ 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 titleGroup = $('#newsTitle')
+ .children()
+ .text()
+ .split('\n');
+
+ const single = {
+ title: titleGroup[0],
+ link: itemUrl,
+ author: '山东大学研究生院',
+ description: $('.newscontent_1').html(),
+ pubDate: new Date(titleGroup[2].slice(8)),
+ };
+ ctx.cache.set(itemUrl, JSON.stringify(single), 24 * 60 * 60);
+ return Promise.resolve(single);
+ })
+ );
+
+ ctx.state.data = {
+ title: '山东大学研究生院学术活动',
+ link,
+ item: out,
+ };
+};