Projektannahme aus dem Bereich „Gebäudeservices“.

Vor einigen Tagen kontaktierte mich ein alter Geschäftsfreund und suchte hier unsere Hilfe. Er besitzt eine beeindruckende Reputation in seiner Branche und seine Firma / Person ist die Grundlage einer beliebten Serie, die derzeit auch auf Netflix läuft. Wir redeten letzten Freitag sehr lange über die Möglichkeiten der Sichtbarkeitssteigerungen im WWW und die Etablierungen von Socialmediaaccounts (hier: Instagram) zum Zwecke der stärkeren / effektiveren Ansprache von Zielgruppen. Er berichtete mir auch von szenetypischen / klischeehaften Erfahrungen, die er immer wieder mit unserer Branche macht.

Nach einigen Überlegungen und auch engagierten Diskussionen entschied ich mich, ihm zu helfen, obwohl ich Geschäftsfreund_innen lieber an geeignete Kolleg_innen empfehle und die aktuellen Zahlen sind:

[Instagram]
-> Start des Accounts: 16.03.2018 mit 0 Follower
-> Stand: 20.03: 52 Follower / 10-15 Interaktionen, relativ geringe Botdichte
-> Maßnahmen: Promo via „Instafinal“ zzgl. „Shoutout“ über das Vehikel der „Pseudohobbyprojekte“
-> Prognose: Ende März 100-150 Follower

[Traffic, Google & Co.]
-> Hauptkeywords ([Dienstleistung]+[Stadt]), N/A auf Google-Seite 4/5 (schwankend) innerhalb von ca. 24h via Verlinkung in den „Pseudohobbyprojekten“
-> Trafficvolumina von niedrig 2-stellig / 24h (via organische Quellen) auf niedrig – mittel 3-stellig / 24h (via organische Quellen)

Nach Xovi und den Webmastertools wurden die folgenden (interessanten) Keywords und Phrasen (neu) positioniert und schwankend entsprechend auf höhere Plätze (Seite 1-3).

(1) Gebäudeservice
(2) solaranlagenreinigung
(3) bodenreinigung
(4) privatreinigung, privat reinigung, privat-reinigung
(5) fensterreinigung
(6) boden pflegeöl
(7) glasfenster reinigung, glas fenster reinigung, glasfensterreinigung
(8) büroreinigung + stadt
(9) [putzen] + fassadenreinigung + stadt
(10) [gebäudereinigung] + stadt

Der OVI-Sichtbarkeitsindex stieg kurzfristig um ca. 50% an, wobei diese Metrik hier eine eher untergeordnete Rolle spielt.

Instagram – Livevideos (für weitere Verarbeitung und Vermarktung) downloaden

Im Zuge der Etablierung diverser „Pseudohobby“-Projekte mit Schwerpunkt auf „Fotos“ und „Analogfotos“ suchte ich nach einer Lösung, welche einmal abgedrehte Livevideos für die Verteilung in bspw. Youtube-Konstellationen überhaupt erlaubt. Instagram liefert mit den Boardmitteln / via App die Downloadoption – als Feature – direkt nach der Videobeendigung, allerdings ohne Kommentare der jeweiligen Zuschauer_innen.
Eine interessante Kompensationslösung liefert das Chrome-Plugin „Chrome IG Story„. Die Bedienungsanleitung ist laiengerecht gestaltet und formuliert. Das Download hat das Format „mp4“ und die Qualität der Datei entspricht den üblichen Standards.

HashtagDB-Client (Update auf 0.6B)

Das Hashtagdatenbankprojekt wurde um eine Basis-Auswertungsfunktion erweitert.

Diese visualisiert nun die Reichweitenveränderungen der zu analysierenden Hashtags in folgenden Optionen:

(a) Darstellung der Absoluten Veränderung
(b) Darstellung der prozentualen Veränderung, BEZOGEN auf den ersten Datensatz (i.d.R. Monatsanfang)
(c) Darstellung der prozentualen Veränderung, BEZOGEN auf den Vorgängerdatensatz

