Setting Up a WordPress CDN (Content Delivery Networks) for Beginners
Last week I saw Will presenting on technical issues associated with SEO. One of the key issues he presented on was site speed. Specifically, the cost of ignoring site speed as a performance and revenue indicator. Will’s own experiences of Distilled’s performance issues (mostly resolved by implementing Cloudflare) were a stark reminder of the importance of building at least a basic knowledge of CDN (content delivery network) implementation.
Why bother with site speed?
Because it costs money not to. A nicely summarised roundup by SmartInsights reported on research showing a dramatic decline in conversion as page load times increases to 4 seconds:
We already know there’s a strong business benefit to improving site speed, it’s possible to see figures as high as 1% conversion rate loss for every second in site speed squandered. I presented at a large retailer network company head office on Thursday, comparing the time to render taken by a search result page at Google, Amazon’s home page and their flagship retail site:
Assuming a directly proportional relationship between page load and conversion rate, the potential gain for this site is obvious.
How does a CDN work?
Put simply, a CDN caches all of the objects on your site (for instance; images, JS files and CSS files) and serves them from a location that is usually closer to the request location. This should mean that visitors see a faster page load. By hosting all of your static files on a CDN, it’s fair to assume there’ll be a perceived increase in page load, especially in locations far from your own hosting (assuming the CDN has good coverage there).
I wanted to learn about CDN implementation, so I opened an account with MaxCDN. SEOgadget’s static files are now being served from “cdn2.seogadget.co.uk”.
The end to end set-up process should have taken around 10 minutes. There was a little complication owing to SEOgadget being an SSL site, but I’m pleased to note that MAXcdn will work with your own SSL certificate, provided that you have a wildcard certification that will certify any subdomain (for example: *.seogadget.co.uk).
How to configure WordPress with a CDN
Firstly, open an account with your CDN provider of choice. In MAXcdn, create a new “pull zone”:

