Contentgun: Instagram-Posts automatisch erstellen mit n8n und Gemini
  • 13. August 2026
  • Künstliche Intelligenz
  • Marketing
  • By Stefan Antonelli

Contentgun: Instagram-Posts automatisch erstellen mit n8n und Gemini

Der Aufwand bei Social Media steckt selten in der Idee. Er steckt in allem danach. Text formulieren, Bild bauen, Format prüfen, hochladen, Caption einfügen, veröffentlichen. Für einen einzigen Post gehen so schnell vierzig Minuten drauf, und am Ende bleibt der Kanal trotzdem liegen, weil die Woche voll war.

Bei uns läuft das inzwischen anders. Ich tippe einen Gedanken in ein Formular, wähle eine von zwei Bildvarianten und drücke auf Absenden. Ein paar Minuten später steht der Post auf Instagram und Facebook. Das Bild liegt in zwei Formaten in Google Drive, die Caption als Textdatei daneben.

Den Workflow dahinter nennen wir Contentgun. Er läuft in n8n, nutzt Google Gemini für Text und Bild und veröffentlicht über die Meta Graph API. Ich zeige dir, wie er aufgebaut ist, und du kannst ihn dir am Ende herunterladen.

Contentgun: Instagram-Posts automatisch erstellen mit n8n
YouTube Short

Warum wir das überhaupt gebaut haben

Der wichtigste Punkt vorweg. Es geht nicht darum, mehr zu posten. Es geht darum, dass ein Gedanke nicht verloren geht, nur weil gerade keine Zeit für die Umsetzung ist.

Genau das ist bei kleinen und mittleren Unternehmen der Normalfall. Die Ideen sind da, oft sogar richtig gute, aber zwischen Idee und fertigem Beitrag liegen zu viele Handgriffe. Die Automatisierung nimmt genau diese Handgriffe weg. Die Idee und die Freigabe bleiben beim Menschen.

Der zweite Punkt ist die Konsistenz. Tonfall und Optik kommen nicht mehr aus dem Bauch, sondern aus zwei Tabellen, die einmal sauber befüllt wurden. Damit sieht der zwanzigste Post aus wie der erste und klingt auch so.

Die Node-Kette des Contentgun-Workflows in n8n

Der Ablauf in sechs Etappen

1. Ein Formular als Auslöser

Am Anfang steht ein Form Trigger von n8n mit genau zwei Feldern. Ein Textfeld für den Gedanken und ein Dropdown für die Bildvariante, dark oder magenta. Mehr braucht es nicht. Je niedriger die Hürde am Eingang, desto eher wird das Ding auch benutzt.

2. Zwei Data Tables liefern Stimme und Optik

Bevor irgendein Modell arbeitet, holt der Workflow zwei Datensätze aus n8n Data Tables. Der eine enthält Zielgruppe, Tonalität und Schreibregeln. Der andere enthält die Farben für die gewählte Bildvariante.

Beides steckt bewusst nicht im Prompt selbst. Wenn sich der Tonfall ändert oder eine dritte Farbvariante dazukommt, änderst du eine Tabellenzeile statt einen Prompt in einem Node.

3. Gemini schreibt die Caption

Der Text entsteht mit Gemini 3.1 Flash Lite. Die Google-Suche ist als eingebautes Werkzeug aktiv, damit das Modell Fachbegriffe aus dem Input kurz einordnen kann, bevor es sie für die Zielgruppe übersetzt.

Das Modell antwortet nicht in Fließtext, sondern in JSON mit drei Feldern. Eine Headline fürs Bild, eine Subline fürs Bild und der Caption-Text für den Post. Ein kleiner Code-Node zieht das JSON anschließend aus der Antwort heraus.

Du bist ein professioneller Social-Media-Copywriter und B2B-Experte. Deine Aufgabe ist es, aus unstrukturierten Gedanken, Rohtexten oder ersten Entwürfen des Users einen hochwertigen Instagram-Post zu generieren.

WICHTIGSTE REGEL ZUM INHALT:

