<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mediaczar &#187; pipes</title>
	<atom:link href="http://mediaczar.com/blog/category/pipes/feed/" rel="self" type="application/rss+xml" />
	<link>http://mediaczar.com/blog</link>
	<description>a blog by mat morrison</description>
	<lastBuildDate>Mon, 22 Mar 2010 12:12:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Methodology and thoughts behind those PR Week Twitter stats</title>
		<link>http://mediaczar.com/blog/2009/02/methodology-and-thoughts-behind-those-pr-week-twitter-stats/</link>
		<comments>http://mediaczar.com/blog/2009/02/methodology-and-thoughts-behind-those-pr-week-twitter-stats/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 19:57:56 +0000</pubDate>
		<dc:creator>Mat Morrison</dc:creator>
				<category><![CDATA[pipes]]></category>
		<category><![CDATA[porter novelli]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[pr week]]></category>

		<guid isPermaLink="false">http://mediaczar.com/blog/?p=862</guid>
		<description><![CDATA[There&#8217;s a school of thought that says that what&#8217;s important in social media is to attempt to create debate, not consensus. Peter Hay from PR Week and I appear to have been rather successful in this. This morning, PR Week published an article, Twitter has suddenly exploded. Almost immediately, Twitter (or at least our particular [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fmediaczar.com%2Fblog%2F2009%2F02%2Fmethodology-and-thoughts-behind-those-pr-week-twitter-stats%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmediaczar.com%2Fblog%2F2009%2F02%2Fmethodology-and-thoughts-behind-those-pr-week-twitter-stats%2F&amp;source=mediaczar&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>There&#8217;s a school of thought that says that what&#8217;s important in social media is to attempt to create debate, not consensus.</p>
<p><a href="http://www.flickr.com/photos/paws_and_toes/2465075519/" title="Cat Among The Pigeons by ChinchillaVilla, on Flickr"><img src="http://farm3.static.flickr.com/2074/2465075519_a517c37218.jpg" width="500" height="450" alt="Cat Among The Pigeons" /></a></p>
<p>Peter Hay from PR Week and I appear to have been rather successful in this. This morning, PR Week published an article, <a href="http://www.prweek.com/uk/home/article/884307/twitter-suddenly-exploded/">Twitter has suddenly exploded</a>. Almost immediately, Twitter (or at least our particular neighbourhood of Twitter) suddenly exploded.</p>
<p>One or two people were rather scathing: suggesting that the stats demonstrated that Peter and I didn&#8217;t understand the &#8220;essence of Twitter&#8221; or that they were &#8220;obviously flawed&#8221;, or that we had &#8220;redefined shallow&#8221;.</p>
<p>Indeed (horror of horrors) some people even went so far to suggest that Porter Novelli had ginned up the results to put us at the top. In fact, in PR week&#8217;s list, we came second. But no doubt this was a Machiavellian ploy &#8212; it&#8217;s details like those, Pooh Bah would say, that &#8220;give artistic verisimilitude to an otherwise bald and unconvincing narrative.&#8221;</p>
<p>I joke, but I can completely understand people&#8217;s strong feelings about this; PR Week was torn between a desire to cover our approach (and give credit where appropriate) and a need to keep the article readable and relevant to the greater proportion of their readers.</p>
<p>I&#8217;d like to share our methodology with you all so that you can repeat our experiments, should you so wish. After that, I&#8217;ll talk about the methodology that we were originally going to follow, </p>
<p>Tomorrow (once it&#8217;s had a chance to blow over), I&#8217;ll post some quick thoughts on the whole storm-in-a-Tweetcup thing.</p>
<h3>Methodology</h3>
<p>We used Michael Litman&#8217;s (<a href="http://twitter.com/litmanlive">@litmanlive</a>)  list of <a href="http://ukmediatweeple.pbwiki.com/">UK Media Tweeple</a>. This was based on <a href="http://www.prblogger.com/2008/11/uk-pr-people-on-twitter/">original work</a> by Stephen Davies (<a href="http://twitter.com/stedavies">@stedavies</a>) but has been wikified so that agencies can (should they so choose) keep their information up to date.</p>
<p>Lots of people on the list were pretty borderline &#8212; there are in-house teams and vendors there, as well as agencies with a significantly broader remit than simply &#8220;PR&#8221;. I am a relative newcomer to the world of PR, and was more than happy to let PR Week define who is PR and who isn&#8217;t, but we erred on the generous side. <a href="http://wearesocial.net"> We are Social</a>, for example, made the cut to be on the research list.</p>
<p>Had we had the time, I&#8217;d have sent a note out over Twitter asking everyone to update their entries. Time, however was not on our side, and I didn&#8217;t even get around to hinting at what I was doing until <a href="http://twitter.com/mediaczar/status/1242458470">the evening of the 23rd</a>.<br />
<a href="http://pipes.yahoo.com/pipes/pipe.edit?_id=0b76153699cf1f9c6c82344b7a85abb4"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/02/pr-week-pipe-1.jpg" alt="PR Week Twitter Stats Yahoo! Pipe" title="PR Week Twitter Stats Yahoo! Pipe" width="319" height="658" class="alignright size-full wp-image-864" /></a><br />
By then though it was already clear that I had a large job on my hands; there were almost 350 people on the list. On the whole, the UK PR community should be proud of how quickly it has reacted to the whole &#8220;Twitter thing&#8221;.</p>
<p>I took the list, published it as a <a href="http://spreadsheets.google.com/ccc?key=p4QDp5UmTKxQvaPp5htQbCQ&#038;hl=en">Google Spreadsheet</a> and &#8212; using  a <a href="http://pipes.yahoo.com/mediaczar/quickprweekrankings">Yahoo! Pipe</a> that I adapted for the purpose, queried the <a href="http://apiwiki.twitter.com/">Twitter API</a> for the summary data on each account on that list.</p>
<p>Twitter gives you all <em>sorts</em> of interesting information, but what we were grabbed were the following:</p>
<ul>
<li>Date joined Twitter</li>
<li>Number of Friends</li>
<li>Number of Followers, and</li>
<li>Number of Updates.</li>
</ul>
<p>That allowed us to create <a href="http://spreadsheets.google.com/ccc?key=p4QDp5UmTKxQHP4lJ0QDVZw&#038;hl=en"><em>this</em> spreadsheet</a>, from which the stats mentioned in the PR Week article were taken. </p>
<p>Again, Porter Novelli took no part in the editorial decisions (although they seem pretty straightforward.) You will recall that Peter and Gemma were writing for a general readership, not for the Twitterverse!</p>
<h3>Methodology we&#8217;d like to have used</h3>
<p>Those of you who&#8217;ve read my blog before will know that my real interest in Twitter is more complex than the previous methodology would suggest. When Peter and I first discussed the exercise on Monday we had been hoping to do something more along the lines of the <a href="http://mediaczar.com/blog/category/networks/">network analysis</a> that we&#8217;ve been fiddling with at Porter Novelli.</p>
<p>Here are some points to bear in mind. </p>
<p>First of all, <strong>not all followers are created equal.</strong> If I have only ten followers, but they each have a thousand followers, that may mean I have more opportunity-to-influence than if I had a hundred followers with only ten followers each. </p>
<p>More to the point, the fewer people those ten people follow themselves, the more influence I wield within their networks (if I am one of only ten people they follow between them, I will have greater share-of-voice than if I am merely one of ten thousand.)</p>
<p>Secondly, <strong>the followers whom I don&#8217;t share with the rest of the network count for more than those who follow several (or many) of my peers</strong>. The more &#8220;exclusive&#8221; my follower-base, the greater my control over on the flow of information within the overall network, and the greater my value to the network. </p>
<p>I&#8217;ve been doing some work looking at <a href="http://mediaczar.com/blog/2009/02/republicans-vs-democrats-ii/">unduplicated reach</a> among twitter networks. For example, looking at Porter Novelli&#8217;s own <a href="http://mediaczar.com/blog/2009/01/porter-novelli-twitter-folk-80-20/">global Twitter footprint</a>, it was interesting to see how many of our contacts were duplicated.</p>
<p>So what Peter and I really wanted to do was to use some of these techniques on the PR Week data set. For those of you with a mathematical (or social network analytical) bent, we were going to run some eigenvector shizzle on the whole bizzle. Oh &#8212; and look at unduplicated reach for the various companies on the list.</p>
<h4>What went wrong?</h4>
<p>It was always an ambitious project. The 344 people who were under analysis had a fairly daunting 95K followers between them. The Twitter API lets you make 100 requests an hour, and each request returns data on up to 100 followers. Even if we were to assume that everyone had followers in nice tidy multiples of 100 (they don&#8217;t) then it would have taken 9.5 hours to download the data using one Twitter login. </p>
<p>The trick of course, is to use more than one login. Tim Hoang (<a href="http://twitter.com/timhoang">@timhoang</a>) and I quickly registered 50 temporary accounts to power the API requests. Twitter&#8217;s <a href="http://twitter.com/terms">terms</a> have historically been quite relaxed about this sort of thing, and we&#8217;ve always been very careful to try and stay within the spirit of those terms.</p>
<p>But.</p>
<p>Twitter has been hit lately by a bunch of bad things (like spam bots and pyramid schemes), and they&#8217;re tightening up their defenses. This past weekend, they&#8217;ve tightened up a lot, and things that used to be fine just aren&#8217;t.</p>
<p>We managed to collect information on only around 60K followers out of the 95K. This was too large a margin of error to correct (although we made several attempts to do so).</p>
<p>So &#8212; we had to abandon our grand plans, and revert to the simple counts approach (as detailed above.) This won&#8217;t stop us trying to improve our processes, but we&#8217;ll need to talk to Twitter about that.</p>
<h3>Some thoughts</h3>
<p><a href="http://prstick.blogspot.com/">Kate Hartley</a> from Carrot Communications (who sits with me on the PRCA&#8217;s Digital Working Group) joked that it&#8217;s strange how PR people create research-for-news-stories for their own clients on a daily basis, but are miffed when their own techniques are used against them. At one level, I agree with her &#8212; I think that some people are probably disappointed that they aren&#8217;t the ones with their names on the research.</p>
<p>But there&#8217;s more to worry about than that. Here are my thoughts.</p>
<ol>
<li>For God&#8217;s sake get over yourselves! We&#8217;re talking about Twitter here, not the economy. Worry about something important, why don&#8217;t you? I still can&#8217;t get over the fact that &#8212; when a pilot managed land an airplane on a river, the story we all tell each other is &#8220;how it broke on Twitter.&#8221; What &#8212; the story&#8217;s <em>not</em> about a man who magically landed a f*cking plane on a f*cking river? Are we really getting this right?</li>
<li>How influential you are on Twitter is not a <em>real</em> thing. It doesn&#8217;t <em>really</em> matter how many Twitter friends you have (although I&#8217;ve now got heaps, thank you very much!) Context is everything.  My boss, who runs Porter Novelli&#8217;s EMEA network and sits on our Executive Committee  is on Twitter. She is more influential than I, and will continue to be, no matter how many Twitter followers I accrue.
<p>Twitter is just one channel through which exercise your influence. Don&#8217;t give up on your blogs, your Facebook pages, your Amazon reviews, or your Last.fm playlists or your IM friend lists, for God&#8217;s sake. But remember, it&#8217;s <em>who</em> you are, and your relationships that matter; your &#8220;context&#8221;, and not your &#8220;counts.&#8221;
</li>
<li>The really interesting question isn&#8217;t &#8220;who are the Twitterati&#8221; or twitter influencers. I&#8217;m interested in the Twitter thing mainly because I want to see how well it reflects real life. After today, I&#8217;d probably say that it doesn&#8217;t very well, wouldn&#8217;t you?</li>
</ol>
<p>Be warned &#8212; I may just follow this research up with some research on &#8220;how many phone numbers PR people have on their mobile phones.&#8221;  </p>
]]></content:encoded>
			<wfw:commentRss>http://mediaczar.com/blog/2009/02/methodology-and-thoughts-behind-those-pr-week-twitter-stats/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Counting Twitter followers</title>
		<link>http://mediaczar.com/blog/2009/01/counting-twitter-followers/</link>
		<comments>http://mediaczar.com/blog/2009/01/counting-twitter-followers/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 18:29:32 +0000</pubDate>
		<dc:creator>Mat Morrison</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[pipes]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[google spreadsheets]]></category>
		<category><![CDATA[twittercounter]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://mediaczar.com/blog/?p=594</guid>
		<description><![CDATA[TwitterCounter, the service that tells you how many people followed a given Twitter user on a given date (among other things) has an API &#8211; so I thought I&#8217;d take a look at it to see whether I could create a quick automated table of rankings. Here&#8217;s the simplest way to query the API: [code] [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fmediaczar.com%2Fblog%2F2009%2F01%2Fcounting-twitter-followers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmediaczar.com%2Fblog%2F2009%2F01%2Fcounting-twitter-followers%2F&amp;source=mediaczar&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>TwitterCounter, the service that tells you how many people followed a given Twitter user on a given date (among other things) has an <a href="http://twittercounter.com/?inc=api">API</a> &#8211; so I thought I&#8217;d take a look at it to see whether I could create a quick automated table of rankings.</p>
<p>Here&#8217;s the simplest way to query the API:</p>
<p>[code]</p>
<p>http://twittercounter.com/api/?username=mediaczar&#038;output=xml</p>
<p>[/code]</p>
<p>Just cut and paste that into the address bar of your browser for example. Fairly simple. Change the username and you&#8217;ll get the data for a different user. Here&#8217;s what you get back from the API &#8212; an XML file with lots of rich meaty data:<br />
<span id="more-594"></span><br />
<textarea rows="10" cols="60">
<?xml version="1.0" encoding="UTF-8"?><twittercounter>
	<user_id>8206</user_id>
	<user_name>mediaczar</user_name>
	<followers_current>658</followers_current>
	<date_updated>2009-01-24</date_updated>
	<url>http://mediaczar.com</url>
	<avatar>69490155/q506317361_7156_normal.jpg</avatar>
	<follow_days>215</follow_days>
	<started_followers>169</started_followers>
	<growth_since>489</growth_since>
	<average_growth>2</average_growth>
	<tomorrow>660</tomorrow>
	<next_month>718</next_month>
	<followers_yesterday>652</followers_yesterday>
	<rank>16681</rank>
	<followers_2w_ago>169</followers_2w_ago>
	<growth_since_2w>489</growth_since_2w>
	<average_growth_2w>35</average_growth_2w>
	<tomorrow_2w>693</tomorrow_2w>
	<next_month_2w>1708</next_month_2w>
	<followersperdate>
	<date2009-01-10>480</date2009-01-10>
	<date2009-01-11>480</date2009-01-11>
	<date2009-01-12>481</date2009-01-12>
	<date2009-01-13>486</date2009-01-13>
	<date2009-01-14>498</date2009-01-14>
	<date2009-01-15>498</date2009-01-15>
	<date2009-01-16>514</date2009-01-16>
	<date2009-01-17>534</date2009-01-17>
	<date2009-01-20>594</date2009-01-20>
	<date2009-01-21>594</date2009-01-21>
	<date2009-01-22>616</date2009-01-22>
	<date2009-01-23>652</date2009-01-23>
	<date2009-01-24>658</date2009-01-24>
	</followersperdate>
</twittercounter>
</textarea></p>
<h3>First attempt: Google Spreadsheet&#8217;s importXML function</h3>
<p>As part of this project, I was particularly interested to explore Google Spreadsheet&#8217;s useful <strong>importXML</strong> function. Google lets you pull data out of an XML document anywhere on the web and put it into a spreadsheet cell. </p>
<p>There&#8217;s a pretty average bit of <a href="http://docs.google.com/support/bin/answer.py?answer=75507">support documentation</a> from Google on this function and a peculiarly hard-to-understand <a href="http://www.w3.org/TR/xpath">description of the XPATH</a> reference that you can read if you want to, but all you really need to know is that you can address any item in the document using a double slash like so: <em>//item_name</em>.</p>
<p>So if there&#8217;s an item called <em>followers_yesterday</em> in the document above and you want to access it</p>
<p>[code lang="xml"]<followers_yesterday>652</followers_yesterday><br />
[/code]</p>
<p>I can access it like this</p>
<p>[code]=ImportXML("http://twittercounter.com/api/?output=xml&#038;username=mediaczar","//followers_yesterday")[/code]</p>
<p>So with not much work, I can create a <a href="http://spreadsheets.google.com/ccc?key=p4QDp5UmTKxQVVA_RP4hvNw">Google spreadsheet</a> that will do this for a list of twitter usernames</p>
<p><iframe width='500' height='300' frameborder='0' src='http://spreadsheets.google.com/pub?key=p4QDp5UmTKxQVVA_RP4hvNw&#038;output=html&#038;gid=0&#038;single=true&#038;range=A1:B51'></iframe></p>
<p>Wahey! That&#8217;s great! But what&#8217;s this?</p>
<p><a href="http://mediaczar.com/blog/wp-content/uploads/2009/01/google-error.jpg"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/google-error.jpg" alt="Google doesn&#039;t let you make more than 50 importXML calls in a single spreadsheet" title="Google doesn&#039;t let you make more than 50 importXML calls in a single spreadsheet" width="484" height="198" class="aligncenter size-full wp-image-604" /></a></p>
<p>I&#8217;ve got more than 200 people on the list I want to rank. Foiled by this apparent petty-mindedness on Google&#8217;s part, I decided to try again, this time using Yahoo! Pipes.</p>
<h3>Second Attempt: Yahoo! Pipes</h3>
<p>First of all I make <a href="http://pipes.yahoo.com/mediaczar/twittercounterapicall">a simple pipe</a> to build the URL and make the API call for a single user (I&#8217;ve learned to follow this modular approach from looking at pipes built by the Open University&#8217;s <a href="http://ouseful.wordpress.com/">Tony Hirst</a>.)</p>
<p><a href="http://mediaczar.com/blog/wp-content/uploads/2009/01/twittercounter-api-call.jpg"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/twittercounter-api-call.jpg" alt="Using Yahoo! Pipes to call the TwitterCounter API" title="Using Yahoo! Pipes to call the TwitterCounter API" width="344" height="475" class="aligncenter size-full wp-image-609" /></a></p>
<p>Now all I need to do is plug this into another pipe. I&#8217;m pulling the data from a Google spreadsheet list of Twitter usernames <a href="http://spreadsheets.google.com/pub?key=p4QDp5UmTKxS65ROEO5ykZQ&#038;output=txt">published as a text file</a>. Whenever I update the spreadsheet, of course, the text file is updated dynamically.</p>
<p><a href="http://mediaczar.com/blog/wp-content/uploads/2009/01/building-the-pipe-stage-1.jpg"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/building-the-pipe-stage-1.jpg" alt="Adding the API call into a loop on a new pipe" title="Adding the API call into a loop on a new pipe" width="471" height="437" class="aligncenter size-full wp-image-610" /></a></p>
<p>The first FetchCSV module pulls that text file in and passes the data to the next module as &#8220;username.&#8221; The Loop module loops through each username on the list and passes it through the TwitterCounter API Call module I just built. All the XML data from the call will be passed on as &#8220;item.data&#8221; Now all I need to do is select the bits I want and format the data for output. Should be simple.</p>
<p><a href="http://mediaczar.com/blog/wp-content/uploads/2009/01/rename-and-output.jpg"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/rename-and-output.jpg" alt="Rename the elements and output the data" title="Rename the elements and output the data" width="421" height="209" class="aligncenter size-full wp-image-612" /></a></p>
<p>The most important thing to know about pipes is that we&#8217;re usually working with RSS (there are ways around this.) That limits us to only a few fieldnames; generally title, link and description. </p>
<p>Here I&#8217;m using the Rename module to set
<pre>username</pre>
<p> as the title, and
<pre>item.data.followers_yesterday</pre>
<p> as the description. Let&#8217;s save the pipe and test it out. </p>
<p><a href="http://mediaczar.com/blog/wp-content/uploads/2009/01/running-the-pipe.jpg"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/running-the-pipe-300x192.jpg" alt="Running the Pipe. Success!" title="Running the Pipe. Success!" width="300" height="192" class="aligncenter size-medium wp-image-613" /></a></p>
<p>Success! Now I can take the <a href="http://pipes.yahoo.com/pipes/pipe.run?_id=46ab0eafe320dfdbf3736762be9797f9&#038;_render=rss">RSS feed</a> for this and (using Googles importRSS function) drop it back into another spreadsheet.</p>
<p>Only right now, I can&#8217;t work out how to to do that for more than twenty items. So I&#8217;ve actually got fewer results than I had before.</p>
<p>I&#8217;ll continue plugging away at this and post any solution I come to here  &#8211; but in the meantime if you&#8217;re reading this and know how to fix my issue with Google Spreadsheets, please help. There&#8217;s some hope held out by <a href="http://sphinn.com/story/50996">this article on Sphinn</a> which I&#8217;ll struggle along with.</p>
<p>In the meantime, I can output the results as a <a href="http://pipes.yahoo.com/pipes/pipe.run?_id=46ab0eafe320dfdbf3736762be9797f9&#038;_render=csv">CSV</a> so that&#8217;s OK.</p>
]]></content:encoded>
			<wfw:commentRss>http://mediaczar.com/blog/2009/01/counting-twitter-followers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Automating Marshall Kirkpatrick&#8217;s &#8220;Social Media Cheatsheet&#8221; process with Yahoo! Pipes</title>
		<link>http://mediaczar.com/blog/2009/01/automating-marshall-kirkpatricks-social-media-cheetsheet-process-with-yahoo-pipes/</link>
		<comments>http://mediaczar.com/blog/2009/01/automating-marshall-kirkpatricks-social-media-cheetsheet-process-with-yahoo-pipes/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 13:44:21 +0000</pubDate>
		<dc:creator>Mat Morrison</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[pipes]]></category>
		<category><![CDATA[bloggers]]></category>
		<category><![CDATA[readwriteweb]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://mediaczar.com/blog/?p=380</guid>
		<description><![CDATA[Marshall Kirkpatrick has published an excellent process for getting up to speed with what the big issues are in your market sector. Is there, he asks: any way to ramp up your knowledge of these fields, fast, other than the &#8220;Google and wander&#8221; method? He then outlines an almost perfect example of how to use [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fmediaczar.com%2Fblog%2F2009%2F01%2Fautomating-marshall-kirkpatricks-social-media-cheetsheet-process-with-yahoo-pipes%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmediaczar.com%2Fblog%2F2009%2F01%2Fautomating-marshall-kirkpatricks-social-media-cheetsheet-process-with-yahoo-pipes%2F&amp;source=mediaczar&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><div id="attachment_381" class="wp-caption alignright" style="width: 182px"><a href="http://pipes.yahoo.com/mediaczar/socialmediacheatsheet"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/marshall-plan-pipe-172x1024.png" alt="Yahoo! Pipe for automating Marshall Kirkpatrick&#039;s Social Media CheatSheet process" title="Yahoo! Pipe for automating Marshall Kirkpatrick&#039;s Social Media CheatSheet process" width="172" height="1024" class="size-large wp-image-381" /></a><p class="wp-caption-text">Yahoo! Pipe for automating Marshall Kirkpatrick's Social Media CheatSheet process</p></div>Marshall Kirkpatrick has published <a href="http://www.readwriteweb.com/archives/how_to_build_a_social_media_cheat_sheet.php">an excellent process</a> for getting up to speed with what the big issues are in your market sector. Is there, he asks:</p>
<blockquote><p>any way to ramp up your knowledge of these fields, fast, other than the &#8220;Google and wander&#8221; method?</p></blockquote>
<p>He then outlines an almost perfect example of how to use social media to do this.</p>
<p>You should <a href="http://www.readwriteweb.com/archives/how_to_build_a_social_media_cheat_sheet.php">read his article</a> before reading any further. It&#8217;s short and punchy and won&#8217;t take much time.</p>
<p>Read it? Good. Now you may have noticed in the comments section that the first commenter doubts that you can:</p>
<blockquote><p>find one baker or candlestick maker that will go through all of that.</p></blockquote>
<p>So I thought I&#8217;d see if I can automate the process. The short answer is that I can and I can&#8217;t. I can&#8217;t yet automate one or two really important bits and pieces, notably:</p>
<ol>
<li>ranking delicious bookmarks by popularity, not recency</li>
<li>human editorial selection of bookmarks</li>
</ol>
<div style="float:right; width:100px; vertical-align: text-top;"><script type="text/javascript">
digg_url = 'http://digg.com/tech_news/Automating_Marshall_Kirkpatrick_s_Social_Media_Cheat_Sheet';
</script><br />
<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> </div>
<p>Perhaps someone could help me with this.<br />
But otherwise, I&#8217;ve published this Yahoo! Pipe, <a href="http://pipes.yahoo.com/mediaczar/socialmediacheatsheet">Automating Marshall Kirkpatrick&#8217;s Social Media Cheatsheet Process</a> which automates 90% of the process, and may make it easier for the bakers and candlestickmakers.</p>
<p>All comments and &#8212; more importantly &#8212; suggestions and improvements gratefully received. </p>
<p><ins datetime="2009-01-12T00:26:41+00:00"><i>Monday, 12 Jan 2009 00:27: I&#8217;ve just added a bit to the pipe to list posts in descending order according to PostRank. Don&#8217;t know if this is useful</i></ins><br />
<!--diggZ=none--> </p>
]]></content:encoded>
			<wfw:commentRss>http://mediaczar.com/blog/2009/01/automating-marshall-kirkpatricks-social-media-cheetsheet-process-with-yahoo-pipes/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Technorati Authority Yahoo! Pipe</title>
		<link>http://mediaczar.com/blog/2009/01/technorati-authority-yahoo-pipe/</link>
		<comments>http://mediaczar.com/blog/2009/01/technorati-authority-yahoo-pipe/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 19:52:33 +0000</pubDate>
		<dc:creator>Mat Morrison</dc:creator>
				<category><![CDATA[blogger typology]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[pipes]]></category>
		<category><![CDATA[google docs]]></category>
		<category><![CDATA[google spreadsheet]]></category>
		<category><![CDATA[technorati]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://mediaczar.com/blog/?p=319</guid>
		<description><![CDATA[Over the holidays, I started playing with a new Yahoo! pipe to pull information from Technorati into a spreadsheet. The reasons why I wanted to do this are covered in this post about the quantitative analysis of blogs, and my eventual perl-based solution to the problem is covered in this post. The problem with the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fmediaczar.com%2Fblog%2F2009%2F01%2Ftechnorati-authority-yahoo-pipe%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmediaczar.com%2Fblog%2F2009%2F01%2Ftechnorati-authority-yahoo-pipe%2F&amp;source=mediaczar&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div id="attachment_365" class="wp-caption alignnone" style="width: 394px"><a href="http://mediaczar.com/blog/wp-content/uploads/2009/01/pipe.png"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/pipe.png" alt="Yahoo! Pipe to pull Technorati API data for multiple blogs" title="Yahoo! Pipe to pull Technorati API data for multiple blogs" width="384" height="526" class="size-full wp-image-365" /></a><p class="wp-caption-text">Yahoo! Pipe to pull Technorati API data for multiple blogs</p></div><br />
Over the holidays, I started playing with a new Yahoo! pipe to pull information from Technorati into a spreadsheet. The reasons why I wanted to do this are covered in this post about the <a href="http://mediaczar.com/blog/2009/01/blogger-typology-quantitative-analysis-step-1/">quantitative analysis of blogs</a>, and my eventual perl-based solution to the problem is covered in <a href="http://mediaczar.com/blog/2009/01/a-simple-perl-script-to-interrogate-the-technorati-api/comment-page-1/#comment-528">this post.</a></p>
<p>The problem with the perl-based approach is that it&#8217;s a little inaccessible to people who aren&#8217;t comfortable using a command line environment. So I really wanted to make something that more people would feel comfortable using, and perhaps play around with.</p>
<p>So, with some help and kind words from <a href="http://www.semdevel.com">Bob Briski</a>, one of whose pipes I&#8217;d stumbled across and <a href="http://delicious.com/mediaczar/pipes">bookmarked</a> during my research for this project, I decided to finish off the pipe and publish it so that others could use it, or (better still) improve upon it.<br />
<span id="more-319"></span></p>
<h3>What does it do?</h3>
<p>The pipe first pulls a list of blog URLs from a Google spreadsheet, then checks Technorati to get the &#8220;inbound blogs&#8221; count for each blog, then outputs the blog title, link and count to an RSS feed. </p>
<p>Technorati Authority (a useful metric when ranking a list of blogs) is calculated as &#8220;the unique blogs linking to a blog over the past six months&#8221; &#8212; in a way it&#8217;s a measure of how many readers may be influenced by a blogger <em>at one remove</em>.</p>
<h3>Before you start</h3>
<p>You&#8217;ll need:</p>
<ol>
<li>An API key from Technorati</li>
<li>A Yahoo! account</li>
<li>A Google account</li>
</ol>
<p>I&#8217;ve done all the rest, so you could simply clone my pipe, which <a href="http://pipes.yahoo.com/mediaczar/technorati_api_google_spreadsheet ">you&#8217;ll find here</a>. </p>
<h3>Publishing a Google spreadsheet as a CSV source</h3>
<p>In my first pass at this challenge, I used a simple text list of URLs stored on this server. That&#8217;s pretty easy if you have (a) a server, (b) a text editor, and (c) some way &#8212; like ftp or ssh &#8212; of getting the two to talk to each other. But lots of people don&#8217;t have servers these days, and still more probably have no idea what I mean by (c), so I decided to follow a new approach before writing this article. <em>Everyone</em>, I thought, must have access to Google Docs.</p>
<p>So here&#8217;s my test list as published on Google:<br />
<iframe width='500' height='150' frameborder='0' src='http://spreadsheets.google.com/pub?key=p4QDp5UmTKxTf0FacFsewJw&#038;output=html&#038;gid=0&#038;single=true&#038;range=A1:A7'></iframe></p>
<p>Now all I have to do is <strong>Share > Publish as a web page</strong>, then click <strong>More publishing options</strong> and select &#8216;CSV&#8217; or &#8216;TXT&#8217; (1) as the publishing option to create a simple text list.</p>
<p><div id="attachment_328" class="wp-caption alignnone" style="width: 494px"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/publishing-google-spreadsheet-as-a-csv.jpg" alt="publishing google spreadsheet as a csv" title="publishing google spreadsheet as a csv" width="484" height="643" class="size-full wp-image-328" /><p class="wp-caption-text">publishing google spreadsheet as a csv</p></div>
<p>You can <a href="http://spreadsheets.google.com/pub?key=p4QDp5UmTKxTf0FacFsewJw&#038;output=csv">see the CSV file here</a>. You need to copy (or make a note of) the link (2) because we use it as the seed for our pipe.</p>
<p> One of the nice things about using Google Docs is that it&#8217;s easy to edit, view and share the list. For whatever reason, you may not want to share your list of blogs so if you&#8217;d like the original version with the server-based file which is more &#8216;private&#8217;, <a href="http://pipes.yahoo.com/mediaczar/technoratiapiauthorityquery">it&#8217;s still available</a>.</p>
<h3>Setting up the Pipe</h3>
<p>The first thing to do is to build a URL for each request I&#8217;m going to send to the API. Technorati takes requests in the following format:<br />
<code>http://api.technorati.com/bloginfo?key=[apikey]&#038;url=[blog url]</code></p>
<div id="attachment_322" class="wp-caption alignnone" style="width: 645px"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/pipes-set-up1.jpg" alt="setting up the pipe" title="setting up the pipe" width="635" height="511" class="size-full wp-image-322" /><p class="wp-caption-text">setting up the pipe</p></div>
<p>The pipe takes two variables that will need to be customized for your own version. One, rather obviously, is the link URL for the Google CSV that you copied or made a note of above (you <em>did</em> make a note of it, didn&#8217;t you?). The other is your <a href="http://technorati.com/developers/apikey.html">Technorati API key</a> for which you&#8217;ll probably need to <a href="http://technorati.com/developers/apikey.html">sign up</a>. It&#8217;s free, but is limited to 500 calls to Technorati&#8217;s database per day.</p>
<p>I&#8217;ve plugged the link into the <strong>Fetch CSV</strong> module at top left, and the API key into the <strong>Private String</strong> module. I use this module so that I can protect my API key &#8212; no-one else should be able to see it now.</p>
<p>The <strong>URL Builder</strong> module placed within a <strong>Loop</strong> module does this. I&#8217;ve hooked the API Key from the <strong>Private String</strong> into the parameter named &#8216;key&#8217;, and the output of the <strong>Fetch CSV</strong> module into the &#8216;url&#8217; parameter.</p>
<h3>Getting the data from Technorati</h3>
<div id="attachment_323" class="wp-caption alignnone" style="width: 463px"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/pipes_-get-xml1.jpg" alt="getting the XML by calling technorati&#039;s API" title="getting the XML by calling technorati&#039;s API" width="453" height="291" class="size-full wp-image-323" /><p class="wp-caption-text">getting the XML by calling technorati's API</p></div>
<p>Now it&#8217;s simply a matter of looping through the requests that I built during the set-up stage above, and sending each one to Technorati so that I can fetch the data. Technorati responds with an XML file that looks like this:</p>
<pre>[code lang="xml"]
<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Technorati API version 1.0" -->
<!DOCTYPE tapi PUBLIC "-//Technorati, Inc.//DTD TAPI 0.02//EN"
"http://api.technorati.com/dtd/tapi-002.xml">
<tapi version="1.0">
<document>
    <result>
        <url>http://www.mediaczar.com/blog</url>
             <weblog>
                <name>Mediaczar</name>
                <url>http://mediaczar.com/blog</url>
                <rssurl></rssurl>
                <atomurl>http://feeds.feedburner.com/mediaczar/posts</atomurl>
                <inboundblogs>14</inboundblogs>
                <inboundlinks>21</inboundlinks>
                <lastupdate>2009-01-06 12:45:23 GMT</lastupdate>
                <rank>422833</rank>
                <authors>
                    <author>
                        <username>mediaczar</username>
                        <name>Mat Morrison</name>
                        <description>Mat Morrison is a digital marketing and
                        communications strategist with over a decade's
                        experience in online advertising, eCRM, and social
                        media.</description>
                        <url>http://technorati.com/people/technorati/mediaczar</url>
<photourl>http://static.technorati.com/progimages/photo.jpg?
                        uid=139758</photourl>
                    </author>
                </authors>
             </weblog>
                <inboundblogs>14</inboundblogs>
                <inboundlinks>21</inboundlinks>
    </result>
</document>
</tapi>
[/code]
</pre>
<p>I can choose which bit of the XML file I want to receive by setting the &#8216;path to item list&#8217; parameter in the <strong>Fetch Data</strong> module. You&#8217;ll see that I&#8217;ve set it to &#8216;document.result&#8217; &#8212; compare that to the XML example above and I think you&#8217;ll see how this works: I&#8217;ve removed the wrapper information from the file and gone straight to the meat. </p>
<h3>Renaming the fields to suit RSS output</h3>
<p><div id="attachment_326" class="wp-caption alignnone" style="width: 657px"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/pipes_-rename-and-output.jpg" alt="renaming the fields to suit RSS output" title="renaming the fields to suit RSS output" width="647" height="398" class="size-full wp-image-326" /><p class="wp-caption-text">renaming the fields to suit RSS output</p></div><br />
Yahoo! Pipes output is limited to RSS, so we need to reformat the Technorati XML as RSS. Now Bob&#8217;s shown me how to do it, it&#8217;s pretty straightforward: RSS needs a <strong>title</strong>, <strong>link</strong>, and <strong>description</strong>. So I&#8217;m using the <strong>Rename</strong> module to do just that, and choosing the &#8216;item.inboundblogs&#8217; parameter as the description. I plug the results into the <strong>Pipe Output</strong>, and I&#8217;m ready to go. Save the pipe.</p>
<h3>Checking the output of the Pipe</h3>
<p>Now I&#8217;ve saved the pipe, I can run it to see if it&#8217;s working.<br />
<div id="attachment_325" class="wp-caption alignnone" style="width: 697px"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/pipes_-output.jpg" alt="checking the output of the pipe" title="checking the output of the pipe" width="687" height="420" class="size-full wp-image-325" /><p class="wp-caption-text">checking the output of the pipe</p></div><br />
Sure enough, there&#8217;s the Authority figure coming through nice and clearly (1). Success! But there&#8217;s something more we can do. Clicking on the <strong>More options</strong> link (2) gives us an opportunity to take the RSS feed back into other tools like a feedreader, or into NetVibes (I&#8217;m a big fan.) Or, given that we started in Google, we could take it back there&#8230;</p>
<h3>Importing the RSS feed back into the Google Spreadsheet</h3>
<p><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/pipes_-importfeed1.jpg" alt="Google&#039;s &quot;importFeed&quot; function" title="Google&#039;s &quot;importFeed&quot; function" width="780" height="131" class="size-full wp-image-324" /><br />
Google Spreadsheets has some useful functions that you don&#8217;t find in Excel; and which are more geared towards the web. The only one that I&#8217;ve really played with is the <strong>importFeed</strong> function which &#8212; as you might expect &#8212; imports RSS feeds into your spreadsheet. So here, we paste the RSS link from the pipe into the sheet&#8230;<br />
<div id="attachment_337" class="wp-caption alignnone" style="width: 437px"><img src="http://mediaczar.com/blog/wp-content/uploads/2009/01/pipes_google-spreadsheet-w-data-1.jpg" alt="google spreadsheet showing output from importFeed function" title="google spreadsheet showing output from importFeed function" width="427" height="269" class="size-full wp-image-337" /><p class="wp-caption-text">google spreadsheet showing output from importFeed function</p></div><br />
&#8230; and it fills in our sheet for us. Now I can change the list of blogs on one sheet, and (as if by magic) the results will appear on the other, without my needing to go into Pipes. I&#8217;ve used Yahoo! Pipes to link one Google Spreadsheet to another by way of Technorati. Fun? I should say so. Useful? Most certainly.</p>
]]></content:encoded>
			<wfw:commentRss>http://mediaczar.com/blog/2009/01/technorati-authority-yahoo-pipe/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