You can name the zone anything you like, in our case, “SEOg”. Set the “origin server URL” name to match your domain name and enter your intended custom CDN domain (the location from which your static files will be. Don’t worry, you don’t have to do anything with DNS just yet:
After you’ve created your new pull zone, you’ll see this message:

Take a note of the two domains, your custom domain (cdn.yourdomain.co.uk and the pull zone location generated by MAXcdn – seog.seogadget.netdna-cdn.com). Now head to your DNS control panel:
(This assumes you’re using CPanel to manage your domain a, cname and MX records via your web host. We use TSOhost’s nameservers and SEOgadget has been hosted with them for a long time. If you’re not using CPanel, you’ll have to follow slightly different steps to get to the DNS zone editor at your registrar - it’s very easy though, so don’t be put off if this is new):

Select “Advanced DNS Zone Editor” and the domain you’d like to edit, here:

Protip: Yoast uses more than one CDN address serving JS and CSS separately. This (I think) has the benefit of asynchronous downloading of those files.
Configure MAXcdn with W3 Total Cache
W3 Total Cache is our caching plugin of choice. It’s easy to use, fast and reliable. What’s most powerful about the plugin is compatibility with several well known CDN service providers. Here’s how to set it up with MAXcdn very quickly:

Firstly, select “NETDNA / MaxCDN”. Don’t enable just yet, just click “Save all settings”. Next, head to the CDN configuration from the options along the top of the settings page.

You’ll see a space for your CNAME, so complete that and fetch the API key from MaxCDN here:
As soon as you’re done, click “Save all settings” and select “Test NetDNA” to make sure all is well. The outcome should look like this:

This makes a great weekend project – give it a go!
I quite enjoyed getting SEOgadget set up with a proper CDN. The process is not without its pitfalls – especially if you happen to use SSL to serve your content. Still, with a little perserverence and background reading, it becomes relatively simple (and extremely interesting). The main limitation I faced were problems related to multiple subdomain names (cdn.*, cdn2.*, etc) because of the SSL certificate. We have a wildcard certificate that wasn’t validating easily in the MaxCDN interface. To save time and hassle I elected to creating a separate certificate which was fine for one subdomain but not for multiple addresses.
The performance panel provided is initially very interesting. We’re now serving the US far more locally, (so I might expect our latency to be vastly improved in the US) but, we’re serving the UK and all of Europe from Amsterdam. I suspect that overall performance won’t be improved much in the UK. My initial tests certainly make me feel the improvement locally is marginal, but still improved.
I used Pingdom tools to evaluate overall object loads and got some initially interesting results from New York, with one exception to the observation that we appear quite a lot quicker:
Initial data is almost irrelevant though, so I’ll be watching Google Analytics (site speed report, segmented by country) for a reduction in page loads from our main traffic generating sources over the next few weeks. I’m hoping for an improvement across the board, and certainly no increases in the UK:
I’ve set up a basic alert in Google Analytics to inform me when there’s a week on week decrease in page load – it’s not terribly granular, so we’ll see what happens:

A few useful sources
I’d like to recomend you take a look at these (extremely useful) blog posts:
http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/
http://devilsworkshop.org/maxcdn-setup-on-wordpress-using-w3-total-cache-plugin-wpmu-tutorial/
http://yoast.com/articles/cdn-wordpress-maxcdn/
http://support.netdna.com/knowledgebase/installing-custom-ssl/
Image credit: Yi Shiang
Setting Up a WordPress CDN (Content Delivery Networks) for Beginners is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
Generate Infographic Embed Codes Quickly and Easily with this Tool
I can’t tell you how often I have to create embed HTML for images such as infographics. Just to save a little time, I thought I’d put together a little embed code generator based on Gravity Forms:

It’s actually very simple, but then again I guess the best things in life are. I hope it saves you time and if there’s a feature you find useful, drop a comment below.
Here’s the link: https://seogadget.co.uk/embed-code-generator/
Generate Infographic Embed Codes Quickly and Easily with this Tool is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
I’m tired of this conversation:
“We’ve been working with an SEO agency for about 6 months now. We ranked quite well for a few weeks, and then the rankings dropped. We don’t know what they do, exactly, but they send us 4 directory links and 2 article submssions a month. Oh, and they do a PR release for us, once a month”
It’s a starting point in a sales discussion I experience all too often. It’s often a precursor to the part of the conversation where we discover the business is being bled dry by a more-than-substandard SEO product that is completely ineffective and alarmingly expensive. No rankings, gone. No traffic. And, still paying! In some cases being told to pay more!
Crapola. Of the weapons grade kind.
Wil got frustrated with Google, specifically how they make liars out of the good guys. We’ve all done our tests, and, in the past, experienced SEO’s would tell you exactly what types of linkbuilding and SEO practices would (and still might) work. That’s fine – if you’re looking to generate a fast buck on a throwaway domain then I have no issues with that – it can be lucrative, fun and a challenging learning curve. Eventually Google will catch you, and you’ll move on. Noone loses.
If you’re that SEO agency, I don’t know how you can feel good about what you do. If you’re an ordinary, everyday on-line business, and that discussion feels weirdly familiar, fire that SEO company.
Stuff like this does not wash:

Neither does this:

Wait, what?!

It seems that Google are beginning a new wave of attacks on spammy linkbuilding practices, and I’m personally pleased to see it. There, I said it.
Detecting bad link-building practices – it’s extremely easy
Tom Anthony wrote a long post on detecting bad link activity with SEOmoz’s metrics. That’s a reasonable methodology to profile back links according to SEOmoz metrics, but if you really need to weed out the bad stuff, I recommend getting back to the old school and adding Domain PageRank to the mix. Niel’s SEO Tools have a =GooglePageRank function, which works really nicely for backlink weeding:

Which can lead to this with a simple pivot table:

Here’s what I did to make that table (excuse the voice over, I have a *slight* cold):
Please, think about where your links are coming from
Anyway – rant over, I suppose. Bad link building makes our whole industry look bad. Don’t help perpetuate it by casually brushing your due diligence aside. You’ll end up paying to reverse the damage being caused in the long run.
Image credit: Diana Parkhouse
Stop Paying for Terrible Links [& How to Check for Low Quality Links] is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
Advanced Keyword Modelling – SES 2012
Earlier today I gave a presentation at SES London 2012 with Ron Jones from Symetri on the topic of advanced keyword modelling for keyword research. While Ron gave the theoretical overview of the concepts a good researcher might use to understand and categorise how users search, I gave a practical demonstration using SEO Tools for Excel and the Adwords API Extension.
I also gave a preview of a new tool we’re testing to help keyword researchers predict keywords for the fresh index. More on that later, because it’s buggy as hell at the moment and I’d like to save it for launch when it’s ready.
Check back later for the video, because with some luck I’ll have managed to record my part of the session.
Advanced Keyword Modelling – SES 2012
Here’s the video:
If you’d like to hear about my updates on this post, follow me on Twitter.
A few useful resources:
- Using Keyword Categories in Excel
Video Transcription
Hi everybody. Earlier on today I gave a presentation with Ron Jones at Symmetry all about advance key modelling, specifically how to use data to make decisions about your SEO strategy, site architecture, that kind of thing. Ron talked about some of the principles behind keyword categorisation and using categories to design and architect a better website, while I took more of a practical viewpoint and actually showed how to create keyword categories and how to do some basic to advanced Excel, actually, to help solve problems in understanding how people search. I’m going to switch to Microsoft Excel and just give you a run through of what I demonstrated earlier on today.
Okay. So thank you to Zack at Prezzybox for always letting us use a little bit of retail based data in our keyword research examples. We’ve got a few things. So we’ve got some search engine ranking data here, which I’ll explain why we’ve got that in a moment. We’ve also got analytics data from an anonymous time period, but very retail birthday based. Then we’ve got some raw Google search volume data.
So, one of the biggest challenges with keyword research is being able to actually categorise this raw data into something meaningful. Ron was arguing that if you create a keyword category that’s relevant to a specific area, like if you’re in automotive, then you might want to understand what the most popular car makes and models are, or what colours do people prefer when they’re buying a car. When it’s retail, it might be that somebody is interested in outdoor toys, but which outdoor toys? Using categorisation in that regard in SEO helps us structure a website more meaningfully. But getting to that structure is a bit of a journey because, as you can see, this is relatively meaningless. We’ve got local search volumes, great. So we know that 74,000 people searched for the word chocolate last month in theUK. But so what? And that’s what this presentation is about.
So I’m going to show you how to create a keyword category and I’m going to go one step further and show you how to visualise that category. Then I’m just going to show you a few other things that AdWords API extension for Excel does. If you’re not familiar with our AdWords API extension, in as short a demo as possible, it does this. You’ve got a keyword, and I might want to get the AdWords average search volume for that keyword. This will default toUKexact, I believe. So pressing Return and running that formula will get me the total number of searches in theUKfor that term. That’s how the extension works. When we’re looking at this data here, this is an export of the Google AdWords API using the array formula. So you can find out how to install that on our website.
Let me just make this data a little bit simpler, and we’ll just delete that out. Let’s just imagine for a moment that we want to create a category, and for the purposes of this demo, I’m going to show you how to create a category to help us understand a little bit more about how people search for birthday gifts in retail.
Now to do that, we need to be able to create the category. If you head to SEOmoz or Google SEOmoz keyword categories, you’ll see a post on how this is done. Here’s the practical example. I’m just going to grab my formula and go back to Google search data. So, imagine for a moment that in any category there might be markers or strings that describe the fact that the keyword itself belongs to that category. So if you’re optimising for occasions, you might be interested in Christmas or you might be interested in Valentine’s, right? So that might create a category called occasions. Price, it might be cheap, it might be discount, might be sale and so on. Each of these types of keywords might belong in a phrase that would indicate that a user’s search is based around price. Similarly, if somebody’s searching for a gift for an 18th birthday present, you’d see the characters “1, 8, t, and h” appear in the string. So, that’s basically how categorisation works, and it’s really down to us just to find a formula that will allow us to filter by all of these keywords, all in one go.
That formula is called an array formula and here’s how it works. If we go back to our search data, I’m going to paste in the formula that I copied a moment ago and I’m going to just grab, from my keywords type list, that row of birthday strings. Let’s call them markers. So we’re going to highlight all of those, and then pressing F4 will anchor that range. Now if I do a CTRL-Shift and Enter to make it an array formula, it’s started to filter. Now I’m going to just neaten that up a little bit by saying “Birthday,” and in my formula I believe that it’s looking at “O” not “C.” So it’s actually fetching the column header here and saying whether or not it’s found that marker in the keyword. Let’s say CTRL-Shift and Enter again, and there we go. So now I can filter the keywords that might be related to birthdays. So, that’s pretty cool, and that’s the first part of the demo.
The next thing that I wanted to show the audience was, okay, we know how many people are searching for those keywords, but how many entries did we get? That’s relatively simple because we’ve got some basic analytics data here, and we’re going to use what’s called the VLookup. Now VLookup simply says, “Find me this value in another place in my spreadsheet, like another keyword, and fetch the data that’s adjacent to it.” And you specify how many columns to the right in VLookup you want data to be fetched.
So, back to my Google search data. We’re going to create a VLookup. Now for those of you familiar with tables, you might have noticed that I’ve named my table, and I’ve named it “Analytics,” which makes it nice and simple when I’m forming the VLookup. Column index was two, was the column next to the keywords, and I want to match exactly. I found an extra bracket there, there we go. Let’s call that “Analytics.” Now we’ve got analytics entries, local search volume, and the keyword.
The last thing that I might want to combine with this is search ranking. Now in my ranking table, let’s just call this “Rankings Data.” Notice that we’ve got the keyword and then one, two, three, four, five columns to the right. So, the VLookup needs to look a little bit like this. Double click the table name when it appears in the tool tip. It was column index number five, and we want to match exactly with the zero, and off it goes to fetch those rankings. Now, you might have just noticed that some of those are errors. That’s because there is no data in this case. So we can wrap our query, our formula inside an IFError. So, IFError, do this thing, basically. So the value of IFError might be no data. There we go. Cool.
So, the last part of this is, well, how do we visualise this data? How do we make it into something that is relatively actionable, and quite often I like to just create a pivot table, which I’ll show you really quickly. So, if you go to insert pivot table, add that to a new spreadsheet, drop my keywords at the bottom, we’ll want our local search volume, we’ll also want our rankings. We always need to make sure that our ranking is set to sum in this case. I want to be able to filter by search volume and filter by rankings and, of course, the keyword category that I’ve made up.
So, now I’ve got my local search volume. Show me all keywords where search volume is higher than 46. I might want to sort by largest to smallest, like so. Only show me keywords that rank on page two. So let’s select some low hanging fruit terms that we might want to target with a bit of SEO, some link building, or maybe improve the on-page optimisation of our website. Finally, only show me keywords that are related to our birthday category.
So there we go. We’ve got an interesting data set from which we can visualise with a chart. So I’m just going to insert a bar chart. Now, we’ve got two sets of data here – the rankings and the search volume. Now, the rankings really need to go on a separate axis. So we can do that by formatting our rankings. We’re going to format that selection. We’re going to put it on a secondary axis. Then we’re going to change the chart type with a right mouse button click, change series chart type to dots. Now the next thing I want to do is reverse my axis, because I want to see the top ranking keywords at the top and the bottom ranking keywords at the bottom. And values in reverse order, click close. Then the only final thing that we need to do is if we format that data series, let’s take that line out because the line is irrelevant. The data isn’t technically joined. There we go. It’s a very, very simple chart that shows, on the right-hand side, rankings from position 1 to position 30, our keywords along the bottom with local search volume.
So that’s how you visualise your keyword priorities. You could use this data to make some decisions about your site architecture. In what order should you be linking to things, what content should be on your home page versus content that perhaps can just link to a little deeper because it’s not quite as high a priority.
In the session, I also covered a couple of other bits and pieces, because the brief for the session was actually to show how I might expand keywords. I just wanted to share a tip, which is based on the AdWords API plug-in and how to generate a keyword list based on a particular geo-location. So, in this case, we’re looking at keywords related to the word “hotels.” I’m very interested in how people search for keywords related to hotels in foreign climes. So let’s look atTaiwan. This is a query called “=arraysGetAdWordsIdeas.” It’s part of the AdWords API toolkit. While that’s running, I’ll explain what its doing. It’s looking at a table called Root4, fetching that keyword, and then playing back an exact match search volume for all keywords that are related to the word “hotel” according to the Google AdWords API Suggestion Service. You’ll see here that’s the country code forTaiwan. I’m asking it to show me all search volumes on the Web, and I’m asking for 100 keyword ideas. That will go quite high, around about 800 to 1000 per API call, and because it’s the API call, it is actually one API call. So that’s only $0.25, sorry, I beg your pardon, it’s only $0.25 for every 1000 API calls. So in theory you could have 800,000 keywords for $0.25, which is pretty cool.
This is something else that I shared, which is Ubersuggest. If you’re just trying to expand a keyword list, head to Ubersuggest and get the HTML link for your own search results. So, you’ve got here the query for cats. Now if I just grab this XPathOnURL query, which is courtesy of Niels Bosma’s SEO tools, the XPathOnURL query, which you saw in the previous video, if I go and select a range and press F2, then paste my query in which is referencing the URL in A3, which is the Ubersuggest URL, if I make this an array formula with CTRL-Shift and Enter, it’ll go off to Ubersuggest and fetch all of the results on that page, eventually. It takes a moment. So it should just be coming any moment now. There you go. So there are the top keywords related to the word “cats” according to Ubersuggest with setting toUKsearch, which is immensely powerful if you think about how you can combine that with your search volume data.
Anyway, thanks a lot for listening. That’s the end of the presentation. You can watch this video, or you can go and download the presentation by following that bitly link. Thanks a lot.
Image: PSD
Advanced Keyword Modelling – SES 2012 is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
While preparing myself for an SEO conference presentation, I like to practice to make sure I can fit in what I have to say, or in this case; show. Speaking on the SES London 2012 “SEO Tools of the Trade” panel, I gave up a few interesting Excel tips using SEO Tools for Excel and the Adwords API extension. Here are the guides:
- Check your Sitemap for Errors with Excel
- Fun With The SEOmoz API – Get Links Data Straight into Excel
Video: Excel Tips and Tricks
Excusing the occasional hesitation, I hope you find this video useful. I’ll update this post with my slide deck after the session. Enjoy!
Image credit: Lynn Friedman
Here’s the presentation
Video Transcription
I’m going to just basically show you some things that I found really powerful and really useful. Hopefully, you can take away some tips and tricks from this video and go off and have a play with them yourself.
I’m going to switch to Excel first of all. So we’re going to do a couple of things.
We’re going to do a little bit of search engine accessibility work. First of all by checking your sitemap, and specifically whether or not the URLs that you submitted in that sitemap are responding with the right http status, and whether or not those URLs actually match the canonical in the meta header of your web page. Then we’re going to have a look at how you can use Excel to identify bad links by fetching the page rank of the domain it’s linking to, and work out whether or not that’s a good idea or not, and whether or not you need to weed out any bad links to actually improve your rankings.
Then I’m going to do some work with checking whether or not the links in your data are actually still live. Tools like Open Site Explorer are excellent, but the data can be a little bit old, up to about 30 days old or thereabouts. So you might need something that helps you work out whether or not the link is actually still there.
Then we’re going to play with fetching data from the SEOmoz API into Excel, and then finally we’re going to work out how to get a location for a link into Excel as well. So we’ll work out whether or not all of the links that you’ve got inbound to your domain are from the UK or elsewhere. So let’s start with the first thing.
So when you create a sitemap, most search engine engineers, I think there’s a video on SEOmoz Whiteboard Friday, it basically says keep the noise levels low in your sitemap. And when you’re working a development team, you might make updates to the sitemap, and you wait for Google to download that and report back on errors. Actually, sometimes you might want to speed up a little bit. So for that Excel actually gives you the ability to import data from an XML feed. If you go to the data tab up here and check out from other sources if you follow the link From XML Data Import, you can paste in your sitemap URL here. When you click Open, it will download it.
Now here’s one I actually made earlier. I’ve created a column already called =HTTPStatus. Now let me just fill this out and leave it running, and I’ll explain actually what that’s doing. So HTTP status is part of an extension created by a chap called Niels Bosma, who is an Excel DNA developer, which is an extension for Excel that allows .NET developers to produce plug-ins and extensions for Excel. SEO Tools for Excel is suite of different functions, from things like checking the HTTP status of a URL or the IP address, all the way to fetching Google PageRank. There’s even a Google Analytics extension there too.
So I’m going to show you a few of those features. As you can see now, we’ve collected HTTP status in each of those URLs. So I’ve already got a 404 Error on one of those URLs, which I’ll go and check out later on. So we’ve got an error in our sitemap file. This is why we’d want to follow this kind of thing up. What I’ve found really interesting is just checking while we’re in here if the actual URLs themselves match with what we’re declaring in the meta header.
So if we use HTMLCanonical and just select that URL again, we’ll leave it running. So what it’s actually doing is going off and checking each of the web pages and then fetching back whatever matches or whatever is declared in the canonical header. Let me just check that. Niels’ tool is excellent, but sometimes you have to tell it not to tell you when there’s a 404 Error on a page, which is why we got that dialogue box. So there we go. Now we’ve got each of the URLs that appear in the canonical element in the web page. I’m just going to take that and paste the values.
One thing that this tool does, if Excel is set on auto recalculate, every time you make a change to a table, it will try to recalculate and re-fetch the data, which is a problem for functions like fetch page rank, which we’re going to look at in a moment. So now we know what the canonical is, we can just compare the submitted URL with canonical URL by using exact. Exact just looks at one piece of text, which is there, and compares that to the next, which is there, and tells you whether or not there’s a match. So if there’s a match, if the two data points are exactly the same, it will say true. If not, it’s false. So I’m going to send somebody off here to go and work out what’s going on with that URL and why that’s in our sitemap.
So the next thing that we’re going look at is how to identify bad links. I specifically have to look at how to find links that might have exact match anchor text in your inbound link profile, but also seem to come from very, very low value, very low or no page rank URLs and domains. I know that Patrick at SES today was saying that one of the things that you might want to do in your SEO campaign is clear up bad links. I tend to agree that it’s worthwhile at least knowing what’s going on in your back link profile.
So the first thing that we need to do is actually fetch the domain from this URL, which is relatively simple. We’re going to use MID, which selects text from a specific start point and plays back a number of characters after that start point. Now with any URLs you need to clear up the HTTP, which is exactly eight characters. And then the number of characters we want it to play back to us is actually dependent on the first trailing slash, if you want to extract the domain which you’d find with Find. I want it to find me the first trailing slash within that same text just there. Obviously, it’s going to start in position eight. We’re going to close that off, and then take eight away from the result and press Return. There we go, we’ve got the domains.
Now what I did when I was preparing this file was actually fetch the PageRank for all of these domains in this list here, because that does take some time. But if you’ve got a powerful enough computer, it does it quite well. So here’s one I made earlier. Now just to show you how we fetch PageRank in Excel, I’ll just show you the query. So it’s =Googlepagerank, like that, and just select the URL, press Return, and it should go off and fetch that. There you go.
That works pretty well. You can see we’ve updated the whole table here with all of those inbound links. So what we have to do now is just look up those values. So I’ve already got a Google PageRank column here over on the right. So if I go “=vlookup”, like so, I’m looking for that domain and I’m looking for that in the range Google PageRank, because that was my table name. The column index is two. That’s the next one along. I want to match that exactly, zero, so press Return. There we go. So for the most part, we’re doing a pretty good job of pulling through the PageRank here.
Now the really cool thing about Excel is that we can create a pivot table to have a look at how many PageRank low or PageRank no links we’ve got, which is pretty powerful if you want to filter down quickly. So if we just insert a pivot table, we’re going to insert that in a new page, and we’re just going to put that Google PageRank count there.
Now we’re going to count the number of domains that are linking to us with zero PageRank. Let’s just change that to Sum instead of Count. So now we’ve got the data, and we can see that there’s a large number of domains with very low levels or no PageRank at all. So if we just drill down on those links, let’s just have a quick look. So I’m pretty sure that, with Majestic ACRank, that’s incredibly low on the root domain. We’ve got lots of .infos, lots of directories. I wouldn’t be surprised if there’s some inbound links here that you probably don’t want the exact match anchor text linking to if you wanted any links at all. So not ideal.
So moving on, let’s have a look at the next trick, which is working out whether or not your links are still live. So when you’re working with link data from tools like Open Site Explorer, it’s really, really best practice just to be sure that actually that link is still live, it’s still pointing to you. This query here, there’s a blog post about this on SEO Gadget. This query here basically uses the SEO Tools for Excel function XPathOnURL. So basically, it has the ability to go to any URL that you specify and then execute an XPath filter. So in this case, we’re saying to go to A2, which is an SEOmoz blog post about keyword research, and yes, select all A elements that contain href SEOgadget. What that will do is give me the value if it finds it, but it will just return a blank value.
Tools of the Trade: Excel Tips from Richard at SES London 2012 is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
Check Your XML Sitemap For Errors with this Excel Tip
Today, I want to share a tip for quickly weeding out errors in sitemap XML files. This post will teach your a few new Excel tricks and (hopefully) save you some time in your own technical SEO audit projects.
Why a nice clean sitemap?
Google have invested a lot of time and effort into improving the sitemaps functionality in Webmaster Tools and the advice I’ve always heard from Google people is advice like; keep your sitemaps as error free as you can, use the correct canonical URL. I’ve always felt that a sitemap file with a very low load time is also advisable if you can speed up the dynamic elements of the file generation.
Bing’s Duane Forrester was on a Whiteboard Friday talking about exactly this topic back in March last year. His comments about sitemap cleanliness were of particular interest:
We have a very tight threshold on how clean your sitemap needs to be. When people are learning about how to build sitemaps, it’s really critical that they understand that this isn’t something that you do once and forget about. This is an ongoing maintenance item, and it has a big impact on how Bing views your website. What we want is end state URLs and we want hyper-clean. We want only a couple of percentage points of error.
Duane Forrester
If you’ve not seen the video, I recommend taking a few moments to review what’s said:
Checking for problems during a site audit
When I’m working on a site, I sometimes need to work out what state the XML sitemap is in. If I know there’s been a recent update to the file(s) it’s not always a good idea to totally rely on the data coming from Webmaster tools. If you’re ever in that situation, here’s how to get a fresher impression of the state of your sitemap.xml file.
Import your XML sitemap file into Excel
Firstly, head to Data > From Other Sources, and select the “From XML Data Import”:
In the “File name” dialogue, type or paste in your sitemap XML file URL:
Click “Yes” when this dialogue appears:
And eventually, your entire XML sitemap appears, all nicely formatted in Excel:
Fetch the HTTP status code for each URL
Back in the old days, the quickest way to check the server header response of a list of URLs was to crawl the list with XENU on 0 crawl depth, and then VLOOKUP against the original list. Thanks to Niels Bosma and his SEO Tools for Excel, this process is much, much quicker.
Just create a new column and insert the following query into the first cell:
=HtmlStatus([@[ns1:loc]])

Check that the canonical in the page header matches the declared URL in the sitemap
Aside from a rarely updated sitemap, the other common mistake i encounter is non-canonical URL submission in the sitemap file. The URL in the sitemap and the URL described in rel=”canonical” don’t match!
=HtmlCanonical([@[ns1:loc]])

Check out the “Match?” column – we’re checking to see if the canonical declared in the web page’s header matches the actual URL in the sitemap. Oh my, it’s a simple formula:
=EXACT([@[ns1:loc]],[@Canonical])
Learn this stuff
Learn this stuff! If you’re not familiar with some of the tips in the post – that’s ok, I more or less have to relearn the more complicated stuff every time I start a new task with Excel. It’s enormously satisfying to make the time to teach yourself new tricks and Excel is brilliantly simple once you have the gist of it. Here are some resources to get you started:
- Using Tables in Excel
- How to Use VLOOKUP
- How to Make a Pivot Table in Excel
- How to Find Orphaned Pages in Excel
- How to Extract Your Competitor’s Keyword Strategy
- HTTP Status Reports with Xenu, OSE and VLOOKUP
- What are My Most Linked to Subfolders
- Categorise Your Links with Excel
- Keyword Research wiith Categories
Image: Splorp
Check Your XML Sitemap For Errors with this Excel Tip is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
Updating the Adwords Extension for Excel to v201109
On the 29th February, 2011 Google will be “sunsetting” Adwords API versions v13, v200909, v201003, v201008 and v201101. This will affect our old Google Adwords API extension (documentation here), so, Tom’s had his sleeves rolled up over the weekend and built us a shiny new version.
From now, our Adwords API extension supports V201109 and, if you’re still using the old plugin by then, you’ll get errors from the 29th February. Eek!
How to replace the old Adwords API extension
Replacing the currently installed version is remarkably easy. Here’s how, in 6 simple steps:
1) Download and save the ZIP file (found in this post) on your desktop. Open the ZIP and decompress the “distribution” folder like this:

