Using IFTTT to syndicate (PESOS) content from social services to WordPress using Micropub

Using IFTTT to syndicate (PESOS) content from social services to WordPress using Micropub

Introduction

What follows may tend toward the jargon-y end of programming, but I’ll endeavor to explain it all and go step-by-step to allow those with little or no programming experience to follow along and use the tools I’m describing in a very powerful way.  I’ll do my best to link the jargon to definitions and examples for those who haven’t run across them before. Hopefully with a bit of explanation, the ability to cut and paste some code, or even make some basic modifications, you’ll be able to do what I and others have done, but without having to puzzle it all out from scratch.

Most readers are sure to be aware of the ubiquitous “share” buttons that appear all over the web. Some of the most common are “share to Facebook” or “share to Twitter”. In my examples that follow, I’m doing roughly the same thing, but I’m using technology called webhooks and micropub to be able to share not just a URL or web address, but a variety of other very specific data in a specific way to my website.

This “share”–while a little more complicated–gives me a lot more direct control over the data I’m sending and how it will be seen on my website. I would hope that one day more social websites will have built in share buttons that allow for direct micropub integration so that instead of only sharing to corporate sites like Facebook, Twitter, et al. they’ll let people share directly to their own personal websites where they can better control their online identity and data. What I’m describing below is hopefully a temporary band-aid that allows me to keep using common social services like Pocket, YouTube, Meetup, Goodreads, Letterboxd, Diigo, Huffduffer, Reading.am, Hypothes.is, and hundreds of others but to also post the content to my site so that I own and control more of my own online data.

An example using Pocket

Following in the footsteps of Charlotte Allen and Jan-Lukas Else, I’ve been tinkering around with improving some of my syndication workflows for a number of social silos including Pocket, a social silo that focuses on bookmarking material to read later.

I have long used IFTTT (aka If This, Then That), a free and relatively simple web service that allows one to create applets that tie a large number of web-based and social services together, to send data from my Pocket account to my WordPress-based website. I’d done this using my Pocket RSS feed to create WordPress draft posts that I could then modify if necessary and publish publicly if I desired. Since I regularly use a number of Micropub clients in conjunction with the WordPress Micropub plugin and IFTTT supports webhooks, I thought I’d try that out as a separate process to provide a bit less manual pain in mapping the data for posts to appear like I want them to on my website. 

Now I can use my Pocket account data and map most of it directly to the appropriate data fields on my website. Because Pocket has direct integration into IFTTT, I can actually get more data (particularly tags) out of it than I could before from the simple RSS feed.

Below, you’ll find what I’ve done with a quick walk through and some example code snippets. I’ll break some of it down into pieces as I go, and then provide a specific exemplar of some of the code properly strung together at the end. I’ll also note that this general procedure can be used with a variety of other silos (and either their integrated data or RSS feeds) within IFTTT to post data to your website. Those running platforms other than WordPress may be able to use the basic recipe presented here with some small modifications, to send similar data from their accounts to their sites that support Micropub as well. 

Directions for connecting IFTTT to publish to WordPress via Micropub

Preliminaries

Install and activate the Micropub plugin for WordPress. This will give your website a server endpoint that IFTTT will use to authenticate and send data to your website on your behalf.

If you don’t already have it, install the IndieAuth plugin for WordPress and activate it. This will allow you to generate an authorization token (think password) with the appropriate scopes (think permissions to do specific actions on your website) to allow IFTTT to securely post to your website. 

Within the WordPress administrative interface/dashboard go to Users >> Mange Tokens or go to the path /wp-admin/users.php?page=indieauth_user_token on your website. 

At the bottom of that page under the section “Add Token” add a convenient name for your new token. You’ll see in the following screencapture that I’ve used “IFTTT for Webhooks”. Next click the check boxes to add scopes for “create” and “media”. Finally click the “Add New Token” button.

Screencapture from the Add Token section of the User >> Manage Tokens page

On the resulting page, copy the entirety of the returned access token in a safe place. You’ll need this token later in the process and once you’ve navigated away from the page, there’s no way to retrieve the token again later. The same token can be used for multiple different recipes within IFTTT,  though one could create a different token for each different recipe if desired.

Sign up for an IFTTT account (if you don’t already have one). 

Register Pocket as a service you can use within IFTTT.

The IFTTT Applet

In your IFTTT.com account, create a new applet.

