diff --git a/docs/new-media.md b/docs/new-media.md
index e9e4ac2c1e..bc00bc3bd4 100644
--- a/docs/new-media.md
+++ b/docs/new-media.md
@@ -515,6 +515,10 @@ Supported sub-sites:
+### 櫻坂 46 博客
+
+
+
### 日向坂 46 新闻
diff --git a/lib/router.js b/lib/router.js
index b7cab82c4a..ffcbafd212 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -1934,6 +1934,7 @@ router.get('/keyakizaka46/news', require('./routes/keyakizaka46/news'));
router.get('/hinatazaka46/news', require('./routes/hinatazaka46/news'));
router.get('/keyakizaka46/blog', require('./routes/keyakizaka46/blog'));
router.get('/hinatazaka46/blog', require('./routes/hinatazaka46/blog'));
+router.get('/sakurazaka46/blog', require('./routes/sakurazaka46/blog'));
// 酷安
router.get('/coolapk/tuwen', require('./routes/coolapk/tuwen'));
diff --git a/lib/routes/sakurazaka46/blog.js b/lib/routes/sakurazaka46/blog.js
new file mode 100644
index 0000000000..5ebfdb2db5
--- /dev/null
+++ b/lib/routes/sakurazaka46/blog.js
@@ -0,0 +1,38 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const response = await got({
+ method: 'get',
+ url: 'https://sakurazaka46.com/s/s46/diary/blog',
+ headers: {
+ Referer: 'https://sakurazaka46.com/',
+ },
+ });
+
+ const data = response.data;
+ const $ = cheerio.load(data);
+ const list = $('ul.com-blog-part li');
+ let itemPicUrl;
+
+ ctx.state.data = {
+ allowEmpty: true,
+ title: '櫻坂46 公式ブログ',
+ link: 'https://sakurazaka46.com/s/s46/diary/blog',
+ item:
+ list &&
+ list
+ .map((index, item) => {
+ item = $(item);
+ itemPicUrl = `${item.find('div.wrap-bg span.img').attr('style')}`.replace('background-image: url(', '').replace(');', '');
+ return {
+ title: item.find('div.date-title h3.title').text().trim(),
+ link: item.find('a').first().attr('href'),
+ pubDate: item.find('div.date-title p.date').text(),
+ author: item.find('div.prof-in p.name').text().trim(),
+ description: `
`,
+ };
+ })
+ .get(),
+ };
+};