2) Go ahead and open the setup.xlsx file. You’ll need to click the “Enable Content” button, just here:

3) See those uninstall buttons? Click either – the first one if you intend to keep the same API credentials, the second if you want to start from scratch. After completing this step, close down Excel and re-open the setup.xlsx file.

4) Reopen the setup.xlsx file, and click “Add API Credentials” (if you’d deleted them previously) and follow the instructions in the dialogue:


5) Click “Install Add-in” – if you’re successful, you’ll see this dialogue:

Congratulations, you’re done!
The update itself offers only a little step change in functionality for now, in that it now offers support for the country codes found in the API documentation here. Instead of specifying say, “GB” in your queries, you can specify “2826″ if you wish to. All of the original codes have been hardcoded, so you can continue with your standard alphabetical country codes if you wish to.
What we were hoping for (and to be honest we’re scratching our heads over this) is there’s a gorgeous list of city codes. Unfortunately (though the adwords API accepts the digits), we’re getting “0″ back as search volumes when we specify a city. The fact that it’s a 0 (as opposed to an error response) tells me the API is returning these values, as opposed to there being a problem elsewhere. That’s a massive shame, as the targeting service would be enormously powerful if it supported this level of granularity. Needless to say, I’ll update you should we learn more on the topic in the near future.
Reach
While updating the core code, Tom built a new helper function: =SEOGadget_locationDetails(“LOCATION”)
This helper is designed to fetch the correct geo-location code for an area name. For example, =SEOGadget_locationDetails(“PARIS”) would yield the following response:
Note the “reach” value, which is defined as: Approximate user population that will be targeted, rounded to the nearest 100. * This field can be selected using the value “Reach”. This field is read only and should not be set. If this field is sent to the API, it will be ignored. How Google calculate the approximate user population is anyone’s guess, my guess would be a normalised count of searches from unique users in a 30 day period.
I’ll publish more on this targeting issue as I get more information. If you’re reading this, and you have experience with the support (or lack of) in the Adwords API targeting service for city codes, give me a shout!
Updating the Adwords Extension for Excel to v201109 is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
5 New Examples of Gamification in the Wild
Gamification could be defined as the application of concepts and techniques from games to other areas of activity; those activities ranging from assigning badges and points to users on sites such as Foursquare and Lockerz, to real life, sales team management via tools such as Bunchball’s Nitro platform. Whenever I talk about gamification, I insist on encouraging my audience to find ways to reward users for performing the actions most important to the growth of their business.
A few new gamification examples
Since my presentation on Gamification at Search Love, London, I’ve done my best to keep an eye on new examples and emerging data on the topic. Here are 5 new examples of gamification in the wild that I think are worth a share:
Muse, Objective Logistics
Muse is a management platform for restaurant managers to optimise the management, scheduling and sales performance of their staff using clever point of sale integration and leaderboards. Higher performing restaurant staff “win” the opportunity to work more shifts.