Screenshot of the "If This Then That" recipe start with "This" highlighted

For the “if” part of the applet, search for and choose the Pocket application.

Screenshot of a search for "Pocket"

Choose the trigger “Any new item” (other triggers could be chosen for different combinations of actions).

Click the “then” part of the applet, and search for and chose the Webhooks application.

Screenshot of the "That" portion with a search for Webhooks

Choose the “Make a web request” option (currently the only option on the page).

Next we’ll fill in the action fields.

Screencapture of the Complete Action Fields step

 

Fill in the four action fields with the following values, with the appropriate modifications as necessary:

URL: https://www.example.com/wp-json/micropub/1.0/endpoint

Be sure to change example.com to the appropriate URL for your website. If you’re using a platform that isn’t WordPress in combination with the Micropub plugin, you can quickly find your appropriate endpoint by looking at your homepage’s source for a <link> element with a rel="micropub" attribute.

Method: POST
Content Type: application/x-www-form-urlencoded

More advanced users might experiment with other content types, but this will naturally require different data and formatting in the Body section.

Body: 

The Body portion is one of the most complicated portions of the operation, because this is where you can get creative in how you fill this out and the end results you end up with on your website. You can use the available variables in the recipe to custom create almost anything you like and some services will give you a tremendous amount of flexibility. I’ll walk through a handful of the most common options and then tie them all together at the end. Ultimately the Body will be a string of various commands that indicate the data you want to send to your website and all of those commands will be strung together with an ampersand character (“&“) between each of them.

There are some small differences you may want to experiment with in terms of what you put in the Body field based on whether or not you’re using the Post Kinds plugin to create your posts and reply contexts or if you’re not. 

Depending on which pieces you choose, I recommend doing a few test runs for your applets to make sure that they work the way you expect them to. (The Micropub plugin has a setting to mark incoming posts automatically as drafts, so you’re not spamming your readers while you’re testing options if you’re testing this on a live site.) Sometimes formatting issues (particularly with setting a publish time) may cause the post to fail. In these cases, experiment to find and excise the offending code and see if you can get things working with minimal examples before adding additional data/details.

For those who would like to get into more advanced territory with the programming and methods, I recommend looking at the W3C’s Webmention specification

The first thing you’ll want in the Body will be your access token. This is similar to a password that allows the webhook to publish from IFTTT to your website. You’ll want a line that reads as follows with the AccessTokenHere replaced with the access token from your token provider which you created earlier and saved. You’ll want to keep this secret because it acts like a password for allowing remote applications to post to your website.

access_token=AcessTokenHere

Next will come the content you want to be published to your site.

&content=<<<{{EntryTitle}}<br>{{EntryPublished}}>>>

I’ll mention that the content snippet can include almost anything you’d like using the variables provided by IFTTT as well as a reasonable variety of HTML. I’ve used it to add things like <blockquotes> for annotations and even <audio> tags for making listen posts or bookmarking audio with Huffduffer!

The following snippet tells your site what kind of content it’s receiving. Unless you’re doing something more exotic than bookmarks, likes, favorites, replies, or most post kinds (except maybe events), you’ll want to use the h-entry snippet as follows:

&h=entry

If you’d like your post to contain a formal title, then you’ll want to include the following code snippet. Generally with shorter content like notes/status updates, bookmarks, reads, likes, etc., I follow the practice of publishing titleless posts when they’re not required, so I personally skip this piece in most of my posts, but some may wish to include it.

&name=<<<{{Title}}>>>

To have your website create or use the correct category or tag taxonomies on your posts, you’ll want to have something similar to the following snippet. If you want to specify more than one category, just string them together with ampersands. If your category/tag has a blank space in it you can replace the spaces with %20. The Micropub server on your site should automatically check to see if you have categories or tags that match what is sent, otherwise it will create a new tag(s).

&category[]=Bookmark&category[]=Social%20Stream

I’ve found that in practice, some silos that allow for multiple tags will actually publish them via micropub using something along the lines of the following if the  appropriate variables on IFTTT exist. In these cases, I append this to the other categories and tags I want to specify.

&category[]=<<<{{Tags}}>>>

If you’re using your Pocket account to send your bookmarked articles to read later, you’ll want to create a bookmark with the following line:

&bookmark-of=<<<{{EntryUrl}}>>>

