Sunday, January 30, 2011

Algorithm change launched

I just wanted to give a quick update on one thing I mentioned in my search engine spam post.

My post mentioned that “we’re evaluating multiple changes that should help drive spam levels even lower, including one change that primarily affects sites that copy others’ content and sites with low levels of original content.” That change was approved at our weekly quality launch meeting last Thursday and launched earlier this week.

This was a pretty targeted launch: slightly over 2% of queries change in some way, but less than half a percent of search results change enough that someone might really notice. The net effect is that searchers are more likely to see the sites that wrote the original content rather than a site that scraped or copied the original site’s content.

Thanks to Jeff Atwood and the team at Stack Overflow for providing feedback to Google about this issue. I mentioned the update over on Hacker News too, because folks on that site had been discussing specific queries too.

Affiliate marketing: death of the long tail?

With increasing regulation and scrutiny coming in to the affiliate channel, including the extension of the ASA digital remit, what does the future look like for different affiliate models?

There has been considerable talk in the trade press about the extension of the ASA digital remit, but the discussion has mainly been about the impact on social media.


One thing that has been overlooked is the fact that affiliate marketing will fall under the ASA’s remit for the first time, and this has some pretty serious consequences for a channel that is becoming increasingly influential.


The ASA generally concerns itself with advertising that a brand has generated itself, governing on complaints about misleading claims. Within the affiliate space, brands are ceding control of what is claimed to 3rd parties, or affiliates.


The view has always been that because affiliates are taking the risk, spending their own time and money to drive traffic and only being rewarded if a sale takes place, that they should be allowed to operate within a loose set of guidelines to drive that traffic as they see fit.


The concern amongst brands will now be that the claims made on their behalf by affiliates hoping to drive traffic, could see the brand winding up in breach of ASA regulations.


I say “could” see, as at present it seems that there is quite a bit of confusion about who would be held responsible if a breach of the ASA code occurred: would it be the affiliate making the claim, the brand who are implicitly approving the copy by paying for it, the agency running the activity on the clients behalf, or the affiliate network who control the relationship with the affiliate?


Let us have a look at a couple of examples where affiliate marketing could be affected.


Product feeds


Many affiliates populate their site using product feeds produced by brands. This will automatically update the affiliate site and contains data such as price and availability. Were the feed not to be updated and wrong information about these aspects were reported, that could be a breach of the code.


Voucher code sites


Voucher code sites list valid codes, deals and offers that encourage the consumer to click through to the brand site to take advantage of them. Clearly, promising a deal or offer that is not available on the brand site would be a breach of the code.


Outdated content


While brands generally employ significant sized tech teams to manage their content, and their sites are regularly updated, this is not always the case with affiliates.


Many are featuring many merchants on their sites and requests from merchants to change things can often go unnoticed. If these changes relate to something governed in the ASA code, again this could lead to a breach.


So where does this leave the world of affiliate marketing?


In some cases I foresee no change. Many brands out there manage their affiliate campaigns closely already and hold strong relationship with their affiliates meaning that they are unlikely to be affected.


However, I do see a situation coming where more brands will be looking to protect themselves by ensuring that they only work with a smaller number of affiliates whom they know and trust.


Unfortunately this goes against the original concept of affiliate marketing, but we have seen plenty of precedents where brands have culled affiliates on their campaign over the last few years to afford them greater control of their brand and against fraud.


I feel that the forthcoming involvement of the ASA could act as a catalyst for more brands to do the same.


"

Monday, January 24, 2011

10 Tips for Optimizing Your Website’s Speed

10 Tips for Optimizing Your Website's Speed


Web page speed and performance is very important to the user experience. If your site is too slow, you’ll not only be losing visitors, but also potential customers. Search engines like Google factor a website’s speed into account in search rankings, so when optimizing your site’s speed, you should take everything into consideration. Every millisecond counts.


Here are just a few basic and general suggestions for improving a site’s performance.



1. Defer Loading Content When Possible


Ajax allows us to build web pages that can be asynchronously updated at any time. This means that instead of reloading an entire page when a user performs an action, we can simply update parts of that page.


We can use an image gallery as an example. Image files are big and heavy; they can slow down page-loading speeds of web pages. Instead of loading all of the images when a user first visits the web page, we can just display thumbnails of the images and then when the user clicks on them, we can asynchronously request the full-size images from the server and update the page. This way, if a user only wants to see a few pictures, they don’t have to suffer waiting for all of the pictures to download. This development pattern is called lazy loading.