According to Objective Logistics, their beta has resulted in a 1.8% increase in sales and an 11% increase in gratuities for their test candidates, Not Your Average Joe’s:
“In restaurants, the top 10% of employees add $8.54 to every check. The bottom 10% actually subtract $7.21. In many cases it’s even more extreme. MUSE creates a competitive environment, and in doing so shifts the bottom to the middle, the middle to the top and the top through the glass ceiling – we conservatively predict a 2-4% increase in sales at the outset.”
Chevrolet Volt
The “Chevy Volt” is a hybrid electric car due for launch in the UK in 2012.

In the interest of environmental economy, the Chevy Volt uses a simple green / amber indicator (pictured above, right) on the dashboard to give drivers visual feedback on their driving style. If you’re too heavy on the accelerator, the green ball moves up and turns amber. If you’re too heavy on the brakes (preventing the energy recovery system from recharging the batteries) the ball moves down and again, turns amber. The challenge is of course, to keep the ball green, and positioned centrally, via Ars Technica.
The use of this simple indicator compares in a sense to the happy face / sad face speed warning system that reduced the number of people exceeding the speed limit in Lanarckshire by 53% during a trial of 226 warning signs. Small tools, influenced by simple game mechanics can be used to modify people’s behavior. If, by the way, you’ve not seen Rory Sutherland’s “Life Lessons from an Ad-Man”, (the source of this snippet of information), then you really, really must!
Keas – “Corporate Wellness”
Keas is designed to help companies “save money” on health care by gamifying exercise and nutrition as coworkers compete for points.

