Files
videogen/planung/prompt-inventar.md
2026-08-06 12:44:41 +02:00

135 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Prompt-Inventar: Wo das System denken muss
**Zweck:** Jede Stelle im Ablauf, an der ein LLM eine Entscheidung treffen oder Inhalte erzeugen muss, bevor eine Action passiert. Für jede dieser Stellen wird später ein professioneller statischer Prompt geschrieben hier geht es nur darum, **wo** sie gebraucht werden und was rein/raus geht.
**Grundregel:** Kein LLM, wo Code reicht. Elo-Mathematik, Schwellenwerte, Performance-Zahlen-Mapping sind deterministisch die brauchen keinen Prompt (unten explizit markiert). Jeder unnötige LLM-Aufruf kostet Geld und Konsistenz.
> **Sprachregelung:** „Modell" = Asset (Person, Produkt, Kulisse, Logo). Das generierende KI-Modell heißt immer ausgeschrieben **„KI-Modell"** bzw. Seedance/Veo/Sora/Bildmodell. In den Zeilen zu P8 unten meint „Modell-Adapter" die KI-Modelle historisch gewachsen, hier ausnahmsweise stehengelassen.
> **Hinweis zur Schreibweise der Outputs:** Einige Zeilen unten nennen noch Dateipfade (`attribute/`, `assets/`, `videos/video-XXXX.md`) aus der ursprünglichen Ordner-Denkweise. Verbindlich ist `datenbank-aufbau.md` dort sind es Tabellenzeilen. Die Pfade sind als Lesehilfe stehengeblieben, nicht als Datenmodell.
---
## Architektur der Prompts: Statischer Kern + Injektions-Slots
Alle Prompts folgen demselben Bauprinzip:
```
[STATISCHER KERN] ändert sich nie, liegt im Dev-Modus
(z. B. Foto-Realismus-Regeln, Regie-Struktur)
[SLOT: REGELN] feste Brand-Regeln aus regeln/
[SLOT: ASSETS] freigegebene Versionen aus assets/ (Referenz-IDs)
[SLOT: ATTRIBUTE] Top-Attribute + deren Prompt-Bausteine aus attribute/
[SLOT: USER-INPUT] was der Nutzer diesmal will
```
Die zwei vorhandenen Prompts (P7, P8) sind bisher statisch sie müssen auf dieses
Slot-System umgebaut werden, damit sie sich ihre Infos aus der Knowledge Base ziehen,
je nachdem, was der Benutzer haben möchte.
---
## Die Denk-Punkte im Ablauf
**Status-Legende:** ✅ vorhanden (anpassen) · 🆕 neu nötig · ⚙️ kein LLM Code reicht · ❓ strittig, Entscheidung offen
> **Repo-Abgleich vom 28. Juli 2026** (Branch `prompts`, Ordner `prompts/`, Commit `a6b3a42f2a`)
>
> **Belegt vorhanden:** P1P18 liegen als 22 Dateien vor (P8 = Kern + vier Adapter seedance/veo/sora/wan), geseedet über `scripts/seed-prompts.mjs` in `prompt_templates`, versioniert. Alle 22 haben Frontmatter im festgelegten Schema, einen Anti-Injection-Schlusssatz und wo JSON ausgegeben wird ein Schema mit „NUR dieses JSON".
>
> Die Status-Spalte unten ist entsprechend nachgezogen: Was im Repo steht, ist als vorhanden markiert. **Strittige Punkte sind mit ❓ gekennzeichnet und in `prompt-review.md` begründet; die Aufgaben dazu stehen in `prompt-plan.md`.** Sie sind hier bewusst NICHT als Beschluss eingetragen.
### A. Onboarding
| # | Denk-Punkt | Wann | Input | Output | Status |
|---|---|---|---|---|---|
| P1 | **Upload-Analyst** (Vision) | Nutzer lädt Logo, Produktbilder, Top-Ads hoch | Bilder/Videos der Uploads | Initiale Attribute + Asset-Kandidaten. **Asset-Enum im Repo: `gesicht\|produkt\|logo\|sonstiges` `kulisse` fehlt** und muss zeitgleich mit dem DB-Enum ergänzt werden | ✅ vorhanden · Erweiterung nötig |
| P2 | **Profil-Übersetzer** | Nach den 6 Pflichtfragen | Antworten (Label, Produkt, **Nische**, Zielgruppe, 3 Worte, am Markt seit) | Brand-Profil + erste Stil-Attribute mit Startwerten (Scope: brand-weit, `folder_id = null`). **Die Nische wird nicht übersetzt** sie ist eine Struktur-Angabe und wandert direkt nach `brands.nische` | ✅ vorhanden · **spricht im Repo noch von 5 Pflichtfragen**, muss auf 6 |
### B. Szene erstellen
| # | Denk-Punkt | Wann | Input | Output | Status |
|---|---|---|---|---|---|
| P3 | **Intent-Versteher** | Nutzer gibt Szenen-Prompt ein | User-Prompt | Was ist verlangt? Welche Kategorien sind relevant, welche hat der Nutzer explizit festgelegt (nicht überschreiben!)? | 🆕 |
| P4 | **Knowledge-Selector** | Direkt nach P3 | P3-Ergebnis + Kategorie-Scores **des gewählten Ordners** (`attribute_scores.folder_id`; null = brand-weit) | Welche Attribute/Assets werden injiziert: Top-Scores vs. explizite Nutzer-Wünsche vs. genau EIN Explorations-Slot. **Ein gewählter Ordner überschreibt die brand-weite Ebene vollständig es wird nicht gemischt** | ✅ vorhanden, inkl. Explorations-Slot. ❓ Tiebreak bei Gleichstand geht im Repo an den höheren `used_count` Umkehrung beschlossen, siehe `prompt-plan.md` §4.3. **Kennt den Ordner-Reifegrad noch nicht** |
| P5 | **Script-Autor** | Vor der Script-Anzeige | P4-Auswahl + User-Prompt | Das Script, das der Nutzer sieht und bestätigt | 🆕 (nutzt P8-Struktur) |
| P6 | **Script-Diff-Lerner** | Nutzer hat Script bearbeitet | Original-Script vs. editiertes Script | Was wurde geändert und was sagt das über die Vorlieben? → Lernsignal an betroffene Attribute | 🆕 |
| P7 | **Bild-Prompt-Generator** | Referenzbild-Generierung (Gesicht, Produkt, Szenen-Plate) | Statischer Kern (Foto-Realismus) + 5 Slots | Fertiger Bild-Prompt für **EIN** Bild | ✅ **Slot-Umbau erledigt** (5 Slots belegt). Setzt die Foto-Recherche wörtlich um: Verbot von „flawless"/„perfect skin"/„ultra realistic", doppelte Negativliste, Identity-Lock am Anfang UND Ende, Token-Locking, 46 Referenzbilder |
| P8 | **Video-Prompt-Generator** („Regie-Assistent") | Pro Video, pro Modell | Statischer Kern (10-Block-Regie-Struktur) + Slots + bestätigtes Script | Modellneutrale Shot-Struktur → Adapter → fertiger Video-Prompt | ✅ **Kern + vier Adapter vorhanden** (seedance/veo/sora/wan). ❓ Wortbudget des Seedance-Adapters (280400) widerspricht der offiziellen Empfehlung (60100) siehe `prompt-plan.md` §4.1 |
### C. Nach der Generierung
| # | Denk-Punkt | Wann | Input | Output | Status |
|---|---|---|---|---|---|
| P9 | **Video-Analyst / Tagger** (Vision) „Zwischen-Prompt für die Datenspeicherung" | Jedes generierte Video, vor der Anzeige | Video + verwendeter Prompt | Strukturierte Tags (Location, Farben, Voice, Geräusche, Texte, Handlungen) → `videos/video-XXXX.md`; prüft auch: Hat das Modell gemacht, was verlangt war? | 🆕 (deine Idee bestätigt, das ist der wichtigste neue Prompt) |
| P10 | **Favorit-Vorhersager** | Vor der Auswahl-Anzeige | Tags aller Videos (P9) + Attribut-Scores | Welches Video kriegt die goldene Umrandung | ⚙️ überwiegend Code (Score-Summe) LLM nur bei Gleichstand |
| P11 | **Vote-Attributierer** | Nach dem Vote | Gewinner-/Verlierer-Tags | Welche Merkmale unterschieden sich wirklich → nur die kriegen Elo-Punkte | 🆕 (Punktevergabe selbst: ⚙️ Code) |
| P12 | **Vergleichs-Analyst** | Nach dem Vote | .md-Inhalte der konkurrierenden Attribute | „Was hat X besser gemacht als Y" → Eintrag in beide Dateien; ggf. Vorschlag für Unter-Attribut (kaiserslautern--stadion) | 🆕 |
| P13 | **Frage-Generator** | Nach dem Vote (optional) | Unsicherste/wertvollste Attribut-Paare | Die eine gezielte Frage an den Owner („Welche Stadt war besser?") welche Frage bringt am meisten Lernwert? | 🆕 |
### D. Knowledge-Base-Pflege
| # | Denk-Punkt | Wann | Input | Output | Status |
|---|---|---|---|---|---|
| P14 | **Details-Autor** | Wenn ein Attribut neue Erkenntnisse sammelt | Vergleiche, Performance-Daten, P12-Einträge | Aktualisiert Beschreibung / Was-es-ausmacht / Details inkl. Prompt-Bausteinen und Negativ-Prompts | 🆕 |
| P15 | **Kategorie-Wächter** | Wenn P9 einen Tag liefert, der in keine Kategorie passt | Neuer Tag + bestehende Kategorien | Neue Kategorie anlegen, Unter-Attribut oder in Bestehendes einsortieren? | 🆕 |
| | Archivierung | Score unter Schwelle + lange inaktiv | Scores, Datum | Status „archiviert" | ⚙️ Code, kein Prompt |
| | Elo-Updates, K-Faktor, Startwerte | jeder Vergleich | Zahlen | Zahlen | ⚙️ Code, kein Prompt |
### E. Verbessern
| # | Denk-Punkt | Wann | Input | Output | Status |
|---|---|---|---|---|---|
| P16 | **Referenz-Interpreter** (Vision) | Referenz-Upload beim Verbessern | Referenzbild + Pflichtfeld-Beschreibung | Exakt die benannten Merkmale extrahieren und **nur** die (Regel: nie 1:1 kopieren) → Lock→Change→Scope-Block für P7 | ✅ vorhanden, inkl. Urheberrechts-Klausel und Altersverbot. **Kennt `kulisse` nicht** „Hintergrund" gilt dort nur als zu ignorierendes Bildelement |
| P17 | **Versions-Chronist** | Neue Asset-Version gewählt | Alt vs. Neu + Änderungsgrund | Eintrag in die Versionskette (v3 → v4: was, warum, Gewinner) | 🆕 (klein, Template-nah) |
### F. Bild-Modus, Feed & Ordner
*Konzept: `konzept-bilder-feed.md`. Der Bild-Modus ist entkoppelt kein Wettbewerb mehrerer KI-Modelle, ein festes Bildmodell, kein Vote-Loop.*
| # | Denk-Punkt | Wann | Input | Output | Status |
|---|---|---|---|---|---|
| P19 | **Slot-Analyst** („Rezept lesbar machen") | Nutzer öffnet einen fremden Post im Feed | `posts.prompt_sent` des Originals + dessen Tags | Die vereinfachte Chip-Darstellung (`slot_summary`): Kulisse, Modelle, Licht, Kamera, Farbe **als Abstraktion, nie im Wortlaut**. Das ist die Grenze zwischen „kopierbar" und „Betriebsgeheimnis offengelegt" | 🆕 |
| P20 | **Ordner-Vorschlag** | Nutzer speichert einen Post (eigen oder fremd) | Post-Tags + bestehende Ordner der Brand (Name + `theme_md`) | Passenden Ordner vorschlagen **oder** einen neuen mit Theme-Beschreibung anbieten. Der Nutzer bestätigt nie automatisch einsortieren | 🆕 |
| P21 | **Werbetext-Autor** | Beim Kopieren | Werbetext des Originals (nur als **Stilvorlage**) + eigenes Produkt + Brand-Profil | Neuer Werbetext im Stil des Originals, inhaltlich aufs eigene Produkt. Der fremde Text wird **nie** übernommen sonst wandern fremde Claims und Markennennungen ungeprüft in den eigenen Post | 🆕 |
| P22 | **Bild-Analyst / Tagger** (Vision) | Jedes generierte Bild | Bild + verwendeter Prompt | Strukturierte Tags → `post_images.tags`, Compliance-Abgleich, Qualitätsdefekte, erkanntes Format und Winkel. **Enum-Zwang wie bei P9** + Code-Validator | 🆕 **keine abgespeckte Kopie von P9.** Rund die Hälfte von P9s Schema (voice, geraeusche, start_s/end_s, Timestamps) ist auf Bilder nicht anwendbar |
| P23 | **Ketten-Regisseur** | Post-Generierung mit mehr als einem Bild | Gefüllte Post-Slots, Format, Kettenlänge | n Bild-Prompts Person, Produkt, Kulisse, Licht und Farbe **wörtlich identisch**, es variiert nur Winkel **oder** Position | 🆕 **war bisher nicht im Inventar.** Aufsatz über P7, kein Ersatz. Die Ketten-Konsistenz ist der schwierigste Teil des Bild-Modus |
| | Nischen- und Typ-Tag-Vergabe | Modell wird angelegt | Modell + Referenzbilder | feste Enum-Werte | ⚙️ **bewusst kein freier LLM-Call** P22-Vision schlägt nur aus der festen Liste vor, der Code validiert. Ohne Enum-Zwang driften die Kategorien und die Slot-Kompatibilität wird wertlos |
| | Feed-Score | stündlich | Views, Likes, Kopien, Social-Reichweite | gewichtete Summe + Zeit-Decay | ⚙️ Code, kein Prompt. **Und kein Elo** hier duelliert nichts, hier wird summiert |
| | Ordner-Initialisierung | Ordner wird angelegt | `startwert_modus` | Startwerte in `attribute_scores` | ⚙️ Code, kein Prompt |
> **P19 ist der heikelste neue Prompt.** Er entscheidet, wie viel vom Original sichtbar wird. Zu wenig Abstraktion = die Knowledge Base fremder Brands wandert nach außen. Zu viel = der Kopierer versteht das Rezept nicht und das Feature ist wertlos. Der Anti-Injection-Satz gehört hier zwingend rein: P19 ist die **einzige Stelle im System, an der Nutzerinhalte zwischen Mandanten fließen**.
> **Korrektur zum bisherigen Stand:** Dieses Dokument hat P7 als „✅ vorhanden auf Slots umbauen" geführt und in den Bild-MVP-Pfad gesetzt. Das war in beide Richtungen falsch. Der Slot-Umbau ist **erledigt**; dafür ist P7 laut eigenem Rollensatz ein **Referenzbild-Generator für die Video-Pipeline** er erzeugt genau ein Bild, verbietet Seitenverhältnisse ausdrücklich („Kein Seitenverhältnis in den Prompt schreiben"), verbietet Text im Bild („no text, no logos") und kennt keine Bilderkette. Der Bild-MVP braucht deshalb **P23** zusätzlich. Begründung: `prompt-review.md` §4.
### G. Performance & Reporting
| # | Denk-Punkt | Wann | Input | Output | Status |
|---|---|---|---|---|---|
| | Performance → Elo | Ad-Daten kommen rein | CTR, Thumbstop, ROAS | Score-Updates (×2 gewichtet) | ⚙️ Code, kein Prompt |
| P18 | **Insight-Reporter** | Fürs Brand-Dashboard | Scores, Logs, Performance | Verständliche Erklärung für den Owner: „Warum performen deine Videos und was probieren wir als Nächstes" | 🆕 (V2, nice-to-have) |
---
## Zusammenfassung
- **23 Denk-Punkte** (P1P23): **18 liegen im Repo** (P1P18, davon P8 als Familie mit fünf Dateien = 22 Templates), **5 fehlen** (P19P23), 1 davon überwiegend Code (P10, LLM nur bei Gleichstand).
- **6 Stellen bewusst ganz OHNE LLM** (Elo-Mathe, Archivierung, Performance-Mapping, Feed-Score, Ordner-Initialisierung, Nischen-/Typ-Tag-Validierung) deterministischer Code ist dort billiger und konsistenter. P10 zählt hier **nicht** mit, weil er im Gleichstandsfall doch ein LLM braucht.
- **Zwei kritische Pfade**, weil es zwei Produktteile gibt:
- **Video-MVP:** P3, P4, P5, P8, P9, P11 alle sechs liegen vor, es fehlt die Verdrahtung.
- **Bild-MVP:** **P7 (erweitern) + P23 (neu) + P22 (neu) + P19 + P21.** Drei Neuentwicklungen, nicht ein Umbau. P20 ist nachrüstbar ohne ihn sortiert der Nutzer von Hand.
- **Teuerste Prompts** (Vision, pro Ausgabe): P9 Video-Analyst bei 1.000 Videos/Monat. **P22 Bild-Analyst wird ihn überholen**, sobald der Bild-Modus läuft Bilder sind billig, es werden also viel mehr. Kostenrechnung entsprechend nachziehen (`projekt-uebersicht.md` §9 rechnet nur mit Video). Für P9 sind `media_resolution: low` + 1 FPS **nirgends gesetzt** gehört in den Job-Dispatcher, nicht in den Prompt.
- P8 ist eine Familie: ein Regie-Kern + vier Adapter (seedance, veo, sora, wan). **P7 braucht keine Adapter-Familie** im Bild-Modus läuft nur ein festes KI-Modell.
- **P4 arbeitet scope-bewusst:** Er zieht die Top-Attribute aus `attribute_scores` der gewählten `folder_id`, nicht brand-weit. Ohne Ordner bleibt es beim brand-weiten Verhalten. Den **Reifegrad** des Scopes kennt er noch nicht bei vier Posts im Ordner ist „höchster Score" Rauschen.
### Strittig, noch nicht entschieden (❓)
| Punkt | Stand im Repo | Wo begründet |
|---|---|---|
| Seedance-Wortbudget | 280400 Wörter; offizielle Empfehlung ist 60100 | `prompt-plan.md` §4.1 |
| Trägt die 10-Block-Struktur bei Seedance? | Die gesamte P8-Architektur setzt es voraus | `prompt-plan.md` §9 |
| Identity-Lock am Prompt-Ende | in P7 vorhanden, in keinem P8-Adapter | `prompt-review.md` §5 Nr. 7 |
| Verbotslisten der vier Adapter | uneinheitlich; Seedance ohne Marken-/Personennamen-Verbot, alle vier ohne Altersverbot | `prompt-review.md` §3.2 |
| Kosmetik-Few-Shots in P5 | unverändert, obwohl P7/P8 entbrancht wurden | `prompt-review.md` §3.1 |
| `{{NISCHE}}` als Slot | existiert nicht Branche wurde ersatzlos gestrichen | `prompt-plan.md` §5 C1 |