---
type: skill
name: linkedin-finalize
agent_ready: true
schema_version: 1
bundle_skill: true
bundle_version: "0.28.0"
scope: vault
default_active:
  allgemein: false
  content: true
  business: false
  beratung: false
  automation: false
  image: false
conflicts_with: []
depends_on:
  - natur-sprech-check
  - authentic-portrait
  - linkedin-carousel
  - nano-banana-image
  - openai-image-gen
trigger_words:
  - linkedin-finalize
  - post-finalisieren
  - post-fertig-machen
  - post-bereit
  - thumbnail-generieren
  - linkedin-post-abschließen
  - hashtags-vorschlagen
allowed-tools:
  - Read
  - Glob
  - Bash
  - AskUserQuestion
  - Skill
created: 2026-05-19
updated: 2026-05-19
description: "Finalisiert einen LinkedIn-Post-Entwurf aus dem Vault. Prüft Text gegen Schreibstil und Qualitätsanforderungen, durchläuft den Natur-Sprech-Check als Pflicht-Gate gegen KI-Sprech, generiert ein Thumbnail in zwei Stufen (Basisbild per Nano Banana 2 oder OpenAI gpt-image-2 ohne Text, dann optional Headline-Overlay aus Warm-Navigator-Templates via Playwright-Renderer), mit optionalem Carousel-Build (10-Slide-Document-Post), schlägt Hashtags vor und setzt den Status auf 'bereit'. Aufruf: Skill('linkedin-finalize') oder Skill('linkedin-finalize', '[Dateiname]'). Verwende diesen Skill wenn der Anwender einen Post finalisieren, ein Thumbnail brauchen oder nach 'Post abschließen', 'Thumbnail generieren', 'Post bereit' fragt. NICHT triggern bei: Post-Idee finden (nutze `linkedin-ideen`), Entwurf schreiben (nutze `linkedin-entwurf`), fremde Posts kommentieren (nutze `linkedin-kommentar`), Auto-Research-Loop (nutze `linkedin-research`), Post als veröffentlicht eintragen (nutze `linkedin-veroeffentlicht`)."
---

# LinkedIn Finalize

Der Weg zur Veröffentlichung führt durch drei Pflicht-Gates: Natur-Sprech-Check gegen KI-Sprech, Glossar gegen Eigennamen, Thumbnail-Pipeline aus Basisbild und optionalem Headline-Overlay. Erst wenn alle Gates grün sind und der Anwender abnickt, wechselt der Post in den „bereit"-Ordner.

Im Bundle wird der Skill via Claude-Tool-Aufruf `Skill('linkedin-finalize')` getriggert, nicht über einen Vault-Slash-Command. Das `/linkedin-finalize`-Kommando steht bei aktiviertem `content`-Profil aber zur Verfügung.

## Werkzeug-Konvention

Dieser Skill nutzt das interaktive Frage-Werkzeug der ausführenden Umgebung. In Claude Code: `AskUserQuestion`. In anderen Frame-Tools (Codex, Gemini CLI, Copilot CLI): das entsprechende Interactive-Question-Werkzeug. Der Name darf in der Implementation als String belassen werden — das wäre kein Halluzinations-Verstoß, weil Tool-Namen frame-abhängig sind.

## Konfiguration

Pfade und Verhalten werden über `skill.config.yaml` gesteuert (Loader: `config_loader.load_skill_config`). Fehlt die Datei, laufen alle Phasen mit Standard-Defaults aus `skill.config.example.yaml`.

**Pfad-Platzhalter (aus `skill.config.example.yaml::paths`):**

- `{paths.posts_in_progress}` — Ordner mit Entwürfen
- `{paths.posts_ready}` — Ordner mit finalisierten Posts
- `{paths.posts_published}` — Ordner mit veröffentlichten Posts
- `{paths.designsystem_thumbnail}` — Designsystem-Vorlagen (bundle-relativ auf `_lib/designsystem/`)
- `{paths.ki_sprech_fallen}` — KI-Sprech-Fallen-Datei (optional, sonst Feature-Flag aus)

**Feature-Flags (aus `skill.config.example.yaml::features`):**