Aktueller Stand zum Twitterexperiment mit Schwerpunkt auf Fotogafie (auch analog)

Im Rahmen diverser Contentmarketingaktivitäten entschied ich mich für eine stärkere Beschäftigung mit der sog. „analogen Farbvergrößerung“ und ich war sehr erstaunt darüber, wie gut die Motive u.a. auf den beigeordneten Instagramaccounts angenommen werden (verifiziert via Likes, Comments und Followerentwicklungen).

Hier prüfte ich über die hausinternen Hashtagmonitoringalgorithmen tiefer und analysierte:
– Welche Tags werden (derzeit) massiv in Verbindung mit dem Thema (Farbanalog) bei Instagram verwendet?
– Welche Tags existieren rund um die Metaebene „Lomografie“ und lassen sich diese mit „Farbanalogvergrößerung“ / „Farbanalogfotografie“ in Verbindung setzen?

Ausgehend von den Erkenntnissen aus entsprechenden Datenbankabfragen wurden u.a. folgende Bilder veröffentlicht:

Odenwald 09 (final)“ mit den Tags: „#zenit + #helios
#colour #colourprint #handabzug #dunkelkammer #selbstentwickelt #analogue #istillshootfilm #farbanalog #analogphotography #diewocheaufinstagram #selfdeveloped #kodakgold #odenwald #odenwaldliebe #wald #forrest #green #nature #myfujifilm #lomografie“

und

Odenwald 06 (final) mit den Tags: „#zenit + #helios
#colour #colourprint #handabzug #dunkelkammer #selbstentwickelt #analogue #istillshootfilm #farbanalog #analogphotography #diewocheaufinstagram #selfdeveloped #kodakgold #odenwald #odenwaldliebe #wald #forrest #green #nature #myfujifilm #lomografie“

und

Odenwald 02 (final) mit den Tags: „#zenit + #helios
#colour #colourprint #handabzug #dunkelkammer #selbstentwickelt #analogue #istillshootfilm #farbanalog #analogphotography #diewocheaufinstagram #selfdeveloped #kodakgold #odenwald #odenwaldliebe #wald #forrest #green #nature #myfujifilm“

Der „Testaccount“ ist via IFTTT mit Twitter verbunden und leitet die Medien 1-zu-1 auch auf den Twitteraccount um. Der kurzfristig sichtbare Effekt war eine ca. Verdoppelung der Impressionen (aus Mittelwert) und ich sehe eine Thesenverstärkung von: Instagramtags werden bei Twitter aktiv verwendet UND / ODER es existieren – zumindest im beobachteten Umfeld – Schnittmengen in der Reichweitenentwicklung / Benutzung der Tags zwischen Twitter und Instagram.

Update „Instafinal“

Ein Instagramaccount, welcher eher diverse Aspekte aus meinem Hobby „Analogfotografie“ abbildet, zeigte in den letzten 2 Tagen interessante Reichweitenentwicklungen.
Diese sind:
+ 38 Follower an einem Tag (aktuell: ~340 Follower)
~ 50 Likes im Mittelwert / Medium
Darüber hinaus fällt mir auf, dass die aktivierten / angesprochenen Follower „relativ“ sauber wirken (geringe Botdichte, relativ wenige und typische SPAM-Comments und relativ wenig Follow/Unfollow). Auch beobachte ich eine gesteigerte Kommentierbereitschaft.
Der Account wird von einer weiteren Person bedient und gepflegt. Wir wechseln uns hierbei ab und ich zeigen individuelle Stilelemente (Bildsprache, Hashtags und weitere Ausführungen).

Diese Beobachtungen werden nun als Grundlage für ein Werkzeugupdate zu „Instafinal“ genommen und folgende Features implementiert:

-> dynamische Auswahl der zu belikenden Hashtags
–> Basis (Medien): die letzten 6 Postings
–> Basis (Locations): die letzten 6 Postings aus Galerien, Influencer etc.

