diff --git a/docs/social-media.md b/docs/social-media.md
index 8dac72da8..82c547688 100644
--- a/docs/social-media.md
+++ b/docs/social-media.md
@@ -284,6 +284,10 @@ pageClass: routes
+### 快拍 Stories
+
+
+
## Matters
### 最新排序
diff --git a/lib/router.js b/lib/router.js
index 3e45033a5..28bc6170c 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -172,6 +172,7 @@ router.get('/twitter/followings/:id', require('./routes/twitter/followings'));
// Instagram
router.get('/instagram/user/:id', require('./routes/instagram/user'));
router.get('/instagram/tag/:tag', require('./routes/instagram/tag'));
+router.get('/instagram/story/:username', require('./routes/instagram/story'));
// Youtube
router.get('/youtube/user/:username/:embed?', require('./routes/youtube/user'));
diff --git a/lib/routes/instagram/story.js b/lib/routes/instagram/story.js
new file mode 100644
index 000000000..5095f3f17
--- /dev/null
+++ b/lib/routes/instagram/story.js
@@ -0,0 +1,34 @@
+const got = require('@/utils/got');
+
+module.exports = async (ctx) => {
+ const username = ctx.params.username;
+
+ const response = (await got({
+ method: 'get',
+ url: `https://api.storiesig.com/stories/${username}`,
+ headers: {
+ Referer: `https://storiesig.com/?username=${username}`,
+ },
+ })).data;
+
+ const items = response.items.map((item) => {
+ const image = item.image_versions2 && item.image_versions2.candidates[0].url;
+ const video = item.video_versions && item.video_versions[0].url;
+
+ const description = item.video_versions ? `` : `
`;
+ const pubDate = new Date(item.taken_at * 1000).toUTCString();
+
+ return {
+ title: `[快拍/Stories]${item.caption || ''} ${pubDate}`,
+ description,
+ pubDate,
+ link: `https://www.instagram.com/stories/${username}/${item.id}`,
+ };
+ });
+
+ ctx.state.data = {
+ title: `${response.user.full_name}'s stories on Instagram`,
+ link: `https://www.instagram.com/stories/${username}/`,
+ item: items,
+ };
+};