How To: Performance Marketing automatisieren – MacGyver Style
Der Beitrag ist ein Extrakt des Vortrags, den ich bei den codetalks zum Thema „Performance Marketing automatisieren“ gehalten habe. Die Sicht und Schreibweise ist eher technisch geprägt, ist aber hoffentlich auch nicht IT-Menchen gut verständlich. Die Slides zum Vortrags gibt es bei Speakerdeck.
Einleitung – Der Fortschritt in der IT
Vor ca. 3 Jahren bin ich bei shopping24 in der IT eingestiegen: Operations, Hosting, Artikeldaten-Management, BI – also eher technisch gesprägt. Ich durfte die Skalierung in der IT hautnah mitbekommen: wir sind von ca. 2 Millionen auf über 20 Millionen Produkte gewachsen, von ca. 500 Suchanfragen pro Minute auf 10.000 RPM. Das lief nicht immer ohne Probleme, gelöst haben wir letztendlich aber alle Herausforderungen. Warum? (a) shopping24 hat eine extrem gute IT. (b) Wir haben uns angeschaut, wie die coolen Kinder der Branche (etsy, Twitter & Co) diese Probleme gelöst haben. Kurz: es wurde der Fortschritt in der IT Branche genutzt.
Vor ca. 1,5 Jahren habe ich zusätzlich den Bereich Performance Marketing übernommen. Ich hatte Erfahrungen in dem Bereich, hätte mich allerdings nicht als SEA Spezialist bezeichnet. Mein Bild vom Performance Marketing war im Wesentlichen folgendes: Zahlennerds & Prozess-Fanatiker. Wir haben in IT-Ops auch alles gemessen (Stichwort: logstash, graphite) und Prozesse definiert – aber den „Performance Marketing Menschen“ habe ich mir in beiden Beziehungen noch krasser vorgestellt.
Als ich dann den Bereich und Prozesse kennengelernt habe, ist das Weltbild schnell zusammengebrochen. Zahlen hatte das Performance Marketing gut im Griff. Prozesse wirkten aber – sagen wir – angestaubt. Das ist kein Diss gegen Marketing Teams (gehöre jetzt selber dazu). Es geht nur um das Gefühl, dass die Schnelllebigkeit der IT in den letzten Jahren nicht in alle Bereiche im E-Commerce angekommen ist. Und das war bei shopping24 kein Einzelfall.
In dem Beitrag geht es darum, wie wir die Prozesse Schritt für Schritt umgeworfen haben und heute deutlich effizienter unterwegs sind. Es geht darum Ansätze aus der IT in die Marketing Welt zu bringen. Und es ist ein Appell, dass Marketing und IT/Entwicklung in Unternehmen enger zusammen arbeiten.
SEA – Das einfache Grundprinzip
Wenn ich über den breiten Bereich des Performance Marketing spreche, beziehe ich mich in diesem Beitrag nur auf den Teilbereich Suchmaschinenmarketing (kurz: SEA) – den meist größten Bereich des Performance Marketing. Den Prozess erkläre ich am Beispiel von Google AdWords. Die Prinzipien können aber ohne Probleme auch auf Bing, etc. übertragen werden.
AdWords ist in seinem Grundprinzip sehr einfach. Es gibt je Suchanfrage Werbefläche in den Suchergebnissen auf Google. Auf diese kann geboten werden. Um eine Anzeige zu schalten, werden im Wesentlichen sechs Schritte durchlaufen:
- Keyword aussuchen – in diesem Beispiel „Kleider“.
- In Account-Struktur einbuchen. Google AdWords ist wie eine Ordnerstruktur mit Root-Foldern und Subfoldern aufgebaut. Heißen dort Kampagnen und Anzeigengruppen. In eine solche Struktur muss jedes Keyword eingeordnet werden.
- Anzeigentexte schreiben – in diesem Beispiel „Aktuelle Kleider Online – Jetzt aktuelle Kleider bestellen. Aktuelle Trends & 0€ Versandkosten.“
- Zielseite definieren – es wird festgelegt, auf welcher Webseite der Nutzer landet, wenn er auf die Anzeige geklickt hat.
- Gebot bestimmen. Der Werber teilt Google mit, was er maximal bereit ist je Click auf das Keyword auszugeben (CPC). Jeder Werbeplatz wird nach dem Auktionsvefahren vergeben. Im Wesentlichen bestimmt das Gebot an welcher Stelle die Anzeige ausgespielt wird. Ist es zu niedrig, wird die Anzeige gar nicht oder weit unten ausgespielt. Ist der CPC hoch genug wird die Anzeige oben ausgespielt. Heißt auch: ich sollte gut berechnen können, was ein Besucher wert ist. Gebote können von 1 Ct. bis zu über zehn Euro im Versicherungsbereich gehen. Im E-Commerce reden wir meist über Gebote zwischen 10 Ct und 2 Euro.
- Einstellungen vornehmen – die Wichtigste davon ist der MatchType. Dieser definiert wie ähnlich Suchbegriffe von Nutzern zu dem gebuchten Keyword sein dürfen, damit Anzeigen immer noch ausgespielt werden. Wenn wir den MatchType einmal in die SQL Welt übertragen, dann ist der MatchType der Unterschied zwischen (a) einem like ‚keyword‘ aka „exact“, (b) einen like ‚keyword%‘ aka „phrase“ oder (c) einem like ‚%keyword%‘ aka broad.
- Keyword ist live!
SEA – What sucks most?
Klingt erst einmal nicht so schwer. Was beschwere ich mich dann in der Einleitung? Schauen wir einmal genauer auf den Prozess und machen das Ganze gedanklich ein wenig größer: wir buchen nicht nur 1.000 Keywords ein, sondern 1.000.000 Keywords. Konkret gibt es für mich drei Ärgernisse bei einem manuellen Prozess:
Ver(sch-)wendung von Zeit
Es wird zu viel Zeit auf Keywords verwendet, die später nicht relevant sind und auch keine Umsätze machen. Denken wir noch einmal an den Ablauf zurück: Keyword wählen, in Struktur einordnen, Text schreiben, Zielseite definieren und Gebot berechnen. Das kann man so machen. Und wenn ich das für ein reichweitenstarkes Keyword wie „kleider“ mache, dann ist es vollkommen fein. Dann hätte von mir aus Goethe die Anzeigentexte schreiben können. Dann können wir Alpha Go alle Implikationen eines gewissen CPC voraussagen lassen.
Nun ist es aber in vielen Geschäftsmodell nicht so, dass man ausschließlich auf die „einfachen“, volumenstarken Keywords gehen kann. Denn diese Keywords sind in der Regel auch sehr teuer. Oft ist es ganz das Gegenteil: gebucht werden Longtail- und Nischenkeywords. Schauen wir einmal auf Keywords einer Kampagne „Kulturtaschen“. Für das Keyword „kulturtasche“ mit über 400 Clicks in wenigen Tagen wäre ein manueller Prozess fein. Ein Keyword „kulturbeutel damen groß“ hat allerdings keinen Klick bekommen. Würdet ihr für ein solches Keyword viel Zeit investieren wollen? Ich nicht! Der Wert eines Keywords ohne Impressions, Klicks und Umsätze ist gleich Null.
Und doch wird in vielen SEA Abteilungen noch viel manuelle Arbeit verwendet, um alle Keywords hochzuladen und zu bearbeiten. Das schreit nach Automatisierung.
Wenn wir die Keywords hochgeladen haben und sehen, welche davon Impressions bekommen und geklickt werden, dann kann (und sollte) ich immer noch mit dem manuellen Optimieren anfangen. Es geht also nicht um die eigentliche Arbeit der Optimierung, sondern um die Frage: „wann und wie mache ich die Arbeit am cleversten?“.
Willkürlicher Aufbau von Account-Strukturen
Viele Account-Strukturen sind in meinen Augen suboptimal. Ich wette, dass 2/3 Account sind thematisch aufgebaut sind. Im einen Modeshop gibt es vielleicht eine Kampagne zu Kleidern, darunter dann Anzeigengruppen für Etuikleider, Abendkleider, Sommerkleider, etc. Darunter dann die Keywords.
Klingt erst einmal gut, aber nur bis Doppeldeutigkeiten auftauchen. Ein Shop verkauft Sport-BHs. Wo werden die noch einmal eingeordnet? Zu Unterwäsche oder zu den Sportsachen? Das große Suchen beginnt.
Richtig schlimm wird es, wenn eine neue Person ein AdWords-Konto übernimmt. Irgendwie muss es doch etwas geben, was eine Struktur reproduzierbar und eindeutig macht. Ich möchte etwas wie unique key constraints in Datenbanken. Dort wird mir gesagt, wenn es einen Eintrag schon gibt.
Mißachtung von vorhandenen Datenquellen
Punkt 1 des Adwords Prozesses war die Frage nach dem Keyword. Das ist eine essentielle Frage. Ohne die passenden und genug Keywords werde ich nicht viel Traffic auf die Webseite bekommen. Die Frage ist: wie finde ich diese Keywords?
Klassisches SEA Vorgehen ist: ein Google Tool nach Vorschlägen fragen (Keyword Planner) und den Suchanfragen-Bericht in AdWords durchschauen. Der Suchanfragenbericht gibt aus was die Leute eingegeben haben, wenn sie auf euer Keyword geklickt haben. Bei einem Keyword „kleider“ gebucht im MatchType broad kann es die Suchanfrage nach „kleider“ sein; aber auch „kleider kaufen“ oder „elegante kleider“. Beides sind Keywords, die direkt – also MatchType exact und phrase – eingebucht werden können um den bestmögliche Anzeigentexte für die Keywords zu schreiben. Das sind SEA-only Tools.
Da muss es aber nicht aufhören. In einem Shop gibt es so vieles, was eine gute Quelle für Keywords ist. Wer ein wenig weiter denkt, schaut sich vielleicht einmal an welche Begriffe Leute im Online-Shop in die Suche eingeben. Oder noch weiter: die Suchvorschläge im SearchSuggest, die Kategorien oder andere Filter. Für die Entwickler wird der Aufruf einer API für Suchvorschläge und das Parsen einer JSON-Antwort eine Fingerübung sein. Behindern tut hier nur die Silodenke.
Die Übertragung aus der IT-Welt
Wenn ich mir die genannten drei Herausforderungen anschaue – (a) Effiziente Verwendung von Zeit durch Automatisierung, (b) eine eindeutige Account-Struktur, (c) die gemeinsame Verwendung von Datenquellen – dann waren/sind das auch Herausforderungen in IT Welt. Aber zumindest sind wir dort nach meinem Empfinden schon einen Schritt weiter.
Unsere virtuellen Server werden nicht mehr von Hand aufgesetzt, sondern automatisch via Ansible gestanzt. In Datenbanken gibt es so etwas wie ein 3. Normalform, um doppelte und redundante Daten zu verhindern. Und dank Splunk oder Graylog + Logstash ist es heute üblich zentrale Logverwaltungen aufzubauen.
Die Frage ist also: wie kann ich bestehende Technologie und Datenquellen auch im SEA nutzen, um Prozesse zu verbessern und die genannten Probleme zu beseitigen. Was ist konkret möchte ist ein Zaubertool, welches mir:
- eine automatische Account-Struktur aufbaut und Texte schreibt
- automatisch Zielseiten bestimmt
- andere Datenquellen als Input nimmt
Die theoretische SEA-Zaubermaschine
Bei der Zaubermaschine möchte ich nicht ein komplett neues System aufbauen, sondern auf vorhandene Technologien aufsetzen. So wie MacGyver es in brenzligen Situationen macht: schauen was da ist, aus Büroklammer, Seil + x eine Bombe bauen und dann den Schurken stellen.
Konkret möchte ich vier Elemente eines Online-Shops nutzen um ein halb-automatisiertes SEA-System zu bauen:
- die interne Suche
- Strukturierte Daten/Entitäten
- BI
- AdWords – genauer die AdWords-API
Schritt 1: Automatisches Aufbauen einer Account-Strukur & Texte
Das Stichwort ist Entitätenerkennung. Bei der Entitäten-Erkennung geht es darum die Bedeutung von einzelnen Worten zu erkennen. Nehmen wir das Beispiel: „adidas originals beckenbauer schuh schwarz“. Es soll erkennen, dass (a) „adidas originals“ eine Marke ist, (b) „beckenbauer“ eine Produktlinie der Marke „adidas originals“ ist, (c) dass „Schuh“ eine Kategorie ist und (d) „schwarz“ eine Farbe. Technologisch kann hinter eine Entitätenerkennung ganz viel stecken (Stichwort: n-gramms, Wort-distanzen, etc.) oder ganz wenig (Stichwort: einfacher String-Vergleich). Wer die Entity-Erkennung sehr gut machen möchte, der sollte sich noch mit Stemming beschäftigen. Stemming bezeichnet in der Suche das Zurückführen auf eine Grundform. Jacke und Jacken haben den gleichen Stemm – und damit auch die selbe Suchergebnisse.
Die Basis der Entitätenerkennung stellt immer eine gepflegte Liste von Attributen im Shop da. Irgendjemand muss sich hinsetzen und aufschreiben, welche Marken es gibt. Muss aufschreiben, welche Kategorien und Farben es gibt. Das klingt erst einmal viel. Allerdings liegen diese Liste zum Großteil ohnehin schon vor, z.B. in Form von Hauptnavigation oder Filter.
Wie auch immer die Entitätenerkennung jetzt technisch gelöst habe, habe ich folgendes gewonnen: ich erkenne die Bedeutung von Keywords. Das ist die Basis von vielem. Mit diesem Wissen kann ich nun (a) Texte schreiben, die nicht bescheuert klingen und (b) eine Accountstruktur anlegen, in die Keywords automatisch eingebucht werden können. Damit kann ich die ersten zwei Schritte meines Prozesses automatisieren.
Account-Struktur: Von der Entitätenerkennung bekomme ich alle erkannten Bestandteile eines Keywords geliefert. Damit kann die Account-Struktur wie ein Baum aufgebaut werden. Es wurde eine Marke erkannt – dann gehe in den Strang. Es wurde die Marke „Esprit“ erkannt, dann gehe weiter in diesem Ast. Es wurde noch die Kategorie „Pullover“ und die Farbe „rot“ erkannt – dann gehe in diesen Ast und lege hier das Keyword an. Wir gewinnen eine Account-Struktur die genau eine(!) Stelle, an der ein Keyword zu finden ist.
Eine gute Account-Struktur ist u.a. wichtig, um (a) in der Folge möglichst gut Gebote berechnen zu können und (b) den Traffic möglichst genau steuern zu können.
Texte schreiben: Bei Texten kann ich nun mit klassischen Templates arbeiten. „Jetzt [Produktgruppe] von [Marke] kaufen. Trendige [Produktgruppen] der Trendmarke [Marke] für dein Outfit. Große Auswahl und günstig einkaufen.“ Passt gut für Kleider von Betty Barcley und auch Pullover von Esprit.
Schritt 2: Automatisches Setzen einer Landingpage
Bei der Landingpage mache ich es mir ganz einfach. Ich nehme das Keyword und werfe es so gegen die Suche. Bei s24 sieht die URL damit sehr einfach aus. http://www.shopping24.de/?suche=[keyword]. Voraussetzung ist natürlich eine funktionierende Suchtechnologie. Zwei direkte Vorteile gewinne ich aus der Nutzung der internen Suche für SEA:
- einfach zu automatisieren
- auch bei Longtail-Begriffen kann ich genaue Ergebnisse zeigen. Klassisch wird heute im Performance Marketing noch viel auf Kategorien eingesprungen. Aber finde einmal eine Kategorie zu „Abendkleider mit tiefem Rückausschnitt“.
Und das sind nur zwei Vorteile – mehr gibt es noch später. Ich wünschte wir hätten das mit Automatisierung von SEA und Sucheinsprüngen erfunden. Doch Amazon macht das schon seit Jahren so: über 99% der SEA-Einsprünge bei Amazon gehen auf Suchseiten. Und damit schaffen sie es bei dem riesengroßen Sortiment effizient auf alles mögliche zu buchen.
Schritt 3: Gebot berechnen
Bei Setzen von Startgeboten kann ich es einfach machen oder kompliziert. Einfach: ich starte mit einem ungefähren Start-CPC für alle Keywords. Kompliziert: ich schaue mir an wie Keywords mit ähnlich erkannten Entitäten funktionieren und welche Gebote dort gut sind. Ein Gebot von „Kleid blau“ kann für das Keyword „hellblau“ übernommen werden. Allemal besser als raten.
Schritt 4: Einstellungen wie MatchType
Bei MatchTypes mache ich es mir wieder einfach. Ich buche ein Keyword einfach in allen Ausprägungen. Ihr erinnert euch in like und %-Zeichen.
Schritt 5: Zusammensetzen via Google API
Mit dem Wissen der vorherigen Schritte kann ich nun anfangen mein System zusammenzusetzen. Über die Entitätenerkennung und eine vorher definierte Baumlogik erstellt ich meine Account-Struktur. Über Templates schreibe ich meine Texte. Die Suchseite ist meine Landing-Page und über die Google API lade ich das Ganze hoch.
Im Grund wurde damit ein System geschaffen, in welches ich vorne Keywords reinwerfe und diese direkt in den Account gebucht werden. Es sind keine weiteren Schritte notwendig.
Selbstoptimierung durch Suche
Bisher ist das schon einmal ein schönes automatisiertes System, welches meine genannten Probleme – Zeitverwendung, undurchsichtige Accounts und übergreifende Datennutzung – löst. Darüber hinaus ist es aber noch viel mehr. Durch füttern dieses Zaubertools mit Keywords entsteht ein Kreislauf.
- Voraussetzung: Es gibt eine funktionierende Onsite-Suche. Wenn diese gut ist, dann berücksichtigt sie Nutzerinteraktionen bei der Sortierung der Produkte – also u.a. Klicks auf Produkte auf Suchergebnisseiten.
- Es gibt das oben beschriebene SEA-Zaubertool mit dem wir sehr schnell viele Keywords einbuchen können. Damit bekomme ich mehr Traffic auf den Shop.
- Den Traffic leiten wir per Default auf die Suchseiten.
- Der Suchverantwortlich schaut sich an, wo auf der Suche noch Optimierungspotenzial ist. Wo fehlen noch Synonyme? Wo gibt es noch Probleme mit Stemming? Gleichzeitig lernt die Suche automatisch, welche Produkte Nutzer bei welchen Suchanfragen interessieren.
- Die Conversion Rate der Suche – und damit auch des Shops – steigt durch die Optimierung. Für Keywords können damit höheren CPCs geboten werden.
- Mehr Traffic …
Wrap Up
Automatisierung im Performance Marketing muss kein Hexenwerk sein. Ganz im Gegenteil: aus bestehenden Komponenten kann man sich schon relativ viel zusammenbauen. Was es zum Start braucht ist der Willen sich mit Automatisierung und IT/Entwicklung im Performance Marketing auseinanderzusetzen.
Ich sage nicht, dass der Prozess der Automatisierung einfach ist. Automatisierung ändert alles, erfordert neue Prozesse und kann nicht alleine von einem Marketing Department geschafft werden. Auf der anderen Seite: Manche IT beschwert über direkten Einfluss auf das Geschäftsergebnis. Hier ist die Möglichkeit. Mein Plädoyer ist:
- Mehr Austausch zwischen IT & Marketing. Sprecht miteinander!
- Gebt dem Marketing eigene Entwicklungs-Ressourcen; und sei es auch nur für „einfache“ Programmieraufgaben. Oder noch besser: Marketing – lernt Hacken.
- Setzt euch mit dem Thema Automatisierung unter Nutzung von vorhandenen Technologien auseinanderzusetzen. In eurem Shop steckt schon mehr als auf den ersten Blick.
Robin Poppenberg ( )
danke jungs das war eine sehr inspirierende Session! Werde mich definitiv mit Google #Adwords Scripts beschäftigen! #bchh16
Dennis Kallerhoff ( )
Sehr cool. Danke für das Feedback. Dann haben wir das Ziel erreicht. #bchh16
Stefan Hölscher ( )
Performance Marketing automatisieren – MacGyver Style blog.kallerhoff.org/2016/05/16/per… via @WuselDusel83
Ines Schaffranek ( )
Performance Marketing automatisieren – MacGyver Style blog.kallerhoff.org/2016/05/16/per… via @WuselDusel83
Mario Hillmers ( )
Mario Hillmers hat diesen Artikel auf facebook.com geliked.
Claudia Schneidereit ( )
Claudia Schneidereit hat diesen Artikel auf facebook.com geliked.
Christian Scheel ( )
Christian Scheel hat diesen Artikel auf facebook.com geliked.
Sven Bohnsack ( )
Sven Bohnsack hat diesen Artikel auf facebook.com geliked.
Kai Henke ( )
Kai Henke hat diesen Artikel auf facebook.com geliked.
Falcao Riegamer ( )
Falcao Riegamer hat diesen Artikel auf facebook.com geliked.
Özgür Vitti ( )
Özgür Vitti hat diesen Artikel auf facebook.com geliked.
Sandra Zekavica ( )
Sandra Zekavica hat diesen Artikel auf facebook.com geliked.
Denis Aus K ( )
Denis Aus K hat diesen Artikel auf facebook.com geliked.
Apostolis Kourmatzoglou ( )
Apostolis Kourmatzoglou hat diesen Artikel auf facebook.com geliked.
Sebastian Altenberend ( )
Sebastian Altenberend hat diesen Artikel auf facebook.com geliked.
Uli Vergas ( )
Uli Vergas hat diesen Artikel auf facebook.com geliked.
Sebastian Stach ( )
Sebastian Stach hat diesen Artikel auf facebook.com geliked.
Sadik Kurtulbas ( )
Sadik Kurtulbas hat diesen Artikel auf facebook.com geliked.
Daniel Bichler ( )
Daniel Bichler hat diesen Artikel auf facebook.com geliked.
Tarek Müller ( )
Tarek Müller hat diesen Artikel auf facebook.com geliked.
Hannes König ( )
Hannes König hat diesen Artikel auf facebook.com geliked.
Olaf Grueger ( )
Olaf Grueger hat diesen Artikel auf facebook.com geliked.
Andreas Haack ( )
Andreas Haack hat diesen Artikel auf facebook.com geliked.
Remigiusz Smolinski ( )
Remigiusz Smolinski hat diesen Artikel auf facebook.com geliked.
Julian Juenemann ( )
Julian Juenemann hat diesen Artikel auf facebook.com geliked.
David Rahnaward ( )
David Rahnaward hat diesen Artikel auf facebook.com geliked.
SebastianAltenberend ( )
SebastianAltenberend hat diesen Artikel auf twitter.com geliked.
AKRA GmbH ( )
AKRA GmbH hat diesen Artikel auf twitter.com geteilt.
Bastian ( )
Bastian hat diesen Artikel auf twitter.com geteilt.
Stefan Munko ( )
Stefan Munko hat diesen Artikel auf twitter.com geteilt.
Daniel Jutrosinski ( )
Daniel Jutrosinski hat diesen Artikel auf twitter.com geteilt.
shopping24.de ( )
shopping24.de hat diesen Artikel auf twitter.com geteilt.
Christine Enterlein ( )
Christine Enterlein hat diesen Artikel auf twitter.com geliked.
Daniel Jutrosinski ( )
Daniel Jutrosinski hat diesen Artikel auf twitter.com geliked.
Manuel Schmutte ♥ ( )
Manuel Schmutte ♥ hat diesen Artikel auf twitter.com geliked.
Britta Schütt ( )
Britta Schütt hat diesen Artikel auf twitter.com geliked.
Timo Zuppelli ( )
Timo Zuppelli hat diesen Artikel auf twitter.com geliked.
Stefan Schubert ( )
Stefan Schubert hat diesen Artikel auf twitter.com geliked.
AKRA GmbH ( )
AKRA GmbH hat diesen Artikel auf twitter.com geliked.
Robin Poppenberg ( )
Robin Poppenberg hat diesen Artikel auf twitter.com geliked.
Bastian ( )
Bastian hat diesen Artikel auf twitter.com geliked.
Moritz Bappert ( )
Moritz Bappert hat diesen Artikel auf twitter.com geliked.
Oliver Steiner ( )
Oliver Steiner hat diesen Artikel auf twitter.com geliked.
Lutz ( )
Lutz hat diesen Artikel auf twitter.com geliked.
eCommerce Manager ( )
eCommerce Manager hat diesen Artikel auf twitter.com geliked.
Leon Ploesser ( )
Leon Ploesser hat diesen Artikel auf twitter.com geliked.
Alena ( )
Alena hat diesen Artikel auf twitter.com geliked.
Posted By Dennis Kallerhoff — ( )
Diese/r Article wurde auf blog.kallerhoff.org erwähnt
Posted By Dennis Kallerhoff — ( )
Diese/r Article wurde auf blog.kallerhoff.org erwähnt
Veröffentlicht von Dennis Kallerhoff — ( )
Dieser Article wurde erwähnt auf blog.kallerhoff.org
Veröffentlicht von Dennis Kallerhoff — ( )
Dieser Article wurde erwähnt auf blog.kallerhoff.org