- `enable_glossar_check` (Default `true`) — Glossar-Datei laden und Schritt 3.1 aktiv ausführen.
- `enable_natur_sprech_gate` (Default `true`) — Schritt 3.5 als Pflicht-Gate vor Thumbnail-Generierung.
- `enable_carousel_branch` (Default `true`) — Schritte 4d.5/4d.6 aktiv (Carousel statt Single-Thumbnail).
- `enable_thumbnail_overlay` (Default `true`) — Schritte 4e bis 4j (Headline-Overlay-Render via Designsystem).

## Ablauf

### Schritt 1: Post finden

Der Post-Ordner ist in drei Unterordner strukturiert:

- `{paths.posts_in_progress}` — Entwürfe
- `{paths.posts_ready}` — finalisiert
- `{paths.posts_published}` — bereits raus

**Mit Argument:** Nutze Glob mit Pattern `{paths.posts_in_progress}/**/*.md` (und Geschwister-Pfade), um die passende Datei rekursiv über alle Unterordner zu finden. Teilübereinstimmungen im Dateinamen reichen. Top-Level-Ideenspeicher-Dateien (Präfix `00-`) ignorieren.

**Ohne Argument:** Lies rekursiv alle `.md`-Dateien unter den drei Posts-Ordnern und filtere nach `status: entwurf` im Frontmatter. Entwürfe liegen normalerweise unter `{paths.posts_in_progress}`, aber der rekursive Scan fängt auch Altbestände ab. Zeige die gefundenen Entwürfe als nummerierte Liste (Titel + description aus Frontmatter). Der Anwender wählt einen aus.

**Kein Entwurf vorhanden:** Informiere den Anwender, dass keine Entwürfe existieren, und schlage den Skill `linkedin-ideen` vor.

Lies die gewählte Post-Datei vollständig ein.

### Schritt 2: Kontext und Strategie laden

Lies diese Dateien (Read-Tool, kein Agent nötig):

1. `{context}/Schreibstil` — Tonalität und Stilregeln (siehe `references/schreibstil-pointer.md`)
2. `{context}/ICP` — Zielgruppe
3. `{context}/Branding` — Positionierung
4. `{context}/Glossar` — Korrekte Schreibweisen
5. `{areas}/Content & Positionierung/LinkedIn-Strategie` — Qualitätsanforderungen und Grundhaltung (siehe `references/linkedin-strategie-pointer.md`)
6. `{areas}/Content & Positionierung/LinkedIn Best Practices/00-Übersicht` und die verlinkten Referenzposts — Vorbilder für Hook-Pattern und Take-away

**Nicht laden** (wurde bereits in `linkedin-entwurf` genutzt, spart Tokens): `{context}/Über mich`, `{context}/Zwölf Lieblingsprobleme`.

Die `LinkedIn-Strategie` ist der zentrale Qualitätsfilter. Der finalisierte Post muss die dort beschriebenen Anforderungen erfüllen.

### Schritt 3: Entwurf finalisieren

**Hinweis:** Die inhaltliche Substanz (PVL-Struktur, Griffigkeit, Lese-Persona-Test, Take-away, Topic Fingerprint, Save-Worthiness, Hook-Entwicklung) wurde bereits in `linkedin-entwurf` geprüft. Dieser Schritt fokussiert auf sprachlichen Feinschliff, Formatierung und letzte Stilkorrekturen.

Prüfe den `## Entwurf`-Abschnitt des Posts:

1. **Glossar-Check (Safety Net):** Alle Eigennamen und Fachbegriffe gegen das Glossar abgleichen. Falsche Schreibweisen korrigieren.

2. **Stilprüfung (leichter Pass):** Text gegen die Regeln aus `Schreibstil` und die Anforderungen aus der `LinkedIn-Strategie` prüfen. Keine inhaltliche Neustrukturierung, nur sprachliche Korrekturen.

3. **Hook-Review:** Sitzt der Hook noch nach eventuellen Anpassungen? Bei Video-Posts die 180-200-Zeichen-Regel für den ersten Absatz prüfen (Mobile-Preview-Beschnitt).

4. **Länge und Mobile-Formatierung:** Über 70 % der Leser sind am Handy.
   - Gesamtlänge 800-1.600 Zeichen, Sweet Spot 800-1.000. Mini-Guides bis 1.800 Zeichen.
   - Absätze maximal 3-4 Zeilen, viel Weißraum.
   - Sätze 10-19 Wörter, durchschnittlich höchstens 18.
   - Maximal 10 Emojis pro Post, sparsam und strukturierend.