Der generierte Post muss zwingend das exakte Kernthema und die spezifischen Informationen des User-Inputs behandeln. Weiche niemals auf generische Floskeln aus. Wenn der Input technisch oder nischig ist (z.B. neue Software-Features), ist es deine Aufgabe, den Business-Wert dieser spezifischen News für die Zielgruppe herauszuarbeiten, ohne die eigentliche Information wegzulassen.

RECHERCHE (Google Search):

Nutze die Google-Suche, um im Input enthaltene Fachbegriffe, Tools (z.B. n8n, MCP) oder Thesen kurz zu recherchieren. Verstehe den Kontext der Begriffe, damit du ihre Bedeutung und ihren Nutzen für die Zielgruppe korrekt in den Post übersetzen kannst.

ZIELGRUPPE:

{{ $(‘Load Voice Guide’).first().json.target_audience }}

TONALITÄT:

{{ $(‘Load Voice Guide’).first().json.tone_of_voice }}

SCHREIBREGELN:

{{ $(‘Load Voice Guide’).first().json.writing_style }}

GRUNDHALTUNG BEIM SCHREIBEN DER CAPTION:

Schreib so, als hätte der Absender die Caption selbst getippt, nicht als hätte eine Marketing-Abteilung darübergebügelt. Bleib nah am Wording des Inputs und greif konkrete Begriffe und Formulierungen daraus auf. Sprich die lesende Person durchgehend mit “du” an. Schreib in kurzen, aktiven, vollständigen Sätzen mit Subjekt, Prädikat und Objekt, keine Stichpunkte oder Satzfragmente. Bleib sachlich und verzichte auf reißerische Adjektive (z.B. “extrem”, “unglaublich”, “brandneu”, “enorm”) und auf Buzzwords (z.B. “Game Changer”, “revolutionär”, “Disruption”, “Boom”). Setze keine Empfehlung als Anweisung, sondern als Vorschlag oder eigene Erfahrung.

VERBOTEN IM TEXT:

Keine Emojis und keine dekorativen Elemente. Keine Em-Dashes oder Gedankenstriche. Trenne Gedanken stattdessen mit Punkt und neuem Satz, Komma oder mit “und”/“oder”. Ein Bindestrich ist nur erlaubt, wo er grammatikalisch zur Wortverbindung gehört (z.B. “KI-gestützt”). Keine Doppelpunkte, Strichpunkte oder Semikolons zur Satztrennung. Keine erfundenen Quellen, Zitate oder Links.

OUTPUT-REGELN (JSON):

Generiere die Antwort ausschließlich als valides JSON-Objekt ohne weiteren Text davor oder danach.

Das JSON muss exakt diese drei Felder enthalten und folgende Längen- und Formatvorgaben erfüllen:

  1. “image_headline”:
    • Maximal 6 Wörter.
    • Eine starke, eigenständige Aussage für das Bild, die das konkrete Thema des Inputs aufgreift.
    • Den Input nicht 1:1 kopieren.
  2. “image_subline”:
    • Maximal 8 Wörter.
    • Erläutert, ergänzt oder kontrastiert die Headline.
  3. “post_text”:
    • Die Caption des Posts, in vollständigen Sätzen und in mehreren kurzen Absätzen.
    • Absatz 1 (Intro): Knackiger Einstieg mit klarem Bezug zum konkreten Thema des Inputs, 250 bis 300 Zeichen. Die erste Zeile ist ein starker Hook, der zum Input passt.
    • Absatz 2 (Hauptteil): Die eigentliche Caption zum Thema, nah am Wording des Inputs, ein bis zwei kurze Absätze. Arbeite den konkreten Nutzen für die Zielgruppe heraus.
    • Absatz 3 (Ressourcen-Hinweis, optional): Nur wenn im Input eine URL oder Ressource genannt wird, ein eigenständiger Absatz als vollständiger Satz, der die URL als lesbaren Bestandteil enthält. Dieser Absatz steht immer vor der CTA und niemals in derselben Zeile wie die CTA-Frage. Erfinde keine Links. Wenn keine URL oder Ressource im Input steht, lass diesen Absatz ersatzlos weg.
    • Zu Terminen, Orten, Uhrzeiten und Agenda nenne ausschließlich Fakten, die im Input stehen. Recherchiere höchstens zur thematischen Einordnung, aber erfinde keine Event-Details und übernimm keine Termindaten aus Suchergebnissen.
    • Absatz 4 (CTA): Ein eigener, klar abgesetzter Absatz mit einer echten offenen Frage, die zum Kommentieren einlädt. Dieser Absatz enthält ausschließlich die Frage, keine URL und keinen Ressourcen-Hinweis.
    • Nach dem CTA-Absatz folgt exakt eine Leerzeile.
    • Danach folgt ein Absatz mit genau 5 thematisch passenden Hashtags, alle klein geschrieben, durch Leerzeichen getrennt.

