September 2007

Improve snippets with a meta description makeover



The quality of your snippet — the short text preview we display for each web result — can have a direct impact on the chances of your site being clicked (i.e. the amount of traffic Google sends your way). We use a number of strategies for selecting snippets, and you can control one of them by writing an informative meta description for each URL.

<META NAME="Description" CONTENT="informative description here">

Why does Google care about meta descriptions?
We want snippets to accurately represent the web result. We frequently prefer to display meta descriptions of pages (when available) because it gives users a clear idea of the URL's content. This directs them to good results faster and reduces the click-and-backtrack behavior that frustrates visitors and inflates web traffic metrics. Keep in mind that meta descriptions comprised of long strings of keywords don't achieve this goal and are less likely to be displayed in place of a regular, non-meta description, snippet. And it's worth noting that while accurate meta descriptions can improve clickthrough, they won't affect your ranking within search results.

Snippet showing quality meta description




Snippet showing lower-quality meta description



What are some good meta description strategies?
Differentiate the descriptions for different pages
Using identical or similar descriptions on every page of a site isn't very helpful when individual pages appear in the web results. In these cases we're less likely to display the boilerplate text. Create descriptions that accurately describe each specific page. Use site-level descriptions on the main home page or other aggregation pages, and consider using page-level descriptions everywhere else. You should obviously prioritize parts of your site if you don't have time to create a description for every single page; at the very least, create a description for the critical URLs like your homepage and popular pages.

Include clearly tagged facts in the description
The meta description doesn't just have to be in sentence format; it's also a great place to include structured data about the page. For example, news or blog postings can list the author, date of publication, or byline information. This can give potential visitors very relevant information that might not be displayed in the snippet otherwise. Similarly, product pages might have the key bits of information -- price, age, manufacturer -- scattered throughout a page, making it unlikely that a snippet will capture all of this information. Meta descriptions can bring all this data together. For example, consider the following meta description for the 7th Harry Potter Book, taken from a major product aggregator.

Not as desirable:
<META NAME="Description" CONTENT="[domain name redacted]
: Harry Potter and the Deathly Hallows (Book 7): Books: J. K. Rowling,Mary GrandPré by J. K. Rowling,Mary GrandPré">

There are a number of reasons this meta description wouldn't work well as a snippet on our search results page:
  • The title of the book is complete duplication of information already in the page title.
  • Information within the description itself is duplicated (J. K. Rowling, Mary GrandPré are each listed twice).
  • None of the information in the description is clearly identified; who is Mary GrandPré?
  • The missing spacing and overuse of colons makes the description hard to read.

All of this means that the average person viewing a Google results page -- who might spend under a second scanning any given snippet -- is likely to skip this result. As an alternative, consider the meta description below.

Much nicer:
<META NAME="Description" CONTENT="Author: J. K. Rowling, Illustrator: Mary GrandPré, Category: Books, Price: $17.99, Length: 784 pages">

What's changed? No duplication, more information, and everything is clearly tagged and separated. No real additional work is required to generate something of this quality: the price and length are the only new data, and they are already displayed on the site.

Programmatically generate descriptions
For some sites, like news media sources, generating an accurate and unique description for each page is easy: since each article is hand-written, it takes minimal effort to also add a one-sentence description. For larger database-driven sites, like product aggregators, hand-written descriptions are more difficult. In the latter case, though, programmatic generation of the descriptions can be appropriate and is encouraged -- just make sure that your descriptions are not "spammy." Good descriptions are human-readable and diverse, as we talked about in the first point above. The page-specific data we mentioned in the second point is a good candidate for programmatic generation.

Use quality descriptions
Finally, make sure your descriptions are... descriptive. It's easy to become lax on the quality of the meta descriptions, since they're not directly visible in the UI for your site's visitors. But meta descriptions might be displayed in Google search results -- if the description is high enough quality. A little extra work on your meta descriptions can go a long way towards showing a relevant snippet in search results. That's likely to improve the quality and quantity of your user traffic.

