Poor Man's Google Reader Search #

My girlfriend is subscribed to a dozen or so cooking/food blogs (using Google Reader). She stars recipes she's interested in, but since there are so many that catch her eye, she now has over one hundred starred items. Finding a recipe from several months ago among them is not easy, since Reader does not support search (yes, we know).

Since these starred items are shared (so my mom can read them too), I thought that I could use Reader's JSON output to allow at least a primitive type of searching. The result is this filtering UI. You can either plug in a public label name (of the form user/user ID/label/label name) or a feed URL and a search term, and all items with titles containing the term will be displayed.

This hack uses the continuation token that Reader provides, so that more than one chunk of items can be fetched.

Smart Google Reader Subscribe Button #

Already subscribed to in Google ReaderA few months ago, Jasper de Vries made a Greasemonkey script that places an unobtrusive feed icon in the upper-right portion of the screen, allowing two-click subscription to feeds that are encountered. Then, today I saw Pete's Greasemonkey scripts wish-list, which included on it a "You’re Already Subscribed To This" script. I figured it would be pretty easy to take Jasper's script and modify it to add this functionality.

My version of the script adds an overlayed check icon when you're subscribed to at least one of the feeds that the site advertises via auto-discovery. This was made easy by a URL that Reader exports: http://www.google.com/reader/api/0/subscribed?s=feed/<feed URL>. It returns "true" or "false" depending on whether the current user (as determined by the Google Account cookie) is subscribed to the given feed.

There are a couple of caveats: The check is not foolproof - sites that use FeedBurner, that have changed their feed URLs since you've subscribed, or that available under different URLs (e.g. with or without www) may not be detected correctly. Additionally, by its very nature, the script reports to Google Reader's servers all the feed URLs that it encounters. The extra-paranoid may not like this. However, an alternative approach (download the entire list of subscriptions, cache it, and use that for checks) would have meant a lot more coding on my side, more than I'm willing to do on a Saturday afternoon.

Export Google Personalized Homepage Feeds to OPML #

Update on 2/1/2010: iGoogle no longer supports inline gadgets, which includes this module. The alternate OPML export method described by Google Operating System still works however.

The recently released Google Reader homepage module makes it even easier to keep track of feeds on the Google Personalized Homepage. Unlike the built-in feed handling of the homepage, it keeps track of read state, can display item contents inline (in a floating bubble) and takes up much less room. However, if you've been using the homepage's feed modules, moving the feeds to Reader is a tedious process, since the site does not provide an export functionality.

I've created a simple inline module that adds an OPML export feature to the hompage. It does this by going through the DOM, looking for feed modules, and extracting the feed URL from them. It also handles Google News modules, which can be mapped to feeds, but are not quite the same as far as the code goes. To use it, click the "Add to Google" button below:

Add to Google

Once you've gone through the module adding process (and allowed inlining), simply click the "Export OPML" button. This does not work in Internet Explorer, since it does not support data: URIs. Then, do a "Save As..." on the pop-up window and import that OPML file into Google Reader (click "Edit Subscriptions" then "More Actions..." then "Import Subscriptions") or any other feed reader.

This module is not endorsed by Google, and is not guaranteed to always work (especially on non-US Google domains).