OUTPUT-FORMAT: { “image_headline”: ”…”, “image_subline”: ”…”, “post_text”: ”…” }

4. Gemini baut zwei Bilder

Headline und Subline wandern direkt in zwei Bild-Prompts, einmal im Format 4:5 für den Feed und einmal 1:1. Als Modell läuft Gemini 3.1 Flash Image, besser bekannt als Nano Banana.

Der Prompt beschreibt keine Illustration, sondern eine Textkarte. Hintergrundfarbe, Akzentlinie und Schriftfarbe kommen aus der Brand-Tabelle. Auffällig lang ist der Abschnitt gegen Ränder. Bildmodelle bauen sonst gerne einen weißen Rahmen um die Karte, deshalb steht das Verbot dort gleich sechsmal in unterschiedlichen Worten.

Erzeuge eine minimalistische, premium gestaltete vertikale Instagram-Card im Format 4:5, die eine Ästhetik für Technologie- und KI-Branding vermittelt.

Der Hintergrund der gesamten Karte ist ein tiefes, solides {{ $(‘Load Brand Templates’).first().json.background }}.

Die Hintergrundfarbe füllt die gesamte Bildfläche randlos von Kante zu Kante (full bleed). Es gibt keinen Rahmen, keine Umrandung, keinen Rand, keine Border, kein Passepartout und keinen weißen oder andersfarbigen Streifen an den Bildkanten. Die Karte ist kein gerahmtes Objekt auf einer Fläche, sondern der Hintergrund reicht bis an alle vier Bildränder. Keine Außenränder, kein Margin, kein Padding am Bildrand.

Zentriert auf der Card befinden sich die Haupttextelemente.

Ein großer, fetter Headline-Text: {{ $json.image_headline }}

Direkt unter dem zentrierten Headline-Text ist eine scharfe, horizontale Trennlinie in der Farbe {{ $(‘Load Brand Templates’).first().json.accent }} platziert.

Darunter folgt eine kleinere Subline: {{ $json.image_subline }}

Sowohl die Headline als auch die Subline verwenden eine moderne, geometrische Sans-Serif-Schriftart ähnlich Unbounded, in der Farbe {{ $(‘Load Brand Templates’).first().json.text_color }}.

Am unteren Fuß der Karte sind zwei Textelemente positioniert.

Auf der linken Seite steht “YOUR_INSTAGRAM_HANDLE” und auf der rechten Seite “YOUR_DOMAIN”. Beide Fußzeilentexte sind in derselben Farbe {{ $(‘Load Brand Templates’).first().json.text_color }} gehalten.

Die gesamte Komposition ist sauber, fokussiert und professionell, ohne Logos, Icons oder Badges. Reichlich negativer Raum hebt den Text und den Magenta-Akzent hervor.

So sieht eine fertige Karte aus.

Von Contentgun generierte Instagram-Card

5. Google Drive als Zwischenlager

Beide Bilder und die Caption landen in einem Drive-Ordner. Das hat zwei Gründe.

Erstens hast du damit ein Archiv. Wenn ein Post gut läuft, findest du die Datei wieder. Zweitens braucht die Meta API eine öffentlich erreichbare Bild-URL. Sie lädt keine Datei entgegen, sie holt sie sich selbst ab. Deshalb setzt ein eigener Node die Freigabe des 4:5-Bildes auf “jeder mit dem Link”.

Das solltest du bewusst entscheiden. In dem Ordner liegen dann Dateien, die jeder mit der Kenntnis der ID abrufen kann. Für generierte Post-Grafiken ist das unkritisch, für alles andere nicht.

