tl;dr
Meed is a JavaScript library for getting Medium RSS feeds as JSON.
It’s written in JavaScript utilizing fetch
&
async
/ await
bundled as a UMD module so it
can be used in a modern browser or Node.js environment. You can get the
feed for any user,
publication, topic,
or tag.
Features
fetch
(native or polyfilled)Promise
-based (async
/await
)- Modern browsers & Node.js
Limitations
- 10 item RSS limit (by Medium)
Demo
See the Pen Meed demo by Paul Esch-Laurent (@Pinjasaur) on CodePen.
Usage
-
Install with yarn/npm, a CDN, or the latest release.
yarn add meed # yarn npm install meed # npm
-
Add the script to your markup.
<script src="path/to/meed.js"></script>
Or to your Node.js environment.
const Meed = require("meed")
-
Create a new instance.
const feed = new Meed()
In Node.js, bring your own
fetch
.const fetch = require("node-fetch") const feed = new Meed({ fetch })
-
Grab a feed.
(async () => { const user = await feed.user("Medium") console.log(user) })()
API
At a high level, you create a new Meed
instance and then
call one of the methods. A “feed” refers to an array of
formatted objects.
Error handling for the await
calls is left up to the
author. A standard try..catch
block will suffice or a
utility like await-to-js
will work as well.
Meed([options])
Create a new
instance, optionally passing in an
options
object.
options
proxy
Type: String
Default: none
CORS proxy to use for local(host). Gets prepended to the request URL.
fetch
Type: Function
Default: none
fetch
implementation to use (i.e. in Node.js). By default,
the global native implementation will be attempted to be used (i.e. in a
modern browser).
user(user)
user
Required
Type: String
Returns the feed for a user
.
publication(publication, [tag])
publication
Required
Type: String
tag
Type: String
Returns the feed for a publication
with an optional
tag
.
topic(topic)
topic
Required
Type: String
Returns the feed for a topic
.
topics()
Returns the feed of available topic
s. See also:
medium.com/topics.
tag(tag)
tag
Required
Type: String
Returns the feed for a tag
.
Feed Formats
RSS (user, publication, topic, or tag) & JSON (topics) feeds are parsed and returned as arrays of objects formatted as follows.
RSS
A user, publication, topic, or tag feed.
{
date: Date, // ISO date
link: String, // (URL) link to article
guid: String, // (URL|URI) GUID
title: String, // title of article
author: String, // name of author (_should_ be sans email)
content: String, // (HTML) content of article
categories: Array[String] // list of categories
}
JSON
A topics feed.
{
slug: String, // slug used in link URL
link: String, // (URL) link to topic
name: String, // name of topic
image: String, // (URL) image of topic
description: String // description of topic
}
Limitations
RSS Item Limits
Medium appears to enforce a 10-item limit per RSS feed with no apparent pagination support.
Contributing
Meed itself along with this documentation is open-source (MIT licensed). Any feature requests, issues, questions, improvements, and so forth can be made in the repository. I don’t bite, I promise.