search results

Comments Off

Permalink

Running external scripts against Django Models

Django, the Python based web application framework, is an excellent Model/View/Controller application framework for rich website design.

A Django application runs under a web server. However, often it is necessary to develop external scripts that need to interact with you web application data models. This brief tutorial will walk through an example. This may not necessarily be the _best_ way to do this, but merely a way. I struggled for a few hours on this last night and thought it would be useful to others to document my results.

Let’s look at an example. Feel free to take this and modify it as needed. It’s a bit contrived but will suit our purposes.

Suppose you have written a blog application and you want to periodically purge old entries. In your Model, you have written code to to all of the heavy lifting. Now, you want to make sure that these updates happen at a scheduled interval.

Assume your project lives in c:\project\blogprj

import sys,os
from datetime import *
sys.path.append('c:\project')
os.environ['DJANGO_SETTINGS_MODULE'] ='blogprj.settings'

from django.core.management import setup_environ
from blogprj import settings

from blogprj.blog.models import Entry

setup_environ(settings)

blogs = BlogEntry.objects.all()

for entry in blogs:
     entry.purge_oldentries(date.today())

Let’s take a closer look at this.

sys.path.append('c:\\project')

This line appends your project directory to the python module search search path so that it can find the your packages. Remember, when django creates your template, it creates an __init__.py file in each directory of your project and apps. These __init__.py files tell python to treat the entire directory as a python package. If you set your module path to c:\\project\\blog then python will not be able to find the root of your packages (blog)

os.environ['DJANGO_SETTINGS_MODULE'] ='blogprj.settings'
The DJANGO_SETTINGS_MODULE variable tells your django application the name of the settings module. It uses the Python path syntax.

from django.core.management import setup_environ
from blogprj.import settings

Since you are using Django libraries, you must tell it where to find your settings.py file. This is done through the function setup_environ and your project settings, imported here.

from blogprj.blog.models import Entry

We are going to be working with the Entry model, so we need to import it.

setup_environ(settings)

As stated previously, we must tell Django to use our project settings. This is necessary so Django can know what database we use, our installed apps, etc. This is handled by the setup_environ() method which takes a Settings object as a parameter.

Once this is done, the rest of the application merely performs the work against the model.

Save this script and you can run it inside your favorite scheduler, on Windows, we use Task Scheduler.

I hope this small tutorial has given you a little insight in how to call Django from external scripts. I welcome your comments.

Technorati Tags: , , ,

Django
Software Development

Comments (2)

Permalink

Quote of the Day

“Programming  languages are like girlfriends: the new one is better because *you* are better” - Derek Silvers

Found that one in a blog post, from the owner of CD Baby, on why he dumped the Ruby Rails framework and went back to plain old PHP.

Quotations
Software Development

Comments (0)

Permalink

Dissent is Patriotic

“We must not confuse dissent with disloyalty. When the loyal opposition dies, I think the soul of America dies with it.” - Edward R. Murrow

Earlier this week a student in Flordia was Tasered(r) at a meeting with Senator John Kerry. The student asked the senator some tough questions. When he didn’t yield the floor, police officers subdued the student and while holding him down, Tasered(r) him.

Yesterday, the Senate passed an amendment which uses the straw man argument that anyone who disagrees with Gen. Petraeus is unpatriotic and doesn’t support the troops.

These two events while seemingly unconnected represent the culmination of a troubling cancer eating at our nation, quelling any dissenting view and labeling the dissenters as unpatriotic. Our nation is founded on the principles of free speech and could not survive without dissenting view points. When writing an opinion, Justices in the Supreme Court also write a dissenting view.

“You’re with us or your against us”, “You agree with us or your unpatriotic” thinking is dangerous to the future of our republic. It prevents a real constructive dialog on how we will get ourselves out of the mess created over the last four years. Rather than pat themselves on the back for their “patriotism” the Senate should of passed the resolution voted on the day before which would give the troops adequate time to see their families between multiple tours in Iraq.