6. Instagram über den Umweg Container

Instagram nimmt keinen fertigen Post entgegen. Der Ablauf hat zwei Schritte und dazwischen eine Wartezeit.

Zuerst legt der Workflow einen Media Container an und übergibt Bild-URL und Caption. Meta lädt das Bild im Hintergrund und verarbeitet es. Erst wenn der Status FINISHED lautet, darf veröffentlicht werden.

Genau dafür gibt es die kleine Schleife im Workflow. Status abfragen, ein IF prüft auf FINISHED, bei Nein wartet ein Wait-Node fünf Sekunden und fragt erneut. Bei Ja geht der Post über media_publish raus. Facebook ist einfacher und braucht nur einen einzigen Aufruf.

Der von Contentgun veröffentlichte Instagram-Post

Die Data Tables, die du brauchst

Die beiden Tabellen exportieren wir nicht mit, weil in ihnen unsere Inhalte stehen. Du legst sie dir selbst an. Hier steht genau, wie sie heißen müssen und welche Spalten sie brauchen.

Tabelle 1: cm_style

Diese Tabelle liefert die Sprache. Der Workflow holt daraus genau eine Zeile, nämlich die mit dem Schlüssel ig_voice.

SpalteTypWofür
keyStringSchlüssel der Zeile. Der Workflow sucht nach dem Wert ig_voice.
activeBooleanNur zur Verwaltung, wird im Workflow nicht ausgewertet.
notesStringNur zur Verwaltung, wird im Workflow nicht ausgewertet.
target_audienceStringDeine Zielgruppe. Landet als Block ZIELGRUPPE im System-Prompt.
tone_of_voiceStringDein Tonfall. Landet als Block TONALITÄT im System-Prompt.
writing_styleStringDeine Schreibregeln. Landet als Block SCHREIBREGELN im System-Prompt.

Für die drei Textspalten reicht jeweils ein kurzer Absatz. Ein Beispiel, an dem du dich entlanghangeln kannst.

SpalteBeispielwert
keyig_voice
target_audienceGeschäftsführerinnen und Geschäftsführer in Betrieben mit 5 bis 200 Mitarbeitenden. Neugierig, aber skeptisch, ohne technischen Hintergrund.
tone_of_voiceProfessionell und nahbar, auf Augenhöhe. Du-Ansprache. Kurze, aktive Sätze.
writing_styleEin Gedanke pro Satz. Konkrete Beispiele statt vager Begriffe. Keine Emojis. Empfehlungen als Vorschlag formulieren, nicht als Anweisung.

Tabelle 2: brand_templates

Diese Tabelle liefert die Optik. Der Workflow holt daraus die Zeile, deren Schlüssel der im Formular gewählten Variante entspricht.

SpalteTypWofür
keyStringName der Variante. Muss zu den Optionen im Formular passen.
backgroundStringHintergrundfarbe der Karte, als Hex-Wert oder als Beschreibung.
text_colorStringFarbe von Headline, Subline und Fußzeile.
accentStringFarbe der Trennlinie unter der Headline.

Zwei Zeilen genügen für den Anfang. Wichtig ist nur, dass die Werte in key exakt den Optionen im Dropdown des Formulars entsprechen.

keybackgroundtext_coloraccent
dark#0d0f01#ffffff#ec008c
magenta#ec008c#ffffff#ffffff

Willst du eine dritte Variante, legst du eine Zeile an und ergänzt die Option im Dropdown des Form Triggers. Am Prompt musst du nichts ändern.

Wo die Tabellen im Workflow referenziert werden

NodeTabelleFilter
Load Voice Guidecm_stylekey gleich ig_voice
Load Brand Templatesbrand_templateskey gleich der im Formular gewählten Variante

Beide Nodes greifen im Export über den Tabellennamen zu, nicht über eine ID. Das ist Absicht, denn eine Tabellen-ID gilt immer nur in genau einer n8n-Instanz. Achte deshalb auf die exakte Schreibweise der Namen, sonst findet der Node die Tabelle nicht.

Wenn dir cm_style als Name nicht gefällt, benenne die Tabelle um und passe den Wert im Node an. Der Name ist historisch gewachsen und hat keine tiefere Bedeutung.

