5 Min. Lesezeit

Eine KI, die ihren eigenen Geschmack lernt

Warum KI-generierter Content ohne Rückkanal generisch bleibt – und wie zwei Feedback-Kreisläufe aus einem Instagram-Tool eine KI machen, die den Geschmack des Accounts trifft.

ki

Ich betreue drei Instagram-Business-Accounts – meinen eigenen und zwei aus dem Umfeld. Drei Accounts, drei völlig verschiedene Zielgruppen, und alle wollen regelmäßig bespielt werden. Also habe ich mir ein lokales Tool gebaut: TypeScript-Backend, React-UI, Claude für Texte und Entwürfe, Puppeteer fürs Rendern, Publishing über die Instagram-API.

Die erste Version konnte nach zwei Wochenenden alles, was man erwartet: Briefing rein, fertiger Karussell-Entwurf raus, Caption, Hashtags, geplantes Veröffentlichen. Und die Ergebnisse waren – okay. Technisch korrekt, sprachlich sauber, und trotzdem hätte jeder beim Scrollen sofort gedacht: KI-Content. Austauschbar. Der Weg von „okay" zu „trifft den Account" war dann interessanter als das ganze restliche Tool. Er bestand nicht aus besseren Prompts, sondern aus Rückkanälen.


Vorab: Warum der Text nicht aus dem Bildmodell kommt

Ein Reinfall gleich zu Beginn, der die Architektur geprägt hat: Ich wollte Slides komplett vom Bildmodell generieren lassen – Hintergrund, Layout, Headline, alles in einem Prompt. Das Ergebnis sah auf den ersten Blick beeindruckend aus, bis man die Headline las. Bildmodelle setzen Text nicht zuverlässig. Mal fehlt ein Umlaut, mal ist die Typo leicht „geschmolzen", mal steht da ein Wort, das es nicht gibt. Für ein Meme reicht das vielleicht, für einen Business-Account mit CI nicht.

Die Lösung ist eine klare Arbeitsteilung:

  • Das Bildmodell liefert nur atmosphärische Hintergründe – keine Menschen, kein Text, keine Marken.
  • Der Text liegt als HTML-Ebene darüber: echte Webfonts, echte CI-Farben, pixelgenau.
  • Puppeteer rendert das fertige HTML-Dokument als JPEG in 1080er-Formaten.

Headless Chrome als Render-Werkzeug hatte ich an anderer Stelle schon einmal eingesetzt – hier zahlt es sich doppelt aus, denn dasselbe HTML, das Puppeteer zum JPEG macht, zeigt die UI als Live-Vorschau in einem sandboxed <iframe srcdoc>. Vorschau und Export teilen sich das Markup. Es gibt kein zweites Template, also auch keinen Drift zwischen „so sah es in der Vorschau aus" und „so wurde es exportiert".

Die Lektion: Nicht alles, was ein Modell irgendwie kann, sollte es auch tun. Text-Rendering ist ein gelöstes Problem – es heißt HTML.


Kreislauf 1: Themenvorschläge, die man benoten kann

Das Tool hat ein „Themen-Radar": Es durchsucht die Themenfelder des Accounts nach Neuigkeiten und schlägt Posts vor. Die erste Version davon war ein klassischer One-Shot – Prompt rein, fünf Vorschläge raus. Und jede Woche dieselbe Sorte Vorschlag, unabhängig davon, was ich letzte Woche davon gehalten hatte. Logisch: Das Modell konnte es nicht wissen. Es gab keinen Weg, auf dem mein Urteil je wieder beim Modell angekommen wäre.

Der Fix ist unspektakulär und hat das Feature komplett verändert. Vorschläge landen jetzt in einer Tabelle und sind bewertbar: Daumen hoch, Daumen runter, optional mit Begründung, besonders gelungene lassen sich als Vorlage markieren. Beim nächsten Lauf baut ein feedbackBlock() die Historie in den Prompt ein:

