Accountanalyse (Instagram) – Update 0.3Beta

Die Software wurde nun auf die Tiefenanalyse der Tags erweitert. Hierbei werden die Tags aus den Rohdaten (siehe Artikel: Rohdaten) hinsichtlich der Häufung zusammengezählt und nach dem Verhältnis zu den Likes und Kommentaren gewichtet.

Die nachstehenden Bilder zeigen die Ergebnisse aus dem Account „hanneswobus“ mit den Daten aus hanneswobus_tags.xlsx.

Durch die Analysierbarkeit beliebiger (!) Accounts lässt sich nun dauerhaft nachprüfen, welcher Tag (natürlich in Verbindung mit dem Post und dem konkreten Motiv) am Besten den ROI-Vorstellungen (Likes, Comments, Likes & Comments) entspricht. Da die Erfassung der Accountrohdaten zu beliebigen Zeitpunkten (in Abhängigkeit zur Verfügbarkeit und Stabilität der Instagram-API) realisierbar ist, lassen sich auch Beobachtungen zu Wochentagen und äußeren Einflüssen wie Wetter, Trends und Events anstellen.

[Todo]
Gewichtung der Taggruppen analog zur Einzeltaganalyse.
Optional: Gegenprobe der Tags auf unserer Reichweitendatenbanken
Festlegung eines Reportformates (PDF, Excel, Word usw.).
Scrapen und Verarbeiten der Kommentierenden und Likenden Accounts

[Update]
Die Reichweitengegenprobe auf die bekannte und besprochene Datenbank wird (vorerst) mit niedriger Priorität behandelt und mit der Anbindung an die Tagsearch von Instagram kompensiert.
Der „Endpoint“ hierfür ist:
https://api.instagram.com/v1/tags/search?client_id=[deine_id]&q=[suchwort] und die Reichweite wird über die Variable „media_count“ ausgeliefert.
Der Rohdatensatz für die Tag <> Reichweitengewichtung für lässt sich hier: hanneswobus_tags herunter laden.

Die Reportausgabe wurde „modular“ gestaltet und die Basis hierfür ist „html“. Die PDF-Version eines solchen Reports befindet sich hier: Instagramauswertung, Account_ hanneswobus. Wie man am Layout des Reports unschwer erkennen kann, arbeite ich noch an dem Layout und an der endgültigen Fassung.

Beide Datensätze werden ab sofort in die Reportingdienstleistung aufgenommen.

Socialmedia-Profil-Analyse (Rohdaten), v.0.1B [Instagram]

Die angekündigte Software ist nun in der ersten Versionsnummer fertig gestellt und sie produziert die folgenden Daten:

[Accountüberblick]
Komplettdatensatz aus dem Account „hanneswobushanneswobus_25022015 (Excel, xlsx)

Die Exceltabelle zeigt: (a) URL der Posts, (b) Erstelldatum, (c) Comments, (d) Likes, (e) Tags, (f) Beschreibung – leer, (g) Post-ID

[Todo]

  1. Auswertung von Comments je individuellen Tag
  2. Präsentation: Top10 der wirkungsvollsten Tags (gem. an Likes und Comments)
  3. Präsentation: Top10 der „besten“ Posts (gem. an Likes und Comments)
  4. Präsentation: schlechteste Posts und Tags (ggf. auch Taggruppen)
  5. Auswertung von Likes je individuellen Tag
  6. Diagram: zeitliche Entwicklung f. Posts, Likes und Comments (siehe: „Socialtracker“)

[Tortendiagram]
hanneswobus__diag

Die Beobachtung der Abonnenten und abonnierten Accounts wird im aktuellen Konzeptstadium gesondert betrachtet. Nach einigen internen Diskussionen und Gesprächen mit Externen / Kund_innen wird die nächste Versionsnummer um einen entsprechenden Komplex erweitert.

Die Todo hierfür ist:

  1. Erfassen der Abonnenten und Erfassen der abonnierten Accounts als „Liste“.
  2. Ausgabe: „Wer folgt dem beobachteten Account und welchen Accounts folgt der beobachtete Account?“
  3. Aktivitätsbeobachtung: „Wer ist in welcher Form auf den beobachteten Accounts aktiv (gez. durch Likes, Comments)?“