Keas appears to be a more complex system, demonstrating several features of a gamified system. Game mechanics in play include points, challenges, goals, leaderboards and community / social interaction features such as the ability to connect and form teams. If you’re an SEOmoz pro member, you can watch my presentation on game mechanics, covering many of the individual elements of game mechanics.
In another case of using game mechanics to incentivise employees to be more health conscious, Charlie Kim, CEO of Next Jump observed a large increase in gym membership participation when employees were encouraged to form teams and compete with other offices on the most time spent at the gym via a leaderboard – a 75% participation increase no less!
RNKD – Pronounced “Ranked”
Taking an oddly voyeuristic approach to clothing retail, users of RNKD can upload photos of their clothes and accessories, tagging each photo with the manufacturer’s brand. RNKD rewards you for creating content by assigning points and badges that can be exchanged for discounts.
Users can also earn points for liking otehr people’s photos and taking part in contests. There’s an interesting random reward called the “five hundo” – where a random RKND user wins a $500 gift card. The higher your point value, the better chance you have of winning weekly giveaways and contests. These actions include adding new clothing, liking other people’s photos or participating in contests.
Totalbeauty.com
Totalbeauty demonstrate how a publisher can curate a community of committed followers using points and status.

The site uses a points system to reward frequent visitors and reviewers. Additional benefits, such as early notification of free samples are given to higher points scorers. “Elite” status allows access to gifts from the editor.
I realise that, while writing this post, I never published my Search Love presentation – here’s the deck for info:
As always, I’m always really interested to hear your examples – feel welcome to share in the comments below.
Image credit: msaar
5 New Examples of Gamification in the Wild is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
How Intention May Influence Search Result Click Through [Conversion Conference]
It was a few months ago when I was invited to speak at the excellent Conversion Conference London. We do have a strong conversion rate optimisation knowledge base, but the title for this particular session was in fact labelled: ”SEO and SEM vs. CRO – Tactics for Optimising Both Search & Conversion”. Around the same time I accepted to speak on the panel for the conference in December, SlingshotSEO had published their click through rate study (first, via SEOmoz) while MiraMetrix were working on an interesting eye tracking survey for Dr Pete to publish later on SEOmoz.
The Problem with CTR Studies
While click through rate studies are helpful, useful and interesting, they are do have limitations. Even the best studies don’t take universal search results into account and while the data tends to aggregate many hundreds if not thousands of search queries, the query intent is not recorded. Click through will vary based on variables beyond ranking position. All of this got me thinking – could we measure how the intention of a searcher (for example, informational query intent vs transactional) might affect the click through rate in a search results page? At the time, no tools existed to help me to find a conclusion.
SERP Turkey
Probably not much more than two weeks ago (and around a week before the conference!), Tom Anthony launched his handy new A/B split testing tool; SERP Turkey. Suddenly, it became possible to A/B test variations of search results while recording the number of clicks each variation achieved. While the early version of the tool has obvious limitations, it is incredibly useful and easy to use. I’d like to thank Tom – he actually coded a change to the tool as a feature request to enable me to copy entire tests (thus saving me a great deal of time!). Thank you, Tom.
A Simple Test To Measure the CTR in a Search Result Variation

