I use Readability to bookmark all the articles I come across every day. Since I do not usually have time to sit down and read during the day, I read at night. Although, I prefer reading physical books to my laptop or phone screen. So, I decided to create books of all my articles per year. They would serve as reading list history and also ease the actual "reading" process.
Plan
- Export all my bookmarks from Readability
- Compile the content of all the articles into a book format
- Create PDF for backup and print
Export
This was easy. Readbility just emails you a JSON document with all of your bookmark data. Or you can use their API to gather this information.
Compile
This was a bit more difficult. Since the export data did not include the article content, I had to "parse" the URL's for content. Luckily, Readability's API includes their parser also.
I wrote this simple node application to combine the article contents together into a HTML page:
//Create Reading List eBook
var readability = require('readability-api');
var async = require('async');
var articleUrls = require('./readability.json').bookmarks.map(function(article) {
return article.article__url;
});
readability.configure({
parser_token: '<API KEY>'
});
var parser = new readability.parser();
var html = '<!DOCTYPE html><html><head><meta charset="UTF-8"><link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"><title>Reading Material 2014</title></head><body class="container">';
async.each(articleUrls, function(url, done) {
parser.parse(url, function(err, article) {
if (article) {
html += '<article><h1>' + article.title + '</h1><p>' + article.content + '</p></article>';
}
done();
});
}, function() {
html += '</body></html>';
console.log(html);
});
After creating and styling the HTML a bit, I used Google Chrome to print the page to PDF for me. I realize this could have been done within the node app also, but Chrome was quicker at the time.
Now each year I can have a digital history of what I read and have physical copies to fill my bookshelf with.