I mentioned yesterday my frustrations with Instagram were at an all-time high, and I wanted to “soft quit” the app by adding my follows as a source in Monocle. I didn’t find any existing guide on how to do this (sorry if I missed yours!), but I did get two usefulsuggestions about tools to enable this: Instagram Atom, and Granary.
I use Granary already, to pipe Twitter into Monocle, so that was my preferred option. The short guide below documents the steps I took to get things set up.
Step 1. Get your Instagram session ID
Instagram doesn’t offer much of an API anymore, so to let Granary do the magic, we need to get our Instagram session ID. To do this:
Login to Instagram through a desktop web browser
Use the developer tools to inspect the cookies set by Instagram. Look for a cookie called “sessionid” and copy the value of it:
Step 2. Link up Granary
Head over to Granary. Click on the Instagram login button, and authorise Granary if you need to. When you return to Granary, there will be a couple of form fields you can fill in.
Enter your Instagram username
Select @friends from the dropdown
Change the format to html/atom/json
Enter your copied session id in the cookie field
Click “GET”, and Granary will generate a preview of your feed and give you a link:
Copy that link.
Step 3. Add to Microsub
You need to add the URL you’ve copied from Granary as a source in whatever Microsub server you use. I use Aperture, so I added a new Instagram channel with my feed as a source. I’m going to assume you know how to do this for your server of choice.
Step 4. Enjoy
All being well, you should now have an Instagram feed in Monocle/your chosen social reader.
With all this set up, I can now add the Instagram app to the “To Quit” folder on my iPhone.
There’s a couple of limitations with “using” Instagram in a reader:
No syndication – to my knowledge, it’s not possible to syndicate any of your response (likes, replies, etc) back to Instagram. So if you want to let your Instagram-only friend know you liked their photo, into the app you go.
Session expiry – I don’t know yet if the session id we got in Step 1 will expire. If it does, you’ll probably need to redo creating and adding your feed.
Multi-accounts – if, like me, you have more than one Instagram account, and want to add both, there are some hoops to jump through. I found you need to add the second account using a second browser/new private browsing session, or some wires will get crossed somewhere and you’ll need to setup both feeds all over again.
If you’re a Monocle user, you might have noticed a new feature in your UI today. If you self-host, you’ll want to update your installation to the latest version. Two nice “quality of life” features have gone live, and I’m a little excited, because I helped build one of them 😁
The biggest feature I’ve been missing in Monocle over, say, Feedly, is a “mark all read” button. I follow too many busy sources to be able to keep up with everything, so I frequently mark everything as read and carry on. It helps me not get overloaded.
Aaron had raised an issue to build the feature at some point, but I wanted it, and had a spare weekend, so figured I’d make myself useful!
In all, it was surprisingly straightforward. The Microsub spec is well documented, so I knew how it needed to work. All I had to figure out was how to fit that into how Monocle already did things, and there was already a “mark read” for single entries to work from.
The UI took the longest to build, mostly because I had to figure out the Bulma frontend framework. Rosemary had already come up with some ideas on how it should work, so the hard part had pretty much been done.
And with a little bit of testing, there it was – “Mark All Read” in Monocle. I’ve been running it in my install for a little over a week now, and I hope you’ll find it as useful as I have if you’re a heavy Monocle user.
I can’t take any credit for in the slightest for the new “Show Only Unread Entries” feature – to my knowledge, that was all Aaron. It was a nice surprise to find once I updated my local install from the master branch!