Hashtaganalyseprojekt – Zukunft und Weiterführung

In Kürze werde ich das Dezember – 2017 Datenpaket hochladen.

Nach Sichtung der aktuell vorhandenen Speicherkapazitäten fällte ich folgenden Entschluss.

Die hochgeladenen Datenbanken zzgl. Dez. 2017 bleiben bis Ende Januar 2018 online und werden mit Upload vom Paket „01-2018“ aus der Google-Drive gelöscht und das Projekt wird dann mit dem Jahr 2018 entsprechend weiter geführt.

Twitter, Statistiken und erste Zahlen aus dem aktuellen Experiment


Im Zuge der Verfestigung des Fotoblogprojektes wurde der beigeordnete Twitteraccount konzeptionell neu aufgestellt.

Dies umfasst:
– Etablierung geeigneter Like, Follow und Retweetautomatismen via APIbasierte PHP-Scripte (Bots)
– „natürlich aussehende“ Aktivitäten (tageszeitabhängig, via Crontab einstellbar)
– Qualitätssicherung der Follow, Like und Retweets via Search-API-Operatoren (AND, OR)
– Ausrichtung der Hashtags (f. Retweet, Like und Follow) an etablierte und qualitativ extrem hochwertige Accounts (subjektive Wahrnehmung, orientiert sich an Motivwahl und technische Umsetzungen von Fotos)

Die Wirkung (mehr Follower, Impressionen auf Tweets, Profilbesuche) der eingesetzten Automatismen lässt sich – analog zu den Instagramboterfahrungen – relativ genau und „sauber“ prognostizieren. Etwas komplexer oder komplizierter ist natürlich die Optimierung der Interaktionen auf den Tweets, also: Like, Comments und Retweets. Gerade bei diesen Interaktionsformen lässt sich nun ablesen, ob denn der dargebotene Content (eigene Produktionen und Retweets) als „hochwertig“ empfunden wird. Besagter Account wird diesbezüglich über Instagram via IFTTT bespielt und bei den Motiven orientiere ich mich an den vielen Gesprächen mit meiner Laborpartnerin, dem sozialen Umfeld und den Klient_innen der Wobus & Lehmann GbR. Diese „Minimarktforschung“ wird natürlich um regelmäßige Accountscreenings (via Datenbanken, manuelle Sichtung etc.) ergänzt.

Die aktuell „erfolgreichen“ Tweets sind:
https://twitter.com/aufnahme_n/status/934355833374281729
https://twitter.com/aufnahme_n/status/934356220483461120

Cronjobs nur zu bestimmten Uhrzeiten ausführen

Im Zuge der Arbeiten und Experimente an den Twitterbot-Scripten benötigte ich eine Lösung, welche nur (!) zu büroüblichen oder zu „hellen“ Tageszeiten aktiv ist. Bewerkstelligt wird das Ganze nun via Plesk auf „Geplante Aufgaben“ mit folgender Syntax.

[Beispiel Nr.1]
*/30 10-18 * * *
– führe Cronjob alle 30 Minuten zwischen 10:00 und 18:00 aus

[Beispiel Nr.2]
*/30 6-22 * * *
– führe Cronjob alle 30 Minuten zwischen 06:00 und 22:00 aus

Der Abschnitt „*/30“ lässt sich selbstverständlich individuell anpassen: „*/15“ führt das jeweilige Script alle 15 Minuten aus …

Beispiel einer eher suboptimalen Werbung – hier eingetroffen

Hier die eMail mit meinen Gedanken als Kommentar.

„Hallo Sehr geehrte,“

Probleme mit der Konfiguration des Impressumscrapers?
Probleme mit der Konfiguration des eMail-Spam-Tools?

„Ich hoffe, Ihnen diese Notiz gut gefällt.“

Welche Notiz?
Warum soll die Verschwendung von Zeit und Ressourcen mir gefallen?

