# Blueprint: Social-Media-Pipeline

Version 1.0 · denzer.ai · Lizenz: frei nutzbar mit Quellenangabe

Eine durchgehende Pipeline für Instagram-Karussells und Reels: Inhalt sammeln, Slides erzeugen, Bilder generieren, Reel rendern, Caption schreiben — alles bis kurz vor dem Post. Der letzte Klick (posten oder nicht) bleibt bei dir.

**Fallbeispiel.** Du willst pro Woche zwei Karussells und ein Reel auf Instagram raushauen. Das Karussell soll deinen Look haben (Schriftart, Farben, Rhythmus), das Reel ist Voice-Over plus passende B-Roll. Bisher dauert die Produktion 2–3 Stunden pro Post. Ziel: 20 Minuten Review-Zeit für dich, der Rest ist automatisiert, ohne dass die Posts nach KI riechen.

---

## Teil B — Für dich (Operator)

### Was ist das?

Drei Bausteine, die zusammenspielen.

**Karussell-Generator.** Du gibst ein Thema (z. B. "5 Fehler beim KI-Einstieg") und deinen Stil. Der Agent schreibt Slides, generiert passende Bilder (eine Person, eine Garderobe pro Post, deine CI), legt sie als 1080×1350 Slides ab. Du blätterst durch, korrigierst Text bei Bedarf, postest manuell auf Instagram.

**Reel-Renderer.** Du gibst ein VO-Skript. Der Agent erzeugt das Voice-Over (deine Stimme oder eine ElevenLabs-Voice), wählt passende B-Roll-Clips (literal zum VO, nicht atmosphärisch), schneidet sie in Remotion zusammen, brennt Captions ein (deine CI), rendert mp4.

**Caption-Schreiber.** Pro Post eine Caption in deinem Stil. Keine Hashtags, keine Emojis-Inflation, keine generischen Buzzwords. Caption ist eigenständig, nicht nur "siehe Karussell".

Nichts wird automatisch gepostet. Du klickst.

### Warum so und nicht anders?

Drei Alternativen, die wir verworfen haben:

1. **Canva-Plugin oder fertiger SaaS-Generator.** Schnell, aber dein Stil verschwindet im Standard-Look des Tools. Posts werden untereinander austauschbar
2. **Auto-Post via Instagram Graph API.** Technisch möglich, erfordert Business-Account und Meta-App-Review. Ohne dich zu fragen Posten widerspricht dem Grundprinzip ("nichts unbeaufsichtigt")
3. **Reine LLM-Generierung ohne Bildmodell.** Texte werden gut, aber Karussells leben vom Visuellen

Daher: **eigene Pipeline mit deinen Bausteinen** — `gpt-image-2` weil das aktuell beste Verhältnis aus Qualität, Geschwindigkeit und Umlaut-Treue, Remotion für Reels weil es Brand-CI sauber kapselt, eigener Caption-Schreiber mit deinem Voice-Profile.

**Review-Pflicht statt Auto-Post**, weil jedes Bild und jede Caption noch einen letzten Sinnescheck braucht. AI-Bilder treffen die CI nicht 100% beim ersten Versuch, und du willst nicht in zwei Wochen merken, dass 14 Posts ungewollt ähnlich aussahen.

### Was brauchst du dafür?

- Ein paar Beispiel-Posts in deinem Stil (für Stil-Profil)
- Deine CI-Datei (Farben, Schrift, Logo)
- Ein Voice-Profil (ElevenLabs-Account oder eigenes Audio-Sample)
- OpenAI-API-Key für `gpt-image-2` (Bilder)
- Optional: Remotion-Setup für Reels

### Wie startest du?

1. Starter laden, Agent geben
2. Sagen: "richte mir die Social-Pipeline ein, ich poste Karussells und Reels auf Instagram"
3. Agent fragt dich nach CI, Voice, Stil-Beispielen
4. Erster Test: "mach ein Karussell zum Thema `<X>`"
5. Du blätterst durch, gibst Freigabe oder Korrekturen

