15 KiB
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 istdatenbank-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, Ordnerprompts/, Commita6b3a42f2a)Belegt vorhanden: P1–P18 liegen als 22 Dateien vor (P8 = Kern + vier Adapter seedance/veo/sora/wan), geseedet über
scripts/seed-prompts.mjsinprompt_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.mdbegründet; die Aufgaben dazu stehen inprompt-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, 4–6 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 (280–400) widerspricht der offiziellen Empfehlung (60–100) – 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 (P1–P23): 18 liegen im Repo (P1–P18, davon P8 als Familie mit fünf Dateien = 22 Templates), 5 fehlen (P19–P23), 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 sindmedia_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_scoresder gewähltenfolder_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 | 280–400 Wörter; offizielle Empfehlung ist 60–100 | 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 |