diff --git a/docs/new-media.md b/docs/new-media.md
index 55096a1cfc..480e2f680b 100644
--- a/docs/new-media.md
+++ b/docs/new-media.md
@@ -870,6 +870,10 @@ Supported sub-sites:
+### 公众号(CareerEngine 来源)
+
+
+
### 公众号(Telegram 频道来源)
diff --git a/lib/router.js b/lib/router.js
index 1508cf3110..8ae5f2d482 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -461,6 +461,7 @@ router.get('/bugly/changelog/:platform', require('./routes/tencent/bugly/changel
// wechat
router.get('/wechat/wemp/:id', require('./routes/tencent/wechat/wemp'));
router.get('/wechat/csm/:id', require('./routes/tencent/wechat/csm'));
+router.get('/wechat/ce/:id', require('./routes/tencent/wechat/ce'));
router.get('/wechat/announce', require('./routes/tencent/wechat/announce'));
router.get('/wechat/miniprogram/plugins', require('./routes/tencent/wechat/miniprogram/plugins'));
router.get('/wechat/tgchannel/:id', require('./routes/tencent/wechat/tgchannel'));
diff --git a/lib/routes/tencent/wechat/ce.js b/lib/routes/tencent/wechat/ce.js
new file mode 100644
index 0000000000..c1b26f4c9c
--- /dev/null
+++ b/lib/routes/tencent/wechat/ce.js
@@ -0,0 +1,32 @@
+const parser = require('@/utils/rss-parser');
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const { id } = ctx.params;
+
+ const feed = await parser.parseURL(`https://posts.careerengine.us/author/${id}/rss`);
+
+ const items = await Promise.all(
+ feed.items.splice(0, 10).map(async (item) => {
+ const response = await got.get(item.link);
+
+ const $ = cheerio.load(response.data);
+
+ const single = {
+ title: item.title,
+ description: $('.post').html(),
+ pubDate: item.pubDate,
+ link: item.link,
+ };
+ return Promise.resolve(single);
+ })
+ );
+
+ ctx.state.data = {
+ title: `微信公众号 - ${feed.title}`,
+ link: `https://posts.careerengine.us/author/${id}/posts`,
+ description: feed.description,
+ item: items,
+ };
+};