Der Workflow zum Download

Hier bekommst du den kompletten Workflow als JSON-Datei. In n8n gehst du auf Import from File und lädst sie hoch.

n8n Workflow herunterladen

In der Datei stecken keine Zugangsdaten und keine Konto-IDs von uns. Alles, was du ersetzen musst, steht als Platzhalter drin und ist zusätzlich als Notiz am jeweiligen Node hinterlegt.

Was du nach dem Import einstellen musst

Fünf Platzhalter und drei Zugänge, dann läuft die Kette.

PlatzhalterWoWas rein muss
YOUR_GOOGLE_DRIVE_FOLDER_ID3 Drive-NodesDie ID deines Zielordners aus der Drive-URL
YOUR_IG_BUSINESS_ACCOUNT_IDCreate IG Container, Publish PostDie ID deines Instagram-Business-Kontos
YOUR_FACEBOOK_PAGE_IDPost to FacebookDie ID deiner Facebook-Seite
YOUR_INSTAGRAM_HANDLEbeide Bild-PromptsDein Instagram-Name für die Fußzeile der Karte
YOUR_DOMAINbeide Bild-PromptsDeine Domain für die Fußzeile der Karte

Dazu kommen die Zugänge.

  • Ein Google-Gemini-Zugang für die drei Gemini-Nodes.
  • Ein Google-Drive-Zugang für die vier Drive-Nodes.
  • Ein Query-Auth-Zugang mit deinem Meta-Access-Token für die vier HTTP-Nodes. Der Token braucht die Berechtigungen für Instagram-Veröffentlichungen und für die Seitenverwaltung.

Und die beiden Data Tables aus dem Abschnitt oben. Ohne sie bricht der Workflow direkt nach dem Formular ab.

Ein Hinweis zur Sicherheit

Der Form Trigger erzeugt eine öffentlich erreichbare URL. Wer sie kennt, kann das Formular absenden, und jeder Absendevorgang verbraucht bei dir Gemini-Kontingent und veröffentlicht am Ende einen Beitrag auf deinen Kanälen.

Stell also die Authentifizierung im Form Trigger auf Basic Auth, bevor du den Workflow aktivierst. Das ist eine Einstellung von zwei Minuten und erspart dir eine unangenehme Überraschung.

Der zweite Punkt ist die Freigabe in Google Drive. Der Node “Make Public” setzt die Bilddatei auf öffentlich, damit Meta sie abholen kann. Nutze dafür einen eigenen Ordner, in dem sonst nichts liegt.

Was du daraus mitnehmen kannst

Der eigentliche Trick an dieser Automatisierung ist nicht die KI. Es sind die zwei Tabellen.

Sie trennen das, was sich ständig ändert, von dem, was stabil bleibt. Der Prompt ist die Mechanik und bleibt unangetastet. Zielgruppe, Tonfall und Farben sind Inhalt und liegen dort, wo man sie ohne Angst anfassen kann. Genau daran scheitern viele KI-Projekte im Alltag. Sie werden einmal gebaut und dann nie wieder angepasst, weil sich niemand traut, im Prompt zu editieren.

Dasselbe Muster funktioniert weit über Social Media hinaus. Angebotstexte, Produktbeschreibungen, Antwortvorlagen im Support. Überall dort, wo etwas oft und in gleicher Machart entstehen soll, ist die Aufteilung in Mechanik und Inhalt der Unterschied zwischen einem netten Experiment und einem Werkzeug, das nach einem halben Jahr immer noch läuft.

operunAI ist dein externer Ansprechpartner für alle KI-Themen. Wir schauen uns an, welche wiederkehrenden Aufgaben bei dir Zeit fressen, was sich davon sinnvoll automatisieren lässt und was besser beim Menschen bleibt. Herstellerunabhängig, ohne Tool-Verkauf und mit laufender Begleitung.

Welche Aufgabe machst du in deinem Betrieb gerade zum zwanzigsten Mal von Hand?


Quellen

  • AI
  • KI
  • n8n
  • Automatisierung
  • Workflow
  • Gemini
  • Google Gemini
  • Instagram
  • Social Media
  • Meta API
  • Nano Banana