Im Rahmen der Weiterentwicklung werden die aktuellen Beobachtungen beobachtet. Sollten sich die aktuellen Positiventwicklungen verfestigen, werden die Hashtag- und Interaktionsdatenbanken an das Projekt angebunden.

Gedanken zur Zusammenarbeit mit Projektvermittleragenturen

Vor einigen Wochen entdeckte ich eine faszinierende Ausschreibung in der persönlichen Filterblase aus irgendeinem Socialmedium mit Schwerpunkt auf „B2B“. Es handelte sich hierbei um ein zu lösendes Marketingproblem mit folgenden Spezifikationen:

– Teamaufbau
– techniklastige Branche mit recht ordentlichen Umsätzen
– Strategieentwicklungen für die üblichen Marketingsäulen aus dem Bereich „Organisch“ (also: Content, SEO, Socialmedia, Reputationsaufbau, Marktanalysen)

Nach diversen Gesprächen und der üblichen NDA-Unterzeichnung (daher: hier gibts keine Namen und konkretere Benennungen!) verstand die Agentur, dass wir ein Betrieb und keine Einzelpersonen sind. Das war – auf dem ersten Blick – ein gewaltiger Fortschritt gegenüber anderen Gesprächen mit anderen Agenturen.

Die konkrete Gesprächsführung gestaltete sich wiefolgt:
(a) Unterzeichnung der NDA
(b) Übermittlung eines Lebenslaufes
(c) Darstellung von Projekten.

Das Gesprächsklima war soweit interessant und angenehm, jedoch tauchten merkwürdige Aspekte auf. Diese animierten mich, folgende Agenturzusammenarbeitsbedingungen zu definieren:

(a) NDA
Die Unterzeichnung von NDAs ist und bleibt immer obligatorisch. Hier erwarten wir eine funktionsfähige Faxnummer. In bestimmten Fällen erwarten wir ebenfalls unterschriebene NDAs und diese kommen zum Einsatz, wenn das ausgeschriebene Projekt Kontaktdaten von Referenzen erwartet.

(b) Lebenslauf
Der Lebenslauf lässt sich problemlos auf den XING-Profilen einsehen und die Wobus & Lehmann GbR versendet diese Dokumente nicht, da die Wobus & Lehmann GbR primär im Projektgeschäft tätig ist.

(c) Projektübersichten
An entsprechenden Stellen und in diesem Blog befinden sich Projektübersichten, welche – meistens – stark anonymisiert dargestellt werden. Dies dient unserem und dem Schutz der jeweiligen Geschäftskontakte. Einige Geschäftspartner_innen erlauben die Freigabe von Kontaktmöglichkeiten, jedoch erwarten wir die lückenlose Offenlegung der involvierten Personen (Wer liest das Ganze? Wer ist Ansprechpartner?) im Vorfeld und in Schriftform.

(d) Zusammenarbeiten, Abrechnungen usw.
Mir ist in den letzten Gesprächen aufgefallen, dass die Agenturen Zahlungsziele von bis zu 40 Werktage wünschen. Dies widerspricht unserer Geschäftspolitik und wir akzeptieren ein Zahlungsziel von maximal (Ausnahmefälle! Individualabsprachen!) 30 Werktage ab Rechnungsversand (jeweils 15. des aktuellen Arbeitsmonats). Auch ist aufgefallen, dass Reisekosten ausgelegt werden müssen. Reisekosten werden von uns getragen, wenn sich der Klient in Leipzig und nähere Umgebung befindet ODER wenn entsprechende Absprachen getätigt werden. Keinesfalls sollten diese Reisekosten jedoch hohe dreistellige Summen je Woche betragen. Darüber hinaus: viele Gespräche mit Agenturen ergaben auch, dass wir uns um Unterkünfte zu bemühen haben. Das lässt sich in Einzelfällen und mit einer gewissen Budgetplanung realisieren, jedoch ist auch dieser Ausgabeposten keineswegs ein Automatismus. Wir erwarten also, dass die Agenturen sich proaktiv um Reise- und Unterbringungsorganisationen bemühen. Auch müssen die Agenturen verstehen (können), dass besonders großzügige Zahlungszielvereinbarungen oder Vorkasseleistungen Vertrauen in besagte Agentur verlangen. Ich oder „wir“ können auf Basis von alltäglichen Akquisegesprächen nicht erkennen, wie zahlungskräftig eine Agentur ist und ob diese Agenturen unter Zahlungsausfälle leiden.
Ein besonders interessanter Fall erreichte mich vor ca. 2 Wochen. Wir waren zu diesem Zeitpunkt in der sog. „engeren Auswahl“ bei einer Agentur und aus besagter Agentur wurde uns ein weiteres Projekt angetragen, welches sich im selben Zeitfenster wie Projekt Nr.1 befand. Hier mache ich mir natürlich Gedanken zur Professionalität solcher Agenturen, wenn in den internen Systemen offensichtliche Zeitüberschneidungen gar nicht erfasst werden.

