Hinweis: SQLite-Dateien in Excel öffnen und da weiter verarbeiten (InstaLOC und HashtagDB)

Irgendwer aus dem „Netzwerk“ gab mir bei einem Telefonat einen interessanten Hinweis zu den Potentialen von Excel. Wir sprachen da u.a. darüber, dass die freigegebenen SQLite-Datenbanken aus den Projekten „Hashtag-Reichweiten“ und „InstaLoc“ zu viele Auswertungs- und Analyseprobleme provozieren können.

Eine Option beschreibt
https://yourbusiness.azcentral.com/connecting-excel-sqlite-12971.html

und man benötigt für die dargestellte Funktion das Plugin http://www.ch-werner.de/sqliteodbc/.

Möchte man hierüber unsere Dateien anbinden, muss an der entsprechenden Einlesestelle (siehe verlinkter Blogbeitrag!) die Option „SQLite-3“ ausgewählt werden. Die nachgeschaltete EXCEL-Oberfläche ist relativ selbsterklärend. Mit den konkreten Auswertungsfunktionen habe ich mich nicht beschäftigt und ich kann an der Stelle auch keinerlei Support zu den Queries geben.

InstaLOC: Freigabe der ersten Themendatenbank (Home&Living)

Gestern veranlasste ich die Freigabe der ersten Datenbank, welche den DACH-Raum und Teile der EU nach den Themenwelten der Sparte „Home & Living“ abbildet.

Die Grunddaten der SQLite-Datei sind:

Speicher: ca. 5GB
Beiträge: 8.532.446
User_innen: 2.495.311
Locations: 473.903
Medienzeitstempel: 4.863.183

Interessierte Leser_innen des Arbeitsblogs können sich zu der Datenbank unter den folgenden Auszügen weitergehende Eindrücke verschaffen:

(1) Locationliste + Sum(Postings), unverschlüsselt
https://drive.google.com/open?id=18rVNt2zTfKBmUl606O-L1mMsExvhI4iH
(2) Locationliste + Sum(Likes), unverschlüsselt
https://drive.google.com/open?id=1S3QMkwyo82w3SkH7YhrlZoixZRNlsSiI
(3) Medienpostzeitstempel, unverschlüsselt
https://drive.google.com/open?id=1EtRVSRuFhI5oyE9s6KHBcGKrDF_ARMRv
(4) Tagwolkenliste, unverschlüsselt
https://drive.google.com/open?id=14tXw59I3ky7_bbQ5znG_D4dSGo0rYfkw

Hinweise:
Hinter den CSV-Dateien stehen entsprechende SQL-Statements, die in diesem Blog dokumentiert wurden und dokumentiert werden. Die Datensätze sind unkategorisiert und nicht interpretiert: sie befinden sich quasi in einem Rohdatenzustand.

Supportanfragen, Interpretationsanfragen oder Anfragen zur Strategieableitung bitte an:
Anne Lehmann: office(at)pontipix.de (Wobus & Lehmann GbR), Preisliste unter: https://www.pontimania.de/
Dr. Klaus Holthausen: https://www.linkedin.com/in/dr-klaus-holthausen-1464b043/

InstaLOC: Etablierung der Themenwelten-Datenbanken und Datenauszüge aus dem Komplex „Home & Living“

Inhalte der Datenbank: ca. 12.000 * 2000 Beiträge aus „Home&Living“-bezogenen Themenabfragen
Speichergröße der Datenbank: ca. 1.6GB, Format: SQLite

Beispielrohdatensätze
Abfrage via SQLiteStudio
select REPLACE(tag,'%22','"') as Tagwolke, likes, comments, location, erstellzeit from locations where tag like '%[keyword]%'

Datenlinks (CSV)
(1) Tagwolke: Carport.csv (2MB)
(2) Tagwolke: Hausbau.csv (gepackt: 10MB, entpackt: 64MB)
(3) Tagwolke: Haus.csv (gepackt: 27MB, entpackt: 147MB)

CSV-Schema
Tagwolke|Likes|Coments|Location(Geocode+ID+Titel)|Erstellzeitstempel

Allgemeine Datensätze
(1) Liste: Locations.csv (gepackt: 7MB, entpackt: 23MB)

