diff --git a/docs/traditional-media.md b/docs/traditional-media.md
index 82ddfff69..afb193186 100644
--- a/docs/traditional-media.md
+++ b/docs/traditional-media.md
@@ -201,6 +201,8 @@ category 对应的关键词有
+
+
## 人民日报
diff --git a/lib/router.js b/lib/router.js
index 235b3841c..5fec58db4 100755
--- a/lib/router.js
+++ b/lib/router.js
@@ -1086,6 +1086,9 @@ router.get('/mpaypass/news', require('./routes/mpaypass/news'));
// 新浪科技探索
router.get('/sina/discovery/:type', require('./routes/sina/discovery'));
+// 新浪科技滚动新闻
+router.get('/sina/rollnews', require('./routes/sina/rollnews'));
+
// Animen
router.get('/animen/news/:type', require('./routes/animen/news'));
diff --git a/lib/routes/sina/rollnews.js b/lib/routes/sina/rollnews.js
new file mode 100644
index 000000000..59128a45a
--- /dev/null
+++ b/lib/routes/sina/rollnews.js
@@ -0,0 +1,40 @@
+const axios = require('../../utils/axios');
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const response = await axios.get(`https://feed.mix.sina.com.cn/api/roll/get?pageid=372&lid=2431&k=&num=50&page=1&r=${Math.random()}&callback=&_=${new Date().getTime()}`);
+ const list = response.data.result.data;
+
+ const out = await Promise.all(
+ list.map(async (data) => {
+ const title = data.title;
+ const date = data.intime * 1000;
+ const link = data.url;
+
+ const description = await ctx.cache.tryGet(
+ `sina-rollnews: ${link}`,
+ async () => {
+ const response = await axios.get(link);
+ const $ = cheerio.load(response.data);
+
+ return $('.article').html();
+ },
+ 3 * 60 * 60
+ );
+
+ const single = {
+ title: title,
+ link,
+ description: description,
+ pubDate: new Date(date).toUTCString(),
+ };
+ return Promise.resolve(single);
+ })
+ );
+
+ ctx.state.data = {
+ title: '新浪科技滚动新闻',
+ link: 'https://tech.sina.com.cn/roll/rollnews.shtml#pageid=372&lid=2431&k=&num=50&page=1',
+ item: out,
+ };
+};