API Referenz
POST /api/scenes/generate
Generiert eine neue narrative Szene mit automatischer Directus-Lore-Injektion
POST /api/scenes/generate
Startet die mehrstufige Agentic RAG Pipeline: Analysiert den Plot-Prompt, ruft kanonische Lore-Entitäten und bitemporale State-Patches aus Directus ab, generiert die Prosa und speichert die Szene optional direkt im Directus-Katalog.
Request Body
| Parameter | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
bookId | string (uuid) | Ja | - | UUID des Zielbuchs in Directus. |
chapterId | string (uuid) | Nein | - | UUID des Kapitels. Falls leer, wird das erste Kapitel des Buchs verwendet oder angelegt. |
chapterNumber | integer | Nein | 1 | Kapitelnummer für automatische Kapitel-Erstellung. |
sceneNumber | integer | Nein | 1 | Fortlaufende Szenennummer im Kapitel. |
title | string | Nein | - | Optionaler Arbeitstitel der Szene. |
prompt | string | Ja | - | Das Handlungsziel der Szene (mindestens 3 Zeichen). |
entityIds | string[] | Nein | [] | Optionale UUIDs explizit zu ladender Lore-Entitäten. |
saveToDirectus | boolean | Nein | true | Ob das Ergebnis in Directus (scenes) gespeichert werden soll. |
Code-Beispiele
curl -X POST http://localhost:3005/api/scenes/generate \
-H "Content-Type: application/json" \
-d '{
"bookId": "11111111-2222-3333-4444-555555555555",
"chapterNumber": 1,
"sceneNumber": 1,
"title": "Der Schwur im Schattenwald",
"prompt": "Vaelin trifft sich heimlich mit der Informantin an der alten Basaltruine.",
"saveToDirectus": true
}'Antworten
201 Created
{
"success": true,
"data": {
"sceneTitle": "Der Schwur im Schattenwald",
"summary": "Vaelin empfängt brisante Informationen über den Aufmarsch der Legion.",
"content": "Der Regen fiel wie graue Schleier über die verwitterten Basaltsäulen...",
"consistencyNotes": "Vaelins Schulterverletzung berücksichtigt; Informationsaustausch ohne Magieeinsatz gelöst.",
"retrievedContext": {
"charactersCount": 2,
"locationsCount": 1,
"factionsCount": 1,
"rulesAndObjectsCount": 1,
"loreStatesCount": 2
},
"persistedSceneId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}400 Bad Request
{
"error": "Validation failed",
"details": {
"bookId": { "_errors": ["bookId is required"] }
}
}2. Vollständiges Kapitel generieren (POST /api/scenes/generate-chapter)
Generiert ein vollständiges, dramaturgisch gegliedertes Kapitel inklusive Dialogen in Guimet-Klammern (»...«) mit nativer Agentic-Lore-Konsistenz.
curl -X POST http://localhost:3005/api/scenes/generate-chapter \
-H "Content-Type: application/json" \
-d '{
"prompt": "Mira und Jaro entdecken ein geheimnisvolles Schiffswrack am Strand der Nebelinsel.",
"references": [
{ "name": "Mira", "type": "character", "description": "Mutige junge Entdeckerin mit Lederjacke und Messingkompass." }
],
"targetWords": 600
}'Antwort:
{
"success": true,
"data": {
"title": "Das Geisterschiff in der Bucht",
"content": "Der Morgen graute über der Nebelinsel... »Schau mal dort drüben!«, rief Mira leise.",
"summary": "Mira und Jaro entdecken bei Tagesanbruch ein gestrandetes altes Holzschiff."
}
}3. Lektorats-Zusammenfassung erstellen (POST /api/scenes/generate-summary)
Erstellt eine professionelle Lektorats-Zusammenfassung eines Kapitels oder Romanabschnitts.
curl -X POST http://localhost:3005/api/scenes/generate-summary \
-H "Content-Type: application/json" \
-d '{
"title": "Das Geisterschiff",
"content": "Der Morgen graute über der Dracheninsel...",
"targetLengthWords": 140
}'