If you have tried to use the Google Feedburner service and the Yahoo Pipes together you have probably experienced the “Error 999”, which means that Google Feedburner does not consume the feed provided by Yahoo Pipes. In other words, your RSS feed stalls although there’s new content from the pipe to expose.

I ran into this error myself and hoped for a resolution between the two parts. However, it seems that people have been experiencing this since the beginning of 2009, and I’ve just been spared until the beginning of November. And apparently the progress has stalled totally between the two camps, so nothing is really happening to solve this issue for their users. So I’ve tried some things, and the solution/fix/hack is actually quite simple. It does, however, have prerequisites: You’ll need to have a little programming done and a place to put the program.

The normal Google Feedburner/Yahoo Pipes setup looks like this:

Request flow: Google Feedburner –> [Get RSS] –> Yahoo Pipes
Response flow: Yahoo Pipes -> [Returns Pipes mashup RSS content] -> Google Feedburner

To fix the problem, you need something like this:

Request flow: Google Feedburner –> [Get RSS] –> Intermediary service –> [Get RSS] –> Yahoo Pipes 
Response flow: Yahoo Pipes -> [Returns Pipes mashup RSS content] -> Intermediary service -> [Returns Pipes mashup RSS content] -> Google Feedburner 

The setup above means the Google Feedburner will be able to consume the Yahoo Pipes feed indirectly instead of directly. My personal intermediary service is placed here on christer.dk. Now, the only thing that the service has to do is to consume the Yahoo Pipes feed and forward its content. Here is what you do (in inline asp.net c# 3.5 code).

   1:  <%@ Page Language="C#" %>
   2:  <script runat="server">
   3:      protected void Page_Load(object sender, EventArgs e)
   4:      {
   5:   
   6:          System.Xml.XmlReader reader = System.Xml.XmlReader.Create("[YAHOO PIPE RSS URL HERE]");
   7:          System.ServiceModel.Syndication.Rss20FeedFormatter formatter = new System.ServiceModel.Syndication.Rss20FeedFormatter();
   8:          formatter.ReadFrom(reader);
   9:          reader.Close();
  10:   
  11:          using (System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(Response.OutputStream))
  12:          {
  13:              System.ServiceModel.Syndication.Rss20FeedFormatter outputformatter = new System.ServiceModel.Syndication.Rss20FeedFormatter(formatter.Feed);
  14:              outputformatter.WriteTo(writer);
  15:              writer.Flush();
  16:          }
  17:          Response.End();
  18:      }
  19:  </script>

Place this code in an asp.net aspx-page or create a similar logic on a different platform and expose it on a server. Then reconfigure your Feedburner feed to retrieve the RSS content from your new service.

That’s it. I hope it helps you like it helped me. :-)

[Update]: Seems that my layout isn’t very code friendly! ;-) Here's the asp.net code to download: RSS.zip (453,00 bytes)

[Update two] I've clarified the request / response flow description above.