Alternatively, if you were using your Pocket account to archive your articles once you’ve actually read them, you could have IFTTT post these archived items as “reads” to your site by choosing the “New Item Archived” element in the Pocket portion of the IF set up process. Here you’d replace the above bookmark-of line with the following:

&read-of=<<<{{EntryUrl}}>>>

If you were creating different sorts of posts you might also use the appropriate alternate verbiage: like-of, watch-of, listen-of, rsvp, etc. (find details for the appropriate mark up on the IndieWeb wiki or the correct microformats v2 property within the code for the Post Kinds plugin). If you are using the Post Kinds plugin, this is the piece of data that it receives to specify the correct post kind and create the reply context for your post and will likely preclude you from needing to send any data in the content portion (above) unless the services applet will let you send additional commentary or notes that you want to appear in the body of your post.

Next, if your site supports syndication links with a plugin like Syndication Links for WordPress, you would use the following line of code so that those are set and saved properly. (This presumes that the URL specified is the permalink of the content on the social silo. I’ll note that Pocket doesn’t provide these (easily) as most of their links are canonical ones for the original content, so I don’t use this on my IFTTT recipe for my Pocket workflow, but I do use it for others like Huffduffer and Reading.am. It conveniently allows me to find copies of my content elsewhere on the web.)

&syndication=<<<{{EntryUrl}}>>>

If you’d like to have the timestamp on your post match the time when you actually bookmarked the item in Pocket, you’ll need to add the following line of code. Without this line, the publication time will match the time of the Webhook action, which for most IFTTT things can be a delay of a minute or two up to an hour or more afterwards. In practice, I’ve noticed that most content posts to my website within about 10-15 minutes of the original, and this is based on the polling lag within IFTTT checking your triggers. (Sadly, I’ll report that I’ve never gotten this code snippet to work for me in practice, and I suspect it may be because the time format from IFTTT doesn’t match what is expected by the Micropub server on my website. Perhaps David Shanske or Ryan Barrett may have a more specific idea about what’s causing this or suggest a fix? I’ll try to dig into it shortly if I can. As a result, I generally have left this snippet of code off of my triggers and they’ve worked fine as a result. Until this issue might be fixed, if you want to have the exact timestamp, you could alternately include the data, if provided, in the content section instead and then copy it over manually after-the-fact.)

&published=<<<{{EntryPublished}}>>>

If you’ve got syndication endpoints set up properly with something like the Syndication Links plugin, you can use the following sort of code snippet. I generally eschew this and prefer to save my posts as drafts for potential modification prior to publishing publicly, but others may have different needs, so I’m including the option for relative completeness so people can experiment with it if they like.

&mp-syndicate-to[]=twitter-bridgy

This concludes the list of things that might commonly be included in the Body portion of the IFTTT applet. Tying these all together for combination in the Post Kinds Plugin one would want something along the lines of :

Body: access_token=AccessTokenHere&content=<<<{{EntryTitle}}<br> {{EntryPublished}}>>>&h=entry&category[]=Bookmark&category[]=Social%20Stream&bookmark-of=<<<{{EntryUrl}}>>>

Here’s another example of the code I use in conjunction with a similar applet for Diigo, a bookmarking service. The “Description” portion allows me to add a note or comment on the bookmark when I make it and that note is transported over to the post on my website as well.

Body: access_token=AccessTokenHere&content=<<<{{Description}}>>>&h=entry&category[]=Bookmark&category[]=Social%20Stream&category[]=<<<{{Tags}}>>>&bookmark-of=<<<{{Url}}>>>

Note that when the string of commands is done, you do not need to have a trailing ampersand. Most of the examples I’ve used are from the Pocket set up within IFTTT, but keep in mind that other services on the platform may use alternate variable names (the portion in the braces {{}}). The differences may be subtle, but they are important so be careful not to use {{EntryTitle}} if your specific recipe expects {{Title}}.

To finish off making your new applet, click on the “Create Action” button. (If necessary, you can test the applet and come back to modify it later.)

Finally, give your applet an appropriate tile and click the “Finish” button. For my Pocket applet I’ve used the name “Pocket bookmark PESOS Micropub to WordPress”.

Screencapture of the Review and Finish page on IFTTT

Now that your applet is finished, give it a whirl and see if it works the way you expect! Don’t feel discouraged if you run into issues, but try experimenting a bit to see if you can get the results you’d like to see on your website. You can always go back to your applet recipe and modify it if necessary.

