diff --git a/docs/blog.md b/docs/blog.md
index 79370ed06e..64f747824e 100644
--- a/docs/blog.md
+++ b/docs/blog.md
@@ -30,6 +30,32 @@ pageClass: routes
+## 博客园
+
+### 10天推荐排行榜
+
+
+
+### 48小时阅读排行
+
+
+
+### 编辑推荐
+
+
+
+### 分类
+
+
+
+在博客园主页的分类出可查看所有类型. 例如, go的分类地址为: `https://www.cnblogs.com/cate/go/`, 则: [`/cnblogs/cate/go`](https://rsshub.app/cnblogs/cate/go)
+
+
+
+### 精华区
+
+
+
## Gwern Branwen
### 博客
diff --git a/lib/v2/cnblogs/common.js b/lib/v2/cnblogs/common.js
new file mode 100644
index 0000000000..b0500d91ad
--- /dev/null
+++ b/lib/v2/cnblogs/common.js
@@ -0,0 +1,38 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+const { parseDate } = require('@/utils/parse-date');
+const timezone = require('@/utils/timezone');
+
+
+module.exports = async (ctx) => {
+ const link = `https://www.cnblogs.com${ctx.path}`;
+ const response = await got(link);
+ const data = response.data;
+
+ const $ = cheerio.load(data);
+ const list = $('#post_list article')
+ .toArray()
+ .map((item) => {
+ item = $(item);
+ return {
+ title: item.find('.post-item-title').text(),
+ link: item.find('.post-item-title').attr('href'),
+ pubDate: timezone(
+ parseDate(
+ item.find('.post-item-foot .post-meta-item span').text() ||
+ item.find('.editorpick-item-meta').text(),
+ ['YYYY-MM-DD HH:mm', 'YYYY-MM-DD']
+ ),
+ +8
+ ),
+ description: item.find('.post-item-summary').text(),
+ author: item.find('.post-item-author span').text(),
+ };
+ });
+
+ ctx.state.data = {
+ title: $('title').text(),
+ link,
+ item: list,
+ };
+};
diff --git a/lib/v2/cnblogs/maintainer.js b/lib/v2/cnblogs/maintainer.js
new file mode 100644
index 0000000000..ef44b47d5b
--- /dev/null
+++ b/lib/v2/cnblogs/maintainer.js
@@ -0,0 +1,7 @@
+module.exports = {
+ '/aggsite/topdiggs': ['hujingnb'],
+ '/aggsite/topviews': ['hujingnb'],
+ '/aggsite/headline': ['hujingnb'],
+ '/cate/:type': ['hujingnb'],
+ '/pick': ['hujingnb'],
+};
diff --git a/lib/v2/cnblogs/radar.js b/lib/v2/cnblogs/radar.js
new file mode 100644
index 0000000000..562be92aa9
--- /dev/null
+++ b/lib/v2/cnblogs/radar.js
@@ -0,0 +1,37 @@
+module.exports = {
+ 'cnblogs.com': {
+ _name: '博客园',
+ www: [
+ {
+ title: '10天推荐排行榜',
+ docs: 'https://docs.rsshub.app/blog.html#博客园',
+ source: ['/aggsite/topdiggs'],
+ target: '/cnblogs/aggsite/topdiggs',
+ },
+ {
+ title: '48小时阅读排行',
+ docs: 'https://docs.rsshub.app/blog.html#博客园',
+ source: ['/aggsite/topviews'],
+ target: '/cnblogs/aggsite/topviews',
+ },
+ {
+ title: '编辑推荐',
+ docs: 'https://docs.rsshub.app/blog.html#博客园',
+ source: ['/aggsite/headline'],
+ target: '/cnblogs/aggsite/headline',
+ },
+ {
+ title: '分类',
+ docs: 'https://docs.rsshub.app/blog.html#博客园',
+ source: ['/cate/:type'],
+ target: '/cnblogs/cate/:type',
+ },
+ {
+ title: '精华区',
+ docs: 'https://docs.rsshub.app/blog.html#博客园',
+ source: ['/pick'],
+ target: '/cnblogs/pick',
+ },
+ ],
+ },
+};
diff --git a/lib/v2/cnblogs/router.js b/lib/v2/cnblogs/router.js
new file mode 100644
index 0000000000..3a416e1463
--- /dev/null
+++ b/lib/v2/cnblogs/router.js
@@ -0,0 +1,7 @@
+module.exports = (router) => {
+ router.get('/aggsite/topdiggs', require('./common'));
+ router.get('/aggsite/topviews', require('./common'));
+ router.get('/aggsite/headline', require('./common'));
+ router.get('/cate/:type', require('./common'));
+ router.get('/pick', require('./common'));
+};