Archive for the ‘Werkzeuge’ Category

1
Jun

Bing in Google Analytics

   Posted by: seoxplorer Tags: , , ,

Nachdem ja schon einige über Bing im Preview berichtet haben: Stefan, JoJo, Sistrix ist Bing ja heute am Pfingstmontag Live-gegangen

Bing (www.bing.com) ist (natürlich) bei Google Analytics (noch) keine Standard-Suchmaschine, das bedeutet, dass alle Besucher, die über Bing kommen, bei Google Analytics als Besucher über “verweisende Websites” und nicht als Besucher über Suchmaschinen ausgewiesen werden, was natürlich nicht richtig ist.

Was tun?

Zum einen könnte man warten, ob Google nicht selbst bald den eigenen Code entsprechend erweitert… oder aber man legt selbst Hand an:

Auf allen eigenen Webseiten einfach nur unter der Zeile:

var pageTracker = _gat._getTracker(“UA-xxxxxx-y”);

die Zeile:

pageTracker._addOrganic(“bing.com”, “q”);

hinzufügen…

…und fertig! – Schön wär’s! Leider hat sich Bing bzw. Microsoft was ganz tolles ausgedacht: es gibt noch einen weiteren alternativen Parameter im Refererstring, der den Suchbegriff enthält: MT= – statt des q= über die Unterschiede kann ich aufgrund der eigenen Logfiles, und noch ohne weiterere Recherche, leider noch nichts aussagen. Es bleibt jetzt zu testen, ob man Google Analytics auch eine zweite Zeile mit der gleichen Domain “unterschieben” kann, was ich allerdings bezweifle :-( , wenn ja würde diese Zeile folgendermassen aussehen:

pageTracker._addOrganic(“bing.com”, “MT”);

Weitere Parameter im Referer-String, die ich bisher identifizieren konnte:

  • mkt= (Market) wird in der Form sprachkürzel-landeskürzel (z.B. für englischspachig Kanada: en-ca)
  • setLang= (Sprache) ebenfalls in der From sprachkürzel-LANDESKÜRZEL (z.B. für englischsprachig Kananda: en-CA
  • src= (Source) bisherig nur der Wert “IE-SearchBox”
  • filt= (Filter) wenn, dann mit dem Wert “all”
  • form= (Formular) (auch als FORM=) bisherige Werte (nicht vollständig): CBPW, QBLH, QBRE, R5FD, SOLTLB, R5FD4, IE7RE, TOOLBR, MSNH11, …
  • first= numerischer Wert
  • srch= (Search? bisher nur in Verbindung mit MT aufgetreten) Numerischer Wert
  • prov= (bisher nur in Verbindung mit MT aufgetreten) leer, bzw. 1x mit dem Wert gogl
  • utf8= (bisher nur in Verbindung mit MT aufgetreten) bisher immer ohne Wert

stay tuned…

Tweet this via redir.ec

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Jan Kutschera hat auf seinem SEO Punk Blog eine sehr leicht nachvollziehbare Anleitung veröffentlicht, wie man mit Google Analytics “sehen” kann, was die Suchenden bei Google tatsächlich eingegeben haben und zu was sie sich dann von Google Suggest haben überreden lassen tatsächlich zu suchen…

Da dies aber über Google-Analytics Filter läuft, und also nur ab dem Moment der Erstellung dieser Filterfunktion erfasst wird, dauert es – je nach Suchvolumen das eine Site abbekommt – u.U. relativ lange, bis man ein statistisch relevantes Datenvolumen gesammelt hat.

Das, und dass, wahrscheinlich ja nicht jeder überhaupt Google Analytics einsetzt, hat mich dazu bewegt, doch mal zu sehen, ob man nicht doch noch eine ex-post Auswertung über die Server-Logfiles hinbekommt, und bin zu folgendem Ergebnis gelangt:

Annahmen:
das Webserver Logfile heisst: access_log (default bei apache)
und hat das LogFormat combined: (“%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”" – ist i.d.R. auch so defaultmäßig eingestellt)

Als erstes extrahieren wir mit egrep alle Logeinträge, die als Referrer eine Google Suche haben:

egrep ‘”http://([^\./]+\.)*google\.’ access_log > google-search

im nächsten Schritt dampfen wir die Informationen so ein, dass wir nur noch die Landingpage und den Referrer (ohne das http://) getrennt durch ein Leerzeichen in jeder Zeile stehen haben.

sed ‘s/^[^"]*”GET \([^ ]*\) [^"]*”[^"]“http:\/\/\([^"]*\)”.*$/\1 \2′ <google-search >google-search-stripped

so, und hierüber lassen wir nun ein kleines php-script laufen, das uns die Informationen in zwei MySQL-Tabellen einträgt :

<?php
$conf[‘dbserver’] = ‘localhost’;
$conf[‘database’] = ; // Datenbank-Name
$conf[‘dbuser’] = ; // Datenbank-UserID
$conf[‘password’] = ; // Datenbank-Passwort
$conf[‘tableprefix’] = ‘gsx_’;
$conf[‘filename’] = ‘google-search-stripped’;
 
$IN = fopen($conf[‘filename’],‘r’);
 
$dbconn = mysql_connect($conf[‘dbserver’], $conf[‘dbuser’], $conf[‘password’]) OR die(mysql_error());
 
mysql_select_db($conf[‘database’]) OR die(mysql_error());
 
$sql = sprintf(‘DROP TABLE IF EXISTS %squeries, %sparms’,$conf[‘tableprefix’],$conf[‘tableprefix’]);
mysql_query($sql) OR die(mysql_error());
$sql = sprintf(‘CREATE TABLE %squeries (id bigint AUTO_INCREMENT PRIMARY KEY, landingpage text, googledomain varchar(25), querystring text, q text, hl varchar(3) DEFAULT NULL, aq varchar(3) DEFAULT NULL, oq text DEFAULT NULL, cd varchar(3) DEFAULT NULL, start varchar(4) DEFAULT NULL, aqi varchar(3) DEFAULT NULL)’,$conf[‘tableprefix’]);
mysql_query($sql) OR die(mysql_error());
$sql = sprintf(‘CREATE TABLE %sparms (id bigint, parm varchar(15) NOT NULL, val varchar(255))’,$conf[‘tableprefix’]);
mysql_query($sql) OR die(mysql_error());
 
while (!feof($IN)) {
   $line = fgets($IN, 4096);
   list($landingpage, $referrer) = split(‘ ‘,$line);
   list($googledom, $querystring) = split(\?,$referrer);
 
   $sql = sprintf(‘INSERT INTO %squeries (landingpage, googledomain, querystring) VALUES ("%s", "%s", "%s")’,$conf[‘tableprefix’],$landingpage,$googledom,$querystring);
   mysql_query($sql) OR die(mysql_error());
   $id = mysql_insert_id();
 
   $parmpairs = split(‘&’,$querystring);
   foreach ($parmpairs as $parmpair) {
      list($parm,$value) = split(‘=’,$parmpair);
      $parms[$parm] = $value;
 
      $sql = sprintf(‘INSERT INTO %sparms (id, parm, val) VALUES (%d, "%s", "%s")’,$conf[‘tableprefix’],$id, $parm,$value);
      mysql_query($sql) OR die(mysql_error());
      switch($parm) {
         case ‘q’:
         case ‘hl’:
         case ‘aq’:
         case ‘oq’:
         case ‘cd’:
         case ‘start’:
         case ‘aqi’:
            $sql = sprintf(‘UPDATE %squeries SET %s = "%s" WHERE id=%d’,$conf[‘tableprefix’],$parm,$value,$id);
            mysql_query($sql) OR die(mysql_error());
            break;
         default:
            break;
      }
 
      $parmcount[$parm]++;
   }
}
fclose($IN);
mysql_close($dbconn);
asort($parmcount);
var_dump(array_reverse($parmcount));
?>

Jetzt haben wir alle Daten in den Tabellen. Die für die Google-Suggest Betrachtung interessantesten Google-Parameter
(q = (Query) der Suchstring nachdem tatsächlich gesucht wurde,
hl = Sprache in der gesucht wurde,
oq = (Original Query) das was der User eingegeben hat, bevor er einen Suchvorschlag ausgewählt hat,
aq = (Assited Query) Position des Suchvorschlags in der Suchvorschlagsliste – beginnend mit 0 – und ggf. mit zusätzlichen Infos erweitert,
cd = Ranking Position der eigenen Landingpage in den Suchergebnissen,
start = “Ergebnis-Seiteninformation”,
aqi = ? (vielleicht Assisted Query Index?) – hier stehen so werte wie ‘g2′, ‘g10′ drin – meine sehr unsichere Vermutung: Anzahl der Suchvorschläge in der Suchvorschlagsliste)
haben wir auch direkt in der Haupt-Tabelle, so dass die ersten einfachen SQL-Queries sich nur auf diese Tabelle beschränken können:

Bspl: Liste der Landingpages, Queries, Position des Suchvorschlags in der Suchvorschlagsliste, die Original Suche, und die Häufigkeit für alle Assisted Queries, d.h. die Suchen bei denen Google Suggest verwendet wurde:

SELECT landingpage, q, aq, oq, count(*) as anzahl FROM gsx_queries WHERE aq IS NOT NULL AND aq != ‘f’ AND aq != ‘t’ GROUP BY landingpage, q, aq, oq ORDER BY anzahl DESC, aq ASC, oq ASC

Natürlich gibts das Ganze auch zum Download.

(Für Linux-Kisten dürften alle Tools (grep, sed, php, mysql) bereits vorhanden sein. Für die Auswertung empfiehlt es sich z.B. phpMyAdmin installiert zu haben :-) .

Wenns denn mit Windows sein muss (Scripte nicht getestet!): hier findet man die entsprechenden Tools: grep, sed, php, MySQL)

Noch ein Wort zum Abschluß: Im Vergleich zur Analyse mit einem Web-Analyse-Tool ist dies in vielen Aspekten unterlegen, aber für eine erste Analyse was man eigentlich wirklich messen kann und möchte ist mir eine solche Script-Lösung immer recht hilfreich, da man mit so etwas sehr flexibel – wenn auch nicht besonders komfortabel – in den Daten stöbern kann…

…und wie immer: Kommentare und Verbesserungsvorschläge jederzeit willkommen :-)

Weitere Artikel zum Thema Google Suggest: FridayNite, Sistrix, Jojo, Bastian, …

Tweet this via redir.ec

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]
4
Mai