Conclusion

Hopefully everyone has as much fun as I’ve had using this workflow to post to their websites. It may take some patience and experimentation to get things the way you’d like to have them, but you’re likely to be able to post more easily in the future. This will also let you own your data as you create it while still interacting with your friends and colleagues online.

I know that it may be possible to use other services like Zapier, Integromat, Automate.io, or other similar services instead of IFTTT though some of these may require paid accounts. I’d love to see what sorts of things people come up with for using this method for owning their own data. Can you think of other services that provide webhooks for potential use in combination with Micropub? (Incidentally, if this is your first foray into the Micropub space, be sure to check out the wealth of free Micropub clients you can use to publish directly to your website without all of the set up and code I’ve outlined above!)

Currently I’m using similar workflows to own my data from social services including Pocket, Diigo, Huffduffer, Reading.am, YouTube, Meetup/Google Calendar, and Hypothes.is. I’ve got several more planned shortly as well.

Thanks once again to Charlotte Allen and subsequently Jan-Lukas Else for the idea of using Micropub this way. Their initial documentation was invaluable to me and others are sure to find it useful. Charlotte has some examples for use with Facebook and Instagram and Jan-Lukas’ example may be especially helpful for those not using WordPress-specific solutions.

And as always, a big thank you to the entire IndieWeb community for continuing to hack away at making the web such a fun and vibrant space by making the small building blocks that make all of the above and so much more possible.

This post was originally published on Chris Aldrich

Transitioning from Pocket to PressForward

I’ve recently been attempting to own all of my online bookmarks and online articles I’d like to read to replace services like Pocket and Instapaper. While I feel like I’m almost there using PressForward, there are still one or two rough edges.

One of them is creating a simple mobile workflow to take headlines from Twitter and get them into my reading queue. Previously I had used an IFTTT.com recipe to take things I “liked” in my Twitter stream to strip off URLs and put them into Pocket for reading later. In fact, very few of my thousands of likes in Twitter are traditional “likes” because I’m really using that functionality to indicate “I’d like to read the article linked to in this Tweet at a later date”. Somewhere in the past couple of months I’ve mused to at least one person on the PressForward team that it would be nice to have a simple indicator to send articles from Twitter to PressForward like this, but even if I were building it all by hand, this would be a bit further down the list of priorities. What to do in the erstwhile?

RSS has long been going out of fashion, particularly among the major social silos who want to keep you in their clutches, but it dawned on me to check to see if Pocket or Instapaper provide RSS feeds. Sure and gloriously enough, they do! In fact, Pocket has an unread feed, an archive feed, an all items feed (that includes both of the other two), and as a lovely additional touch, they’ve even got the ability to make feeds private. Instapaper has RSS feeds too, though they were a bit more hidden and took a right click/view source along with a manual completion of their base URL. The nice part is that one can take these RSS feeds and plug them straight into one’s PressForward RSS feed et voilà there they are on my own site! (From the viewpoint of PressForward, this is also very close to being able to nominate items directly from Twitter.) While this is more of a PESOS feed, the result is a no-brainer and provides a near real-time experience that’s more than adequate for my needs (at least until yet another silo goes down).

And as added bonuses, if I feel like using Pocket or Instapaper from time to time, I can do so without loss of data along the stream and the small handful of people with whom I interact on Pocket won’t notice the fact that I’ve disappeared.

For the millionth time, G-d bless RSS, a wonderful tool I use every single day.

This post was originally published on Chris Aldrich

PressForward as an IndieWeb WordPress-based RSS Feed Reader & Pocket/Instapaper Replacement

PressForward as an IndieWeb WordPress-based RSS Feed Reader & Pocket/Instapaper Replacement

As many know, for the past 6 months or so, I’ve been slowly improving some of the IndieWeb tools and workflow I use to own what I’m reading both online and in physical print as well as status updates indicating those things. [1][2][3]

Since just before IndieWebCamp LA, I’ve been working on better ways to own the articles I’ve been reading and syndicate/share them out to other social platforms. The concept initially started out as a simple linkblog idea and has continually been growing, particularly with influence from my attendance of the Dodging the Memory Hole 2016: Saving Online News conference at UCLA in October. Around that same time, it was announced that Pinterest was purchasing Instapaper and they were shutting down some of Instapaper’s development and functionality. I’ve been primarily using Pocket for several years now and have desperately wanted to bring that functionality into my own site. I had also been looking at the self-hostable Wallabag alternative which is under heavy active development, but since most of my site is built on WordPress, I really preferred having a solution that integrated better into that as a workflow.