Ajax/web development libraries like jQuery, Prototype, and MooTools can make deferred content-loading easier to implement.


2. Use External JS and CSS Files


When the user first loads your web page, the browser will cache external resources like CSS and JavaScript files. Thus, instead of inline JavaScript and CSS files, it’s best to place them in external files.


Using inline CSS also increases the rendering time of a web page; having everything defined in your main CSS file lets the browser do less work when rendering the page, since it already knows all the style rules that it needs to apply.


As a bonus, using external JavaScript and CSS files makes site maintenance easier because you only need to maintain global files instead of code scattered in multiple web pages.


3. Use Caching Systems


If you find that your site is connecting to your database in order to create the same content, it’s time to start using a caching system. By having a caching system in place, your site will only have to create the content once instead of creating the content every time the page is visited by your users. Don’t worry, caching systems periodically refresh their caches depending on how you set it up — so even constantly-changing web pages (like a blog post with comments) can be cached.


Popular content management systems like WordPress and Drupal will have static caching features that convert dynamically generated pages to static HTML files to reduce unnecessary server processing. For WordPress, check out WP Super Cache (one of the six critical WordPress plugins that Six Revisions has installed). Drupal has a page-caching feature in the core.


There are also database caching and server-side scripts caching systems that you can install on your web server (if you have the ability to do so). For example, PHP has extensions called PHP accelerators that optimize performance through caching and various other methods; one example of a PHP accelerator is APC. Database caching improves performance and scalability of your web applications by reducing the work associated with database read/write/access processes; memcached, for example, caches frequently used database queries.


4. Avoid Resizing Images in HTML


If an image is originally 1280x900px in dimension, but you need to have it be 400x280px, you should resize and resave the image using an image editor like Photoshop instead of using HTML’s width and height attributes (i.e. <img width="400" height="280" src="myimage.jpg" />). This is because, naturally, a large image will always be bigger in file size than a smaller image.


Instead of resizing an image using HTML, resize it using an image editor like Photoshop and then save it as a new file.


5. Stop Using Images to Display Text


Not only does text in an image become inaccessible to screen-readers and completely useless for SEO, but using images to display text also increases the load times of your web pages because more images mean a heavier web page.


If you need to use a lot of custom fonts in your website, learn about CSS @font-face to display text with custom fonts more efficiently. It goes without saying that you have to determine whether serving font files would be more optimal than serving images.


6. Optimize Image Sizes by Using the Correct File Format


By picking the right image format, you can optimize file sizes without losing image quality. For example, unless you need the image transparency (alpha layers) that the PNG format has to offer, the JPG format often displays photographic images at smaller file sizes.


To learn more about how to decide between JPG, PNG, and GIF, read the following guides:



Additionally, there are many tools you can use to further reduce the file weights of your images. Check out this list of tools for optimizing your images.


7. Optimize the Way You Write Code


Look around your source code. Do you really need all the tags you’re using or can you use CSS to help out on the display? For example, instead of using <h1><em>Your heading</em></h1>, you can easily use CSS to make your headings italics using the font-style property. Writing code efficiently not only reduces file sizes of your HTML and CSS documents, but also makes it easier to maintain.


8. Load JavaScript at the End of Your Document


It’s best if you have your scripts loading at the end of the page rather than at the beginning. It allows for the browser to render everything before getting started with the JavaScript. This makes your web pages feel more responsive because the way JavaScript works is that it blocks anything below it from rendering until it has finished downloading. If possible, reference JavaScript right before the closing <body> tag of your HTML documents. To learn more, read about deferring the loading of JavaScript.


9. Use a Content Delivery Network (CDN)


Your site’s speed is greatly affected by where the user’s location is, relative to your web server. The farther away they are, the more distance the data being transmitted has to travel. Having your content cached across multiple, strategically placed geographical locations helps take care of this problem. A CDN will often make your operating cost a little higher, but you definitely gain a speed bonus. Check out MaxCDN or Amazon Simple Storage Service (Amazon S3).


10. Optimize Web Caching


Along with using caching systems, you should create websites that utilize web caching as much as possible. Web caching is when files are cached by the web browser for later use. Things that browsers can cache include CSS files, JavaScript files, and images.


Aside from the basics, such as putting CSS and JavaScript code that are used in multiple pages in external files, there are many ways to make sure that you are caching your files in the most efficient way possible.


