diff --git a/docs/social-media.md b/docs/social-media.md
index cdd3f22567..53d133b2c5 100644
--- a/docs/social-media.md
+++ b/docs/social-media.md
@@ -254,6 +254,10 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
+### B 站每周必看
+
+
+
## Disqus
### 评论
diff --git a/lib/router.js b/lib/router.js
index 72d6ff8154..4c2dbea1b4 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -65,6 +65,7 @@ router.get('/bilibili/vsearch/:kw/:order?/:disableEmbed?', require('./routes/bil
router.get('/bilibili/followings/video/:uid/:disableEmbed?', require('./routes/bilibili/followings_video'));
router.get('/bilibili/followings/article/:uid', require('./routes/bilibili/followings_article'));
router.get('/bilibili/readlist/:listid', require('./routes/bilibili/readlist'));
+router.get('/bilibili/weekly', require('./routes/bilibili/weekly_recommend'));
// bangumi
router.get('/bangumi/calendar/today', require('./routes/bangumi/calendar/today'));
diff --git a/lib/routes/bilibili/weekly_recommend.js b/lib/routes/bilibili/weekly_recommend.js
new file mode 100644
index 0000000000..029c2ff447
--- /dev/null
+++ b/lib/routes/bilibili/weekly_recommend.js
@@ -0,0 +1,36 @@
+const got = require('@/utils/got');
+const utils = require('./utils');
+
+module.exports = async (ctx) => {
+ const disableEmbed = ctx.params.disableEmbed;
+
+ const status_response = await got({
+ method: 'get',
+ url: 'https://app.bilibili.com/x/v2/show/popular/selected/series?type=weekly_selected',
+ headers: {
+ Referer: 'https://www.bilibili.com/h5/weekly-recommend',
+ },
+ });
+ const weekly_number = status_response.data.data[0].number;
+ const weekly_name = status_response.data.data[0].name;
+
+ const response = await got({
+ method: 'get',
+ url: `https://app.bilibili.com/x/v2/show/popular/selected?type=weekly_selected&number=${weekly_number}`,
+ headers: {
+ Referer: `https://www.bilibili.com/h5/weekly-recommend?num=${weekly_number}&navhide=1`,
+ },
+ });
+ const data = response.data.data.list;
+
+ ctx.state.data = {
+ title: 'B站每周必看',
+ link: 'https://www.bilibili.com/h5/weekly-recommend',
+ description: 'B站每周必看',
+ item: data.map((item) => ({
+ title: item.title,
+ description: `${weekly_name} ${item.title}
${item.rcmd_reason}
${!disableEmbed ? `${utils.iframe(item.param)}` : ''}
`,
+ link: `https://www.bilibili.com/video/av${item.param}`,
+ })),
+ };
+};