Google Trends

Google Trends ( is a product from Google that allows users to look at how query term volumes have changed over time.

To use Google Trends, type one or multiple query terms (separated by comma) into the search box, and click the “Search Trends” button. A graph displaying the relative number of times this query term(s) was searched since the beginning of 2004 is shown. You can also view the query term distribution by region (this is basically country), city, and language.

Using Google Trends, a user is able to:

1) Understand the relative search volume of a query term over time.
2) Understand seasonality of query terms.
3) Compare multiple query terms.
4) Examine how the above trends vary with geography and language.

Many people can benefit from this tool, from SEOs doing keyword search to marketers understanding seasonality trends. Personally, I use this tool sometimes just to satisfy my own curiosity. For example, by typing in “nfl, nba”, I found that NFL is more popular in the U.S. than NBA. In virtually all other countries, though, NBA is more popular (i.e., searched more frequently) than NFL.

One thing to note is that Google doesn’t give out the absolute number of times each query term is searched. This does not diminish this product’s effectiveness.

Creating a Simple Google Sitemap

There is a way to tell Google what pages exist on your website by creating a sitemap in XML format. Note that this is different from a sitemap HTML page, even though both share the same purpose of making sure the search engine sees your pages. The main difference is that your human visitors will not be viewing this XML sitemap file, where as the HTML sitemap file is geared towards human visitors and search engine bots alike.

There are several pieces of information you can tell Google about your pages, and I will only discuss the most useful portion — listing all the pages. Other information, such as frequency of page updates, is used by Google only as a suggestion, and I don’t use it myself.

To list all your pages is pretty easy, and you can easily generate that file on your own. The syntax is as follows:

<?xml version=”1.0″ encoding=”UTF-8″?>
<urlset xmlns=”″>
<loc>[URL 1]</loc>
<loc>[URL 2]</loc>


Simply replace [URL 1], [URL 2], etc, with your own pages.

That’s it! Next, save this file as sitemap.xml. Then, you’ll want to create an account in Google to use its Webmaster Tool to inform Google about the presence of this sitemap file. This way, you can ensure that Google knows about all of your pages. Going forward, whenever you add new pages to your site, just append to the sitemap.xml file and Google will know about those pages.

Suggestions for Youtube Search

Youtube has grown tremendously in popularity, both in English-speaking countries as well as non-English-speaking countries. This is pretty amazing given that its interface is in English only. The site is pretty easy to navigate, and it has an amazing amount of content. Youtube’s search function, however, can use a bit of help. I have 3 suggestions:

1) Make sure the index and the actual content match up. It’s very frustrating to click on a video from the search result, only to find out that the video has been removed. If the video has been removed, don’t make it available as a search result.

2) In the search box, allow the user to specify how to sort. Right now, the default sort is relevance. This doesn’t work well for me, as I am always looking for the latest videos for certain keywords. As a result, I always need to go through one additional click to get the results I want.

3) Better yet, since I stay logged in to Youtube, they can ask for my default sort order and apply it whenever I do a search. To take it a step further, it would be great if they perform the search for me and display the newest videos that I want whenever I go to

Convert IP Address to Country

One exercise that you’d like to do is find out which countries your visitors are coming from. There are several reasons for doing this:

1) You might want to tailor your content to that particular demographic.

2) If you have lots of visitors from a particular country, you might want to consider adding a version of your website in that particular language.

3) If your site has IP-based targeting for ads (programs such as Adsense have an IP-targeting component), this will help you understand why, or why not, your users are clicking on your ads.

The way I did it was to download a flat file that include IP-to-country mapping data from the link found here. This is a free database. There are other versions that claim to be more accurate, but they charge a fee. For my purposes, the free version is sufficient.

I first loaded this file into a database and then use a table join to lookup the country code from the IP number. This turned out to be a time-consuming exercise. Then, I remembered that in data warehousing, you want to do as much of your data transformation outside of the database as possible. Applying that principle, I moved the country lookup portion into the perl processing routine prior to loading the data into the database. This move proved to be an excellent time-saver.

Below I show the perl code for matching IP address with country code. There are 3 basic steps:

1. Read IP/Country mapping file.

2. Convert IP address to IP number.