For example, you can set HTTP response headers such as Expires and Last-Modified to reduce the need of re-downloading certain files when the user comes back to your site. To learn more, read about caching in HTTP and leveraging browser caching.


To set up HTTP Expires headers in Apache, read this tutorial on adding future expires headers.


Related Content



Raphael Caixeta is a PHP and iOS developer and co-founder of Grip’d. He likes to blog about web and iOS development at raphaelcaixeta.com. If you’d like to connect with him, you can follow him on Twitter @raphaelcaixeta and add him on Facebook (raphaelcaixeta).

Friday, January 21, 2011

Guide to Competitive Backlink Analysis

Using link data, although it can never be perfectly accurate, allows you to take a more scientific approach to your SEO strategies. How can we leverage link data for actionable insights? I recently wrote a post breaking down the Mormon SEO strategy, which is a very well thought out plan of action.. There seemed to be a lot of interest in the tools I used and the insights they provided. It's impossible to cover all scenarios, but my hope is to show how this data can be used.

Tools Used

  • Excel
  • SEOmoz API / Open Site Explorer
  • Free Version of Majestic SEO
  • Ninja Skills (prerequisite of working at Distilled)
For most of this post, I’m going to look at the SERPS for "nashville real estate", a competitive result from my hometown.

The Data Set

To start, I pulled a wide range of link based metrics from the Top 10.
Link Data
Caveats: Your may want to remove large domains and exact match domains from your analysis. Large domains with solid brands may just add noise to your analysis. Exact match domains may be getting a substantial boost and may skew your analysis as well. I have removed both Trulia and Yahoo Real Estate from this set.

Data

  • PAPage Authority, metric from SEOmoz
  • P LRD – Number of Linking Root Domains to the PAGE
  • DADomain Authority, metric from SEOmoz
  • R LRD - Number of Linking Root Domains to the DOMAIN
  • Links – Raw number of links (SEOmoz data)
  • Deep Links - % of root domains that link to content that isn’t home page
  • mRmozRank, SEOmoz’s metric similar to PageRank
  • DmR – Domain mozRank, similar to mR, but on a DOMAIN level
  • DmT – Domain mozTrust, SEOmoz metric to measure TrustRank
  • EA LRD – Number of Linking Root Domains using EXACT match anchor text
  • EA % - Percentage of anchors with EXACT match anchor
All of this information was acquired from SEOmoz’s data set. Items like deep links %, exact match linking root domains, and percent of anchors with exact match anchor were all obtained with some basic analysis. Now that we have our first data pull, we can dig in and talk about what these mean.

Breakdown the Top 10

If my goal is to break into the top 10, I’ll line my site’s metrics up against the trending of the top 10 and their averages. This will identify areas where I’m over- or under-performing. In addition to comparing against the average, I can look at the distribution of metrics across the top 10. I’ll throw out a few examples in this niche that jump out. The factors I look into may depend on the data pulled for a niche.
Link Root Domains
linking root domains
As we know, the number of linking root domains correlates well with rankings. This why in my link builder tips post I suggested getting a link, or just a few, and moving on from a domain. The majority of the sites in this niche sit around 100 to 200 unique linking domains. This graph gives you a gauge for breaking into the top 10 results. However, the top two results have pulled away from the rest with around 800 unique linking domains, so ranking number one may be difficult.
Exact Match Anchor Linking Root Domains
Exact Match Linking Root Domain
This metric was measured by looking at the Anchor Text Distribution tab on Open Site Explorer. I was a bit surprised by the results. The number one site has managed to receive links from 544 domains with the exact anchor text “Nashville Real Estate.” Regardless of how they managed to do so, this makes it a highly competitive term to rank number one for. However, it also shows that the majority of the Top 10 do not have a large number of domains linking with well-optimized links for this phrase. This graph, and the one before, shows opportunity exists for this keyword between result 3 and 10. This is why it’s important to note the distribution as well as the average.
Percent of Anchors with Exact Match Domains
Anchor Exact Match
Looking at the percentage of anchors using this exact match phrase can provide some interesting insights. First, the top ranking sites are excessively optimizing their link’s anchor text. Second, Google is allowing this significant optimization. Even the third result has nearly 30% of their links using this anchor text. Your link building strategy here could be aggressive without sticking out. Additionally, these sites are overly focused on one golden phrase. I’d have to dig deeper, but this may be indicative of several open opportunities in mid to longtail phrases. I’d likely take advantage of this short-sighted targeting strategy by first focusing on picking up the terms they’re ignoring.
Strategy
To rank well in this niche, you’re going to need a large number of links from a diverse set of domains. Google seems to be forgiving of over optimization and has allowed aggressive link building. The first ranked site appears to sufficiently answer the query, so I don't think there is a reason to not allow it. Most of these sites do not have significant content strategies pulling links to subpages and most do not engage heavily in social media. Although an aggressive strategy would not stick out in this market, I'd caution again the aggressiveness of having almost 70% of your link profile with the same anchor text. This type of optimization is dangerous, limiting and ignores many other phrases.