SQLite: schnell die Datenbankeinträge zusammen zählen

Diverse Datenbankmonitoringprobleme erforderten das Aufzählen der Einträge. Hierfür nehme ich unter der SDK „Delphi“ folgenden Befehl:

select MAX(_ROWID_) from tags;

Unter Windows 10 und mit einem relativ modernen Computer verlangt diese Anweisung ca. 25 Sekunden bei Abfrage(n) aus der ca. 32GB großen Hashtagdatenbankdatei.

Erfolgreiche Revitalisierung einer „verbrannten“ Domain

Vor einigen Monaten fand ich Gelegenheit zum Aufbau eines weiteren Projektes. Dieses beschreibt sehr viele Facetten der Analogen Fotografie mit Schwerpunkten auf Dunkelkammerarbeiten, die Chemie und die Arbeiten mit den verschiedenen Papieren. Die Entscheidung für dieses Projekt entstand in einem „kreativen Augenblick“ und die Domain wurde aus einem Pool gewählt, welcher sämtliche vergangene Tests- und Experimente beinhaltet.

Die Domain registrierte ich 2014 für das Durchtesten folgender Strategieansätze:
– automatisierte Webkatalogeinträge (DACH-Raum)
– Socialbookmarkeinträge, automatisiert
– Blogcommentspam via Scrapebox

Nach Sichtung der Protokolle, die bei Experimenten obligatorisch zu sein haben (!), war die Domain nicht länger als ca. 6 Wochen (a) im Index und (b) positioniert. Nach Meinungsbildung zu den genannten Blackhatansätzen wurde das Projekt gelöscht und die Domain in den „Wartemodus“ versetzt. Auf Linkentwertungen via WMT habe ich bewusst verzichtet.

Die Neuaufstellung besagter Domain fand im Nov. 2017 unter einem völlig neuem Thema statt. Ebenfalls verschwand die typische WMT-SPAM-Meldung quasi „automatisch“ aus dem Nachrichtenfeature des WMT. Neben den Arbeiten an den Inhalten wurde das Projekt analog zu den – hier beschriebenen – Ansätzen mit Twitter, Instagram und Pinterest synchron geschaltet. Aktiver und „szenetypischer“ Linkaufbau wurde und wird nicht betrieben.

Die aktuellen Besucher_innenquellen sind:
– Instagram
– Twitter
– Google

Etwas untypisch ist bei diesem Projekt die „Stille“ aus der Pinterestquelle, vmtl. muss ich hier noch nacharbeiten.

Interessant ist auch die Wahrnehmung des Projektes innerhalb der Welt außerhalb des WWW: es wurde für den März eine Ausstellung in einer reputationsstarken Galerie organisiert und zwei weitere sind in Planung (1 x Leipzig und 1 x Viersen).

Hier das aktuelle Trafficdiagram (Piwik)

Hashtagdaten – aktueller Bestand inkl. Januar 2018

Der Datenbestand umfasst aktuell:

Unique Tags: 5.570.042
Unique Zeitpunkte: 343
Anzahl-DB-Einträge: 733.252.376