Hinweise
Durch die modifizierte Abfrage wurde die Tagwolke etwas lesbarer gemacht. Man muss bei der Sichtung und Prüfung jedoch die Umlaute und Piktogramme bei Bedarf noch umwandeln, oder eben auf unseren Client zurückgreifen. Die Beispieldatensätze beinhalten nicht die Postingurl, Fotofilter und Usernames und erlauben daher keinerlei Rückschlüsse auf eventuelle Influencer. Diese Angaben werden bei Buchung der kostenpflichtigen Angebote (Workshops, Datenabfragen etc.) offen gelegt und – bei Bedarf – erklärt.

Pinterest: Strategiewechsel und erste Zahlen

Aktuelle Beobachtungen aus dem Rohmaterial der Instagramprojekte (InstaLOC, Hashtagreichweiten etc.) ergaben neue Gedanken und Strategien im Bezug auf Instagram.

Hier habe ich mir die folgenden Fragen gestellt:

(1) Lässt sich Pinterest für das Setzen von Links benutzen?
(2) Funktioniert auf Pinterest das Instagram-Bildmaterial?

Um das Experiment sinnvoll zu starten, veröffentlichte ich auf dem Account zwei Boards mit Inhalten aus einer Spezialnische der Analogfotografie. Diese nennt sich „Soaked-Films“ und beschreibt die künstlerische Beeinflussung der Emulsionsschicht(en), welche sich auf den unbelichteten Negativen (Farbe!) befinden. Hier legte ich die Filmdosen in saure Flüssigkeiten (Kaffee, Tee, Bier, Wein etc.) ein und schaue mir an, welche Effekte sich nach Belichtung und Entwicklung auf den Bildern zeigen. Auf Instagram wurden die Bildreihen erfolgreich und mit wenig Aufwand positioniert und die Contententscheidung bzgl. Pinterest wurde nach der Sichtung div. Rückmeldungen und der üblichen Interaktionsmetriken gefällt.

Nach Motivwahl wurden die Algorithmen des InstaLOC-Scrapers/Datenauswerters mit dem Schema der Interessensmatritzen synchronisiert. Diese Symbiose ergab keinerlei Unterschiede zwischen dem Datenmaterialen der Plattformen und ich entschied mich zu einer „schmalen“ Bildbeschreibung / Hashtagwolkenfokussierung in der Beschreibung der Pins.

Die Inhalte der Boards wurden mit einer (Big)data-gesteuerten Strategie in der Plattform positioniert und der Ansatz beschreibt einen Vorgang, der so ausschaut:
(a) Auslesen der Trends auf Basis von InstaLOC
(b) Auslesen der Interessen auf Basis der Matrix-Strategie
(c) Match von (a) und (b): Ausgabe der geeigneten Tagwolken
(d) Abgleich von (c) mit den Beobachtungen aus Instagram (wahlweise weitere Datenquellen)
(e) Einspielen der Materialien in die Plattform und KI-gesteuerte Präsentation bei den potentiellen Zielgruppen.

Hier die Ergebnisse der Pins, welche vor ca. 5 Tagen veröffentlicht wurden.

Hier der Zielgruppenüberblick des Einspeiseaccounts.

Interessant ist auch die Entwicklung des Einspeiseaccounts. Dieser widerlegt u.a. auch viele Thesen aus der Branche. Ich sehe hier ein stabiles Besuchervolumen von über 43.000 Accounts zu 1.481 Interaktionen mit einer starken Gewichtung auf den DACH-Raum (28.521 -> Deutschland). Das Geschlechterverhältnis ist ca. 28.000 (Frauen) zu ca. 15.000 (Männer).

Die Zahlen der aktuellen Ergebnisse empfand ich als überraschend gut und das Grundgefühl verstärkte sich bei Abgleich mit den konservativ positionierten Materialien. Durch interessante Positionssprünge der hinterlegten URLS (teilweise N/A auf Seite 1-3 unter härteren Keywords) wurde hier die Entscheidung gefällt, die (neue) Pinterest-Strategie in das Tagesgeschäft zu überführen.

(Instagram)-Locationprojekt, Hashtagcloudanalysen nach Usernamen (Leipzig-Datenbank)