Link Profiling

link profileDr. Pete wrote a great post on link profiling, which allows you to see the distribution of inbound links to a domain. This will give you insights on the quality of the links a site has acquired. I also use this when reporting the links I’ve built to my clients to visually demonstrate the distribution of links I've acquired. I’m going to briefly show an example of this profiling using Page Authority, but I repeat this with metrics such as Domain Authority, mR, DmR, and DmT. Disparities in these distributions can draw your attention to items you might not have considered.
Link Profile

Radar Graphs

Not a new tool, but I like the radar graphs in SEOmoz Labs. These are great for demonstrating link analysis or providing a quick audit on a phone call or email. Let’s say the #12 ranked site nashvillebuyers.com called up and quickly wanted to know what it’d take to break into the Top 5. This quickly shows they're falling short on several significant ranking factors. This could also show that they’re beating other sites in all metrics. If this is the case, I might start looking at other factors like anchor text, anchor text distribution, link quality, and on-site targeting.

Top Content

After looking at a site’s links, it’s important to evaluate what’s the top content drawing in links. One of the best guides I’ve seen about visualizing this analysis is the post What Are My Most Linked to Subfolders? written by SEOgadget. This report can be pulled from Open Site Explorer’s Top Pages. In my Mormon SEO strategy post, I used the SEOmoz API and created a pivot table to find the most linked to content in their massive link profile.

Keyword Tag Cloud

A tag cloud of anchor text is a quick way to visualize the distribution of keyword anchors and pull out the terms being targeted. The most interesting anchor cloud I’ve seen so far is that of the Mormon LDS church.
LDS Anchor Cloud
To get this, I pulled the max number of links from the SEOmoz API, saved the list of anchors to a text file, and uploaded them to Tagxedo. Doing this quickly highlights major targeted terms and visually demonstrates the distribution of anchor text.

Broken Links