Platz 1 König bei Google

   Posted by: seoxplorer

Wer rankt in Google auf Platz Eins?

Diese Frage stellte sich Stefan Fischerlander auf seinem Blog Suchmaschinen-Tricks. Basierend auf seiner Keyword-Datenbank untersuchte er die 10000 häufigsten gesuchten Begriffe in Detuschland.

Wenn es alleine um Platz 1 bei Google geht ist wikipedia unumstrittener König, bei fast einem Viertel (24,57%) aller Suchbegriffe bietet Google als erstes eine Seite von de.wikipedia.org dem Suchenden an. Platz 2 mit gerade noch einem Prozent (1,07%) erreicht die englische Schwester (en.wikipedia.org), was zeigt wie start insgesamt doch auch englische Begriffe in Deutschland gesucht werden. Platz 3, und damit den besten Platz der kommerziellen Websites belegt www.amazon.de mit gerade noch 0,65% der 10.000 meistgesuchten Begriffe.

Da Stefan so nett ist und auch die Ergebnisliste der Plätze 1-1000 als Excel Tabelle zur Verfügung zu stellen, habe ich noch ein wenig geschaut wie denn die Mengenmäßige Verteilung aussieht, und ob auch hier das bei Rankings häufig herangezogene Pareto-Prinzip (die Top 20% haben 80% aller Werte) gilt (mehr zur Pareto-Verteilung und dem Pareto Prinzip, na wo wohl? bei http://de.wikipedia.org/wiki/Pareto-Verteilung :-) ), und herausgekommen ist dies:

AnzahlErstplazierungen AnzahlWebsites
2457 1
107 1
65 1
41 1
35 1
32 1
30 1
26 1
22 1
21 1
20 1
18 2
17 1
16 1
15 1
14 2
13 2
12 6
11 5
10 9
9 8
8 17
7 20
6 22
5 43
4 74
3 223
2 553

Also 85% der Top 1000 Websites ranken gerade mal für 2, 3 oder maximal 4 Suchbegriffe auf Platz 1 und zeichnen damit für 20,71% der Top 1 Plazierungen verantwortlich, also am “unteren” Ende kommt das Pareto-Prinzip dann doch tatsächlich schon fast wieder hin. Lässt man die 4er auch noch raus so ergibt sich, dass 77,6% der Top 1000 Websites nur für 2 oder 3 Suchbegriffe Platz 1 bei Google erreichen, und damit 17,75% der Top 1 Platzierungen beanspruchen…

Insgesamt sehr interessante Statistiken, die uns da zur Verfügung gestellt werden… und ich denke ich werde noch die eine oder andere Auswertung daraus machen und hier veröffentlichen…

Tweet this via redir.ec

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]
Seite 2 von 4123...Ende »