Die „Masterdatei“ hat aktuell ein Volumen i.H.v. 32GB und beinhaltet die Untersuchungszeiträume 11-2016 bis 01-2018 (fortlaufend). Ich bekomme hierzu regelmäßig Bezugs- und Erklärungsanfragen und nach einigen internen Gesprächen haben „wir“ uns zur folgenden Gangart entschieden.

Kund_innen der Wobus & Lehmann GbR
– Bezug ist und bleibt kostenfrei, da die erhobenen Datensätze auch Grundlage für Marketingstrategieentscheidungen sind

Geschäftsfreund_innen der Wobus & Lehmann GbR (Leipzig und enge persönliche Kontakte)
– Bezug ist und bleibt kostenfrei, es wird jedoch das Stellen der Speichermedien (USB-Stick, Speicherkarte, externe Festplatte etc.) erwartet
– Kommunikations- und Verhandlungskanal ist und bleibt offen bei konkreten Forschungsidee etc.

Student_innen mit Forschungsprojekten, Abschlussarbeiten etc.
– Bezug ist und bleibt kostenfrei, wenn:
(a) die Kosten für die Speichermedien inkl. deren Versand getragen werden
(b) die Forschungsidee und das Konzept hier vorgestellt wird
(c) die Betreuer_innen inkl. deren Kontaktmöglichkeiten (eMail, Telefonnummer) genannt werden
(d) die Datenbank, die Wobus & Lehmann GbR etc. analog zu den üblichen Regeln in den jeweiligen Arbeit(en) genannt werden

sonstige Personen und Gruppen
Der Bezug ist kostenpflichtig und bewegt sich im niedrigen bis hohem dreistelligen Bereich exkl. der Versand- und Speichermediengebühren. Konkreteres wird nach Anfrage und Verhandlung geklärt und im Rahmen des Erstkontaktes wird auch geprüft, ob die Interessent_innen zur erstgenannten Zielgruppe gezählt werden (können).

Kontaktmöglichkeiten für An- und Rückfragen:

Tel.: 0176-67472781 (kein Whatsapp!)
eMail: office[at]pontipix.de

Analyse: Orte, Location via Instagram und Facebook

Ich hatte in diversen Gesprächen und sonstigen Statements angedeutet, dass wir einige Experimente (spez. Likes, Socialmediautomatisierungen und Contentmarketingansaetze) mit den Erkenntnissen aus „Locations“ durchführen. Diese sind flächendeckend positiv ausgegangen. Die nachfolgenden Quellcodes stammen aus dem aktuellen Recherchetool (INSTA-FINAL)

Ich nutze die Daten für das Abarbeiten folgender Szenarien:
(a) Liken via Instafinal
(b) konkrete Firmen und Locationanalyse
-> Was wird geschrieben?
-> Wieviele Menschen sind da WANN aktiv und was schreiben die, was
bewegt die?
-> Vorbereitungen auf Messen, da Messen selbstverständlich Locations sind.
-> Vorbereitungen auf konkrete Messegespräche
-> Aufbereitung der Daten für die üblichen Akquisevorbereitungen
-> Erkenntnisgewinnung, Inspiration für div. Contentmarketingansätze
(c) Hashtagrecherchen

//-> Locationrechercheprozedur

1. Schritt: Token von Facebook besorgen
https://smashballoon.com/custom-facebook-feed/access-token/

2. Schritt: Mit Facebook-Token nach Orten, Firmen usw. suchen

