diff --git a/docs/new-media.md b/docs/new-media.md
index ebc5e352c5..eec38865ff 100644
--- a/docs/new-media.md
+++ b/docs/new-media.md
@@ -2113,3 +2113,7 @@ QueryString:
### 全文
+
+## 鱼塘热榜
+
+
\ No newline at end of file
diff --git a/lib/router.js b/lib/router.js
index 3f293e8317..9f95ea46b6 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -3786,6 +3786,9 @@ router.get('/nace/blog/:sort?', require('./routes/nace/blog'));
// Caixin Latest
router.get('/caixin/latest', require('./routes/caixin/latest'));
+// 鱼塘热榜
+router.get('/mofish/:id', require('./routes/mofish/index'));
+
// Mcdonalds
router.get('/mcdonalds/:category', require('./routes/mcdonalds/news'));
@@ -3814,4 +3817,5 @@ router.get('/simpread/changelog', require('./routes/simpread/changelog'));
// Radio Free Asia
router.get('/rfa/:language?/:channel?/:subChannel?', require('./routes/rfa/index'));
+
module.exports = router;
diff --git a/lib/routes/mofish/index.js b/lib/routes/mofish/index.js
new file mode 100644
index 0000000000..f99bf3087d
--- /dev/null
+++ b/lib/routes/mofish/index.js
@@ -0,0 +1,29 @@
+const got = require('@/utils/got');
+
+module.exports = async (ctx) => {
+ const id = ctx.params.id;
+ const page = ctx.query.page || 0;
+
+ const url = `https://api.tophub.fun/v2/GetAllInfoGzip?id=${id}&page=${page}`;
+
+ const response = await got({
+ method: 'get',
+ url: url,
+ });
+
+ const data = response.data.Data.data;
+
+ const title = `鱼塘热榜`;
+
+ ctx.state.data = {
+ title: title,
+ link: `https://mo.fish/`,
+ description: title,
+ item: data.map((item) => ({
+ title: item.Title,
+ pubDate: new Date(item.releaseTime).toUTCString(),
+ link: item.Url,
+ guid: item.id,
+ })),
+ };
+};
\ No newline at end of file