5. **Rhythmus-Regel:** Mindestens ein sehr kurzer Satz (höchstens fünf Wörter) als Bruch im Lesefluss.

6. **Menschlich, nicht KI-Stil (Safety Net):**
   - Keine Doppelpunkt-Aufzählungen im Stil „In einer Woche habe ich:" gefolgt von Bullet-Liste.
   - Keine formelhaften Konstruktionen wie „vom X zum Y", „nicht nur A, sondern auch B".
   - Keine Ein-Satz-Absatz-Inflation über den ganzen Post hinweg.

7. **Weichmacher streichen:** Keine „vielleicht", „eventuell", „möglicherweise", „ein bisschen", „relativ", „ziemlich". Finance-Leader reden in Tatsachen, nicht in Konjunktiven.

8. **Schluss-Check:** Gedankenanstoß oder starke Aussage. Verboten: Werbe-CTA, generische Publikumsfrage, Engagement-Bait („Kommentiere JA, wenn du zustimmst").

Präsentiere dein Ergebnis:

- Wenn der Entwurf gut ist: bestätigen und ggf. Feinschliff-Vorschläge machen.
- Wenn Verbesserungen nötig sind: konkret benennen mit Begründung aus den geladenen Regeln.

Frage den Anwender: **„Soll ich den Entwurf so finalisieren, oder willst du noch etwas ändern?"**

Überarbeite so lange, bis der Anwender zufrieden ist. Erst dann weiter zu Schritt 3.5.

### Schritt 3.5: Natur-Sprech-Check (Pflicht-Gate)

LinkedIn ist der Kanal Nummer eins nach außen. Es darf kein KI-Sprech durchrutschen. Dieser Schritt ist kein optionaler Check, sondern ein festes Gate zwischen Stilprüfung und Thumbnail-Generierung.

1. Rufe den Skill `natur-sprech-check` auf und übergib ihm den vollständigen Post-Entwurf (den aktuellen Stand aus `## Entwurf`, inklusive aller Anpassungen aus Schritt 3).
2. Der Skill läuft in seinen drei Durchgängen (Fallen-Liste, Schreibstil-Regeln, Menschlichkeits-Flags) und meldet strukturierte Fundstellen zurück. Er schreibt nichts um.
3. **Entscheidung:**
   - Keine Treffer, keine Flags → weiter zu Schritt 4.
   - Treffer oder Flags vorhanden → jede Stelle mit dem Anwender kurz durchgehen. Der Anwender entscheidet pro Stelle: anpassen, bewusst stehen lassen oder als neue Falle in die Liste aufnehmen.
4. Der Skill bietet am Ende an, neue Fallen in `{paths.ki_sprech_fallen}` einzutragen. Wenn der Anwender eine neue Falle bestätigt, trägt der Skill sie ein (Phrase, Begründung, Alternative, Datum).
5. Wenn der Entwurf nach Anpassungen verändert wurde: kurzer zweiter Durchlauf, bis keine harten Treffer mehr übrig sind. Menschlichkeits-Flags darf der Anwender bewusst stehen lassen.

Erst wenn der Anwender das Gate-Ergebnis abnickt, geht es zu Schritt 4.

### Schritt 4: Thumbnail generieren

Leite aus dem Post-Inhalt (Titel, Kernidee, Thema) ein visuelles Konzept ab. Der Thumbnail-Schritt ist zweistufig: erst das Basisbild ohne Text generieren und abnehmen, dann optional eine Schlagzeile per Overlay-Template draufrendern. So bleibt das Foto der Held, und die Typografie wird vom Designsystem garantiert (Mona-Sans/Inter via Headless-Chromium gerendert, keine PNG-Schriftabweichungen).

#### 4a-pre: Bildformat wählen (Aspect Ratio)

LinkedIn-Single-Image-Posts holen die meiste mobile Reichweite mit **4:5 hochkant (1080×1350)**. 16:9 quer wirkt im Feed schmal und scrollt schnell vorbei. Vor allen weiteren Schritten Aspect-Ratio festlegen.

**Auto-Empfehlung:** Aus Post-Konzept (Titel, Hook, Bildbrief) eine Empfehlung ableiten und der Frage voranstellen:

- Schlüsselwörter wie „Panorama", „Landschaft", „Cockpit", „zwei Monitore", „Cinema", breiter Horizont → **16:9 vorschlagen**.
- „Mockup", „Diagramm", „Frontalportrait", „Dashboard frontal", symmetrische Komposition → **1:1 vorschlagen**.
- Alles andere (Person, Szene, Stimmung, Story-Bild, Insight, Frage, Zahl) → **4:5 vorschlagen** (Default).

Per `AskUserQuestion` mit Empfehlung an erster Stelle (Suffix „(Empfehlung)"):

> **Welches Bildformat?**
>
> 1. **4:5 hochkant (1080×1350)** — Default, höchste mobile Reichweite, Standard für LinkedIn-Single-Image-Posts
> 2. **1:1 quadratisch (1200×1200)** — wenn Motiv breit/symmetrisch ist
> 3. **16:9 quer (1536×1024)** — nur wenn Motiv es zwingt (Panorama, Cinema-Frame)

Die gewählte Aspect-Ratio steuert in den nächsten Schritten:

- die Bildgenerierungs-Größe in 4c (siehe Engine-Tabellen)
- die Overlay-Template-Bibliothek in 4h (`compose.py` für 16:9, `compose_v.py` für 4:5)
- die Vorschau-Seite in 4h (`preview_all.py --aspect <16x9|4x5>`)

#### 4a: Bildmodus wählen

Frage den Anwender per `AskUserQuestion`:

> **Wie soll das Thumbnail generiert werden?**
>
> 1. **Freies Bild** — KI-generiertes Bild ohne persönliches Foto
> 2. **KI-generiert mit eigenem Gesicht** — die Person des Anwenders wird komplett von der KI generiert, Referenzfotos für Gesichtstreue
> 3. **Originalfoto in Szene** — ein echtes Foto wird per Bildbearbeitung in eine neue Szene eingebettet
> 4. **Beide Varianten** — einmal frei, einmal mit persönlichem Bild

#### 4b: KI-Engine wählen

Frage den Anwender per `AskUserQuestion`, mit welcher Bild-KI das Thumbnail erzeugt werden soll. Beide Optionen sind vollautomatisch über API.

> **Mit welcher KI soll das Bild generiert werden?**
>
> 1. **Nano Banana 2 (Gemini API)** — über den Skill `nano-banana-image`. Stark bei Identitätstreue über mehrere Character-Slots, gutes Fine-Grained-Editing, günstig. Default für Portraits mit vielen Referenzen.
> 2. **OpenAI gpt-image-2** — über den Skill `openai-image-gen`. Stark bei Text-im-Bild, Photorealismus und Layout-Planung. Default, wenn das Thumbnail lesbaren Text enthalten soll.
> 3. **Beide parallel** — gleicher Auftrag, beide Engines. Anwender vergleicht und wählt.

#### 4c: Thumbnail generieren

Branch nach Engine-Wahl aus 4b.

##### Engine A — Nano Banana 2 (vollautomatisch)

**Bildmodus 1 (Freies Bild, ohne Person):**

Direkter Aufruf über den Skill `nano-banana-image`. Keine Headline und keinen Text im Bildprompt — Text wird in 4d bis 4j als Overlay über das fertige Bild gelegt. Im Prompt explizit `no text, no captions, no logos in image` mitgeben.

```
Skill: nano-banana-image
Args: [Englischer Bildprompt basierend auf dem Post-Konzept]. Aspect ratio <ASPECT>, resolution 1K. No text, no captions, no logos in image. Professional style, suitable for LinkedIn feed, no stock photo aesthetic. Save as "[Post-Titel]-thumbnail-base.png" in the SAME folder as the post .md file.
```

`<ASPECT>` aus 4a-pre: 4:5 / 1:1 / 16:9.

**Bildmodus 2, 3 und 4 (mit Person):**

An den Skill `authentic-portrait` übergeben. Dieser Skill kennt Prinzip, Dossier, Slot-Logik, Prompt-Reihenfolge, Medium-Shot-Default, Authentizitäts-Review inklusive Fallback-Loop und ruft intern `nano-banana-image` auf. `linkedin-finalize` gibt nur den Auftrag rüber, keine Regeln.

**Übergabe-Schema:**

```
Skill: authentic-portrait
Args:
  - Person: <Anwender-Name aus Dossier>
  - Use-Case: LinkedIn-Thumbnail
  - Modus: [Option 2 = Weg A „KI-generiert" | Option 3 = Weg B „Originalfoto in Szene" | Option 4 = beide]
  - Szene: [Kurzbeschreibung aus Post-Titel und Kernidee]
  - Stimmung: [seriös / freundlich-einladend / provokant / lässig]
  - Outfit (optional): Dossier-Default oder explizit
  - Aspect Ratio: <ASPECT> (4:5 / 1:1 / 16:9 — aus 4a-pre)
  - Resolution: 1K
  - Output-Pfad: SAME folder as the post .md file
  - Dateiname: "[Post-Titel]-thumbnail-base.png" (bei Bildmodus 4: zwei Varianten mit Suffix -frei / -persoenlich)
```

`authentic-portrait` übernimmt:

- Prinzip und Dossier der Person laden
- Referenzbilder nach Slot-Regeln wählen
- Prompt nach Layer-Reihenfolge (Identität → Outfit → Szene) bauen inklusive ABSOLUTE-PRIORITY-Klausel
- `nano-banana-image` mit korrekten Flags aufrufen
- Authentizitäts-Review mit Fallback-Loop durchlaufen

**Bei Bildmodus 4:** `authentic-portrait` zweimal aufrufen (einmal freies Bild via `nano-banana-image` direkt, einmal mit Person via `authentic-portrait`).

##### Engine B — OpenAI gpt-image-2 (vollautomatisch)

**Bildmodus 1 (Freies Bild, ohne Person):**

Direkter Aufruf über den Skill `openai-image-gen`. Keine Headline im Prompt — Text wird in 4d bis 4j als Overlay über das fertige Bild gelegt. Im Prompt explizit `no text, no captions, no logos in image` mitgeben.

```
Skill: openai-image-gen
Args:
  - Modell: gpt-image-2
  - Prompt: [Englischer Bildprompt basierend auf dem Post-Konzept]. No text, no captions, no logos in image.
  - Size: <SIZE>
  - Quality: high
  - Output-Format: png
  - Output-Pfad: SAME folder as the post .md file
  - Dateiname: "[Post-Titel]-thumbnail-base.png"
```

`<SIZE>` aus 4a-pre: 4:5 → 1024x1536, 1:1 → 1024x1024, 16:9 → 1536x1024.

**Bildmodus 2, 3 und 4 (mit Person):**

An den Skill `authentic-portrait` mit expliziter Engine-Wahl `gpt-image-2` übergeben. Der Skill routet intern auf `openai-image-gen`. Bei Personen-Portraits zwingend `quality="high"`.

##### Engine C — Beide parallel

Beide Engines mit demselben Konzept aufrufen, zwei Bilder erzeugen, dem Anwender beide zum Vergleich zeigen. Dateinamen: `[Post-Titel]-thumbnail-base-nb.png` und `[Post-Titel]-thumbnail-base-gpt.png`, das gewählte zusätzlich als `[Post-Titel]-thumbnail-base.png` kopieren oder umbenennen.

**Werkzeug-Pflicht für 4d bis 4i (ZWINGEND):** Alle Entscheidungs-Fragen in den Sub-Schritten 4d bis 4i werden ausschließlich über das Werkzeug `AskUserQuestion` gestellt. Niemals als Markdown-Liste, nummerierte Aufzählung oder Freitext-Frage im Chat. Mehrere zusammenhängende Fragen können in einem einzigen `AskUserQuestion`-Aufruf gebündelt werden (Limit: 4 Fragen pro Aufruf), die empfohlene Option steht jeweils an erster Stelle mit dem Suffix „(Empfehlung)".

#### 4d: Basisbild abnehmen

Zeige dem Anwender das fertige Basisbild (`-thumbnail-base.png`). Frage: „Bild okay, oder noch mal mit angepasstem Prompt generieren?" Bei Nein zurück zu 4c. Bei Ja weiter zu 4d.5. Das Basisbild bleibt immer im Ordner liegen, auch wenn später ein Overlay drüber kommt oder daraus ein Carousel-Cover gebacken wird.

### Schritt 4d.5: Carousel statt Single-Thumbnail?

Frage den Anwender per `AskUserQuestion`, ob aus dem Post zusätzlich ein LinkedIn-Carousel (10-Slide-Document-Post) gebaut werden soll. Default-Empfehlung: **Ja**, wenn der Post genug Substanz für 8 bis 10 narrative Segmente trägt (mehrere Phasen, Zahlen, Vergleiche, Pointe). **Nein**, wenn der Post knapp ist und ein Single-Thumbnail die Aussage bereits trägt.

> **Willst du aus diesem Post zusätzlich ein LinkedIn-Carousel bauen?**
>
> 1. **Ja, Carousel bauen (Empfehlung wenn das Thema substanziell ist)** — Carousel-Pipeline startet, Schritte 4e bis 4j werden übersprungen, das Carousel ersetzt das Headline-Overlay-Thumbnail.
> 2. **Nein, nur Single-Thumbnail** — Skill läuft normal weiter mit 4e (Schlagzeile-Frage).

Werkzeug-Pflicht: ausschließlich `AskUserQuestion`, konsistent mit 4a bis 4i. Bei „Ja" weiter zu 4d.6, bei „Nein" weiter zu 4e.

Hinweis zum Bildformat aus 4a-pre: Die Carousel-Pipeline arbeitet immer in 4:5 (1080 × 1350). Wenn das Basisbild aus 4c im 16:9- oder 1:1-Format vorliegt, wird Slide 1 beim Backen aus diesem Bild im 4:5-Frame komponiert (`object-fit: cover` zentriert). Das Basisbild bleibt unverändert im Ordner.

### Schritt 4d.6: Carousel-Skill aufrufen (nur bei „Ja" in 4d.5)

Skill `linkedin-carousel` aufrufen. Der Sub-Skill kennt die komplette Pipeline (Pflicht-Reads, Cover-Variante per Selection-Heuristik, Slide-Katalog, Natur-Sprech-Check als Pflicht-Gate, Cover-A-Pre-Render bei Foto-Cover, PDF-Export via Playwright, Output-Verifikation) und setzt am Ende `format: carousel` im Frontmatter.

**Übergabe-Schema:**

```
Skill: linkedin-carousel
Args:
  - Post-Datei: <absoluter Pfad zur Post-.md unter {paths.posts_in_progress}/<ordner>/>
  - Basisbild: <absoluter Pfad zu -thumbnail-base.png>
  - Cover-Hint: auto (Default — leitet aus Frontmatter und Hook-Charakter ab)
```

Nach Rückkehr des Sub-Skills liegt im Post-Ordner ein neuer Unterordner `carousel/` mit `carousel.pdf` als finaler Datei für den LinkedIn-Upload. Das `-thumbnail-base.png` bleibt im Post-Ordner (Cover-Quelle für Slide 1, falls Cover A).

**Direkt zu Schritt 5 (Hashtags) springen.** Schritte 4e bis 4j werden übersprungen, das Single-Thumbnail-Headline-Overlay entfällt, weil Slide 1 des Carousels diese Rolle übernimmt.

#### 4e: Schlagzeile aufs Thumbnail?

(Nur durchlaufen, wenn in 4d.5 „Nein, nur Single-Thumbnail" gewählt wurde.)

Frage den Anwender per `AskUserQuestion`:

> **Soll eine Schlagzeile auf das Thumbnail?**
>
> 1. **Ja, mit Headline-Overlay** — drei bis vier Schlagzeilen-Vorschläge, danach Template-Overlay auf das Bild rendern.
> 2. **Nein, Bild bleibt nackt** — `-thumbnail-base.png` wird zusätzlich als `-thumbnail.png` kopiert.

Default-Empfehlung: **Ja**. LinkedIn-Feed-Studien zeigen, dass Thumbnails mit kompakter Headline messbar mehr Klicks holen.

#### 4f: Schlagzeile vorschlagen

Auf Basis des Post-Inhalts drei bis vier Schlagzeilen-Vorschläge generieren. Regeln:

- 5 bis 10 Wörter pro Schlagzeile (Designsystem-Vorgabe).
- Verschiedene Hook-Patterns abdecken: Reframe, These, Frage, Zahl, Kontrast.
- Kein Marketing-Sprech, keine Floskeln. Tonalität wie der Post selbst.
- Glossar-Pflicht: Eigennamen verbatim aus dem Glossar.

Per `AskUserQuestion` zur Auswahl stellen, plus Meta-Optionen „Neue Vorschläge" und „Eigene Schlagzeile eingeben".

#### 4g: Eyebrow / Kategorie-Label vorschlagen

Manche Templates zeigen ein kleines Kategorie-Label über der Headline. Aus Post-Inhalt einen passenden Eyebrow ableiten:

- These / Standpunkt → „Standpunkt"
- Insight / Beobachtung → „Insight"
- Frage → „Frage an die Runde"
- Zahl → „Zahl der Woche"
- Liste → „N Gründe" / „N Schritte"
- Folge / Reihe → „Folge X · [Reihenname]"

Per `AskUserQuestion` mit Default-Empfehlung plus Optionen „anderer Text" und „kein Eyebrow".

#### 4h: Template empfehlen und bestätigen

**Vor der `AskUserQuestion` ZWINGEND:** Live-Vorschau aller verfügbaren Templates der gewählten Aspect-Ratio erzeugen und automatisch im Browser öffnen. Der Helper `preview_all.py` aus `{paths.designsystem_thumbnail}` rendert alle Layouts mit dem konkreten Basisbild und der gewählten Headline auf einer scrollbaren HTML-Seite:

```bash
python "{paths.designsystem_thumbnail}/preview_all.py" \
  --photo     "<absoluter Pfad zur -thumbnail-base.png>" \
  --aspect    <16x9|4x5> \
  --headline  "<Headline aus 4f>" \
  --eyebrow   "<Eyebrow aus 4g, leer wenn keiner>" \
  [--logo] \
  --recommend <Template-ID> \
  --open \
  --output    "<Post-Ordner>/_preview-thumbnail-templates.html"
```

`--aspect` aus 4a-pre:

- 4:5 → `--aspect 4x5`
- 16:9 → `--aspect 16x9`
- 1:1 → kein eigenes Set, in 4e „Nein, Bild bleibt nackt" wählen oder mit 4:5-Set arbeiten

#### 4i: Template-Auswahl (Demo-Template-Filter)

**Pflicht-Read vor Empfehlung:** `_lib/designsystem/templates/README.md`. Die folgenden Templates haben hartcodierte Demo-Inhalte und werden aus der Auto-Empfehlung ausgeschlossen:

- T22, T22v („Ausgabe · 2026")
- T24, T24v („TEIL 01 / 03")
- T28 (drei feste Karten-Texte; T28v ist Ausnahme, weil Pipe-Schema konfigurierbar)
- T30, T30v („Sondern an Menschen, Mut und Mandat.")

Empfehle T28v explizit als konfigurierbare Drei-Karten-Variante (Headline mit `|`-Separator).

Per `AskUserQuestion` die Empfehlung mit kurzer Begründung anbieten, plus drei sinnvolle Alternativen. In der Frage explizit erwähnen: „Vorschau aller Templates ist im Browser geöffnet — wähle die ID dort visuell."

#### 4j: Overlay rendern

Aufruf des aspect-passenden Composers aus dem Designsystem-Ordner — `compose.py` für 16:9, `compose_v.py` für 4:5. Beide nutzen intern `render.py` als Playwright-Renderer:

```bash
# 16:9 (Bestand)
python "{paths.designsystem_thumbnail}/compose.py" \
  --photo   "<absoluter Pfad zu -thumbnail-base.png>" \
  --template <T01..T30> \
  --headline "<Schlagzeile aus 4f>" \
  --eyebrow  "<Eyebrow aus 4g, leer wenn keiner>" \
  [--logo] \
  --output  "<absoluter Pfad zu -thumbnail.png im selben Ordner>"

# 4:5 (LinkedIn-Default)
python "{paths.designsystem_thumbnail}/compose_v.py" \
  --photo   "<absoluter Pfad zu -thumbnail-base.png>" \
  --template <T01v..T30v> \
  --headline "<Schlagzeile aus 4f>" \
  --eyebrow  "<Eyebrow aus 4g, leer wenn keiner>" \
  [--logo] \
  --output  "<absoluter Pfad zu -thumbnail.png im selben Ordner>"
```

Nach erfolgreichem Render das fertige `-thumbnail.png` dem Anwender zur Abnahme zeigen. Bei „Nein, das passt nicht": kurz fragen, was geändert werden soll (anderes Template, andere Schlagzeile, Logo an/aus, kein Eyebrow), dann nur den Composer-Aufruf wiederholen — das Basisbild bleibt unverändert.

### Schritt 5: Hashtags vorschlagen

Schlage 3 bis 5 Hashtags vor (hartes Limit: nie mehr als 5, ab 6 wirkt es wie Spam und drosselt die Reichweite). Basierend auf:

- Inhalt und Thema des Posts
- Zielgruppe aus dem ICP
- Topic Fingerprint des Anwenders (Schreibstil-Pointer-Datei)

Hashtags sind 2026 reine Kategorisierung, kein Reichweiten-Booster. Keine generischen Spam-Hashtags. Sie sollen das Thema des Posts präzise widerspiegeln.

Präsentiere die Vorschläge. Der Anwender kann welche ändern, hinzufügen oder entfernen.

### Schritt 6: Frontmatter aktualisieren und Post in den „bereit"-Ordner verschieben

Aktualisiere das Frontmatter der Post-Datei. Die fünf Markersatz-Felder (`status`, `geplant`, `veröffentlicht`, `url`, `format`) sind Pflicht — wenn eines davon im Entwurf-Frontmatter fehlt, ergänzen.

- `status: bereit`
- `format:` Posttyp-Marker. Werte: `text`, `text+bild`, `carousel`, `video`, `short`. Bei Carousel-Branch wurde `format: carousel` bereits in Schritt 4d.6 von `linkedin-carousel` gesetzt — nicht erneut nachfragen. Sonst bei Unklarheit den Anwender einmal fragen.
- `geplant:` geplantes Veröffentlichungsdatum (YYYY-MM-DD) oder leere Anführungszeichen.
- `veröffentlicht:` leere Anführungszeichen, solange der Post noch nicht live ist.
- `url:` leere Anführungszeichen, solange der Post noch nicht live ist.
- `thumbnail:` bei Single-Thumbnail-Branch (4e–4j durchlaufen): `"[Post-Titel]-thumbnail.png"`. Bei Carousel-Branch (4d.5 „Ja" → 4d.6, 4e–4j übersprungen): `"carousel/cover.png"` als Cover-A-Quelle, weil die `-thumbnail.png` nie erzeugt wurde.
- `hashtags:` mit der genehmigten Liste (ohne Doppelkreuz-Präfix).
- `updated:` auf das heutige Datum (YYYY-MM-DD).

Danach **Ordner verschieben**: Pro Post existiert ein eigener Ordner (Ordnername = Dateiname der Post-`.md` ohne Endung). Den kompletten Post-Ordner per Bash `mv` aus `{paths.posts_in_progress}` nach `{paths.posts_ready}` verschieben.

### Schritt 7: Zusammenfassung

Zeige dem Anwender:

1. Den finalisierten Post-Text in einem Code-Block zum einfachen Copy-and-Paste
2. Den Thumbnail-Dateipfad
3. Die finalen Hashtags

Erinnere kurz an die manuellen Schritte zum Veröffentlichen (aus der `LinkedIn-Strategie`):

1. LinkedIn öffnen, „Beitrag beginnen"
2. Text aus dem Entwurf kopieren
3. Thumbnail als Bild hinzufügen
4. Mit dem Uhr-Symbol Datum und Uhrzeit wählen (Di/Do, 8-9 Uhr)
5. „Planen" klicken

**Golden-Hour-Regeln** (kritisch für Reichweite):

- In den ersten 60-90 Minuten nach Veröffentlichung erreichbar sein, um auf Kommentare zu antworten.
- Nicht in den ersten 10 Minuten editieren.
- Nicht mehrmals am gleichen Tag posten.
- Externe Links erst 30-60 Minuten später per Bearbeiten in den ersten Kommentar oder ans Ende setzen.

## Hinweise zum Verhalten

- Alle Vault-Regeln aus der CLAUDE.md des Anwenders gelten selbstverständlich und werden nicht wiederholt.
- **Dynamisches Regelwerk:** Dieser Skill enthält bewusst keine duplizierten Inhaltsregeln. Anforderungen, Grundhaltung, Stilregeln und Zielgruppe werden bei jedem Aufruf frisch aus dem Vault geladen (`LinkedIn-Strategie`, `Schreibstil`, `ICP`).

## Sub-Skill-Aufrufe (Übersicht)

- Skill `natur-sprech-check` — Schritt 3.5 (Pflicht-Gate)
- Skill `authentic-portrait` — Schritt 4c (Bildmodus 2/3/4)
- Skill `linkedin-carousel` — Schritt 4d.6 (Carousel-Branch-Ja)
- Skill `nano-banana-image` — Schritt 4c (Bildmodus 1, Engine A)
- Skill `openai-image-gen` — Schritt 4c (Bildmodus 1, Engine B)
