Teil der ÜbersichtInstagram Insights
Wie wir 1000 Instagram-Posts in 3 Minuten analysieren
Wer ein neues Profil analysieren will, kann es nach seiner Nische fragen oder in seine Beiträge sehen. Wir tun das Zweite. Tausend Posts einzeln zu scrapen, zu transkribieren und durch ein Modell zu schicken, scheitert allerdings sofort an Zeitgrenzen und Kosten. Hier steht, wie der Ablauf stattdessen aufgebaut ist und an welchen Stellen wir uns gegen den naheliegenden Weg entschieden haben.
Das Problem mit Serverless & Instagram-Daten
Wenn man eine moderne SaaS-Anwendung auf Vercel hostet, läuft der Code standardmäßig in kurzlebigen Serverless-Funktionen. Diese Funktionen haben in den meisten Tarifen ein hartes Limit von 10 bis 30 Sekunden Ausführungszeit (maximal 300 Sekunden). Das reicht für normale API-Aufrufe völlig aus. Eine tiefe Profil-Analyse ist jedoch kein normaler API-Aufruf.
Eine naive Implementierung würde so aussehen:
1. Frage 1000 Posts über eine API an.
2. Lade für jedes Reel das Video herunter, transkribiere den Ton und mache OCR auf den Frames.
3. Analysiere jedes Karussell Bild für Bild.
4. Übergib alles an Claude Sonnet und berechne die Stilstruktur.
Das Ergebnis: Ein garantierter Funktions-Timeout nach ein paar Sekunden, unkontrollierbare API-Kosten im dreistelligen Bereich pro Account-Scan und ein frustrierter Nutzer vor einem hängenden Ladebalken.
Schritt 1: Der Scraping-Broker (Apify)
Instagram sperrt IPs, die ohne Login massenhaft Profile aufrufen, innerhalb von Sekunden. Der Aufbau einer eigenen Proxy-Rotations-Infrastruktur ist komplex, wartungsintensiv und teuer. Stattdessen setzen wir auf **Apify** als spezialisierten Scraping-Broker.
Unser System triggert über eine Serverless-Route einen gezielten Run auf Apifys Instagram-Profile-Scraper. Das geniale an Apify: Wir können den Job asynchron starten. Der Scraper sammelt die rohen Metadaten der letzten Beiträge und schickt das Ergebnis per Webhook zurück an unsere Anwendung, sobald er fertig ist. Wir blockieren somit keine Vercel-Ressourcen während des reinen Datensammelns.
Schritt 2: Die Weichenstellung (Shallow vs. Deep Scan)
Nicht jeder Post ist für die Analyse des Profil-Stils gleich wichtig. Ein Text-Post vor zwei Jahren hat weniger Relevanz als das virale Reel von letzter Woche. Daher haben wir eine zweistufige Pipeline entwickelt:
1. Der Shallow Scan (Schnellanalyse)
Sobald der Apify-Webhook bei uns eingeht, schreiben wir die rohen Metadaten aller Posts direkt in unsere Supabase-Datenbank. Hierzu zählen Captions, Likes, Kommentare, Post-Typen und das Veröffentlichungsdatum. Dieses Schreiben von 1000 Zeilen dauert weniger als 2 Sekunden. Anschließend berechnet ein Datenbank-Trigger sofort die Engagement-Rate für jeden Beitrag und sortiert das gesamte Sample.
2. Der Deep Scan (Tiefenanalyse)
Anstatt alle Reels und Karussells vollständig zu analysieren, filtern wir die Top 25 Beiträge mit der höchsten Engagement-Rate heraus. Nur diese wandern in die rechenintensive „Deep Analysis“-Queue. Die verbleibenden 975 Posts verbleiben im Shallow-Zustand. Ihr Engagement fließt in die globalen Statistiken ein, aber wir verschwenden keine API-Credits darauf, ihre Tonspuren zu transkribieren oder Bild-Scans durchzuführen. Diese Selektion reduziert das zu verarbeitende Datenvolumen um über 90 %.
Schritt 3: Parallele Audio- und Bildanalyse
Selbst bei nur 25 verbleibenden Deep-Scan-Beiträgen würde ein sequenzielles Abarbeiten (einer nach dem anderen) mehrere Minuten dauern. Die Lösung liegt in rigoroser Parallelisierung über `Promise.all` in Node.js.
Reel-Transkription via Whisper
Für die Top-Reels lädt unser Node-Worker die Audio-Spur als komprimierten Stream herunter und übergibt sie an OpenAIs **Whisper-API**. Da Whisper extrem optimiert ist, bekommen wir das Text-Transkript eines 60-Sekunden-Reels in meist unter 1,5 Sekunden zurück.
Karussell-Bildanalyse via Claude Haiku
Karussell-Posts bestehen oft aus bis zu 10 Slides. Ein naiver HTTP-Aufruf pro Slide wäre ein klassisches N+1 Problem. Stattdessen nutzen wir das Bild-Verständnis von **Claude 3 Haiku**. Wir bündeln die URLs aller Slides eines Karussells in einen *einzigen* API-Aufruf an Anthropic. Haiku liest die Texte auf den Bildern per OCR aus und beschreibt uns das visuelle Layout (Schriftgrößen, Kontraste, Hintergrundfarben) in einem konsolidierten JSON-Format.
Der Zeitgewinn: Statt 10 separate API-Anfragen zu schicken (ca. 15 Sekunden), erhalten wir die komplette Inhalts- und Design-Analyse eines gesamten Karussells in nur 1,8 Sekunden.
Schritt 4: Warum wir Supabase statt MongoDB gewählt haben
Bei dokumentenorientierten Daten wie Social-Media-Posts greifen viele Web-Entwickler reflexartig zu MongoDB. Wir haben uns bewusst für **Supabase (PostgreSQL)** entschieden. Die Gründe sind rein pragmatischer Natur:
1. Relationale Integrität
Die Verknüpfung zwischen dem Benutzerprofil (`profiles`), den gescrapten Post-Daten (`own_posts`) und dem Fortschritt des aktuellen Scans (`profile_analysis_jobs`) ist inhärent relational. In Supabase können wir über Fremdschlüssel (`REFERENCES`) garantieren, dass beim Löschen eines Accounts auch alle zugehörigen Posts rückstandslos und atomar aus der Datenbank entfernt werden (Cascading Delete).
2. Effiziente Indizes & Joins
Um festzustellen, ob wir einen Post bereits analysiert haben, führen wir bei jedem Retry oder Resume-Vorgang einen Abgleich durch. Mit einem zusammengesetzten Postgres-Index über `(user_id, instagram_post_id)` dauert dieser Lookup im Schnitt 0,2 Millisekunden. Postgres kann diese Indizes im RAM halten, wodurch Suchabfragen extrem skalieren.
3. Strukturierte Flexibilität mit JSONB
Postgres erlaubt es uns, strukturierte JSON-Daten nativ in einer `jsonb`-Spalte zu speichern. Wir nutzen das für das Feld `analysis_queue` in der Job-Tabelle. Wir vereinen damit das Beste aus beiden Welten: Die absolute Konsistenz einer relationalen Tabelle für IDs und Statuswerte, gepaart mit der schemalosen Flexibilität eines JSON-Dokuments für den transienten Fortschritt der Analyse-Queue.
Wo stößt der Ablauf an Grenzen?
Der Vollständigkeit halber, weil ein Blick hinter die Kulissen sonst nach Werbung klingt. Drei Stellen machen regelmäßig Arbeit.
Private und leere Profile
Ein privates Konto liefert nichts, und ein Konto mit zwölf Beiträgen liefert zu wenig für eine belastbare Aussage. In beiden Fällen ist die ehrliche Antwort, das zu sagen, statt eine Analyse zu erfinden. Wie du in so einer Lage überhaupt startest, steht in Richtung finden.
Die Transkription trifft nicht alles
Eigennamen, Fachbegriffe und Zahlen gehen regelmäßig daneben. Für eine Stilanalyse ist das verkraftbar, weil es auf Satzbau und Wortwahl ankommt. Wer dieselbe Technik für eigene Inhalte nutzen will, sollte den Unterschied kennen, und der steht in Video transkribieren.
Was bei sehr grossen Profilen passiert
Ab einigen tausend Beiträgen wird die vollständige Analyse teuer, ohne dass sie besser wird. Die Stilmerkmale stabilisieren sich deutlich früher, meistens nach ein paar hundert Beiträgen. Deshalb wertet der Ablauf nicht alles aus, was da ist, sondern einen aussagekräftigen Ausschnitt. Drei Regeln legen fest, welcher:
- Neuere Beiträge zählen mehr. Ein Stil von vor vier Jahren beschreibt niemanden mehr.
- Alle Formate kommen vor. Nur Reels auszuwerten ergibt ein schiefes Bild, weil gesprochene Sprache anders gebaut ist.
- Ausreisser bleiben drin. Gerade der eine Beitrag, der ungewöhnlich lief, sagt oft am meisten über die eigene Stimme. Warum man ihn trotzdem nicht als Vorlage nehmen sollte, steht in Reichweite gegen Umsatz.
Was ein Modell im Bild nicht sieht
Farben, Schriftgrößen und Bildaufbau lassen sich zuverlässig auslesen. Ob eine Karte witzig ist oder ob ein Bild zum Text passt, deutlich schlechter. Deshalb fließt die Bildanalyse in die Stilbeschreibung ein und entscheidet nichts allein.
Was der Ablauf am Ende liefert, sind vier Arten von Merkmalen:
- Sprachliche Muster. Satzlängen, wiederkehrende Wendungen, die Art der Einstiege. Der Teil, der am schwersten zu kopieren ist.
- Formatverteilung. Was gepostet wird und was davon getragen hat, siehe Insights ohne Business-Konto.
- Themenschwerpunkte. Die tatsächlichen Säulen, nicht die geplanten, siehe Content-Säulen.
- Visuelle Konstanten. Farben und Aufbau, soweit sie sich wiederholen.
Was entsteht am Ende aus den Daten?
Die Analyse ist kein Selbstzweck. Sie beantwortet eine Frage, die sonst nur geraten wird: Wie schreibt diese Person eigentlich?
Die vier Entscheidungen, die den Unterschied machen
Rückblickend waren es vier, und keine davon ist besonders raffiniert:
- In Abschnitte zerlegen statt in einem Durchgang. Damit spielt die Gesamtdauer keine Rolle mehr, nur die einzelner Schritte.
- Zwischenstände speichern. Ein Abbruch kostet einen Schritt und nicht den ganzen Lauf.
- Zwei Tiefen anbieten. Die schnelle Variante reicht für den ersten Eindruck, die vollständige läuft im Hintergrund weiter.
- Nur das Ergebnis behalten. Die Stilmerkmale, nicht das Rohmaterial. Das spart Speicher und ist datenschutzrechtlich die sauberere Variante.
Warum das mehr trägt als ein Fragebogen
Weil Menschen ihren eigenen Stil schlecht beschreiben können. Wer nach seiner Nische gefragt wird, antwortet in Kategorien, und die sagen wenig über den Ton. Die Beiträge dagegen zeigen ihn direkt. Was daraus für generierte Entwürfe folgt, steht in KI den eigenen Schreibstil anlernen.
Was das für dein eigenes Profil bedeutet
Dieselbe Auswertung lässt sich von Hand machen, nur langsamer. Wer keine Lust auf Technik hat, kommt mit vier Schritten ziemlich weit:
- Die zwanzig meistgespeicherten Beiträge heraussuchen. Wo das steht, klärt Insights am PC.
- Die ersten Sätze untereinander schreiben. Daran siehst du deine Einstiegsmuster deutlicher als an jedem Einzelbeitrag.
- Nach wiederkehrenden Wendungen suchen. Das sind deine Marker, und sie gehören in jeden Prompt.
- Die Themen gruppieren. Was dabei herauskommt, sind deine tatsächlichen Säulen, siehe Redaktionsplan.
Woran du merkst, dass es funktioniert hat
An einer unspektakulären Probe: Ein Entwurf, der auf dieser Grundlage entsteht, sollte sich beim Lautlesen nicht fremd anfühlen. Wo du unwillkürlich umformulierst, hat die Analyse etwas übersehen. Wie du solche Stellen erkennst, steht in KI-Content erkennen und in KI-Text menschlicher machen.
Häufige Fragen
Warum scrapt ihr nicht einfach alle Beiträge auf einmal?
Weil Serverless-Funktionen eine harte Zeitgrenze haben und tausend Posts weit darüber liegen. Der Ablauf ist deshalb in kurze Abschnitte zerlegt, die einzeln abgeschlossen werden und deren Zwischenstand gespeichert wird. Bricht einer ab, läuft nur dieser eine erneut.
Warum Supabase und nicht MongoDB?
Weil die Daten relational sind: Ein Profil hat Beiträge, ein Beitrag hat Karten, eine Karte hat eine Analyse. Diese Beziehungen sauber abzufragen ist mit SQL einfacher, und für die unstrukturierten Teile gibt es JSONB-Spalten. Wir bekommen damit beides, ohne zwei Datenbanken zu betreiben.
Wie genau ist die automatische Transkription?
Bei klarer Aussprache gut. Zuverlässig daneben liegt sie bei Eigennamen, Fachbegriffen und Zahlen. Für eine Stilanalyse ist das verkraftbar, weil es dabei auf Satzbau und Wortwahl ankommt und nicht auf die exakte Zahl.
Was passiert mit den Daten nach der Analyse?
Gespeichert wird das Ergebnis der Analyse, also die Stilmerkmale, nicht das gesamte Rohmaterial. Das hält die Datenmenge klein und ist auch datenschutzrechtlich die sauberere Variante.
Kann ich das Ergebnis für mein eigenes Profil sehen?
Ja, über den kostenlosen Profil-Check. Er läuft denselben Weg, nur mit weniger Beiträgen, und zeigt dir die Stilmerkmale, die dabei herauskommen.
Fazit: Daten schlagen Bauchgefühl
Durch die Kombination aus asynchronem Scraping, der Trennung in Shallow- und Deep-Scans sowie der Bündelung von Vision-Anfragen an Claude Haiku haben wir die Analyse-Zeit von anfangs über 7 Minuten auf **durchschnittlich 160 Sekunden** gesenkt.
Das Ergebnis für den Nutzer: Ein sauberer, schneller Onboarding-Prozess. Und das Ergebnis für die Generierungs-Qualität: Der anschließende Content-Entwurf baut auf der echten Daten-DNA des eigenen Instagram-Kanals.
Welche Kennzahlen wir dabei überhaupt heranziehen und warum die auffälligsten oft die unwichtigsten sind, steht in der Übersicht zu Instagram Insights und ihrer Aussagekraft.
Analysiere dein eigenes Profil in 3 Minuten
Unser Analyse-Scanner zerlegt deine echten Instagram-Posts nach Hooks, Satzrhythmen und Content-Angles. Startest du jetzt, ist deine Stil-DNA in unter 3 Minuten bereit.
Eigene Stil-DNA erstellen →Apify Instagram Scraper API, OpenAI Whisper API Guide, Anthropic Claude Vision Docs.