Das Programm kann, in der aktuellen Version, zwischen „%suchwort%“ und „=suchwort“ unterscheiden. Bei der letzteren Option werden alle Ergebnisse ausgeworfen, wo der Term – als Hauptstring – in den Tagclouds zu finden ist (Gegenteil zu der Substringvariante).

Inhaltsschema:
Spalte (1) -> Nummer
Spalte (2) -> Username
Spalte (3) -> Tagcloud
Spalte (4) -> Summe Tagcloud, Vorkommen der Tagcloud je Username

Hinweis:
Sämtliche Accountnamen sind in den nachfolgenden Datensätzen – selbstverständlich – verschlüsselt.

(1) Substring: „city“: city_usersum
(2) Substring: „mensa“: mensa_usersum
(3) Hauptstring: „sport“: -sport-_usersum
(4) Substring: „sport“: sport_usersum
(5) Substring: „fest“: fest_usersum
(6) Substring: „farbfilm“: farbfilm_usersum
(7) Substring: „sommer“: sommer_usersum
(8) Substring: „frühling“: frühling_usersum
(9) Substring: „herbst“: herbst_usersum
(10) Substring: „stadt“: stadt_usersum
(11) Hauptstring: „messe“: -messe-_usersum
(12) Substring: „hafen“: hafen_usersum
(13) Substring: „halle“: halle_usersum
(14) Substring: „design“: design_usersum
(15) Substring: „hochschule“: hochschule_usersum
(16) Substring: „kunst“: kunst_usersum
(17) Substring: „film“: film_usersum
(18) Substring: „dokleipzig“: dokleipzig_usersum
(19) Substring: „leipzig“: leipzig_usersum
(20) Hauptstring: „urlaub“: -urlaub-_usersum
(21) Substring: „urlaub“: urlaub_usersum
(22) Substring: „bar“: bar_usersum
(23) Substring: „deko“: deko_usersum
(24) Substring: „feiern“: feiern_usersum

Rohdatenerfassung zu den Locations via Instagram-API (finaler Ansatz)

Im Zuge des Roland-Berger-Projektes fand ich endlich Gelegenheit, den Locationrohdatenscraper zu optimieren. Hier nun der Quellcode:

(1) Scrapingprozedur
Erklärung:
get_loc_short(mytable: TStringGrid; locid: string; rounds: integer);
mytable -> Stringgridobjekt, verlangt die Übergabe des Objektnamens
locid -> LocationID aus Instagram (siehe: Locationparser)
rounds -> maximale Anzahl der Subprüfung je Durchlauf

procedure TForm1.get_loc_short(mytable: TStringGrid; locid: string; rounds: 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;
zaehl: integer;
begin
zaehl:=0;
try
debug.text:=idhttp1.Get('https://api.instagram.com/v1/locations/'+locid+'/media/recent?access_token='+token.text);
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
next_id:='N/A';
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);
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('user')).ToString);
s:= StringReplace(s, '"user":{"username":', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '}', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '"', '', [rfReplaceAll,rfIgnoreCase]);
cells[7,rowcount]:=s;
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('location')).ToString);
s:= StringReplace(s, '"location":', '', [rfReplaceAll,rfIgnoreCase]);
cells[8,rowcount]:=s;
cells[9,rowcount]:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('filter')).JsonValue.Value);
cells[10,rowcount]:=datetimetostr(now);
rowcount:=rowcount+1;
end;
grdColWidth(mytable, 40);
end;
except
end;
repeat
// -> tiefenpruefung
try
debug.text:=idhttp1.Get(next_id);
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
next_id:='N/A';
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]:=escape(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);
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('user')).ToString);
s:= StringReplace(s, '"user":{"username":', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '}', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '"', '', [rfReplaceAll,rfIgnoreCase]);
cells[7,rowcount]:=s;
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('location')).ToString);
s:= StringReplace(s, '"location":', '', [rfReplaceAll,rfIgnoreCase]);
cells[8,rowcount]:=s;
cells[9,rowcount]:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('filter')).JsonValue.Value);
cells[10,rowcount]:=datetimetostr(now);
rowcount:=rowcount+1;
end;
grdColWidth(mytable, 40);
end;
except
end;
// -> tiefenpruefung, ende
zaehl:=zaehl+1;
until zaehl=rounds;
//uebertrag auf tabelle
grdColWidth(mytable, 40);
form1.Caption:=version+' alle Posts herunter geladen';
end;