Ready for conversion conference, Fabian and I set about designing a simple test. We wanted to see if we could measure differences in click through when searchers were given two different scenarios. An “informational” search scenario for the query “pool tables” and a “transactional” search scenario for the same query. In each scenario we served variations of search results to our searchers where the position 2 ranking had differently worded snippets.
Searchers were sourced via Mechanical Turk (approval over 95% + Master Categoriser status). There are obvious caveats to using mTurk, though Tom’s “Great White Shark” test did show that the integrity of the Turker’s choices were of good standard. Here were our scenarios, of which each variation received around 120 searches where the time spent examining the search results was over 5 seconds.
Scenario 1: You’re researching Pool Tables. Click the result that would be most relevant to you.
Scenario 2: Imagine you’re about to buy a Pool Table. Click the result that would be most relevant to you.
The Test Search Pages
There were 3 variations of our search result pages. As SERP Turkey doesn’t do rich snippets, the third variation was actually a hack – and the time it took to get this one set up meant we only tested in in the transactional scenario. The only change in each variation was the wording or presentation of the second result. No other changes were made.
Informational Variation

Transactional Variation

Transational Variation w/Rich Snippet

What Were the Results?
Our hypothesis was that in a research scenario, a searcher may prefer the snippet with broader, informational terms: “experts”, “beginner”, “advanced”, “comprehensive”, “information”, “plenty”, “learning” and “schools”. In a transactional scenario, the searcher may respond to the more transactionally worded snippet: “buy”, “free delivery”, “sale”, “prices”, “buy today”. Here is a typical results page from one of the scenarios.
Result: informational intent