3. Find country code based on IP number

The code for each step is shown below:

1. Read IP/country mapping file

open (IN1,’ip2country.txt’);
## ip2country.txt is the file that stores the
## IP number/country mapping data. Assuming the
## following format: IP_START,IP_END,COUNTRY_CODE.

while (<IN1>) {
@ips = split (“,”);
$ip_start[$i] = $ips[0];
$ip_end[$i] = $ips[1];
$ip_country2[$i] = $ips[2];

2. Convert IP address to IP number.

Assume IP address is already stored in the variable $ip_address

@ipp = split (/\./,$ip_address);
$ip_number = $ipp[0]*256*256*256+$ipp[1]*256*256+$ipp[2]*256+$ipp[3];

3. Find country code based on IP number

## We want to find the country code where $ip_number is between $ip_start and $ip_end.

while ($ip_number > $ip_end[$j]) {
if ($ip_number > $ip_start[$j]) {
$country = $ip_country2[$j];
} else {
$country = ‘NA’;

Google Analytics

I have been testing Google Analytics for a couple of months now, and thought it appropriate to share my experience with this tool.


You’ll sign up using your Google/Gmail account. There used to be a wait time before Google will give you access, but now you can instantly use Google Analytics. For each page you want to track, you will stick a short Javascript snippet at the end of your HTML page. This can be time-consuming if you have lots of pages and no way to do it automatically.

Update Frequency

Data seems to be updated twice a day, once just past noon and once just past midnight (Pacific Time).

Type of Metrics Reported

At the summary level, it shows Visits/Pageviews, New/Returning Visitors, Visitor Geography, and Visits by Source (referer). If you are only interested in a high-level understanding of your traffic, this summary page by itself would be sufficient. There are additional reports that would allow you to dig deeper. In addition, Google Analytics also provides a way to track goals (basically you are specifying a webpage as your destination page, or the end of your funnel) as well as integration with AdWords.

Other Comments

There are some concerns in the webmaster community that Google might be having too much of your site’s information, and one day Google will turn this against the webmasters. Personally, I am not concerned. My views are:

1) Allowing Google to get more information on my visitors could in the future help them drive more traffic to my site, so actually it might be a positive.

2) Google can already track a lot of those information via the Google toolbar anyway, so using Google Analytics for website traffic analysis really doesn’t pose an additional risk.

3) Google has repeatedly said that the data store for Google Analytics is separate from all other systems at Google, so the webmasters should not worry. Actually I am a bit more suspicious about this claim, because the fact that data is housed separately doesn’t guarantee that other groups within Google cannot access that information.


At the high level, this is a nice tool for someone who doesn’t have another way of analyzing his/her site traffic. Setup is straightforward, and the reporting interface is easy to use. At the same time, given that it only gives you the top channels (for example, top referers), Google Analytics is not sufficient for detailed web site traffic analysis. For that, you’ll want to go with a third-party tool or write your own script. In the future, I’ll talk about my experience in analyzing my site traffic.

SEO Technique – Leveraging Yahoo Answers

One method that I’ve never seen anyone talk about for increasing your site’s traffic is leveraging Yahoo Answers (or Yahoo Knowledge, depending on which country you are in). This is especially useful if you have an informational site.

What you can do is to list your site as part the answer, or list it as the resource for your answer. Even though Yahoo has cleverly anticipated this and they have put a rel=nofllow tag on the links there, thus preventing link spam and making this technique worthless in terms of link building, what you are really looking for here is getting actual traffic to your site. This technique will not only get people who start with Yahoo! Answers, but because Yahoo! Answers pages rank well on all major search engines, you’ll also be indirectly capturing the search engine traffic.

The key thing to remember here is that if your site is indeed a valuable source for people’s questions, this technique will for sure generate high-quality traffic to your site. Once people discover your site and like your site, you’ll start to gain additional links naturally, and this will in turn help your search engine rankings.

Posted in SEO

Pimp My Blog in 8 Steps – Steps 7 & 8: Header Tags and Enable Auto Discovery

This post talks about the final two steps in pimping my blog.

7. Change template for header tags