### Wo sind die Grenzen?

- KI-generierte Bilder treffen deine CI nicht beim ersten Versuch perfekt — pro Post 1–3 Iterationen sind normal
- Bei generierten Personen passieren typische KI-Patzer (Hände, Texte im Bild). Lass den Agent automatisch verwerfen, wenn er Text im Bild erkennt
- Hashtags nicht — Instagram-Algorithmus belohnt sie nur noch schwach, lieber starke Captions
- Reels mit echter Sprache klingen besser als TTS, aber TTS reicht für regelmäßige Frequenz

### Was kostet das?

- Bilder (`gpt-image-2`): rund 4 Cent pro Bild, also 12 Cent pro Karussell-Slide-Set
- Voice (ElevenLabs): 30–60 Cent pro 60s Reel
- Modell für Texte und Captions: ein paar Cent pro Post
- Remotion: kostenlos (Open Source)

### Wann lohnt es sich, wann nicht?

Lohnt sich, wenn du mindestens 2 Posts pro Woche raushaust und dir der Produktionsaufwand bisher die Frequenz killt. Lohnt sich nicht, wenn du nur ab und zu spontan postest — dann ist Canva schneller.

### Wie weißt du, dass es funktioniert?

- Du brauchst 15–25 Minuten pro Post statt 2 Stunden
- Posts werden in deinen Bestand-Stats nicht als "AI-Slop" erkannt (Vergleich mit deinen alten Posts)
- Du musst Bilder nicht mehrfach komplett neu generieren

### Stolpersteine

- **Apple-Logos.** `gpt-image-2` setzt gerne Apple-Logos auf Geräte. Im Prompt explizit `no visible logo` einbauen
- **Logo-Platzhalter.** Niemals KI dein Logo malen lassen — Leerraum lassen, dein Logo selbst draufsetzen
- **Umlaute im Bild.** `gpt-image-2` schafft Umlaute, aber nur wenn der Prompt sie auch wirklich enthält ("für" statt "fuer")
- **Slide-3-Trap.** Letzte Slide nicht als Pitch verschwenden, sondern als To-Do-Liste für den Leser
- **Caption-Stil.** Wenn der Agent zu glatt formuliert, mit eigenen Beispielen nachjustieren
- **CI-Drift.** Mehrere Sub-Brands (z. B. denzer.ai und FCH) **nie mischen** — pro Auftrag eine Quelle laden

---

## Teil A — Für deinen Agent

### Agent-Triggersätze

- "Mach ein Karussell zum Thema `<X>`"
- "Bau mir ein Reel mit folgendem VO: `<text>`"
- "Schreib mir eine Caption für den letzten Karussell-Stand"
- "Setze die Social-Pipeline auf"

### Ziel

End-to-End-Erzeugung von Karussells (3–5 Slides PNG/JPG), Reels (mp4) und Captions im definierten Stil. Output landet in einem Review-Ordner, niemals direkt online.

### Erfolgskriterien

- Karussell-Slides als 1080×1350 PNG, lesbar ohne Zoom
- Reels mit Captions, 9:16, max 60s
- Caption als plain text, max 2200 Zeichen, Stil-konsistent
- Output in `<root>/jobs/social/data/<datum>-<slug>/`
- Niemals auto-post

### Eingabe-Schema

```yaml
brand:
  ci_path:         "<root>/work/<brand>/CI.md"      # Farben, Fonts, Tone
  voice_profile:   "<root>/work/<brand>/VOICE.md"
  logo:            "<root>/work/<brand>/logo.png"
image:
  model:           "gpt-image-2"
  size:            "1024x1280" | "1024x1024"
  style_anchor:    "<root>/work/<brand>/style-anchor.png"
reel:
  voice_provider:  "elevenlabs" | "openai-tts"
  voice_id:        "<voice-id>"
  remotion_dir:    "<root>/video"
caption:
  channel:         "instagram"
  hashtags:        false
  emojis:          "sparse"
  cta:             "natural"                          # niemals "Schreib mir!" als CTA
output:
  base:            "<root>/jobs/social/data"
```

