Kleine SEO-Tools mit Quelltext in PHP

ToolsEs gibt viele Sites, die online Tools für die Suchmaschinenoptimierung (SEO) anbieten. Es gibt Handverlesene Verzeichnisse von Linkvendor, Eigenentwicklungen von Ravenseo und riesige Zusammenstellungen von den Fachinformatikern, dem Website Spy, dem SEO-Chat und der SEO-Company. Wieso braucht es denn noch mehr? Ganz einfach: Google Schweiz wird – extrem überraschenderweise – nirgends so richtig berücksichtigt. Ausserdem will ich auf der Kommandozeile arbeiten und den Quellcode möchte ich auch, um die Bewertungen nachzuvollziehen und um darin herumzuwurschteln.

Naja, dann hab ich halt mal angefangen. Das Resultat gibts auch zum Download: PHP SEO-Tools.

Die PHP-Tools

Das Ziel war es, eine Plattform zu schaffen, auf der Funktionen hinzu-implementiert werden können. Diese sollten dann sowohl über die Kommandozeile, als auch über das Web erreichbar sein und auch für zukünftige Anwendungen zur Verfügung stehen.

SERP Tool

Wenn man eine Website für bestimmte Schlüsselwörter optimiert, so ist es sicher interessant zu wissen wo man ungefähr in den Suchergebnissen auftaucht (logo, dafür macht man ja den ganzen Zirkus). SERP führt bei Google eine Suche mit gegebenen, leerschlag-separierten Suchbegriffen durch und sucht auf den SERPs (Search Engine Result Pages) nach dem ersten Resultat der optimierten Domain. Dies ist ein sehr schwammiges Mass, denn je nach Sprache, Browser, Geschichte (Cookie), Anzahl Resultate per Seite, … gibt Google was anderes aus. Naja, so als Abschätzung taugt es schon.

Beispielausgabe (Kommandozeile):

erinyes:~$ php seo.php serp "uwa widget" oncode.info www.google.ch
Starting SERP Search:
Query:   uwa+widget
URL:     oncode.info
Results: 100
Hits PP: 10
BASE URL:http://www.google.ch/search?as_q=uwa+widget&num=10&ie=UTF-8&btnG=Google+Search&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_nlo=&as_nhi=&as_occt=any&as_dt=i&as_sitesearch=&safe=images
Page 1 (0)
---FOUND---
URL:      https://blog.oncode.info/2007/11/26/php-uwa-widget-library/
Position: 5
SERP:     1

Keywords Funktion

Diese Funktion nimmt sich eine Seite zur Brust, eliminiert so gut wie möglich Stopwörter und stellt dann eine Rangliste über das Vorkommen der verbleibenden Wörter auf. Die Schlüsselwortdichte ist durchaus relevant.

Beispielausgabe:

erinyes:~$ php seo.php keywords https://blog.oncode.info
Loading https://blog.oncode.info
Calculating...
 1: 26x (1,06%): [integer]
 2: 22x (0,90%): [byval]
 3: 19x (0,78%): [public]
 4: 17x (0,69%): [end]
 5: 14x (0,57%): [kommentare]
 6: 13x (0,53%): [teile]
 7: 13x (0,53%): [neue]
 8: 13x (0,53%): [2008]
 9: 12x (0,49%): [finden]
10: 11x (0,45%): [teilen]
11: 11x (0,45%): [web]
12: 11x (0,45%): [geschrieben]
13: 11x (0,45%): [2007]
14: 11x (0,45%): [sub]
15: 10x (0,41%): [my]
16: 10x (0,41%): [eingeordnet]
17: 10x (0,41%): [können]
18: 10x (0,41%): [skaldrom]
19: 10x (0,41%): [inhalte]
20: 10x (0,41%): [geniesse]

Folgende Erweiterungen wären denkbar:

  • Rating (Meta-Keyword, Meta-Description, Title-Tag, H1-Tag)

Outlinks Funktion

Mit dieser Funktion können Statistiken zu den Links auf einer Seite abgefragt werden. Wohin tröpfelt denn der Google-Juice?

Beispielausgabe:

erinyes:~$ php seo.php outlinks https://blog.oncode.info
Loading https://blog.oncode.info
Calculating...
NOTUNIQUE
Total links:------------------261
Total links outsite:----------140
Total links insite:-----------121
Total follow links:-----------152
Total follow links outsite:---31
Total follow links insite:----121
Total nofollow links:---------109
Total nofollow links outsite:-109
Total nofollow links insite:--0

UNIQUE
Total links:------------------231
Total links outsite:----------139
Total links insite:-----------92
Total follow links:-----------123
Total follow links outsite:---31
Total follow links insite:----92
Total nofollow links:---------108
Total nofollow links outsite:-108
Total nofollow links insite:--0

Bedienung der PHP SEO-Tools

Neben einem Webinterface das beim Download dabei ist (auf oncode.info gibt es eine Eingeschränkte Version des SEO-Tools Webinterface auch online) gibt es für die richtigen Harteier (nur über Ostern auch für bunte Harteier) eine Kommandozeilenversion.

Grundsätzlich werden die Funktionen folgendermassen gestartet:

php seo.php  

Mit der Option --help bekommt man eine Hilfe angezeigt.

Erfahrungen beim Programmieren

Nun, wie immer wars ein Spass und wie immer hat das Schei? Encoding mich wieder heimgesucht. Irgendwie kann man bei file_get_contents nicht herausfinden was man erhalten hat. Das ist hier insbesondere tränentreibend, weil dann die Stopwörter mit Umlauten auch nicht herausgefiltert werden.

Für die Stopwords habe ich ein deutsches und ein englisches Array aus verschiedenen Quellen zusammengebastelt. Sie befinden sich in der Datei common.php.

Viele Hoster verbieten den Download von URLs mittels file_get_contents und meinen belehrend:

Warning: file_get_contents() [function.file-get-contents.php]: URL file-access is disabled in the server configuration in /home/oncodei/public_html/projects/phpseotools/functions/serp.php on line 62

Dann muss man halt CURL verwenden. Folgender Codeausschnitt versucht beides:

function info_oncode_seo_get_url($url) {
    // Try the common way, curl otherwise
    error_reporting(E_ALL);
    if (!$ret= @ file_get_contents($url)) {
        $ch= curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_USERAGENT, 'PHP');
        //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-0etch1+lenny1)');
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $ret= curl_exec($ch);
        curl_close($ch);
    }
    return $ret;
}

Die SERP funktion widerspricht ja eigentlich den Google-Bedingungen. Google hat das gemerkt und hat mich zuerst gewarnt und dann nach intensivem Testen gesperrt 🙂 . Ich hoffe mal, das betrifft nicht den ganzen Betrieb hier *pfeifend_und_unschuldig_kuckend_davonrenn*.

Zum Schluss

Ebenfalls interessant sieht der Site-Rank von Website-Spy aus. Ich werde ihn nächstens mal ausprobieren und vielleicht erweitern…

Achja, Heute bei AdSense gesehen: Will jemand den absolut über-PageRank 1 haben und dafür bezahlen? Ich kann das sogar toppen mit PageRank 0!
PageRank 1!

2 Gedanken zu “Kleine SEO-Tools mit Quelltext in PHP

  1. hey, danke das du deine tools veröffentlicht hast. gleich mal bisschen source lesen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.