(2) Aufruf der Scrapingprozedur
procedure TForm1.Button45Click(Sender: TObject);
var lauf: integer;
begin
with locmedia 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';
cells[7,0]:='User';
cells[8,0]:='Location';
cells[9,0]:='Filter';
colcount:=10;
rowcount:=1;
end;
for lauf := 1 to locroh.RowCount do
begin
randomize;
token.Text:=token.Items[random(token.Items.Count-1)];
get_loc_short(locmedia,locroh.Cells[1,lauf],20);
savetocsv(locmedia,verz+'\support\dummydata.csv');
form1.Caption:=version+' Locationscraper: '+inttostr(lauf)+' / '+inttostr(locroh.RowCount);
delay(1000);
end;
end;

Instagram, Scrapen & Erfassen von Location-URLs

Vor ein paar Tagen übernahmen wir von Roland Berger ein Projekt, welches u.a. die Trends und Kommunikationen aus den öffentlichen Räumen diverser Locations erfassen und bewerten soll.
Hier ist das Anlegen und Erfassen möglichst vieler Instagramlocations aus einem städtischen Raum eines der Hauptaufgaben der Datenerfassungsprozedur und ich entschied mich für den Weg über den Google-Index.

(1) Aufrufen der Indexurl
site:instagram.com/explore/locations/ „stadt land objekt“

(2) URLscraper
memo7.clear;
try
ovElements := WebBrowser2.OleObject.Document.all;
for i := 0 to (ovElements.Length - 1) do
begin
if (pos('?hl', ovelements.item(i))=0) and (pos('https://www.instagram.com/explore/locations/', ovelements.item(i))<>0) and (pos('&prev=search',ovelements.item(i))=0) and (pos('https://www.google.com/',ovelements.item(i))=0) then
begin
memo7.Lines.Add(ovElements.item(i));
end;
end;
except
end;
memo7.lines.BeginUpdate;
KillDuplicates(memo7.lines);
memo7.lines.EndUpdate;

(3) Bereinigung und Aufbereitung der Daten
Ausgehend von der Beispielurl https://www.instagram.com/explore/locations/1026498374/eltonel-bar/ wird nun die URLstruktur dahingehend sichtbar und logisch, dass der Ort des Locationcodes „1026498374“ erfassbar ist. Dieser wird aus der ursprünglichen Zeichenkette (hier: URL-String) mit Hilfe einer geeigneten Funktion extrahiert und zwecks Tiefenanalyse der Locationmedien in die Datenbank(en) gespeichert.

Instagram – Location ID finden

Diverse Änderungen an der Facebook-API-Politik (Stichwort: Datenscrapeskandale & Co.) zwangen mich leider dazu, Alternativwege für das Organisieren der Location-IDs zu analysieren und ich werde folgende Optionen in die Datenscraperfunktionen einbauen.

(1) Manuelle Recherche
https://docs.social-streams.com/article/118-find-instagram-location-id

(2) Recherche auf Basis der Geo-Codes
https://api.instagram.com/v1/locations/search?lat=48.858844&lng=2.294351&access_token=ACCESS-TOKEN

(3) Recherche auf Basis des Google-Index
https://www.google.com/search?q=site:instagram.com/explore/locations/%20+%22apolda%22

Hashtags: Auswertungen und Interpretation (Nicht-Nerdy)

Eines unserer wichtigsten Recherchetools sind und bleiben die Hashtagbeobachtungen auf Instagram. Hier erlebe ich immer wieder bei den vielen Gesprächen faszinierende Rückfragen zu allgemeinen Verständnis- und Interpretationsprobleme. Daher dieser Grundlagenartikel.

