Google SERPs als XML abfragen

Für ein kleines SEO-Tool, das ich mir letztens programmiert habe, brauchte ich ein paar Daten, für die ich wiederum die Google-SERPs abfragen musste. Ganz kleines Ding und es sollte alles schnell gehen. Am schnellsten geht sowas natürlich mit einer API, die Google – anscheinend – auch anbietet. Eine einfache Schnittstelle, der man das Keyword liefert und von der man  die Ergebnisse als schön maschinenlesbares XML zurückbekommt, habe ich allerdings nicht gefunden, was auch Sinn macht, schließlich würde Google daran nicht verdienen und seine Daten verschenken.

Also bin ich den Umweg über die HTML-Suchergebnisse gegangen, wie man sie auch im Browser geliefert bekommt, wenn man eine Suche durchführt. Einziges Problem: HTML parsen, also so zu verarbeiten, dass man z.B. nur eine Liste mit den Top10 Ergebnissen hat, ist Krieg. Zum Glück gibt es dafür bereits eine Lösung, die ausgerechnet von Yahoo! kommt: YQL.

YQL sieht ähnlich aus wie die Datenbanksprache SQL und hat zum Ziel, das Internet zur Datenbank zu machen. Man kann eine HTML-Seite abfragen, genau definieren welchen Teil man daraus haben will und bekommt diese (nur diese) Daten als XML zurückgeliefert. Der Sinn dahinter ist, dass XML komplett maschinenlesbar ist und man so ohne Zwischenschritte z.B. in PHP damit arbeiten kann.

Was bringt das?

Damit hat man Zugriff auf eine ganze Menge Daten. Man kann damit ohne viel Aufwand seinen eigenen kleinen Ranking-Check programmieren und interessante statistische Informationen sammeln, mit denen man Studien zusammenstellen kann wie SISTRIX mit der kürzlich veröffentlichten Statistik über Keyworddomains. Oder wie wär’s mit einer kleinen Domainliste? Ein paar tausend wichtige Keywords abfragen, Domains aus den Ergebnissen speichern und damit Expired Domains finden…

Wie funktioniert das?

Trockenübungen für’s erste führt man am einfachsten mit der Konsole aus, in die man direkt sein YQL Statement eingeben kann: YQL Konsole. Ein ganz einfaches Beispiel für ein Query ist:

SELECT * FROM html WHERE url = “http://www.google.de”

Funktioniert, schön. Versucht man, mit solch einem Query aber die SERPs und nicht nur die Startseite abzufragen, schaut man in die Röhre, denn Google schließt von dort aus Crawler mittels der robots.txt aus und Yahoo! hält sich dran. Das bedeutet man muss jemanden dazwischenschalten, der sich für die robots.txt nicht interessiert. Am besten also man machts selbst. Dazu nimmt man einfach folgendes kurzes PHP-Skript:

<?php

// erzeuge einen neuen cURL-Handle
$ch = curl_init();