Now that would of been truly patriotic.

public morality
Politics

Comments (0)

Permalink

The Rebirth of the Electric Car

David Pogue, a technology blogger for the New York Times has published an interview with Bob Lutz, vice chairman of global product development at General Motors. The interview discusses in length GMs up coming electric car the Volt.

GM Volt in Shanghai

Mr. Lutz understands the skepticism behind any electric car initiative from GM or any of the big 3. He addresses this by establishing a “sneak preview” program so that journalists and the media can see the car through it’s various stages of development.

The intention is to have this car production ready by Q4 2010, Q1 2011.

I hope it’s as cool as the Tesla Motors Roadster, slated for release next year.

Technorati Tags: , ,

Powered by ScribeFire.

Automotive
Technology

Comments (0)

Permalink

Quote of the day

“Creativity in business is often nothing more than making connections that everyone else has almost thought of. You don’t have to reinvent the wheel, just attach it to a new wagon.”

Mark McCormak - What They Don’t Teach you at Harvard Business School

Quotations

Comments (0)

Permalink

Nearly Free AA Batteries from a 6 Volt Battery


6 Volt Battery Hack! You’ll Be Amazed! - The top video clips of the week are hereIf you are like me, most of your electronic devices are powered by AA batteries. My kids go through AA batteries like candy, costing me a small fortune. This video, found on Metacafe show’s that inside 6 volt battery you can find 32 AA batteries. This hack could potentially save you hundred’s of dollars each year!

Technorati Tags: , , ,

Lifehack

Comments (0)

Permalink

Quick security checklist for webmasters

Written by Nathan Johns, Search Quality Team

In recent months, there's been a noticeable increase in the number of compromised websites around the web. One explanation is that people are resorting to hacking sites in order to distribute malware or attempt to spam search results. Regardless of the reason, it's a great time for all of us to review helpful webmaster security tips.

Obligatory disclaimer: While we've collected tips and pointers below, and we encourage webmasters to "please try the following at home," this is by no means an exhaustive list for your website's security. We hope it's useful, but we recommend that you conduct more thorough research as well.

  • Check your server configuration.
Apache has some security configuration tips on their site and Microsoft has some tech center resources for IIS on theirs. Some of these tips include information on directory permissions, server side includes, authentication and encryption.

  • Stay up-to-date with the latest software updates and patches.
A common pitfall for many webmasters is to install a forum or blog on their website and then forget about it. Much like taking your car in for a tune-up, it's important to make sure you have all the latest updates for any software program you have installed. Need some tips? Blogger Mark Blair has a few good ones, including making a list of all the software and plug-ins used for your website and keeping track of the version numbers and updates. He also suggests taking advantage of any feeds their websites may provide.

  • Regularly keep an eye on your log files.
Making this a habit has many great benefits, one of which is added security. You might be surprised with what you find.

  • Check your site for common vulnerabilities.
Avoid having directories with open permissions. This is almost like leaving the front door to your home wide open, with a door mat that reads "Come on in and help yourself!" Also check for any XSS (cross-site scripting) and SQL injection vulnerabilities. Finally, choose good passwords. The Gmail support center has some good guidelines to follow, which can be helpful for choosing passwords in general.

  • Be wary of third-party content providers.
If you're considering installing an application provided by a third party, such as a widget, counter, ad network, or webstat service, be sure to exercise due diligence. While there are lots of great third-party content on the web, it's also possible for providers to use these applications to push exploits, such as dangerous scripts, towards your visitors. Make sure the application is created by a reputable source. Do they have a legitimate website with support and contact information? Have other webmasters used the service?

  • Try a Google site: search to see what's indexed.
