diff --git a/docs/new-media.md b/docs/new-media.md
index 9a6558b6a..cb81a7477 100644
--- a/docs/new-media.md
+++ b/docs/new-media.md
@@ -256,6 +256,12 @@ Tag
+## iDaily 每日环球视野
+
+### 今日 Timeline
+
+
+
## iDownloadBlog
### blog
diff --git a/lib/router.js b/lib/router.js
index f4927d656..ae1c42581 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -3733,6 +3733,9 @@ router.get('/dayone/blog', require('./routes/dayone/blog'));
// 滴答清单
router.get('/dida365/habit/checkins', require('./routes/dida365/habit-checkins'));
+// iDaily 每日环球视野
+router.get('/idaily/today', require('./routes/idaily/index'));
+
// 北屋
router.get('/northhouse/:category?', require('./routes/northhouse/index'));
diff --git a/lib/routes/idaily/index.js b/lib/routes/idaily/index.js
new file mode 100644
index 000000000..3205f932a
--- /dev/null
+++ b/lib/routes/idaily/index.js
@@ -0,0 +1,28 @@
+const got = require('@/utils/got');
+
+module.exports = async (ctx) => {
+ const response = await got({
+ method: 'get',
+ url: 'http://idaily-cdn.idailycdn.com/api/list/v3/iphone/zh-hans?page=1&ver=iphone',
+ });
+
+ const data = response.data;
+
+ let dataToday = data.filter((item) => item.pubdate_timestamp * 1000 >= new Date().getTime() - 86400000);
+
+ // leverage yesterday's items if today's not published yet
+ if (dataToday.length === 0) {
+ dataToday = data.filter((item) => item.pubdate_timestamp * 1000 >= new Date().getTime() - 86400000 * 2);
+ }
+
+ ctx.state.data = {
+ title: `iDaily 每日环球视野`,
+ description: 'iDaily 每日环球视野',
+ item: dataToday.map((item) => ({
+ title: item.ui_sets.caption_subtitle,
+ description: `
${item.content}`,
+ pubDate: new Date(item.pubdate_timestamp * 1000).toUTCString(),
+ link: item.link_share,
+ })),
+ };
+};