Enter PressForward

I’ve been looking closely at PressForward for the past week and change as a self-contained replacement for third party services like Pocket and Instapaper. I’ve been looking around for this type of self-hosted functionality for a while.

PressForward was originally intended for journalists and news organizations to aggregate new content, add it to their newsroom workflow, and then use it to publish new content. From what I can see it’s also got a nice following in academia as a tool for aggregating content for researchers focused on a particular area.

It only took a minute or two of looking at PressForward to realize that it had another off-label use case: as a spectacular replacement for read-later type apps!

In an IndieWeb fashion, this fantastic WordPress plugin allows me to easily own private bookmarks of things I’d like to read (PressForward calles these “Nominations” in keeping with its original use case). I can then later read them on my own website (with Mercury f.k.a Readability functionality built in), add commentary, and publish them as a read post. [Note: To my knowledge the creators of PressForward are unaware of the IndieWeb concept or philosophies.]

After some playing around for a bit and contemplating several variations, configurations, and options, I thought I’d share some thoughts about it for others considering using it in such an off-label manner. Hopefully these may also spur the developers to open up their initial concept to a broader audience as it seems very well designed and logically laid out.

Examples

The developers obviously know the value of dogfooding as at least two of them are using it in a Pocket-like fashion (as they many not have other direct use-cases).

Pros

PressForward includes a beautiful, full built-in RSS Feed Reader!

This feature alone is enough to recommend using it even without any other feature. I’ve tried Orbit Reader and WhisperFollow (among others) which are both interesting in their own rights but are somewhat limited and have relatively clunky interfaces. The best part of WhisperFollow’s premise is that it has webactions built in, but I suspect these could easily be added onto PressForward.

In fact, not just hours before I’d discovered PressFoward, I’d made this comment on the WordPress Reader Refresh post announcing the refresh of WordPress.com’s own (separate) reader:

Some nice visual changes in this iteration. Makes it one of the most visually pretty feed readers out there now while still maintaining a relatively light weight.

I still wish there were more functionality pieces built into it like the indie-reader Woodwind.xyz or even Feedly. While WordPress in some sense is more creator oriented than consumption oriented, I still think that not having a more closely integrated reader built into it is still a drawback to the overall WordPress platform.

Additionally,

  • It’s IndieWeb and POSSE friendly
  • It does automatic link forwarding in a flexible/responsible manner with canonical URLs
  • Allows for proper attributions for the original author and content source/news outlet
  • Keeps lots of metadata for analyzing reading behavior
  • Taggable and categorizable
  • Allows for comments/commenting
  • Could be used for creating a linkblog on steroids
  • Archives the original article on the day it was read.
  • Is searchable
  • Could be used for collaboration and curation
  • Has Mercury (formerly known as Readability) integrated for a cleaner reading interface
  • Has a pre-configured browser bookmarklet
  • Is open source and incredibly well documented
  • One can count clicks to ones’ own site as the referer while still pushing the reader to the original
  • Along with other plugins like JetPack’s Publicize or Social Networks Auto-Poster, one can automatically share their reads to Twitter, Facebook, or other social media silos. In this case, you own the link, but the original publisher also gets the traffic.

Cons

No clear path for nominating articles on mobile.

This can be a dealbreaker for some, so I’ve outlined a pretty quick and simple solution below.

No direct statistics

Statistics for gauging ones’ reading aren’t built in directly (yet?), but some scripts are available. [4][5][6]

No larger data aggregation

Services like Pocket are able to aggregate the data of thousands of users to recommend and reveal articles I might also like. Sadly this self-hosted concept makes it difficult (or impossible) do have this type of functionality. However, I usually have far too much good stuff to read anyway, so maybe this isn’t such a loss.

Suggested Improvements

Adding the ability to do webactions directly from the “Nominated” screen would be fantastic, particularly for the RSS reader portion.

Default to an unread view of the current “All Content” page. I find that I have to filter the view every time I visit the page to make it usable. I suspect this would be a better default for most newsrooms too.