In the informational scenario, our more “informationally” worded variation won. The transactional variation received 11.34% CTR, while the informational version received 16.36%. You can see that an extra line of text snuck through QA, which was a little annoying – however I’m not convinced this skewed the results in the way we might expect – as later testing in the transactional testing might prove.
Result: transactional intent

In the transactional scenario, the more “transactionally” worded snippet won. Our transactional variation received 19.35% of the clicks while the transactional snippet received 11.35% CTR. Interesting – if the lengthier snippet was skewing CTR, surely this test might highlight the issue?
Final result: CTR when we introduce a rich snippet

As I mentioned earlier, we only introduced a third variation (the inclusion of a rich snippet) in the transactional scenario. The final result was perhaps unsurprising. The transactional variation received 21.52% CTR, vs the informational snippet at 14.93%. Our rich snippet, transactionally worded variation won at 26.32% CTR.
The Obvious Caveats
Firstly, I’ll get the obvious caveats out of the way. This is one query – though I feel ultimately the click through will always vary based on the individual query and the intent of the user at that exact time. Our variations were far from eloquently written and were instead designed to place emphasis on the types of terms that imply purchase or information. Aside from the fact that the searchers were mTurk based, I’d also like more traffic to play with. I suspect that, because we chose the highest rated Turkers, the test is only up to around 120 usable results for each test. It’ll keep running until there are 500 which at this rate will be sometime in January 2012! We identified an anomaly where position 4 was beating or equalling position 1′s CTR in 2 tests. We think this may be because of the density of the word “pool tables” in the snippet and title, but we need to test for that.
As this was one query, the only possible conclusion I’d take away from this as a reader is, that CTR will vary depending on intent and that you should learn how to test your own variations to find a winner. With that said, I think it’s very exciting to have tools like SERP Turkey to make these kinds of test far, far easier.
The Excitement, for Me at Least
The thing that excites me is this. We can fight for better click through without moving the position we rank in, simply by experimenting with different wordings in our meta descriptions. That’s good to know. It’s good to know that a variation of a snippet may be able to persuade searchers to click a second place result more than they may a first place result. Win!
Improve the Way Your Site Looks in Search Results
Improving the way our sites appear to searchers in search results pages is an activity that we really should be engaging in more of. Later in my conversion conference presentation, I showed how using two 160(ish) character sentences in a page’s meta description (this one, to be completely clear) can result in Google displaying a more relevant snippet to the user. That was an idea I first discovered on Dave’s blog. For the sake of brevity (I am being hurried along to pack and fly to Australia as I write!) I’ll ask you to flick through the presentation below to examine exactly how I decided to word that snippet based on analytics keyword referrer data.
Image credit: Thinngy42.
How Intention May Influence Search Result Click Through [Conversion Conference] is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!
Interactive Infographics: 8 Interesting Examples of Data Visualisation
We’re near constantly working on our content and data visualisation capability for our clients, and while info-graphics are still a solid way to build links with the right methodology, it’s great to have a portfolio of impressive examples of interactivity to share.
Here are a collection of our favourites so far:
The Evolution of the Web
How Many Households are Like Yours?
The World’s Best Countries
Fedex – Our Changing World
Picturing a Lifetime of Clean Water Access
The Future of Workplace Mobility
The Evolution of Western Dance music
![]()
Last time I checked, the Evolution of Western Dance Music had attracted around 100 links. OSE just hasn’t updated yet!
Eurozone debt web: Who owes what to whom?
Interactive Infographics: 8 Interesting Examples of Data Visualisation is one of our latest posts from SEOgadget - thanks for reading! Want to stay up to date with the latest SEO and Conversion Rate Optimisation tips and tricks? Follow us on Twitter and Add SEOgadget to your Google Circles!





