procedure TForm1.Button42Click(Sender: TObject);
var l_clear: integer;
var
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;
begin
locsearch.text := StringReplace(locsearch.text, ‚ ‚, ‚+‘,
[rfReplaceAll, rfIgnoreCase]);
listbox2.Items.Clear;
with locs do
begin
cells[0,0]:=’Nr.‘;
cells[1,0]:=’Name‘;
cells[2,0]:=’ID-Code‘;
cells[3,0]:=’URL‘;
colcount:=4;
rowcount:=1;
end;
try
with debug do
begin
clear;
text:=idhttp1.Get(‚https://graph.facebook.com/search?q=’+locsearch.Text+’&type=place&access_token=’+fbtoken.text);
end;
JSONValue := TJSONObject.ParseJSONValue(debug.text);
JSON := TJSONObject.ParseJSONValue(debug.Lines.Text) as TJSONObject;
JSONArray := TJSONArray(JSON.Get(‚data‘).JsonValue);
memo1.Clear;
for i := 0 to JSONArray.Size – 1 do
begin
with locs do
begin
cells[0,rowcount]:=inttostr(rowcount);
cells[1,rowcount]:=TJSONPair(TJSONObject(JSONArray.Get(i)).Get(’name‘)).JsonValue.Value;
listbox2.Items.Add(cells[1,rowcount]);
cells[2,rowcount]:=TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚id‘)).JsonValue.Value;
cells[3,rowcount]:=’https://www.instagram.com/explore/locations/’+cells[2,rowcount]+’/‘;
rowcount:=rowcount+1;
end;
end;
grdColWidth(locs, 40);
except
end;
end;

3. Schritt: Medien aus Locations abholen und ggf. analysieren

procedure TForm1.get_loc_short(mytable: TStringGrid; locid: string);
var
JSONArray: tJSONArray;
JSONValue,jvalue: tJSONValue;
JSONPair: TJSONPair;
JSON, json_sub: TJSONObject;
size: integer;
j_array: tJSONArray;
s: string;
i,j: integer;
next_id: string;

begin
with mytable do
begin
cells[0,0]:=’Nr.‘;
cells[1,0]:=’URL‘;
cells[2,0]:=’Tag‘;
cells[3,0]:=’Likes‘;
cells[4,0]:=’Comments‘;
cells[5,0]:=’Erstellzeit‘;
cells[6,0]:=’ID‘;
colcount:=7;
rowcount:=1;
end;
memo3.Lines.Add(‚url =>
https://api.instagram.com/v1/locations/’+locid+’/media/recent?access_token=’+token.text);
memo3.Lines.SaveToFile(verz+’\tmp_mediaurlsapi.txt‘);
try
debug.text:=idhttp1.Get(‚https://api.instagram.com/v1/locations/’+locid+’/media/recent?access_token=’+token.text);
debug.text:=idhttp1.Get(‚https://www.instagram.com/explore/tags/’+tagsuche+’/?__a=1‘);
JSONValue := TJSONObject.ParseJSONValue(debug.text);
JSON := TJSONObject.ParseJSONValue(debug.Lines.Text) as TJSONObject;
JSONArray := TJSONArray(JSON.Get(‚data‘).JsonValue);
try next_id:= JSONValue.GetValue(‚pagination.next_url‘);
except
end;
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(‚link‘)).JsonValue.Value);
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚tags‘)).ToString);
s:= StringReplace(s, ‚“tags“:[‚, “, [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, ‚]‘, “, [rfReplaceAll,rfIgnoreCase]);
cells[2,rowcount]:=s;
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚likes‘)).ToString);
s:= StringReplace(s, ‚“likes“:{„count“:‘, “,
[rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, ‚}‘, “, [rfReplaceAll,rfIgnoreCase]);
cells[3,rowcount]:=s;
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚comments‘)).ToString);
s:= StringReplace(s, ‚“comments“:{„count“:‘, “,
[rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, ‚}‘, “, [rfReplaceAll,rfIgnoreCase]);
cells[4,rowcount]:=s;
cells[5,rowcount]:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚created_time‘)).JsonValue.Value);
cells[5,rowcount]:=datetimetostr(UnixToDateTime(strtoint(cells[5,rowcount])));
cells[6,rowcount]:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get(‚id‘)).JsonValue.Value);
rowcount:=rowcount+1;
end;
grdColWidth(mytable, 40);
end;
except
end;
//uebertrag auf tabelle
grdColWidth(mytable, 40);
form1.Caption:=version+‘ alle Posts herunter geladen‘;
end;