### Verarbeitung — Karussell

1. **Outline** — Agent erzeugt 3–5 Slide-Titel + Bullet-Stichworte aus Thema
2. **Slide-Text** — Pro Slide max 30 Wörter, Stil aus VOICE.md
3. **Bild-Prompt** — Pro Slide ein Prompt, eine Person/Garderobe pro Post
4. **Bilderzeugung** — `gpt-image-2`, Umlaute im Prompt, `no visible logo`
5. **Layout** — Text auf Bild legen, 8% Margin, Eck-Zonen frei für späteres Logo
6. **Review-Ablage** — Ordner mit Slides + caption.txt + brief.md

### Verarbeitung — Reel

1. **VO-Skript** — Operator gibt Text oder Stichpunkte
2. **TTS** — ElevenLabs oder OpenAI, Stimme aus Voice-Profil
3. **B-Roll-Plan** — pro Phrase 2–4s Clip-Vorschlag, literal zum VO (zeigt das, was gesagt wird, nicht atmosphärisch)
4. **Clip-Quelle** — eigener Stock-Ordner oder Pexels/Pixabay-API
5. **Remotion-Render** — Captions einbrennen (CI-Schrift, Drop-Shadow), Audio mixen
6. **Output** — mp4 in Review-Ordner

### Verarbeitung — Caption

1. **Kontext** — Bilder/Slides als Input für Caption-Modell
2. **Stil-Check** — Voice-Profile als few-shot
3. **Validate** — keine Hashtags, max 2 Emojis, kein "Schreib mir per DM"
4. **Ablage** — `caption.txt` neben Slides

### Sicherheit

- API-Keys aus `.env`
- Generierte Bilder mit Wasserzeichen oder Metadata-Tag (für späteres Filtering)
- Niemals direkter Upload zu Instagram (Graph-API erfordert Business-Account und manuelle Freigabe)

### Fehler-/Edge-Cases

- Bild enthält Text → automatisch verwerfen, neu generieren mit `no text in image`
- Person hat sechs Finger → verwerfen
- Caption hat Hashtags → entfernen, regenerieren
- Reel zu lang → kürzen oder VO knapper

### Verzeichnisstruktur

```
<root>/jobs/social/
├── pipeline/
│   ├── carousel.py
│   ├── reel.py
│   └── caption.py
├── prompts/
│   ├── slide-prompt.md
│   ├── image-prompt.md
│   └── caption-prompt.md
└── data/
    └── 2026-05-12-thema-x/
        ├── slide-1.png
        ├── ...
        ├── reel.mp4
        ├── caption.txt
        └── brief.md
```

### Code-Snippets

Im Starter findest du `carousel.py`, `reel.py`, `caption.py`, Beispiel-Prompts und ein Remotion-Setup mit CI-Captions. Dein Agent integriert sie ins Projekt.

---

## Teil C — Was du als Nächstes tust

1. Starter laden, Agent geben
2. CI-Datei (Farben, Schrift) und Voice-Profil pflegen
3. Sagen: "richte die Social-Pipeline ein"
4. Erster Test mit einem unkritischen Thema
5. Pro Post zuerst manuell durchgehen, Korrekturen zurück in CI/VOICE.md füttern
6. Nach 5–10 Posts ist der Stil eingeschwungen

### Lern-Checkliste

- Wo liegt mein Stil-Profil und wie aktualisiere ich es?
- Wie würde ich ein einzelnes Bild manuell regenerieren?
- Warum sind Hashtags raus und CTAs zurückhaltend?
- Wo finde ich die fertigen Posts vor dem manuellen Upload?
- Wie unterscheide ich KI-Output von eigenem im Archiv?

Fragen: christian@denzer.ai
