= Basic Guide to SEO = Search Engine Optimization is a wide and rather unscientific field which changes constantly. Nevertheless, it can be a key to unlocking huge traffic...and huge profits...for a website. == Tools == ==== FireFox Extensions ==== * [[http://www.quirk.biz/searchstatus/|SearchStatus]] -- Firefox extension for seeing page rank, etc. ==== Keyword Tools ==== * [[https://adwords.google.com/select/KeywordToolExternal|Google Keyword Suggest Tool]] -- I like this the best; it uses Google's data which seems to be much more accurate than the WordZe data, etc. And as of July 2008, they're giving raw search numbers! * [[http://www.google.com/sktool/|Google Search Based Keyword Tool]] -- new tool from Google, lets you search for keywords that you may be missing and provides additional data about relevant keywords. * [[http://labs.google.com/sets|Google Sets]] -- new (Jan 09) tool from Google, lets you figure out 'sets' of related keywords. * [[http://www.keyworddiscovery.com/|Keyword Discovery]] -- best of the paid services (as of July 08) * [[http://www.spyfu.com/|Competition]] -- spyfu shows you what competitors are doing on google ==== Webmaster Tools ==== * [[https://www.google.com/webmasters/tools/|Google Webmaster Tools]] * [[https://siteexplorer.search.yahoo.com/mysites|Yahoo Site Explorer]] * [[http://webmaster.live.com/|Microsoft Live.com Webmaster Tools]] ==== Forums ==== * [[http://forums.digitalpoint.com/|DigitalPoint]] seems to be the largest, best forum. You have to wade through **a lot** of fluff, though. * [[http://forums.searchenginewatch.com/|SearchEngineWatch]] is also decent ==== Good Resources ==== * [[http://www.seomoz.org/article/search-ranking-factors|SEO Resources]] SEO is divided into two major parts: on-page SEO and off-page SEO. == On Page SEO == * Page Titles: all pages should have a page title with keywords and a good call to action. Make sure page titles and meta descriptions are **different**; making them the same is at best a wasted opportunity; at worst, it can hurt your rankings. * Titles should be no more than 80 characters, and ideally 67 characters or less, which is the max that Google will display. Keywords should not be repeated more than three times in a title tag, as Yahoo will penalize this. CTR has been observed to go down with more than two repetitions in a title tag, so that should probably be your max. * Page Headers (H1 to H6): Pages should have headers ''
# Add www. if we don't have it
RewriteCond %{HTTP_HOST} ^apple.com$ [NC]
RewriteRule ^(.*)$ http://www.apple.com/$1 [R=301,L]
* Try to keep urls less than four slashes (directory breaks)
* Offsite links from your site to 'spammy' neighborhoods is a bad thing... if you've got user generated content, this can be a real problem.
* Make sure you redirect your ''index.php'', ''index.html'', ''index.shtml'', etc. files to ''/'', so you don't have duplicate content issues:
# Rewrite index.php, index.html, etc.
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html|shtml)\ HTTP
RewriteRule ^(.*)index\.(php|html|shtml)$ /$1 [R=301,L]
* You don't have to do this, but you might want to make sure that you redirect all .php files to / :
# 301 Redirect foo.php to foo/. We don't want to do this for certain types
# of files, such as .js.php (javascript files generated by PHP)
RewriteCond %{REQUEST_URI} !\.js\.php$
# If client request header contains php file extension
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+\.)+php\ HTTP
# externally redirect to extensionless URI
RewriteRule ^(.+)\.php$ /$1/ [R=301,L]
# Now, if we see something of the form foo/, internally (not externally
# with a 301) get the actual PHP file requested. See this for details:
# http://www.webmasterworld.com/apache/3371997.htm, post 3386144
# If the requested URL contains a period in the final path-part
RewriteCond %{REQUEST_URI} (\.[^./]+)$ [OR]
# Or if it exists as a directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
# Or if it exists as a file
RewriteCond %{REQUEST_FILENAME} -f
# Then leave URL alone and skip the next rule
RewriteRule .* - [S=1]
# Otherwise, if requested extensionless URL exists as .php
RewriteCond %{REQUEST_FILENAME}.php -f
# then add .php to get the actual filename
RewriteRule (.*)/ /$1.php [L]
==== Sitemaps ====
* There is a new sitemap standard, available at [[http://www.sitemaps.org/ |sitemaps.org]], that all the major search engines adhere to.
* Generally, providing a sitemap is seen as a good thing, because it helps search engines spider your site more quickly. You can also do timestamp based stuff and whatnot, to help tell them when to come back.
* You can tell the search engines about a sitemap one of three ways:
* via the search engine submission process (e.g. [[#Webmaster Tools|Webmaster Tools]])
* via robots.txt's Sitemap directive
* via an HTTP ping
* I usually setup the [[#Webmaster Tools|Google Webmaster Tools]] and the robots.txt.
* For small sites, it looks like generating the sitemap with a tool and updating by hand is probably the best option. For bigger sites, you should auto-generate the sitemap with your own code. For reference/ideas, there is a good tool available at http://www.xml-sitemaps.com/
* To comply with the spec, and to be authoritative:
* The sitemap files must be located in the root directory of the webserver, e.g. http://startupcto.com/sitemap.xml
* All URLs in the file must be fully qualified and be on the same host the sitemap file is located on.
== Offsite SEO ==
Offsite SEO is even more powerful than onsite SEO, but a lot harder to accomplish.
* Links in a 'topical community' are very important. That means trying to get links from sites whose content is related to yours.
* Anchor text of inbound links is important, but less so than it was before. Text around the links also helps a bit.
* You can find what links you have to your site using a Google Search: ''link:site.com''. I'm not convinced this works that well, because many queries don't return nearly as many links as I think they should (even with pages that contain links and I know are in Google's index)
* Try to get linked in from 'good neighborhoods', particularly from links that rank highly on Google results for the keywords you want.
* That said 'a link is a link'. If someone wants to link to you then accept. BUT: don't necessarily reciprocate. In fact linking back can actually negate the value of the link, and can hurt your rankings if you link to somewhere 'shady'.
* Backlink building tips: http://seotalk.medianetwork.co.in/index.php/topic,28.0.html
* Google apparently likes better quality links (quality over quantity), while Yahoo likes sheer numbers (quantity over quality)
* Google also looks at who //you// link to: this is considered to be another measure of trust because you presumably control all of your content. Link to highly ranked sites as appropriate from your site.
== Choosing Keywords ==
* Very important to choose keywords that you want to rank highly on.
* Depending on what you want to do, you can either go for 'long tail' keywords (a lot of keywords, none of which are searched very often), or you can go for high-traffic keywords.
* You should use the keyword research tools to figure out what keywords to use. My very favorite is the [[https://adwords.google.com/select/KeywordToolExternal|free Google Keyword Tool]], because it is free, accurate, and uses Google's dataset. You can also use [[http://spyfu.com/|SpyFu]] and see what competitors are ranking themselves for. [[http://www.keyworddiscovery.com/|Keyword Discovery]] is the best of the paid keyword tools. The rest of the keyword tools are mediocre at best, and should probably either be avoided or taken with a huge grain of salt.
* If you use the Google Tool, I recommend choosing 'Exact Match' from the drop down, as that gives you the number of people searching for that exact set of words. If you're using it to figure out relevance for Adwords, you may want to select 'Broad Match' & 'Phrase Match' as well.
* If you're running adwords, see how those are doing and use that as part of your dataset.
* If your site has been running for a while, use your analytics packages to see what people are currently searching for. If you're tracking conversions in your Analytics package, see how those are doing too.
* You may want to use [[http://labs.google.com/sets|Google Sets]] to do some additional idea generation.
* From all these various sources, you need to compile a list of keywords to target your SEO efforts around. I like to divide this list into several categories:
* **Popular/Top Keywords**: contains popular or frequently searched topics;
* **Secondary Keywords**: contains 'top' keywords... keywords people search for frequently on this topic.
* **[Optional] Long Tail Keywords**: You may want to spend some time looking at possible 'long tail' keywords; you won't be able to (or want to) compile a whole list of these, but doing a bit of research may provide some insight.
* You should **include search volume data** (from the Google Keyword Tool). You may also want to include secondary keywords off of each main keyword in your list; e.g. if you have a main keyword 'startup', you might note that 'startup ideas', 'startup financing' and 'startup businesses' are all top related keywords.
* For each main keyword, you also want to include the number of results that keyword returns from the main Google index. Then, divide the number of searches by the number of results. This number can tell you whether a keyword is very popular or not, and //may// help you decide whether you want to target it.
* A note on plurals: if the keyword you're looking at has a plural version that just includes an 's' (e.g. ''book'' vs. ''books'') then you can safely target the plural, and you don't need to worry about the singular (or worry about it much, anyway). If the plural does not contain the singular (e.g. ''category'' vs. ''categories'') then you should either pick the most popular or target both.
== Specific Page Optimization ==
* In addition to optimizing for an entire site, you can also optimize for specific pages. This typically makes sense on a larger or more broadly focused site; the general process is the same as what you'd do for a full site:
* develop a list of keywords for that page
* optimize on-page content for those keywords
* get offsite links directly to that page, preferably with your keywords in the offsite link
== Monitoring Rankings ==
* Once you've figured out your keywords, its a good idea to monitor your rankings.
* I'm still looking for a good tool that does this; right now it happens by hand.
== Targeting Search Engines: Google, Yahoo & MSN ==
There are three main search engines that you need to worry about. [[http://www.google.com/|Google]] currently (April 2008) controls [[http://www.comscore.com/press/release.asp?press=2230|about 60% of the search engine market]], so you should focus your efforts there. [[http://search.yahoo.com/|Yahoo]] is next, with about 20%. [[http://search.live.com|MSN/Live.com]] is third, at about 10%. The rest ([[http://ask.com|Ask.com]], [[http://search.aol.com|AOL]], etc. are too small to consider.)
Generally, techniques for the major engines are the same. However, there are some slight differences:
* Yahoo apparently prefers quantity over quality of links, so getting as many back-links as possible is useful. Still, Google et. al. will see the same backlinks, so you have to be somewhat careful: don't go spamming all over the place.
* Yahoo crawls quickly and aggressively, but takes a long time (months, in some cases) to update its index. Google, on the other hand, both crawls and updates fairly quickly (days; sometimes less).