„Mein Name ist [xxx]. Ich unterstütze Unternehmen dabei, ihre Onlinepräsenz
und -verkäufe zu erhöhen, indem wir unsere Dienstleistungen im Rahmen von
Webdesign, Entwicklung und Marketing anbieten. “

Welche Unternehmen sind das?
Wo befinden sich Referenzen, Links auf Referenzen?

„Wir beschäftigen uns mit Technologien wie PHP, WordPress, Magento, Woocommerce, OpenCart, HTML, CSS,
kundenspezifische Anwendungsentwicklung, SEO und viel mehr. Mit diesen
Technologien können wir Geschäftsvorgänge automatisieren oder
Geschäftsabläufe effizienter erhöhen bzw. gestalten.“

Pauschale Auflistungen von „Technologien“ schrecken mich ab.

„Wenn Sie solche Anforderungen haben, die unsere Dienste nutzen könnte,
antworten Sie bitte auf diese E-Mail mit einem kurzen Hinweis auf Ihre
Voraussetzungen. Wir können dementsprechend über weitere Schritte
diskutieren. Danke für Ihre wertvolle Zeit. Wir wünschen Ihnen einen
angenehmen Tag.“

Unspezifische Hinweise auf Anforderungen schrecken ab.
Hinweise auf besagte Anforderungen zeigen mir, dass der Werbende sich nicht mit der GbR beschäftigt hat und uns keinerlei Problemlösungen (Was soll umgesetzt werden? Wie genau kann man uns für welches Budget oder welche Budgetgröße denn helfen?) anbieten kann!
Der Hinweis auf diese wertvolle Zeit ist deplatziert.

„Beste Grüße!
[xxx]
Vertriebsabteilung
Webseite – [xxx]
Telefonnummer [xxx]“

„Hinweis: Wenn Sie nicht an unseren Dienstleistungen interessiert sind,
können Sie mit einem einfachen „Nein“ antworten, und wir werden in Zukunft
von einer Kontaktaufnahme absehen.“

Wer garantiert mir die Richtigkeit dieser Ankündigung, wenn denn bereits mit der eMail unsere Zeit verschwendet wird?

Einen Twitterbot schnell mal mit PHP entwickeln?

Diese Frage stellte ich mir neulich, als ich über eines der aktuellen Experimente nachdachte.
Mein Lösungsansatz ist Folgender:

Grundlage:
Twitter for PHP
In der Beschreibung des Projektes befinden sich die wesentlichen Funktionen und Hilfestellungen. Ich habe unsere Scripte erweitert um:
request('favorites/create', 'POST', array('id' => $status->id));?> (Liken)
follow($status->user->screen_name);?> (Follow)

Die Likeanweisung zeigt auf, wie denn weitere Funktionen der Twitter-API über diese Bibliothek genutzt werden können. Hierzu schaut man sich den Endpoint, die Übergabeanweisung (GET, POST) und die konkreten Variablen (hier: ID -> PostID) an und überträgt das Ganze – entsprechend der jeweiligen Bedürfnisse – in die Scripte.

Ich habe für unsere Zwecke die – dort abgelegte – Beispieldatei „search.php“ verwendet und „ausgebaut“.

(1) Einbindung einer externen Config-Datei
require_once(dirname(__FILE__).'/config.php');

(2) Config-Datei-Inhalt
$consumerkey = “;
$consumersecret = “;
$accesstoken = “;
$accesstokensecret =“;
$action_like = “;
$action_follow = “;

Hinweis:
Die Tokens und Secrets lassen sich über die entsprechende Twitter-Entwickler-Seite abholen. Die Variablen „action_like“ und „action_follow“ füttern das Like- und Followscript mit den Tags, nach denen gearbeitet werden soll.
Ein Beispiel hierfür ist:
#BlackAndWhitePhotos OR #streetphotography OR #NightPhotography OR #bwphotography OR #artoftheday OR #streetarteverywhere OR #urbanart OR #photography