This may seem a bit obvious, but it's commonly overlooked. It's always a good idea to do a sanity check and make sure things look normal. If you're not already familiar with the site: search operator, it's a way for you to restrict your search to a specific site. For example, the search site:googleblog.blogspot.com will only return results from the Official Google Blog.
They're free, and include all kinds of good stuff like a site status wizard and tools for managing how Googlebot crawls your site. Another nice feature is that if Google believes your site has been hacked to host malware, our webmaster console will show more detailed information, such as a sample of harmful URLs. Once you think the malware is removed, you then can request a reevaluation through Webmaster Tools.

  • Use secure protocols.
SSH and SFTP should be used for data transfer, rather than plain text protocols such as telnet or FTP. SSH and SFTP use encryption and are much safer. For this and many other useful tips, check out StopBadware.org's Tips for Cleaning and Securing Your Website.

Here's some great content about online security and safety with pointers to lots of useful resources. It's a good one to add to your Google Reader feeds. :)

  • Contact your hosting company for support.
Most hosting companies have helpful and responsive support groups. If you think something may be wrong, or you simply want to make sure you're in the know, visit their website or give 'em a call.

We hope you find these tips helpful. If you have some of your own tips you'd like to share, feel free to leave a comment below or start a discussion in the Google Webmaster Help group. Practice safe webmastering!

general tips

Comments Off

Permalink

Subscriber stats and more

We're unrolling some exciting new features in Webmaster Tools.

First of all, subscriber stats are now available. Webmaster Tools now show feed publishers the number of aggregated subscribers you have from Google services such as Google Reader, iGoogle, and Orkut. We hope this will make it easier to track subscriber statistics across multiple feeds, as well as offer an improvement over parsing through server logs for feed information.


To improve the navigation and look and feel, we've also made some changes to the interface, including:
  • No more tabs! Navigate through the new sidebar.
  • Breadcrumbs in the page title for easier product navigation.
  • A sidebar that expands and contracts to show and hide options based on your current goal.
  • New sidebar topics: Overview, Diagnostics, Statistics, Links, Sitemaps, and Tools.
And last but not least, Webmaster Tools is now available in 20 languages! In addition to US English, UK English, French, Italian, Spanish, German, Dutch, Brazilian Portuguese, Traditional Chinese, Simplified Chinese, Korean, Russian, Japanese, Danish, Finnish, Norwegian, Swedish, and Polish, Webmaster Tools are now in Turkish and Romanian.

Sign in to see these changes for yourself. For questions or feedback, please post in the Google Webmaster Tools section of our Webmaster Help Group.

products and services

Comments Off

Permalink

No timeline. No funding. No excuses.

I’m really starting to like this guy.

This week - as we will forever - we remember those lost on September 11th. And this week, Washington refocuses on Iraq. But the question of Iraq is separate from September 11th - as it has always been, whatever George Bush would have us believe.

Likewise, supporting our troops and pursuing a failed war are not the same things - whatever George Bush would have us believe.

All Americans honor the incredible sacrifice of our troops. They have done everything asked of them with courage and resolve. Now we should bring them home.

They are policing a civil war, and the only way to end that civil war is for both sides, Sunni and Shia, to take responsibility to end it by agreeing to a political solution. And the only way to force them to take responsibility is to withdraw our troops - starting now.

Unfortunately, the president is pressing on with the only strategy he has ever had - more time, more troops and more war.

In January, after years of evidence that military actions cannot force a political solution, the president announced a military surge to force a political solution. In May, he vetoed a plan to end the war, demanded more time to show the surge could work, and Congress gave it to him. Now, after General Petraeus reports the surge has produced no progress toward a political solution, what does the president want? More time for the surge to work, when we know it won’t.

Our troops are stuck between a president without a plan to succeed and a Congress without the courage to bring them home.

But Congress must answer to the American people. Tell Congress you know the truth - they have the power to end this war and you expect them to use it. When the president asks for more money and more time, Congress needs to tell him he only gets one choice: a firm timeline for withdrawal.

No timeline, no funding. No excuses.

It is time to end this war.

Technorati Tags: , ,

Iraq
Politics

Comments (0)

Permalink