Die aktuellen Engagements und Projekte werden selbstverständlich um die Dienstleistung „Instagram-Account-Reports“ und die entsprechende Beratung erweitert.

Ich bekomme derzeit erstaunlich viele Rückmeldungen mit ein und denselben Inhalten: das Erfassen der Daten über Instagram, Pinterest und anderen Socialmedia ist (a) nicht möglich oder (b) extrem aufwändig / teuer. Nunja: hier möchte ich auf den Inhalt „Gesprächspartner_innen für das Internetmarketing“ hinweisen. Das Erfassen und Verstehen der extrem gut dokumentierten Socialmedia-API gehört zum Berufsbild „Internetmarketing“ oder „Socialmedia-Marketing“ dazu und das Entwickeln eigener Lösungsansätze für das Beobachten und die Datenerfassung ist gerade mit Hilfe der APIs mit einem enorm geringen Zeitaufwand durchaus möglich.

Informationen zu den APIs inklusive (!) Codebeispiele findet man hier:
[Instagram]
Instagram (Developer)
Endpoints der API
Infos zu der Limitierung
Tagsuche
Grobrecherchen, Rohdatenerfassung (hierauf basiert die aktuelle Version der Software!!!)
Zielgruppenanalysen auf Basis der Locations

[Pinterest]
Developer – Doku
User, Usermanagement, Follower & Co.
Dokus zu den Boards, Boardmanagement
Pins, Management und Recherche
Zielgruppenanalysen via Pinterest-API
Basisfunktionen

Rohdaten: Accountanalyse (Instagram)

Die Datenerhebung für die angekündigte Accountanalyse-Anwendung ist nun soweit fertig und in der aktuellen Version gehe ich wie folgt vor:

[Erfassen der Account-ID]
– via API
– via „lookup your instagram user id

[Erfassen der hinterlegten Daten]
(1) Ansprache der API
$api = „https://api.instagram.com/v1/users/[ID]/media/recent/?access_token=[TOKEN]“;
$response = get_curl('../../../../../$api');