It would be nice to have a pre-configured archive template page in a simple linkblog format that filters posts that were nominated/drafted/published via the Plugin. This will prevent users from needing to create one that’s compatible with their current theme. Something with a date read, Title linked to the original, Author, and Source attribution could be useful for many users.

A PressForward Nomination “Bookmarklet” for Mobile

One of the big issues I came up against immediately with PressForward is ease of use on mobile. A lot of the content I read is on mobile, so being able to bookmark (nominate) articles via mobile or apps like Nuzzel or Twitter is very important. I suspect this may also be the case for many of their current user base.

Earlier this year I came across a great little Android mobile app called URL Forwarder which can be used to share things with the ubiquitous mobile sharing icons. Essentially one can use it to share the URL of the mobile page one is on to a mobile Nomination form within PressForward.

I’d suspect that there’s also a similar app for iOS, but I haven’t checked. If not available, URL Forwarder is open source on Github and could potentially be ported. There’s also a similar Android app called Bookmarklet Free which could be used instead of URL Forwarder.

PressForward’s built in bookmarklet kindly has a pre-configured URL for creating nominations, so it’s a simple case of configuring it. These details follow below for those interested.

Configuring URL Forwarder for PressForward

  1. Open URL Forwarder
  2. Click the “+” icon to create a filter.
  3. Give the filter a name, “Nominate This” is a reasonable suggestion. (See photo below.)
  4. Use the following entry for the “Filter URL” replacing example.com with your site’s domain name: http://example.com/wp-content/plugins/pressforward/includes/nomthis/nominate-this.php?u=@url
  5. Leave the “Replaceable text” as “@url”
  6. Finish by clicking on the checkmark in the top right corner.

Simple right?

Nominating a post via mobile

With the configuration above set up, do the following:

  1. On the mobile page one wants to nominate, click the ubiquitous “share this” mobile icon (or share via a pull down menu, depending on your mobile browser or other app.)
  2. Choose to share through URL Forwarder
  3. Click on the “Nominate” option just created above.
  4. Change/modify any data within your website administrative interface and either nominate or post as a draft. (This part is the same as one would experience using the desktop bookmarklet.)

What’s next?

Given the data intensity of both the feed reader and what portends to be years of article data, I’m left with the question of hosting it within my primary site or putting it on a subdomain?

I desperately want to keep it on the main site, but perhaps hosting it on a subdomain, similar to how both Aram Zucker-Scharff and James Digioia do it may be better advised?

I’ve also run across an issue with the automatic redirect which needs some troubleshooting as well. Hopefully this will be cleared up quickly and we’ll be off to the races.

References

[1]
C. Aldrich, “A New Reading Post-type for Bookmarking and Reading Workflow,” BoffoSocko | Musings of a Modern Day Cyberneticist, 22-Aug-2016. [Online]. Available: http://boffosocko.com/2016/08/22/a-new-reading-post-type-for-bookmarking-and-reading-workflow/. [Accessed: 31-Dec-2016]
[2]
C. Aldrich, “Owning my Online Reading Status Updates,” BoffoSocko | Musings of a Modern Day Cyberneticist, 20-Nov-2016. [Online]. Available: http://boffosocko.com/2016/11/20/owning-my-online-reading-status-updates/. [Accessed: 31-Dec-2016]
[3]
C. Aldrich, “Notes, Highlights, and Marginalia from E-books to Online,” BoffoSocko | Musings of a Modern Day Cyberneticist, 24-Oct-2016. [Online]. Available: http://boffosocko.com/2016/10/24/notes-highlights-and-marginalia/. [Accessed: 31-Dec-2016]
[4]
A. Zucker-Scharff, “Personal Statistics from 3 Months of Internet Reading,” Medium, 05-Sep-2015. [Online]. Available: https://medium.com/@aramzs/3-month-internet-reading-stats-f41fa15d63f0#.dez80up7y. [Accessed: 31-Dec-2016]
[5]
A. Zucker-Scharff, “Test functions based on PF stats for collecting data,” Gist. [Online]. Available: https://gist.github.com/AramZS/d10fe64dc33fc9ffc2d8. [Accessed: 31-Dec-2016]
[6]
A. Zucker-Scharff, “PressForward/pf_stats,” GitHub. [Online]. Available: https://github.com/PressForward/pf_stats. [Accessed: 31-Dec-2016]

PressForward as an IndieWeb WordPress-based RSS Feed Reader & Pocket/Instapaper Replacement was originally published on Chris Aldrich