Blog

Add RSS feeds to an RSS Reader in Bulk Import using XML OPML

This tutorial will show you how to format a big list of URLS to import into an RSS reader. Let’s use some craigslist pages for this walk through. Say I want a free, cherry piano, and I’m willing to drive anywhere in Michigan to get it. The first thing I need to do is get the URLS for all of the Michigan Craigslist locations.

That information can be gathered either by visiting every Craigslist site in Michigan and manually copy and pasting the code into a text editor or by examining the source code of craigslist.org where all of the links are listed.

The list should look like this:

http://annarbor.craigslist.org

http://battlecreek.craigslist.org

http://centralmich.craigslist.org

http://detroit.craigslist.org

http://flint.craigslist.org

http://grandrapids.craigslist.org

http://holland.craigslist.org

http://jxn.craigslist.org

http://kalamazoo.craigslist.org

http://lansing.craigslist.org

http://monroemi.craigslist.org

http://muskegon.craigslist.org

Now we need to make these sites give us only the information that we want by appending the appropriate search string to each of the URLs. To get that, I went to Craigslist Kalamazoo ( http://kalamazoo.craigslist.org ), clicked “free stuff” and searched for “cherry piano”.

The search returned zero results. The URL changed. Now it ends with a search string: http://kalamazoo.craigslist.org/search/zip?query=cherry+piano.

Ultimately, we’re going to add the search string to the end of each of our Michigan Craigslist links, but first, let’s add the string that will pull up the RSS feed ( that’s what will make our RSS work ).

For Craigslist, the string is ” &format=rss “, where ” & ” is the HTML encoding of ” & ” ampersand. You need to ensure that any instance of ampersand is formatted as HTML.

Now add the search string followed by the RSS string to the URL.

http://annarbor.craigslist.org/search/zip?query=cherry+piano&format=rss

http://battlecreek.craigslist.org/search/zip?query=cherry+piano&format=rss

http://centralmich.craigslist.org/search/zip?query=cherry+piano&format=rss

http://detroit.craigslist.org/search/zip?query=cherry+piano&format=rss

http://flint.craigslist.org/search/zip?query=cherry+piano&format=rss

http://grandrapids.craigslist.org/search/zip?query=cherry+piano&format=rss

http://holland.craigslist.org/search/zip?query=cherry+piano&format=rss

http://jxn.craigslist.org/search/zip?query=cherry+piano&format=rss

http://kalamazoo.craigslist.org/search/zip?query=cherry+piano&format=rss

http://lansing.craigslist.org/search/zip?query=cherry+piano&format=rss

http://monroemi.craigslist.org/search/zip?query=cherry+piano&format=rss

http://muskegon.craigslist.org/search/zip?query=cherry+piano&format=rss

Finally, we need to convert our list of RSS + String URLS to an OPML XML. OPML ( Outline Processor Markup Language ) is an XML markup that RSS readers use to import and export lists of RSS feeds.

Go to Feedshow and paste the list of RSS feeds into the “List of RSS feeds url (one per line)” field. Don’t worry about any of the other settings or inputs. Click Create OPML.

You should see something like the following. Note that you can change lines 3 and 9 to fit your needs. Perhaps you’d like the title to be “Craigslist Piano Search”, and for the feeds to appear in a folder of the same name. Using a text editor, save this output as a .xml file.

[HTML]
<opml version=”1.1″>
<head>
<title>
Generated by FeedShow OMPLBuilder: Mon, 10 Nov 2014 11:08:23 +0100
</title>
<dateCreated>Mon, 10 Nov 2014 11:08:23 +0100</dateCreated>
</head>
<body>
<outline text=”Main Folder”>
<outline title=”annarbor.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”annarbor.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://annarbor.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”battlecreek.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”battlecreek.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://battlecreek.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”centralmich.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”centralmich.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://centralmich.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”detroit.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”detroit.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://detroit.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”flint.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”flint.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://flint.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”grandrapids.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”grandrapids.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://grandrapids.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”holland.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”holland.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://holland.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”jxn.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”jxn.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://jxn.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”kalamazoo.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”kalamazoo.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://kalamazoo.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”lansing.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”lansing.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://lansing.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”monroemi.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”monroemi.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://monroemi.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
<outline title=”muskegon.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” text=”muskegon.craigslist.org/search/zip?query=cherry+piano&amp;format=rss” type=”rss” xmlUrl=”http://muskegon.craigslist.org/search/zip?query=cherry+piano&amp;format=rss”/>
</outline>
</body>
</opml>
[/HTML]

xml-opml-imported-feedsNow you can navigate to your RSS reader and import the .xml file that you saved, which contains the OPML formatted information.

I use feedly. So, I go to “Organize” and at the top, find a link to import by OPML. After a few moments of baited breath, the new collection becomes visible! Unfortunately, there are zero results for a free, cherry piano in Michigan. But – when one is posted, I’ll be hep to it.

If you have trouble with this technique, try adding one feed to your reader through the readers normal interface, then export the OPML from your reader, and compare the output with the format of what you’re trying to import. You may find that – like ampersand – other special characters need to be in HTML format, or a XML declaration, such as ” <?xml version=”1.0″ encoding=”UTF-8″?> ” is included in the reader output that you need to include in your input.

Also – not all RSS strings are the same for every website. If your building a list of many different websites, it may not be suitable to use ” &amp;format=rss ” for each.

What’s Next

Our Work

Check out some recent work we’re proud of.

Our Blog

Read our latest ideas about tech, features, messaging, and more.

Get in Touch

Want to discuss a project? Hit us up, we’d love to chat!