Using Atom feeds to receive Hypothesis notifications in Slack

Update: We have since implemented RSS and that turns out to be a better solution than Atom for Slack integration. To use it, just change stream.atom to stream.rss in the examples here.


At Hypothesis we’ve recently started using Slack for team communication. We’ve also recently spruced up our Atom feed. Let’s look at how you can combine those ingredients to follow annotation activity in Hypothesis.

All Hypothesis Atom feeds begin with this preamble:

https://hypothes.is/stream.atom

That’s a valid feed, but probably not one you’ll want to follow: it’s the Hypothesis firehose.

More likely you’ll want to query along one of three axes: URL, tag, or user. Here are examples of each.

By URL

What: All annotations of Ta-Nehisi Coates’ Letter to my Son

How: https://hypothes.is/stream.atom?uri=http://www.theatlantic.com/politics/archive/2015/07/tanehisi-coates-between-the-world-and-me/397619/

By tag

What: all annotations tagged edu305

How: https://hypothes.is/stream.atom?tags=edu305

By user

What: Paul Allison’s annotations

How: https://hypothes.is/stream.atom?user=paulallison

You can plug these feeds into any app or service that reads Atom feeds. In the case of Slack, you can send items from feeds into team channels or private channels. I’m currently watching the conversation layer on Ta-Nehisi Coates’ article but, since I don’t want to send those notifications to a team channel, I used a private one. First I created a private group:

Then I used Slack’s /feed command to subscribe to the feed of annotations on Ta-Nehisi Coates’ Letter to my Son:

And that’s it! Now I can read updates in that private channel, I can receive desktop notifications, and I can also push notifications to Slack on my mobile devices.

Of course there are many other ways to receive Atom feeds. Here’s that same feed in inoreader, a cloud-based feed reader:

Atom (along with its close cousin RSS) is a great way to surface streams of notifications in a variety of contexts. Now you can use it to gather streams of Hypothesis activity along three major axes: URL, tag, and user.