Links
Twitter: API – Search-API
Twitter: Suchoperatoren, Basics

Die Bots oder Scripte müssen dann natürlich „nur noch“ auf einen geeigneten Webspace geladen werden. Hier ist selbstverständlich auf Cronjobfähigkeit zu achten (Doku? Vertrag?) und diese Anwendungen laufen bei uns alle 30 Minuten für „Follow“ und jeweils im 15-Minuten-Takt für „Like“.

Der Aufwand war deutlich geringer, als ursprünglich gedacht und ich war hier nach ungefähr einer Stunde inkl. Testen / Fehlerbereinigungen soweit fertig. Interessant sind die beobachteten Effekte auf dem – so beworbenen – Account (Experiment!). Dieser produziert ca. 6.000 Impressionen und die „beliebtesten“ Tweets erhalten zwischen 1.000 und 1.500 Impressionen je Tag. Weiterführende Interaktionen (Summe: Likes, Retweets, Linkklicks, Medienerweiterung) gestalten sich zwar nicht so „mächtig“, bewegen sich jedoch im üblichen Rahmen von 3-5%.

[Delphi] Instagram – Likende auf Medien identifizieren und Datensätze speichern

[Datenquellen und Erklärungen]
„mylikers“ -> Anzahl der beobachteten Medien
„mytable“ -> Stringgridobjekt für die Ergebnisse
„oritable“ -> Stringgridobjekt für die Medienrohdaten
„oritable.cols[6].text“ -> Stringreihe für die Postcodes aus Instagram

procedure TForm1.getmylikers(mylikers: integer; mytable: TStringGrid; oritable: tstringgrid);
var lauf, lauf_gl: integer;
l_clear: integer;
JSONArray: tJSONArray;
JSONValue,jvalue: tJSONValue;
JSONPair: TJSONPair;
JSON, json_sub: TJSONObject;
size: integer;
j_array: tJSONArray;
s: string;
i,j: integer;
next_id: string;
chk_br: char;
HTTP: TIdHTTP;

begin
// => hole media_daten (unique-codes!)
debug.Text:=oritable.Cols[6].Text;
debug.Lines.Delete(0);
form1.Caption:=version+‘ ‚+inttostr(debug.Lines.Count-1)+‘ IDs eingelesen‘;
debug_03.Clear;