(2) Auswertung und Auslesen der Datensätze
if($response){
foreach(json_decode($response)->data as $item){
$url = $item->link;
$zeitstempel = $item->created_time;
$comment = $item->comments->count;
$gefaellt = $item->likes->count;
$id_code = $item->id;
$schlagworte = $item->tags;
$comma_separated = implode(“ „, $schlagworte);
echo $url.“|“.gmdate(„Y-m-d“, $zeitstempel).“|“.$comment.“|“.$gefaellt.“|“.$id_code.“|“.$comma_separated;
}

Wir hatten im Zuge der Entwicklungsarbeiten auch intensiv über eine Backupfunktion oder eine Massdownloadfunktion bzgl. der geposteten Fotos diskutiert und letztendlich entsprechende Features (vorerst) verworfen, da die bekannte Instagram-App bearbeitete Fotos auf den Geräten speichert.
Die Angabe „zeitstempel“ bleibt vorerst auf die Ausgabe von „Datum“ beschränkt und ich behalte mir eine Erweiterung auf „Zeit“, „Uhrzeit“ zzgl. „Minuten“ vor.

Für die weitere Analyse verwende ich die Angabe „id_code“ und die folgenden Endpoints:
(a) Liste: Likes
https://api.instagram.com/v1/media/[ID]/likes?access_token=[TOKEN]
– gibt die likende Accounts zur hinterlegten Media-ID aus

(b) Liste: Kommentare
https://api.instagram.com/v1/media/[ID]/comments?access_token=[TOKEN]
– gibt die kommentierenden Accounts zzgl. der (!) Kommentare zur hinterlegten Media-ID aus

Die Erfassung der o.g. „Rohdaten“ funktioniert recht stabil und weitestgehend fehlerfrei. Ausgehend hiervon ergeben sich nun Antworten auf die folgenden Fragen:

  1. Welche Posts werden am häufigsten frequentiert (sichtbar durch Likes und Kommentare)?
  2. Welche Hashtags generieren das effektivste Like / Kommentar-Verhältnis?
  3. Welche Postingzeiten sind effektiv? (sichtbar durch die Ergebnisse von (1) und (2)
  4. Wer mag diese oder jene Fotos gepaart mit konkreten Botschaften (Tags) (bezogen auf den eigenen oder fremde Accounts)?
  5. Woher kommen die Fans (eigener Account, fremder Account)?
  6. Wie aktiv und treu sind die Fans?

Die Fertigstellung einer ersten Version ist für 21.02.2016 geplant.

Zielgruppenanalysen mit Instagram (Accounts und Locations)

Analog zu meinen Überlegungen sind natürlich auch Analysen zu den Orten der publizierten Fotos interessant. Diese lassen sich über die folgende API-Funktion erfassen:
https://api.instagram.com/v1/media/search?lat=[xxxxxxx]&lng=[yyyyyy]&access_token=[deintoken]
Die Funktion lässt sich um die Variable „DISTANCE“ erweitern und laut API-Dokumentation ist hier der voreingestellte Minimalwert „1km“ und der frei definierbare Maximalwert „5km“.

Man findet hier im Prinzip dasselbe Ergebnis wie bei dem Endpoint „Media=>Recent“ vor, dieses ist lediglich um die Angaben der einzelnen Accounts erweitert.

Die Einträge zu den Accounts lassen sich wie folgt auslesen:
[data][xyz][user][username] => Nickname, Accountname
[data][xyz][user][full_name] => falls hinterlegt, „Realname

Das Ergebnis aus der o.g. Abfrage beinhaltet weitere Angaben zu der konkreten Location. Diese lassen sich wie folgt auslesen:
[data][xyz][location][latitude]
[data][xyz][location][longitude]
[data][xyz][location][name] => Name der Location
[data][xyz][location][id] => interne ID der Location

Die ausgelesene ID lässt sich nun für die Beobachtung und Bewertung einzelner (Unter)locations (Beispiel: Hauptlocation => Paris, Unterlocation => Eifelturm) weiter verwerten. Die API-Abfrageurl lautet hierfür: https://api.instagram.com/v1/locations/[id]/media/recent?access_token=[deintoken] und die Verwertung entsprechender Ergebnisse hatte ich im Artikel „Analyse auf Ebene der Posts“ beschrieben. Bei sauberer Durchführung von Langzeitanalysen lässt sich unter Einbeziehung der Variablen „Likes„, „Comments„, „Fananzahl der Accounts“ die „Beliebtheit“ oder auch wirtschaftliche Werthaltigkeit von – z.B. – touristisch interessanten Sehenswürdigkeiten, Denkmälern, Strände oder auch Städte begutachten und dauerhaft beobachten.

Die „manuelle“ Begutachtung der Location lässt sich über das folgende Schema realisieren: https://www.instagram.com/explore/locations/[id]/.

Beispiele sind:
Tour Eiffel
Höfe am Brühl (Leipzig)
Thomaskirche (Leipzig)
MSC Mattstedt (bei Apolda)
Mc Donalds Apolda
Weimar
Rom – Iceclub

Interessant ist hier natürlich auch die Verbindung zur Hashtaganalyse, da man hier Hinweise oder interpretationsfähige Grundlagen für das aktuell besprochene „User Intent“ finden kann.

Eine Erweiterung der Analysedatenbanken ist geplant und wir werden die konkreten Freigabemodalitäten noch intern diskutieren.

Zielgruppenanalysen mit Pinterest

In den letzten Tagen wurde ich äußerst intensiv dahingehend befragt, wie man denn mit Hilfe von Pinterest Fans aus vordefinierten Ländern identifizieren kann.
Die Vorgehensweise ist via API relativ einfach erklärt:

[1. Schritt]
Suchabfrage auf die Boards
https://api.pinterest.com/v3/search/pins/?join=via_pinner,board,pinner&page_size=20&query=[suchwort(e)]&access_token=[deintoken]

[2. Schritt]
Erfassen der Boardbesitzer_innen über den Eintrag „data[nr].url„. Dieser hat das Schema /username/boardname und demzufolge müssen die „/“ zzgl. dem Boardnamen entfernt werden. Der extrahierte Username wird zwecks Weiterverarbeitung zwischengespeichert.

[3. Schritt]
Erfassen der Userangaben mit Hilfe der URL: https://api.pinterest.com/v3/pidgets/users/[username]/pins/
Die Angaben zum User befinden sich in diesen Variablen:
[user][about] => Beschreibung
[user][location] => Ort / Land
[user][full_name] => Name des Users
[user][follower_count] => Anzahl der Fans
[user][pin_count] => Anzahl der Pins
[user][profile_url] => Profilurl

Schaut man sich nun die Ergebnisse aus der Abfrageurl an, fallen Angaben zu den letzten Pins und deren „Beliebtheit“ (repin_count, like_count) auf und diese lassen sich nun als Bezugsgröße für die Beobachtungen zu „Aktivität“ und „Beliebtheit“ heran ziehen. Bei einer sauberen Langzeitanalyse dieser Daten lassen sich u.U. Teilaspekte des „User Intent“ prognostizieren. Ich werde vermutlich bis zum 18.01.2016 die Recherchefunktionen in unseren Beobachtungskomplex einbeziehen und unseren Kund_innen und Betatester_innen zur Verfügung stellen. Eine eventuelle Erweiterung der Accountanalysefunktionen auf die Systeme „Instagram“, „Twitter“ und „Facebook“ wird von uns derzeit intern noch ausdiskutiert.

Google-Suchvorschläge auslesen (API, Script)

Neulich hatte ich Gelegenheit, das Auslesen von Suchvorschlägen auf eine Webanwendung auszulagern. Das Ergebnis ist:
$wort = $_GET["abfr"];
function getKeywordSuggestionsFromGoogle($keyword) {
$keywords = array();
$data = file_get_contents('http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&q='.urlencode($keyword));
if (($data = json_decode($data, true)) !== null) {
$keywords = $data[1];
}
return $keywords;
}
echo implode("
",getKeywordSuggestionsFromGoogle($wort));

Bei der Benutzung dieser API fällt folgendes auf:
– der Vorschlagsalgorithmus reagiert (derzeit) extrem spät (bis zu 5 Tage!) auf aktuelle Themen und Trends
– die konkrete Berechnung oder die Basis der Ergebnisse ist nicht geklärt und das „Warum wird etwas gezeigt?“ lässt sich nicht beantworten.
– die Ergebnisse von Abfragen aus verschiedenen IP-Adressen (auch Orte, Bundesländer etc.) „wirken“ bei nicht-lokalen Abfragen relativ deckungsgleich

Ausgehend von diesen Beobachtungen kann ich derzeit nicht empfehlen, diese API als primäre Recherchequelle für Trends oder die Werthaltigkeit von Inhalten zu nutzen. Unterstellt man hinter dieser „Werthaltigkeit“ oder „Content-is-King-Phrase“ die Befriedigung des „User Intent„, hilft letztendlich nur die Tiefenanalyse der Kommunikationsinhalte in den Socialmedia, da eben hier Trends und wichtige Themen / Fragen quasi in Echtzeit oder stark zeitnah analysierbar sind.

Update: Hashtaganalyse (Instagram) auf Version 0.13B

Die Scripte und Funktionen wurden um die Definitionsmöglichkeiten konkreter Zeitpunkte erweitert. Dies sieht im Ergebnis nun so aus:

1) Schema „%suchwort%“
[letzter Datensatz]
http://www.pontimania.de/_tools/instagram/output_txt2?abfr=foto&tagmin=20
[Datensatz vom 01.01.2016]
http://www.pontimania.de/_tools/instagram/output_txt2?abfr=foto&tagmin=20&date=2016-01-01

2) Schema „suchwort%“
[letzter Datensatz]
http://www.pontimania.de/_tools/instagram/output_txt2?abfr=foto&tagmin=20
[Datensatz vom 20.12.2015]
http://www.pontimania.de/_tools/instagram/output_txt1?abfr=foto&tagmin=20&date=2015-12-20

Die Angaben zur Variable „date“ lassen sich mit dem Schema „yyyy-mm-dd“ festlegen.

In der direkten Auflistung der Reichweitenveränderungen gab es eine Erweiterung auf die Filterfunktion „Wochentage“. Diese lässt sich wie folgt „ansprechen:

http://www.pontimania.de/_tools/instagram/output_rw?abfr=fotoausstellung&tagmin=20&wday=Mi

Die Variable „wday“ ist hier „optional“. Wird diese entfernt, erscheinen alle erfassten Datensätze und bei Verwendung werden die Wochentage in Form von „Mo“, „Di“, „Mi“, „Do“, „Fr“, „Sa“ oder „So“ benötigt.

Bei beiden Recherchevarianten sind nun die Gegenrecherchefunktionen auf unsere Twitter- und Pinterestscripte freigeschaltet.

Update: Hashtaganalyse (Instagram) auf Version 0.12B

Wie bereits angekündigt habe ich neulich die Datensätze aus der Postanalyse in das Projekt eingepflegt. Diese beinhalten in der zugänglichen Version folgende Angaben:

(a) Tagsammlung
(b) Link
(c) Publish-Datum des Posts

Die Analysefunktion lässt sich über den folgenden Link erreichen und ist im System unter dem Kürzel „TF+P“ zu finden (siehe „letzte Recherchen„).

Versierte User_innen können auch das Script auch hierueber aufrufen: http://www.pontimania.de/_tools/instagram/output_txt3?abfr=foto&tagmin=20. Hier lassen sich die Variablen „abfr“ und „tagmin“ entsprechend der Bedürfnisse anpassen, wobei „tagmin“ hier die maximal auszulesende Ergebniszahl beschreibt.

Ich bitte zu beachten:
Das Erfassen der Posts erfordert relativ viel Speicherplatz und demzufolge wird ein lückenloses Monitoring nicht gewährleistet. Wir werden allerdings „intern“ noch über die Updatefrequenzen diskutieren und eine entsprechende Meldung in diesem Blog absetzen. Die Rechercheergebnisse aus der Tabelle „Posts“ können und sollten also primär zum Zwecke der „groben“ Inspiration dienen.

Die bestehende API wird zeitnah auf die neuen Datensätze angepasst.

Hashtaganalyse (Instagram) auf Ebene der Posts

Leider bin ich erst über die Weihnachtsfeiertage dazu gekommen, mich um das Thema der „Feinanalysen“ via Instagram-API zu kümmern. Der Lösungsweg der Hashtaganalyse auf Ebene der einzelnen Posts sieht nun so aus:

[API-URL]
https://api.instagram.com/v1/tags/“.$wort.“/media/recent?access_token=“.$token
Die Variable „$wort“ beschreibt den Inhalt der Suchabfrage und die Variable „token“ zeigt den Zugriffscode auf die Instagram-API. Dieser Code lässt sich über eine der bekannten Anmeldeprozeduren generieren und einen möglichen Weg beschrieb ich im Artikel „Instagram-Token generieren„.
Die API-URL zielt auf eine „Momentaufnahme“ zur Abfrage und liefert „bis zu“ 20 Ergebnisse zurück. Möchte man mehr erhalten, hilft ein Blick auf die Rückgabevariable „pagination->next_url“.

[Scrape-Codes]
$response = get_curl('../../../../../$api');
if($response){
foreach(json_decode($response)->data as $item){
$names = $item->user->username;
$summe = count($item->tags);
$publish_time = $item->created_time;
$insta_link = $item->link;
while($a <= $summe-1) { echo $item->tags[$a]."
";
$a++;
}
}

Die Variable „publish_time“ wird noch in ein „lesbares“ Format konvertiert und die einzelnen Tags müssen noch gewichtet (Zeichenlänge, Reichweite etc.) werden.
Das Projekt „Hashtaganalyse“ wird zeitnah um diese Abfragefunktionen und Datensätze erweitert.

Erweiterung der Exports auf „XML“ (Hashtaganalyse)

Aufgrund geänderter Anforderungen in der Hashtaganalyse und vielen (!) Rückmeldungen habe ich soeben die Exportfunktionen auf das Format „XML“ erweitert.

Diese lassen sich wie folgt aufrufen:

[Suchfunktionen]
http://www.pontimania.de/_tools/instagram/api/search_xml
Hier müssen natürlich die Variablen, welche ich im Beitrag vom 12.Dezember 2015 bereits erklärte, übergeben werden.

[Ausgabe der Prüfzeiträume]
http://www.pontimania.de/_tools/instagram/api/dates_xml

Möchte man nun die Inhalte dieser XML-Datensätze parsen und weiter verarbeiten, bietet sich der folgende Codeschnipsel an:
$xml = simplexml_load_string( $Result );
foreach ( $xml->data as $datas )
{
echo 'Nr: ' . $datas->tag . '
';
}