// setze die URL und andere Optionen
curl_setopt($ch, CURLOPT_URL, ‘http://www.google.de/search?q=’.$_GET['q']);
curl_setopt($ch, CURLOPT_HEADER, 0);

// führe die Aktion aus und gebe die Daten an den Browser weiter
curl_exec($ch);

// schließe den cURL-Handle und gebe die Systemresourcen frei
curl_close($ch);

?>

Das ist ein Mini-Proxy, über den wir unsere Suchanfrage stellen. Der Server auf dem das Skript liegt fragt wie ein ganz normaler Internetnutzer an und schickt uns das Ergebnis weiter. Damit haben wir das HTML, das wir verarbeiten wollen. Damit ist die Vorbereitung komplett und folgendes Query liefert uns das was wir wollen: Ergebnisse.

SELECT href FROM html WHERE url = “http://www.justusbluemer.de/search.php?q=kredit” AND xpath = “//a[@class='l']“

Den Stern (*) habe ich durch href ersetzt, denn das Ziel-Attribut ist gerade das Einzige, was uns interessiert. Als URL wird natürlich unser selbstgebauter “Proxy” eingesetzt, der uns das Suchergebnis weiterleitet. Hinter q steht das Keyword, dessen Suchergebnisse wir abfragen wollen. xpath ist ebenfalls ein wichtiger Teil, denn hier wird das Ergebnis auf das nötigste reduziert: Wir bekommen nur Links (<a>-Tags) zurückgeliefert, die mit dem class-Attribut l ausgestattet sind – und das sind nur die Links in den Suchergebnissen!

Das Ergebnis sieht so aus:

<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="13" yahoo:created="2009-10-27T07:36:46Z" yahoo:lang="en-US" yahoo:updated="2009-10-27T07:36:46Z" yahoo:uri="http://query.yahooapis.com/v1/yql?q=SELECT+href+FROM+html+WHERE+url+%3D+%22http%3A%2F%2Fwww.justusbluemer.de%2Fsearch.php%3Fq%3Dkredit%22+AND+xpath+%3D+%22%2F%2Fa%5B%40class%3D%27l%27%5D%22">
    <results>
        <a href="http://www.online-kredit-index.de/"/>
        <a href="http://www.schnell-kredit.info/"/>
        <a href="http://www.financescout24.de/kredite-finanzierung/kredit.aspx"/>
        <a href="http://www.finanzinform.de/"/>
        <a href="http://de.wikipedia.org/wiki/Kredit"/>
        <a href="http://www.kredit.org/"/>
        <a href="http://www.bon-kredit.de/"/>
        <a href="http://www.creditplus.de/"/>
        <a href="http://www.kredit-engel.de/"/>
        <a href="http://www.dkb.de/"/>
        <a href="http://www.zeit.de/newsticker/2009/10/26/iptc-bdt-20091026-517-22801658xml"/>
        <a href="http://www.handelsblatt.com/sparkassen-duerfen-kundenkredite-verkaufen;2474364"/>
        <a href="http://www.wienerzeitung.at/DesktopDefault.aspx?TabId=3926&amp;alias=wzo&amp;cob=446570"/>
    </results>
</query>

Dieses XML kann man nun mit zwei, drei Zeilen PHP in einer Datenbank speichern und immer und immer mehr Daten anhäufen, je mehr Anfragen man stellt. Genau da liegt allerdings auch die

Einschränkung

Wir fragen die normale Web-Suche ab. Damit bekommen wir authentische Ergebnisse wie jeder andere Internetnutzer auch, allerdings unterliegen wir auch den selben Restriktionen. Stellt man zu viele Anfragen in kurzer Zeit, blockt Google ab und lässt Suchen nur noch mit Captcha zu. Bei meinen Versuchen brauchte ich da schon ein paar tausend Anfragen, aber viel ist das immer noch nicht. Die einfachste, allerdings etwas aufwändige Methode, ist, unser “Proxy-Skript” auf verschiedene Webhoster aufzuteilen. 10 dieser Skripte auf verschiedene IPs verteilt, die Pfade dazu in einen selbstgeschriebenen zentralen Quasi-Loadbalancer eintragen (auch recht einfach in PHP zu bewerkstelligen) und schon vervielfacht sich die Zahl der verfügbaren Anfragen. Mittlerweile hat ja anscheinend jeder Freehoster PHP im Angebot, das reicht ja im Prinzip auch vollkommen.

Roundup

Einen genialen Vorteil hat das Proxy-Prinzip: Je nach Serverstandort des “Proxy” gibt es landesspezifische SERPs. Sprich man kommt sehr einfach an original ausländische SERPs, wenn man das will.

Im fertigen Programm nutzt man YQL am einfachsten über die Web Service URL. Vom Programm aus (in PHP auch einfach über cURL oder noch simpler ReadFile) aufrufen und man bekommt das Abfrageergebnis zurück. Irgendwann meckert Yahoo! dann allerdings. Wer bspw. für einen Webdienst eine größere Abfrageanzahl braucht, kann sich einen API-Key holen und hat dann einen größeren Verfügungsrahmen. Kostet auch nichts und geht zügig.

Über Kritik über Sinn und Unsinn dieser Methode und über Erfahrungen und Anwendungen würde ich mich sehr freuen!

Gelddrucken mit Short-URLs

Geld verdienen ist immer sehr schön, vor allem wenn man nichts dafür tun muss.

Besonders einfach geht das zur Zeit mit dem Short-URL Dienst http://www.lil.io. Der zahlt nämlich 40 € aus, wenn eine Short-URL, die man dort erstellt, 10.000 mal aufgerufen wird. Finanziert wird das durch Werbeeinblendungen. Dabei zählen praktischerweise einfach nur Aufrufe. Traffic-Qualität scheint keine Rolle zu spielen, die Masse machts.

10.000 Besucher durch SEO oder SMO anzuhäufen ist zwar nicht unmöglich, macht aber in den meisten Fällen wenig Freude, weil man damit in der Regel mehr als 40 Euro verdienen kann.

Die Gelddruckerei fängt dann an, wenn man Traffic für noch weniger Geld einkaufen kann. Kann man, sogar sehr günstig, zum Beispiel billigen Pornotraffic aus Thumbnail-Galleries, den gibt es schon für 3,00$/1000 Uniques oder noch günstiger auf Seiten wie http://www.chokertraffic.com. Das mag auf den ersten Blick unrealistisch billig klingen, aber das funktioniert. Das ist Schrotttraffic, der schlichtweg nicht konvertiert. Aber es ist immer noch Traffic.

40 € sind beim aktuellen Wechselkurs ungefähr 58 $. Davon kann man beim Beispielpreis von 3$/1000 Uniques rund 19.000 Uniques einkaufen und auf eine lil.io Adresse schicken – und damit etwa das doppelte verdienen.

Viel Spaß.

Grundlagen der Suchmaschinenoptimierung

Neben meinen eigenen Projekten betreue ich hin und wieder auch Kunden, allerdings in der Regel eher beim Thema Webdesign. Viele Mittelständler und Selbstständige wollen dann zum ersten Mal eine (richtige) Website und sind bei ihren Nachforschungen zum Thema irgendwann einmal über SEO gestolpert, haben aufgeschnappt dass es ohne selbige gar nicht mehr geht und wollen das jetzt auch haben.

Damit die Grundprinzipien dahinter verstanden werden, gebe ich mittlerweile jedem eine kleine, leicht verständliche Zusammenfassung mit auf den Weg. Das Thema kann auf drei Seiten natürlich nur angerissen werden und wirklich nur die Basis erläutert werden, aber meistens werden damit bereits eine Menge Fragen geklärt und man spart viel Zeit.

Ihr könnt sie für eigene Projekte und Kunden gerne auch benutzen, ich würde mich freuen: Grundlagen der Suchmaschinenoptimierung [PDF]

Browserstatistik bei jugendlichen Nutzern

Diese Statistik zeigt die Wahl des Browsers auf einer Website, die praktisch ausschließlich von 14 bis 18-Jährigen genutzt wird. Mit über 100.000 verrechneten Unique Visitors ist sie ausreichend aussagekräftig.

Überrascht hat mich der hohe Google Chrome-Anteil und dass es doch tatsächlich Leute gibt, die ernsthaft mit der PSP surfen (bei der umständlichen Bedienung!).

Browserstatistik bei jugendlichen Nutzern

Browserstatistik bei jugendlichen Nutzern

Mit YouTube die Zielgruppe für ein Produkt definieren

Je mehr man über seine Kunden bzw. seine Besucher weiß, desto besser kann man sich auf sie einstellen, desto passender kann man sie mit Werbung ansprechen, desto überzeugter sind sie, desto mehr kaufen sie.

Meistens kann man natürlich grob schätzen, wer sich für ein Produkt interessiert, aber oft verschwimmen die Grenzen. Die Feinheiten zwischen Altersgruppen beispielsweise stellen sich oftmals erst nach größer angelegten Nachforschungen heraus. Interessiert man sich dafür schon mit 30? Oder doch erst ab 40?

Das lässt sich (relativ) einfach mit YouTube herausfinden. Dazu produziert man ein paar Videos zu dem Produkt, das man entweder selbst vertreibt oder als Affiliate bewirbt und lädt sie hoch, spickt die Titel mit entsprechenden Keywords, wählt nette Titelbilder und wartet ab. Das entsprechende Suchvolumen und eine Mindestqualität der Videos vorausgesetzt, werden bald einige Zuschauer zusammenkommen, die sich die Videos anschauen – weil sie sich für das Produkt interessieren, sind also potentielle Kunden.

Abgesehen davon dass man diese Besucher nun mit einem Link in der Sidebar und einer Notiz im Video auf die eigene Website schicken und monetarisieren kann, profitiert man von den Daten, die sie bei YouTube Insight, dem YouTube eigenen Statistikprogramm, hinterlassen.

Ich habe das selbst ausprobiert, ganz klassisch mit fünf Videos (bis dato insgesamt ~20.000 Views), die eine Erotik-Software bewerben. Nicht das Optimum, aber ich denke man kann der Sache zumindest ein bisschen Repräsentativität nicht absprechen. Herausgekommen ist das Erwartete: Die Software spricht am ehesten Männer zwischen 45 und 54 an.

Demographische Daten mit YouTube Insight

Demographische Daten mit YouTube Insight

Der Wahlwerbespot der Piratenpartei

Zugegebenermaßen habe ich ein Faible für Wahlwerbespots, weil sie sich von gewöhnlicher Fernsehwerbung meistens deutlich unterscheiden. Die Ausgangssituation ist nämlich eine ganz andere: Geht man (leider unrealistischerweise) davon aus, dass der Zuschauer zur Wahl geht, besteht das Ziel eines Wahlwerbespots darin, die Stimme, die der Wähler ohnehin vergibt und die ihn nichts kostet, für sich zu gewinnen. Man kann natürlich darüber streiten wie stark Rationalität und wie das Bauchgefühl die Entscheidung beeinflusst, aber ich behaupte, der Großteil der Wähler braucht, bevor er sich bewusst mit der Partei beschäftigt, eine positive emotionale Grundeinstellung und die lässt sich eben nur auf dem unbewussten Wege erzeugen. Dazu dienen Wahlwerbespots.

Damit das funktioniert, wird die politische Message verpackt. In diesem Falle – im Spot der Piratenpartei – außerordentlich gut. Authentische Persönlichkeiten, die durch ihr nerdiges Aussehen oder ihren vernuschelten Dialekt erst perfekt werden und vor allem glaubwürdig sind. Effektvoll, diese zwei Akte; erst der Part mit den politischen Aussagen und dann der zweite, der emotionale. Der, bei dem man auch aufstehen und sagen will “Ja, ich bin Pirat!”. Wirklich gut.

Mehr dazu unter Ich bin Pirat! – http://www.ich-bin-pirat.de/

Virale Videos kündigt man nicht an

Wie bis eben noch bei Marcus im JOBlog zu lesen war (der Artikel wurde großzügiger- und gutmütigerweise gelöscht), ist es Microsoft gelungen, die Planung eines neuen viralen Videos im Stile von “Bruno Kammerl’s Punktlandung” (siehe dazu: Das Idiotenapostroph) derart öffentlich zu machen, dass sämtliche Viralität durch frühzeitiges Wedeln mit der Fake-Fahne nicht nur vor der Veröffentlichung, sondern bereits vor der Produktion verloren geht.

[...] Und nun planen die Microsofties scheinbar eine neue virale Aktion. Ich habe nämlich gestern von meiner Casting-Agentur einen lustigen Casting-Aufruf bekommen:

Laptop kaputt machen für Microsoft Werbefilmchen

Hier der ganze Aufruf:

Folgende Spiel-Charaktere werden gesucht.
Designer vom Typ Berlin-Mitte (locker sitzender Anzug, rechteckige Brille) Erste Liga – Elektro-Punk (Tatoo, Bart, Truckercap, teure Klamotten, trotzdem Punk) Prenzlberg-Tussie (Bob-Frisur, T-Shirt mit rosa Print, Gucci-Sonnenbrille) Trendjapaner (Mangastyle)

Für die Filmhochschule München haben wir folgende Jobanfrage erhalten: Für Microsoft möchte die Filmhochschule in München 4 Virals (lustige kurze Werbeclips) drehen.
Die Handlung der Spots ist schnell erklärt: In vier Locations (Designbüro, Isarstrand, S-Bahn, Küche) flippen vier Mac-User aus und machen ihr Laptop kaputt. Referenz ist der youtube-Klassiker mit dem Büroangestellten im Großraumbüro: >>> zum Video

Sie benötigen 4 Komparsen/Kleindarsteller, die diesen Kontrollverlust glaubwürdig spielen können. Der Regiesseur wird deswegen auch aus einer kleinen Auswahl der Bewerber nächste Woche ein kurzes Casting machen. Drehtermin ist der 29. oder 30. September für einen halben Tag (bis 4 Stunden). Ein Budget ist zwar vorhanden, da das Ganze aber im Rahmen der Filmhochschule abläuft, eben nicht viel.
Die Gage beträgt 50,00 Euro. Es erfolgen keine weiteren Abzüge durch uns. Da es nicht viel Geld ist, bekommt auch jeder Darsteller eine DVD vom fertigen Film um ihn als Referenzmaterial für sich zu benutzen.

Abgesehen davon, dass ich von solcher Negativ-Werbung wenig halte, ist die Idee äußerst gewöhnlich. Die Zielgruppe eines solchen “Virals” (die übrigens kein klassischer “Werbefilm” sein sollten, weil sie dann nicht mehr funktionieren) sind vermeintlich hippe bloggende und twitternde In-Typen, die sich allerdings entgegen ihres in den trägen Teilen der Werbebranche festgesetzten Rufes nur ungerne und in der Regel auch nicht derart leicht als Werbeträger instrumentalisieren lassen. Die erkennen sowas.
Zweitens hängen Videos mit lustigen Leuten, die etwas kaputt machen, spätestens seit den adipösen SuperRTL-Moderatoren, die ihre immergleichen und einschläfernden Pannenshows präsentieren, der Allgemeinheit zum Halse raus.

Vielleicht der übermütige Versuch, an den Erfolg des letzten Videos anzuknüpfen: Bisher gibt es 1056 Backlinks von 175 Domains (laut Yahoo) auf mach-es-machbar.de, was ohne Keys mit sinnvollem Suchvolumen und Kaufintention jedoch wenig Nutzen bringt. Ebenso ist der Branding-Effekt für Microsoft wohl vergleichweise gering, weil der durchschnittliche YouTube-Nutzer von der Video-Unternehmen-Verbindung nicht viel mitbekommt. Insgesamt kann man das unter “nettes Experiment” verbuchen und sich aber gleichzeitig davor hüten, sich als den neuen Social-Media-Versteher zu feiern.

« Neuere Artikel