You’ll want to make sure the most important elements of your blog, such as your blog title, are in the <h1> tag. Other elements, such as the date of your posting, should be de-emphasized and not be in <h1> or <h2>. For example, in the Blogger template I chose, the default tag for the blog title was <h3>, while the default tag for the date of the blog was <h2>. That was changed to make sure search engines see what’s really important.

8. Enable auto discovery

Auto discovery enables your readers one-click subscription to your blog. If your readers have an auto discovery-enabled browser such as Firefox, or use a RSS reader, they’ll see a feed icon feed icon when they visit your blog. They can then subscribe to your block by simply clicking on the feed icon.

This step simply requires adding a line of code into the template:

<link rel=”alternate” type=”application/rss+xml” title=”[your blog's title]” href=”[your blog's feed URL]” />

For my case, it’s <link rel=”alternate” type=”application/rss+xml” title=”TopCat Blog” href=”” mce_href=”” />.

You will want to add this line between the <head> … </head> tags. In Blogger, make sure this is above the <$BlogMetaDate$> line.


You are set! Now you should have all the ammunication you need to reach out. Just monitor your audience via Feedburner, Technorati, or your own web analytics, and keep blogging.

Pimp My Blog in 8 Steps: Steps 5 & 6 – Make it easy to bookmark/share and subscribe

This post talks about steps 5 and 6 in pimping my blog.

5. Add, digg, and reddit links for people to easily bookmark and share your blog

Bookmarking and bookmark sharing services allow users to keep their bookmarks on the web, as well as sharing these bookmarks with their community. As such, it is very important for a blog to make it as easy as possible for readers to accomplish such tasks. I’ve implemented links to, digg, and reddit for my blog.

This step is usually accomplished by modifying the template for your blog. Because you’ll want to bookmark individual posts in addition to the entire blog, it is necessary to use variables within the template to indicate what the title of each post is, as well as what is the URL for each post (called permalink). Below is the code I used for Blogger: <a href=”<$BlogItemPermalinkUrl$>&title=<$BlogItemTitle$>” mce_href=”<$BlogItemPermalinkUrl$>&title=<$BlogItemTitle$>” target=delicious title=”Bookmark <$BlogItemTitle$> to”>add to</a>

digg: <a href=”<$BlogItemPermalinkUrl$>&phase=2″ mce_href=”<$BlogItemPermalinkUrl$>&phase=2″ target=digg title=”Submit <$BlogItemTitle$> to digg”>digg it</a>

reddit: <a href=”<$BlogItemPermalinkUrl$>&title=<$BlogItemTitle$>” mce_href=”<$BlogItemPermalinkUrl$>&title=<$BlogItemTitle$>” target=reddit title=”Submit <$BlogItemTitle$> to reddit”>reddit</a>

In the above Blogger example, The variable meanings are:

<$BlogItemPermalinkUrl$>: The URL of the individual posting.
<$BlogItemTitle$>: The title of the individual posting.

6. Make it easy for people to subscribe

As you can see under the Subscribe: heading in the left-hand panel, I have added the ability to subscribe from a variety of sources. Below I include the code that I added to my template for them (you’ll want to replace with your own feed):

My Yahoo:
<a href=”” mce_href=”” >
<img src=”
my/addtomyyahoo4.gif” border=”0″ alt=”Add to My Yahoo” />

<a href=”” mce_href=”” >
<img src=”” mce_src=”” width=”104″ height=”17″ border=”0″ alt=”Add to Google”>

<a href=””> <img src=”” mce_src=”” border=”0″ alt=”Subscribe with Bloglines” />

<a href=”” mce_href=”” >
<img src=”” mce_src=”” width=”91″ height=”17″ border=”0″ alt=”Add to netvibes”>

<a href=”
&t=TopCat+Blog”><img src=”” mce_src=”” alt=”Subscribe with Pluck RSS reader” border=”0″ /></a>

<a href=”” mce_href=”” ><img src=”” mce_src=”” alt=”Add to My AOL” border=”0″ /></a>

<a href=”
ru=”><img src=”addtomymsn.gif” mce_src=”addtomymsn.gif” border=0 /></a>
(the image can be retrieved from

You can also host the images on your own site. I recommend doing this to ensure that your page load time is fast.