## Was bisher ankam
- ✓ „Fördermittel-Deadline im Herbst" – konkret, mit Datum, hohe Speicherrate
- ✕ „5 Tipps für dein Zuhause" – Begründung: zu generisch, könnte jeder posten
- Vorlage: „Vorher/Nachher mit einer Zahl im Titel"

Das ist kein Machine Learning, kein Fine-Tuning, keine Vektordatenbank. Es ist eine SQLite-Tabelle und ein String im Prompt. Aber der Unterschied ist der zwischen einem Praktikanten am ersten Tag und einem am dreißigsten: Derselbe Mensch, aber einer von beiden hat die Reaktionen auf seine Arbeit mitbekommen.


Kreislauf 2: Gestaltung × Wirkung

Der zweite Kreislauf schließt eine größere Schleife – nicht über mein Bauchgefühl, sondern über echte Zahlen.

Jeder Entwurf besteht aus Slides mit expliziten Gestaltungsachsen: ein Layout-Archetyp (Statement, Zitat, Statistik, Liste, …) mal ein Hintergrund-Stil, dazu Tonalität und Typo. Diese Metadaten werden beim Übernehmen des Entwurfs am Post gespeichert. Nach dem Veröffentlichen holt das Tool die Instagram-Insights und verknüpft beides über die Media-ID. Ab da lässt sich fragen: Wie performt der Statistik-Archetyp auf diesem Account, verglichen mit dem Rest?

Zwei Entscheidungen dabei haben sich als die wichtigsten herausgestellt:

Erstens: relativ statt absolut. Ein Post mit 800 Reichweite ist auf einem Account ein Ausreißer nach oben und auf einem anderen ein Rohrkrepierer. Bewertet wird deshalb immer relativ zum Median-Reach des gesamten Accounts – einschließlich der Posts, die gar nicht aus dem Tool kommen. Der Median statt des Durchschnitts, weil ein einziger viraler Post sonst jede Baseline verzerrt.

Zweitens: eine Mindestmenge, bevor irgendetwas in den Prompt einfließt. Gruppen unter zwei Posts werden ignoriert. Das klingt banal, aber genau da wird aus Statistik sonst Aberglaube – ein gut gelaufener Zitat-Slide macht Zitate nicht zur Gewinnstrategie. Ein Ausreißer wird keine Regel.

Das Ergebnis fließt – wie beim Themen-Radar – als Textblock in den Entwurfs-Prompt: „Auf diesem Account liegen Statistik-Archetypen 40 % über dem Median, Meme-Kompositionen 25 % darunter." Die KI gestaltet den nächsten Entwurf mit diesem Wissen.


Die eigentliche Erkenntnis: Der Prompt ist Zustand, kein Text

Ich habe lange geglaubt, gutes Prompt-Engineering hieße: den einen, perfekt formulierten Prompt finden. Statisch, versioniert, fertig. Was dieses Projekt mich gelehrt hat: Der wertvollste Teil des Prompts ist der Teil, der sich von selbst ändert – zusammengesetzt aus dem, was seit dem letzten Lauf passiert ist.

Prompt = Identität (stabil)
       + Auftrag (pro Anfrage)
       + Feedback-Block (wächst mit jeder Bewertung)
       + Design-Statistik (wächst mit jedem Publish)

Die ersten beiden Zeilen hat jedes KI-Tool. Die letzten beiden sind der Unterschied zwischen einem Generator und einem Werkzeug, das nach vier Wochen besser ist als am ersten Tag – ohne dass sich am Modell oder am Code irgendetwas geändert hätte.

Wer gerade ein KI-Feature baut, dem würde ich deshalb eine einzige Frage mitgeben: Auf welchem Weg erfährt das Modell, was mit seinem letzten Output passiert ist? Wenn die Antwort „gar nicht" lautet, bleibt es für immer der Praktikant am ersten Tag.