Am Beipiel der Themenwelt „Leipzig“ (hier: #leipzig) lässt sich das Monitoring so anstellen:

(1) Aufruf der App
(2) Suche nach dem Tag in der App
(3) Häufungszahl notieren
(4) Gehe zurück zu (1)

Über diesen (manuellen) Rechercheweg lassen sich nun Häufungsentwicklungszahlenreihen anlegen.

[Beispiel für #Leipzig]

Der Nicht-Nerd kann jetzt und nach Sichtung der Entwicklungen dieser Zahlen unfassbar spannende Fragen für sich und völlig unabhängig von diversen Socialmediaberater_innen und Influencermarketingagenturen beantworten:

(1) Wieviele neue Medien tauchen denn da zu den Tags / Themenwelten auf?
(2) Was gibt es denn sonst noch schönes zu der Hauptsuchphrase? (Siehe Screenshots, die Liste …)
(3) Wie entwickeln sich denn diese Nebenhashtags?
(4) Passt die Entwicklung (1-3) denn überhaupt auf die aktuelle Planung (hier: Contentmarketing, Zielgruppenerkenntnisse usw.)?

Diese Datenbankauffüllung und die Quasi-Forschung an den Hashtags lässt mich manchmal etwas lächeln, weil wir intern sehr viele Diskussionen rund um die Interpretationsvarianten der Zahlenveränderungen führen. Ich vertrete in manchen Situationen u.a. den Ansatz, dass die Differenz von Zahl (Z) zu Zahl (X) sagt: „Die Differenz entspricht punktgenau der Anzahl der Accounts, welche in dem Zeitraum aktiv sind“. Anne vertritt da einen anderen Ansatz und bemerkt immer mal wieder gern, dass auch eine Person 1000 Medien in einem kurzen Zeitabstand unter dem Tag #leipzig dort veröffentlicht. Ich denke, dass man zum finalen Kompromiss kommt, wenn man halt in der Betrachtung eine Fehlerquote einbaut und ich bevorzuge da – je nach Thema (!) – 33%-45%.

Zurück zur Datenerfassung.
Der beschriebene und manuelle Weg eignet sich natürlich für kleine Tagsammlungen und Projekte. Sucht man allerdings einen umfangreicheren Überblick, kommt man selbstverständlich nicht um die Anbindung an den Instagram-Endpoint umhin und hier dürfen die Leser_innen des Arbeitsblogs den eigentlichen Existenzgrund der Datenbanken finden. Sprich: niemand hat schlichtweg die Zeit, die Lust und die Ressourcen, um 1000-10.000 projektbezogene Tags jeden Tag zu suchen, die Zahlen aufzuschreiben und das Ganze auch auszuwerten.

So. Ich hoffe, dass meine Ausführungen zu den Hashtags etwas klarer geworden sind.

Fragen? Anregungen?

Betrug (?) im Influencer-Marketing?

Während der obligatorischen Branchen- und Szenerecherche entdeckte ich sehr interessante Meldungen:

Betrug im Influencer-Marketing: Unilever zieht Konsequenzen (T3N)
Unilever will keine Influencer mit Fake-Followern (WuV)
Beide beziehen sich auf:
Unilever takes stand against digital media’s fake followers (Reuters)

https://www.horizont.net/marketing/nachrichten/Weckruf-Unilever-kuendigt-Einschnitte-im-Influencer-Marketing-an-167802 (Horizont mit genaueren Ausführungen)

https://www.wsj.com/articles/unilever-demands-influencer-marketing-business-clean-up-its-act-1529272861 (WSJ mit genaueren Zahlen)

Ich bin auf die „Optimierbarkeiten“ der Followerzahlen in den letzten Artikeln eingegangen und ich frage mich gerade, welcher Dienstleister bzw. Experte aus dem Bereich „Influencermarketing“ denn die Sauberkeit der Listen (a) versteht, (b) sicherstellt und (c) überhaupt umfangreiche Erkenntnisse, Erfahrungen, Prozeduren oder Tools zum Screenen besitzt bzw. anwenden kann.

Ich bin gespannt, wie sich in den nächsten Tagen die übliche Fachpresse zum Influencer-Marketing positioniert. Das „Optimierungsproblem“ der Followerzahlen scheint offensichtlich bei den großen Einkäufern angekommen zu sein.

Vielleicht wird es einmal Zeit, die eigene Influencermarketingstrategie auf Werthaltigkeit zu überprüfen?