// init tabelle
with mytable do
begin
cells[0,0]:=’Nr.‘;
cells[1,0]:=’Username‘;
cells[2,0]:=’URL‘;
cells[3,0]:=’ID‘;
cells[4,0]:=’Post-ID‘;
cells[5,0]:=’Post-URL‘;
cells[6,0]:=’Tagcloud‘;
cells[7,0]:=’Postzeit‘;
rowcount:=1;
colcount:=8;
end;
for lauf_gl := 0 to mylikers do
begin
debug_01.Clear;
debug_01.ScrollBars:=ssboth;
randomize;
token.Text:=token.Items[random(token.Items.Count-1)];
debug_03.Lines.Add(‚https://api.instagram.com/v1/media/’+debug.Lines[lauf_gl]+’/likes?access_token=’+token.text);
try
HTTP := TIdHTTP.Create(nil);
form1.Caption:=version+‘ analysiere Likende, Bild: ‚+inttostr(lauf_gl)+‘ / ‚+inttostr(mylikers);
debug_01.Text:=HTTP.Get(‚https://api.instagram.com/v1/media/’+debug.Lines[lauf_gl]+’/likes?access_token=’+token.text);
JSONValue := TJSONObject.ParseJSONValue(debug_01.text);
JSON := TJSONObject.ParseJSONValue(debug_01.Lines.Text) as TJSONObject;
JSONArray := TJSONArray(JSON.Get(‚data‘).JsonValue);
http.free;
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
for i := 0 to JSONArray.Size – 1 do
begin
with mytable do
begin
cells[0,rowcount]:=inttostr(rowcount);
cells[1,rowcount]:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚username‘)).JsonValue.Value);
cells[2,rowcount]:=’https://instagram.com/’+(TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚username‘)).JsonValue.Value);
cells[3,rowcount]:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚id‘)).JsonValue.Value);
cells[4,rowcount]:=debug.Lines[lauf_gl]; // post-id
cells[5,rowcount]:=oritable.Cells[1,lauf_gl+1];
cells[6,rowcount]:=oritable.Cells[2,lauf_gl+1];
cells[7,rowcount]:=oritable.Cells[5,lauf_gl+1];
if zdb.Checked=true then
begin
save_infname:=prjlikeacc.Text;
save_likers:=useridlikeacc.Text;
with sql_befehle.Lines do
begin
clear;
add(‚INSERT INTO `interakt` (`name`, `url`, `uid`, `postid`, `posturl`, `tagcloud`, `inflid`, `inflname`, `postzeit`,`zeit`) Values (“’+cells[1,rowcount]+“‘, “’+cells[2,rowcount]+“‘, “’+cells[3,rowcount]+“‘, “’+cells[4,rowcount]+“‘, “’+cells[5,rowcount]+“‘, “’+escape(cells[6,rowcount])+“‘, “’+save_likers+“‘, “’+save_infname+“‘, “’+cells[7,rowcount]+“‘, “’+datetimetostr(now)+“‘ );‘);
fdquery2.ExecSQL(sql_befehle.text);
form1.Caption:=version+‘ in DB eingetragen …‘;
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;
end;
rowcount:=rowcount+1;
end;
end;
except
form1.Caption:=version+‘ Recherche und Analyse hat nicht funktioniert …‘;
end;
delay(50);
grdColWidth(mytable, 40);
end;
SaveToCSV(mytable,verz+’data\’+save_likers+‘.csv‘);
end;

Aufruf der Prozedur
getmylikers(strtoint(anzmedia.Text), table_likers, m_rohdaten);

Twitter: Start eines Experimentes und erste Zahlen

Nach einigen Gesprächen und diversen Diskussionen entschied ich mich zur Freigabe eines spezielleren Accounts zwecks Analyse der Fragen:
– Wie funktioniert das Ding mit Twitter eigentlich?
– Wie lassen sich bei Twitter mit welchem Aufwand (!) Autoritäten etablieren?
– Wie funktioniert bei Twitter die Statistik und die Auswertung der systemeigenen Statistik?
– Wie funktioniert bei Twitter die Verwertung der Hashtags?

Hier nun der erste Zahlenstand mit (Re)etablierung des Accounts.

Der Account bedient folgende Themen / Inhalte:
– Momentaufnahmen, Schnappschüsse (Digital, div. Rundreisen und sonstige Motive)
– Neu: Analogfotografie und Dokumentation der „Experimente“ mit div. Materialien, Farben und Motive
– Retweets: überwiegend S/W, monochrome
– Grundbefüllung via IFTTT vom Instagramaccount ausgehend

Die aktuellen Zahlen und auch Rückmeldungen via Twitter-Kontakte sind soweit überraschend gut und ich werde zeitnah analysieren, wie sich der Beziehungsaufbau bei dem System effektiver organisieren lassen kann.

Fragen, Austauschanregungen und Kontakt bitte via bekannten Telefonnummern (siehe Impressum)

Twitter mit Delphi ansprechen?

Durch Zufall entdeckte ich eine recht elegante Möglichkeit der Ansprache von Twitter:

Write a Twitter Client with Delphi XE7

Der Autor bezieht sich hier auf eine vorliegendes Demo-Projekt und im Artikel wird dargestellt, wie – im Speziellen – die Twitter-API über erstaunlich einfache Vorgehensweisen angesprochen werden kann. Interessant ist bei dem Projekt auch, dass das Delphi-Objekt ähnlich simple Verarbeitungsfunktionen für Foren und Facebook liefern kann.

