diff --git a/docs/blog.md b/docs/blog.md
index 8cb069d667..c01b8b6270 100644
--- a/docs/blog.md
+++ b/docs/blog.md
@@ -80,6 +80,10 @@ pageClass: routes
+## Miris Whispers
+
+
+
## Paul Graham 博客
通过提取文章全文,提供比官方源更佳的阅读体验。
@@ -106,6 +110,10 @@ pageClass: routes
:::
+## Stratechery by Ben Thompson
+
+
+
## Whoscall
### 最新文章
diff --git a/docs/en/blog.md b/docs/en/blog.md
index bce6314e84..75cf2a0db6 100644
--- a/docs/en/blog.md
+++ b/docs/en/blog.md
@@ -40,6 +40,10 @@ pageClass: routes
+## Miris Whispers
+
+
+
## Paul Graham
### Essays
@@ -66,6 +70,10 @@ Limit the number of entries to be retrieved by adding `?limit=x` to the end of t
+## Stratechery by Ben Thompson
+
+
+
## WordPress
diff --git a/lib/utils/common-config.js b/lib/utils/common-config.js
index 5ca9df32d1..e9896132dc 100644
--- a/lib/utils/common-config.js
+++ b/lib/utils/common-config.js
@@ -3,6 +3,10 @@ const got = require('@/utils/got');
const iconv = require('iconv-lite');
// eslint-disable-next-line no-unused-vars
const date = require('@/utils/date');
+// eslint-disable-next-line no-unused-vars
+const { parseDate } = require('@/utils/parse-date');
+// eslint-disable-next-line no-unused-vars
+const timezone = require('@/utils/timezone');
function transElemText($, prop) {
const regex = new RegExp(/\$\((.*)\)/g);
diff --git a/lib/v2/miris/blog.js b/lib/v2/miris/blog.js
new file mode 100644
index 0000000000..e4fec84560
--- /dev/null
+++ b/lib/v2/miris/blog.js
@@ -0,0 +1,19 @@
+const buildData = require('@/utils/common-config');
+
+module.exports = async (ctx) => {
+ const link = 'https://blog.miris.design/';
+
+ ctx.state.data = await buildData({
+ link,
+ url: link,
+ title: 'Miris Whisper',
+ author: 'Miris',
+ description: 'Esoteric technical and sometimes personal stuff...',
+ item: {
+ item: 'ul > li',
+ title: `$('li > a').contents().filter(function () { return this.type === 'text' }).text()`,
+ link: `$('li > a').attr('href')`,
+ pubDate: `parseDate($('li > a > .date').text().slice(1, 11))`,
+ },
+ });
+};
diff --git a/lib/v2/miris/radar.js b/lib/v2/miris/radar.js
new file mode 100644
index 0000000000..0b66aec856
--- /dev/null
+++ b/lib/v2/miris/radar.js
@@ -0,0 +1,11 @@
+module.exports = {
+ 'miris.design': {
+ _name: 'Miris',
+ blog: [
+ {
+ title: 'Miris Whispers',
+ docs: 'https://docs.rsshub.app/en/blog.html#miris-design',
+ },
+ ],
+ },
+};
diff --git a/lib/v2/miris/router.js b/lib/v2/miris/router.js
new file mode 100644
index 0000000000..be98531b94
--- /dev/null
+++ b/lib/v2/miris/router.js
@@ -0,0 +1,3 @@
+module.exports = function (router) {
+ router.get('/blog', require('./blog'));
+};
diff --git a/lib/v2/stratechery/index.js b/lib/v2/stratechery/index.js
new file mode 100644
index 0000000000..8b26aab028
--- /dev/null
+++ b/lib/v2/stratechery/index.js
@@ -0,0 +1,20 @@
+const buildData = require('@/utils/common-config');
+
+module.exports = async (ctx) => {
+ const link = 'https://stratechery.com/';
+
+ ctx.state.data = await buildData({
+ link,
+ url: link,
+ title: 'Stratechery by Ben Thompson',
+ author: 'Ben Thompson',
+ description: 'Stratechery provides analysis of the strategy and business side of technology and media, and the impact of technology on society. ',
+ item: {
+ item: 'article',
+ title: `$('article > header > h1 > a').text()`,
+ link: `$('article > header > h1 > a').attr('href')`,
+ pubDate: `parseDate($('article .entry-date').attr('datetime'))`,
+ description: `$('article > .entry-content').html().replace(/%/g, '%')`,
+ },
+ });
+};
diff --git a/lib/v2/stratechery/radar.js b/lib/v2/stratechery/radar.js
new file mode 100644
index 0000000000..7fbea66cc1
--- /dev/null
+++ b/lib/v2/stratechery/radar.js
@@ -0,0 +1,11 @@
+module.exports = {
+ 'miris.design': {
+ _name: 'Stratechery by Ben Thompson',
+ blog: [
+ {
+ title: 'Articles',
+ docs: 'https://docs.rsshub.app/en/blog.html#stratechery-by-ben-thompson',
+ },
+ ],
+ },
+};
diff --git a/lib/v2/stratechery/router.js b/lib/v2/stratechery/router.js
new file mode 100644
index 0000000000..cf5796bea8
--- /dev/null
+++ b/lib/v2/stratechery/router.js
@@ -0,0 +1,3 @@
+module.exports = function (router) {
+ router.get('/', require('.'));
+};