Another quick check that can bring you big wins is checking sites for 404 pages by looking at Open Site Explorer’s Top Pages tab. (Hopefully this isn't new to you guys, but worth mentioning.)
Top Pages on Open Site Explorer
Reasons to Find Broken Links
  • Great way to start a relationship with a webmaster: let them know, people like to reciprocate.
  • Contact the people who are linking to them and get that link.
  • Generate content ideas based off that type of content that has acquired links before.
  • Recreate this content and get websites to switch the link.

Link Growth / Velocity

One more check I like to make is link growth rate. Aaron Wall wrote an article a while back about link velocity and the role link growth rates has on your link profile. MajesticSEO provides these graphs up for free and they can provide some interesting feedback. They provide link discovery and cumulative  link graphs.
MajesticSEO

What we might be seeing here are a few strong pushes early on, followed by very little promotion in early 2007. At the start of 2008, the link building ramped up and remained constant. This is indicative of regular on-going link building, which is no surprise considering the optimization of these efforts. It’s also important to note that it ramped up even more during the last half of 2010. If this was your competitor’s profile, this is valuable information to have. This link growth rate makes this site even more competitive.

Now a profile like this is a bit more expected. They seem to have had a strong push at one time, but the link acquisition has faded over time. They have periods of spiky growth and have had minimal link growth in the last part of 2010.. This is a good sign if you’re looking to outrank this site.

Chopping Up The Link Export

One of the last few questions left is how and where are they getting these links. How can you chop up their link export to get actionable insights and link prospects? Let me just cover a few quick ideas.
Export CSV from Open Site Explorer, open it in Excel.

Filters & Sorts

  1. Filter Sites with Exact Match AND Phrase Match Anchor
  2. Filter by Branded Anchors and People's Names
  3. Sort by PA to get strongest PAGES
  4. Sort by DA to get strongest DOMAINS
Questions to Ask
  • What content is attracting these links?
  • What types of sites are these links from?
  • Are they manually building these links? (directories, articles, guest blogging)
  • Do they appear to be paid?
  • What's the IP address and WHOIS information on anything fishy?
  • What strategy is working here? Or is there even a strategy?
  • Where are they getting the branded and name links?
  • What communities are they participating in?

Perform a search against page title and URL

  • How many links come from pages about same keyword?
  • How many links include mentions like directory, links, resource, article, forum, etc?

Export into Google Custom Search

Yahoo use to allow you to perform search queries against a link profile's content. However, with the death of the Yahoo! linkdomain, this is not longer possible. Luckily, you can use Open Site Explorer and GCSE to do the same thing.
Search Ideas
  • Sponsorships queries
  • Paid link footprints
  • Blogging footprints
  • Person’s name
  • Brand name
  • Forum footprints
  • Embed footprints
There a lot of different queries you can run, these may depend on what information you’re looking to get.
Although this is not an exhaustive look at analysis techniques, I hope it helps give insights into how link data can be used to create a strategy or understand your competition's. Feel free to find me on Twitter if you ever want to chat more about link analysis.

Learn More:
If you’d like to learn more about link building, we’re hosting two Linkbuilding Seminars in London and New Orleans this year.
"

Falling for HTML5: Finding Love in the Little Things

Falling for HTML5: Finding Love in the Little Things: "
Advertisement in Falling for HTML5: Finding Love in the Little Things
 in Falling for HTML5: Finding Love in the Little Things  in Falling for HTML5: Finding Love in the Little Things  in Falling for HTML5: Finding Love in the Little Things

I’ve lost count of the number of posts that have been written about the big features of HTML5: amongst the most anticipated being rich media (video, audio, canvas) and JavaScript APIs. However, call me a woman of simple tastes, but this is not the sort of thing that gets me swooning. What does? The small additions to the spec that will make the world of difference to the way I code day-in, day-out. This is the stuff fairy tales are made of.

The ugly duckling

HTML has had a troubled past. It was never really designed for what we are now accomplishing with it. This is in part a testimony to its flexibility and adaptability, but there have been inevitable growing pains.

So what was it originally intended for? Well it’s there in the name: Hyper-Text Markup Language. Yes, text; hyper-text to be more exact. Not layout, or images, or video, or fonts, or menus — or any of the other frippery that it now incorporates.

All these techniques started as “hacks” — ways of extending the language which were not accounted for in the original spec. Some of the hacks were uglier than others. For example tables for layout (eek!) were a workable (and reliable) way to manipulate the display of information. Similarly, sIFR and other JavaScript techniques often account for things that would more naturally be handled natively by the browser, but at the time were not.

The handsome prince

What we need is someone to come to our rescue. In steps HTML5.

The spec is full of ‘a-ha’ and ‘of course’ moments, and that’s not a surprise seeing as one of its founding design principles is that of paving the cowpaths:

“When a practice is already widespread among authors, consider adopting it rather than forbidding it or inventing
something new.”

— HTML Design Principles, W3C Working Draft 26 May 2009

What this means on the ground is that many of the hacks which are used to bend the existing HTML Doctype to our will are now being legitimised in HTML5. Let’s take a look at three examples which are guaranteed to make every front-end developer smile:

The <a> element

This little beauty is fundamental to how the whole web operates, but up until HTML5 it has been very limited. Limited, in fact to being solely inline. Want to create a large clickable banner which wraps around a title, image and text? Well, you’re out of luck. plain ol’ HTML4.01 won’t let you — not without JavaScript that is.

However, now that the <a> tag has been declared a block-level within HTML5, there is no end to the elements you can wrap it with. You can confidently (and legitimately) have your <p> and link it too!

Forms: the place-holder

Web forms are complex things, and we have developed a number of JavaScript add-ons to make them more usable: date pickers, auto-completes, required elements, validation. A lot of these have a new home in HTML5 but I’m going to focus on one common technique: placeholder text.

This is used where you have a text field but you want to prompt the user — either with the format you would like the text entered (such as a date) or with an example. It is sometimes used in-place of a label when space is premium. Up until now, using placeholder text has required a JavaScript function that auto-clears on focus, and reinstates when the element loses focus (if it has not been replaced by user-entered text). Quite a complex task, one which is now accomplished by the following snippet:

<input id=”examples” name=”examples” type=”text” placeholder=”Enter the things you love about HTML5” />

Html5falling in Falling for HTML5: Finding Love in the Little Things
The placeholder attribute removes the need to add JavaScript to input elements

Section element

Have you ever run a validation on a page and died inside when the following error has come back?

“WCAG v1 3.5 (AA)] Nest headings properly (H1 > H2 > H3”…”

It might be just me, but this error is particularly hard to fix. Imagine a scenario where you have a main column with heading levels inside the content, followed by a right-hand column containing featured items e.g.

<div id=”mainCol”>
<h1>Main title</h1>
<h2>Secondary title</h2>
</div>
<div id="featureCol”>
<h4>Title of feature</h4>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem
accusantium doloremque</p>
</div>

Without knowing what content will be entered in the main column, how do you choose the correct level of heading to start the following column with? You could play it safe and use an h2, but does this really signify the correct semantic importance of this content? Probably not.

HTML5 introduces something called a section element. Each section has its own hierarchy, so you can now have multiple h1s on a page. Do I hear you saying ‘a-ha’? As well as eliminating the above error, this also means that content can be more easily reused. For example, when using a CMS, the modules and components can be reordered on a page without having to consider how this might upset the existing hierarchy. Genius.

Happily ever after

Rings3 Optimised in Falling for HTML5: Finding Love in the Little Things

The best news by far is that we can start implementing many parts of the HTML5 spec right now. This is due to another founding design principle; graceful degradation:

“On the World Wide Web, authors are often reluctant to use new language features that cause problems in older user agents, or that do not provide some sort of graceful fallback. HTML 5 document conformance requirements should be designed so that Web content can degrade gracefully in older or less capable user agents, even when making use of new elements, attributes, APIs and content models.”

— HTML Design Principles, W3C Working Draft 26 May 2009

That means no more waiting for IE6 to fall of its perch, or constantly asking ‘is HTML5 ready yet?’ like the impatient child in the back car seat. It means continuing to support IE6 (for most of anyway) but shattering the myth that a website should look exactly the same in all browsers. It means carefully considering which HTML5 elements to use, which CSS3 selectors and properties to adopt to ensure we are building websites for tomorrow, not today.

Changing habits

In the short term it’ll mean a bit more work for us in the templating process, and we might need to adapt our workflow accordingly. Here are some questions you might need to ask yourself:

  • Have I adjusted my estimates to allow for adapting the design in different browsers?
  • Have I given myself enough time during build to familiarize myself with new processes and techniques?
  • Have I set the right expectations with my client / the designer / my manager about how the website will look across different browsers?
  • Are there few enough users to degrade support for IE6?
  • Do I need to include JavaScript to add support for CSS3 and HTML5 features in older browsers?

It might seem like a lot of hard work, and something to be put off, but ignore the changing landscape at your peril. Besides, you’ll have plenty of time on your hand as soon as you stop slicing up all those images to add rounded corners, drop shadows and gradients to your design!

So how will this fairytale end? Crack-open your favourite code-editor, type “<!DOCTYPE html>” and you get to write it…


© Felicity Evans for Smashing Magazine, 2011. | Permalink | Post a comment | Add to del.icio.us | Digg this | Stumble on StumbleUpon! | Tweet it! | Submit to Reddit | Forum Smashing Magazine
Post tags:

"

Thursday, January 20, 2011

HTML 5 logo

HTML 5 logo: "html5logo.jpg

Does HTML5 refer to the fifth version of hypertext markup language and the closely associated technologies described in its specification? Hell no! It's a new Web 2.0-style marketing term and refers to all that is awesome. There's even a logo, which goes nicely with techno remixes of the Soviet national anthem. Some are not happy at the branding land grab. [Adactio]




"

Monday, January 17, 2011

Migrating from Blogger (Blogspot) to WordPress without Losing Any Valuable SEO and Links

Migrating from Blogger (Blogspot) to WordPress without Losing Any Valuable SEO and Links:
There are more than a few of you who are hanging out on Blogger.com (also known as Blogspot) which is fine!

There is really nothing wrong with the platform in and of itself but if you’re interested in taking your blog to the next level, especially as it relates to monetizing it, customizing it, as well as optimizing it for SEO, you’re probably going to want to take a serious look at moving to WordPress at some point.

[If you want to know why I choose WordPress over any other blogging platform then you can read my thoughts here!]

You won't regret the move... trust me!

But, you’re not going to want to lose all of those blog posts since they provide valuable legacy content and have already been indexed by Google and the other major search engines. Here is what’s at stake:

  • Your previous blog on Blogger has been around for a while and SEO factors in how long (or how old) a website is. In other words, how long it’s been in existence. You’re not going to want to abandon that!
  • Some of your previous articles and blog posts may in fact rank very high in Google and other search engines. You’ll want to pass that “juice” into your new WordPress-powered blog!
  • You are not able to use any “301 redirects” with Blogger because you don’t control any .htaccess files, the software, or the hosting of the actual blog. Using 301′s typically help move one move to a new web address without losing PageRank. Doh!
  • Search bots are one thing, humans are an entirely different thing (and just as valuable)! People are familiar with your current web address and may be in fact be visiting your site directly (or even have it bookmarked)! You’re not going to want to lose those direct traffic sources!
  • Current incoming links from other sources, blogs, and websites will have your old address and there’s simply no way for you to possibly inform those sources to update their links on your behalf. In fact, you probably don’t know even half of the sources anyways! What are you going to do?!
  • You may even lose RSS Subscribers if you make the jump. How are you going to manage that dropoff?
  • Finally, if you were making any money via Google’s Adsense program you can be certain that the loss of traffic (without a full and complete migration with recovered link juice) will ultimately result in loss of revenue generation. You’re not going to want that to happen!

So what’s the solution? How do you go about making the jump without losing all that precious SEO, traffic, and revenue? Here’s how:

1. Get WordPress Installed and Ready:

Of course you’ll first want to get your new self-hosted WordPress blog up and ready to go. All you have to do is follow these instructions here and then come back to this post!

Once you’ve got your new WordPress blog setup you’ll be ready to make the move and migration.

Cool? Cool.

2. Import Content from Blogger to WordPress

I’ve captured nearly every single step visually for your perusal. It’s quite straight-forward but you’re not going to want to make any mistakes!

Ready? Here we go:

As you can see from above I’ve created a dummy Blogger account and blog which has 3 posts. For this demo I’ll be migrating the content from this dummy blogspot blog into a brand new WordPress installation:

As you can see from the image above the installation is brand new and only has 1 post right now! By the end of this extensive walk through it should have 3 new posts via the Blogger blog.

First you’ll want to log into your new WordPress blog, go to Tools >> Import >> Blogger as seen below:

Next, you’ll click Blogger and you will most likely have to download and install the Blogger to WordPress Importer Plugin:

If for some reason you can’t install this plugin directly through your interface you’ll have to download it manually as well as upload it manually to your Plugins folder. You can find it directly here.

Activate it:

Next, you’ll want to begin the Authorization Process between your WordPress-powered blog and your old Blogger account:

Click Authorize and then this page should show up asking you to log in to your Google Account:

Insert your Email and Password and then proceed to this next screen where you will Grant Access to create a secure connection between your Blogger blog and your new WordPress blog:

Hit Grant Access and you’ll be returned to your WordPress blog to begin the migration process:

As you can see, WordPress has correctly identified that the old Blogger blog has 3 posts to migrate! Sweet! Click the Import button on the right and watch as WordPress imports the old content:

Done! Now, if you have multiple authors you may have to assign them to new usernames in WordPress:

When you’re done click Save Changes.

Now, as you can see WordPress displays correctly the 3 blog posts in the admin panel as well as on the front page!

You’ve now completed the migration of all your content from Blogger to WordPress!

Give yourself a pat on the back. You’re awesome! But remember that you’re not done yet! You’re now going to want to do some work in your old Blogger blog to make sure you capture all SEO juice.

3. Update Blogger Info for SEO

To correctly capture all the lose ends from your direct blog link to your organic SEO as well as direct links to your old Blogspot blog you’re going to want to change a few things in your account and settings.

Ready? There’s a little code involved but it’s not too bad!

First, you’ll want to create a new file called blogger.php with the following contents:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
/*
Template Name: Blogger
*/

global $wpdb;
$old_url = $_GET['q'];

if ($old_url != "") {
$permalink = explode("blogspot.com", $old_url);

$q = "SELECT guid FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ".
"ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) WHERE ".
"$wpdb->postmeta.meta_key='blogger_permalink' AND ".
"$wpdb->postmeta.meta_value='$permalink[1]'";

$new_url = $wpdb->get_var($q)? $wpdb->get_var($q) : "/";

header ("HTTP/1.1 301 Moved Permanently");
header("Location: $new_url");
}
?>

You can obviously create this in any text editor or any of the code editors of your choosing. I use these tools for FTP and Development if you’re interested to know!

If for some reason you can’t create the file I’ve attached it here in a .zip file.

Now, you’ll need to upload this file into your current WordPress Theme folder. For example, if you’re using the default theme in WordPress then you’ll put it here:

The default theme is called twentyten and I’ve put the blogger.php file inside the theme folder directly.

Here’s another view from the entire URL and domain folder:

As you can see it in the wp-content >> themes >> twentyten >> blogger.php.

Next, you’ll want to create a new Page in WordPress called blogger and choose the Template called Blogger in the “Page Attributes” area:

Don’t miss this! The “Page Attributes” is on the right side:

Hit Publish because you’re done here!

Now, head back to your Blogger Admin Panel:

You’re going to want to click the Design button on the right and head into the Edit HTML area:

Now scroll all the way to the bottom and you’ll see a link that says “Revert to Classic Template” – click that:

Now you’ll see a new “Edit HTML” screen:

You may also notice that the look of your theme on Blogger has also changed:

Now, you’ll want to copy and paste the following code into the “Edit” window completely replacing all the existing code, with your correct URL in the code as well:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="<$BlogLanguageDirection${body}gt;">
<head>
<title><$BlogPageTitle${body}gt;</title>
<script type="text/javascript">
<MainOrArchivePage>window.location.href='http://YourDomain.com/'</MainOrArchivePage>
<Blogger><ItemPage>
window.location.href='http://YourDomain.com/blogger/?q=<$BlogItemPermalinkURL${body}gt;'
</ItemPage></Blogger>
</script>

<MainPage><link rel="canonical" href="http://YourDomain.com/" /></MainPage>
<Blogger><ItemPage>
<link rel="canonical" href="http://YourDomain.com/blogger/?q=<$BlogItemPermalinkURL${body}gt;" />
</ItemPage></Blogger>
</head><body>

<div style="border:#ccc 1px solid; background:#eee; padding:20px; margin:80px;">
<p>This page has moved to a new address.</p>

<h1>
<MainOrArchivePage><a href="http://YourDomain.com"><$BlogTitle${body}gt;</a></MainOrArchivePage>
<Blogger><ItemPage>
<a href="http://YourDomain.com/blogger/?q=<$BlogItemPermalinkURL${body}gt;"><$BlogItemTitle${body}gt;</a>
</ItemPage></Blogger>
</h1>
</div>
</body></html>

Don’t forget to change out the “YourDomain.com” links to your your new web address! This is critical! There are 6 places that need to change in the above code!

It’ll look like this:

Don’t forget to change out “YourDomain.com” to your domain name!

Then hit Save Template Changes and guess what… you’re done!

Essentially what this is doing is redirecting all traffic, requests, and links to your new WordPress blog!

5. Test and Check It!

The next step of course is to actively test your work! Head to your old Blogspot address and it should redirect to your new WordPress blog! Also, if you can test old links to posts click those and they should auto-redirect to the same post but on your WordPress blog!

I’ve created a video to show you in action:

Fantastic! You’ve successfully migrated from Blogger to WordPress without losing some significant SEO!

A Few Things to Remember:

There are a few things that you’ll want to make sure you even after this process is complete:

  • Keep your Blogspot blog up! Do not delete it! It still provides value and you will need it to keep the redirection alive!
  • Pictures and assorted media may not have fully been moved over, especially if it’s hosted on Blogger directly and/or Picasa. Bring these over manually or just keep your Blogspot blog up to serve that content.
  • Let everyone know that you’ve moved! Make the last post you do on Blogger an “Announcement” type post sharing with people the news of the migration. Heck, link them to this post to share with them how you did it (and to encourage them to migrate as well!).
  • Update any RSS Feed links and/or Feedburner!
  • Freshen up your look on WordPress with your content as your template structure most definitely will not look like the one you had on Blogger.
  • If you’re ever interested in seeing how your Blogspot looks like to a SEO bot you can easily turn of Javascript in your browser and visit the site.

Take care and we’ll see you on the other (and better) side with WordPress!"

Disqus for ully's online marketing

Disqus for ully's online marketing