Diese neuen Erkenntnisse erlaubten es mir nun, das angedachte Projekt „Twitterbot“ recht kurzfristig zu starten und in der Version 0.2b den Geschäftsfreund_innen und Klient_innen zu übergeben. Hier lege ich allerdings die Schwerpunkte auf:

– Datenerhebungen zu den Tags, Trends und Influenceraccounts
– Dateninterpretation zu der (halb)automatischen Pflege von Accounts

Xing – eine interessante Plattform für Inspirationssuche, Erfahrungsaustausch und Akquise?

Viele Gespräche rund um unsere xingbasierte Strategien und allgemeine Überlegungen animierten mich kürzlich zu einem größeren Diskussionsbaum.
Hierfür suchte ich mir eine sehr große und etablierte Gruppe aus dem Spektrum „Akquise“ und „Akquisetechniken“ und engagierte mich in einem Austausch rund um die Rolle der Social Media im allgemeinem Umfeld der Kund_innengewinnung.
Leser_innen, die mich persönlich kennen, werden sicherlich meinen Stil bzgl. XING einschätzen können und besagte „Gangart“ wurde bewusst so gelenkt, dass ich diverse Links aus diesem Blog da streuen konnte (i.d.R. waren das Nachfragen, Bitte um Quellen etc.). Hier war für mich und einen kompetenten Kollegen natürlich interessant, mal zu schauen, wie denn die Rückclicks waren und was sich – darüber hinaus – entwickeln kann.

Also:
21.10.2017 -> Beginn der Diskussion und Streuen der Links, 4 Clicks mit ca. 2,5 Min Aufenthalt
22.10.2017 -> 0 Clicks
23.10.2017 -> 0 Clicks
24.10.2017 -> 0 Clicks
25.10.2017 -> 2 Clicks, sauber identifizierbar als „Clicks von neugierigen Freund_innen“ und aus der Zählung genommen
26.10.2017 -> 1 Click mit ca. 10 Min Aufenthalt, als Litauen

Die Zahlen wurden via Piwik erfasst und sie beschreiben nur die Besucher_innen, welche das Erfassen der Zahlen auch zulassen.
Sicherlich ist dieser kleine Test keinesfalls repräsentativ oder tauglich zur Begutachtung von XING als Gesamtkomplex, aber mir fällt nun – mehr oder weniger – „final“ auf, dass:
– Angebotsstreuungen viel zu wenig konsumiert werden
– Angebotsstreuungen, Linkstreuungen im Rahmen der organischen Marketingaktivitäten kaum sichtbare Effekte nach sich ziehen
– Zielgruppen und / oder kompetente (!) Marktteilnehmer_innen schlichtweg nicht aktiviert werden können

Die Gegenparts zu Xing sind hier klassisch Google mit ~300 Visits / Tag auf Longtails, div. Fachforen mit ~30-50 Visits / Tag auf Deeplinks, Facebook mit 10-20 Visits / Tag auf Deeplinks und Hauptdomain und diverse Direktzugriffe (vmtl. durch Weiterempfehlungen und gezielte Recherchen).

Mein derzeit finaler Eindruck bzgl. der allgemeinen These zur Brauch- und Nutzbarkeit von Xing als Werbemedium ist: Das Social Medium hat seine Existenzberechtigung in der Organisation der Kontakte, sofern man diese sensiblen Datensätze offen legen möchte. Auch ist das Medium spannend für vergessliche Menschen im Sinne von Geburtstagsreminder oder für die Organisation von Workshops und Events. Im Sinne der Akquise, des Austausches und auch der Marktrecherche, kann man diese Plattform schlichtweg nicht nutzen. Natürlich hängt der negative Eindruck NICHT mit der Plattform – an sich – und der Umsetzung der Plattform im Sinne der Technik, des Layouts usw. zusammen, sondern primär mit den aktiven Accounts und hier hat sich Spam, Eigenwerbung, Contentmarketing und „Thesendreschen“ leider etabliert.