5.8 KiB
5.8 KiB
Plan: Chat-Fenster mit freier Promptwahl
Stand: 02.03.2026
Status: ✅ Umgesetzt
Ziel: Schnelle, direkte KI-Interaktion ohne Umweg über feste Prompts
1. Übersicht
| Element | Beschreibung |
|---|---|
| Chatfenster | Unter dem Editor, freie Texteingabe an die KI |
| Kontext | Aktueller Artikel (Titel, Inhalt, SEO) wird automatisch mitgegeben |
| Prompts | Feste Prompts bleiben optional (für "KI generieren" aus Quelle) |
| Priorität | Chat = Hauptweg, feste Prompts = Nebenweg |
2. Layout
┌─────────────────────────────────────────────────────────────┐
│ Nav, Status, Publish-Ziele │
├──────────────────────────────┬──────────────────────────────┤
│ Inhalt (Editor) │ Vorschau │
│ │ │
├──────────────────────────────┴──────────────────────────────┤
│ 💬 KI-Chat (freie Eingabe) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Nachrichtenverlauf (User/KI) │ │
│ ├───────────────────────────────────────────────────────┤ │
│ │ [Eingabefeld] [Senden] │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ SEO, Medien, Buttons │
├─────────────────────────────────────────────────────────────┤
│ Redaktionsplan (nach Scrollen) │
└─────────────────────────────────────────────────────────────┘
- Chat direkt unter Editor + Vorschau
- Standard: offen (schnelle Interaktion), einklappbar mit Chevron „▸ KI-Chat“
- Eingabefeld groß genug für längere Anweisungen
3. API
Endpoint: POST /api/chat
Request:
{
"message": "Mach den ersten Absatz knackiger",
"history": [
{"role": "user", "content": "..."},
{"role": "assistant", "content": "..."}
],
"context": {
"title": "Aktueller Titel",
"content": "Aktueller Inhalt...",
"seo_title": "...",
"seo_description": "...",
"focus_keyword": "..."
}
}
Response:
{
"reply": "Antwort der KI...",
"suggested_content": "Optional: überarbeiteter Text zum Übernehmen"
}
- Backend: OpenRouter wie bei
/api/polish, aber mit Chat-System-Prompt - System-Prompt: „Du bist ein Redakteurs-Assistent. Der User arbeitet an einem Artikel. Kontext: [Titel, Inhalt, SEO]. Antworte kurz und handlungsorientiert. Wenn der User Änderungen will, gib den überarbeiteten Text als
suggested_contentzurück.“
4. Chat-UI (Frontend)
| Element | Beschreibung |
|---|---|
| Nachrichtenliste | User-Nachrichten rechts/unterschiedlich, KI links/anders |
| Eingabefeld | Textarea oder input, Enter zum Senden |
| Senden-Button | Expliziter Klick |
| Spinner | Während die KI antwortet |
| Übernehmen-Button | Bei Antworten mit suggested_content – übernimmt in Editor/SEO |
| History | Nur Session (im Speicher), max. 6 Nachrichtenpaare, kein DB-Persistenz (v1) |
5. Ablauf
- User tippt im Chat: „Kürze den zweiten Absatz“
- Frontend sendet: message + context (aktueller Artikel) + history (falls vorhanden)
- Backend ruft OpenRouter auf, KI antwortet
- Antwort erscheint im Chat
- Optional: KI liefert
suggested_content→ Button „In Editor übernehmen“
6. Feste Prompts (Anpassung)
| Änderung | Beschreibung |
|---|---|
| Quelle + Ton + Prompt | Bleiben für „KI generieren“ (Artikel aus URL/Text erzeugen) |
| Position | Können kompakter werden (z.B. eine Zeile), Chat ist prominenter |
| Optional | Wenn User nur chatten will: Quelle/Prompt ignorierbar |
7. Aufwand (grobe Schätzung)
| Teil | Zeilen / Aufwand |
|---|---|
POST /api/chat in app.py |
~40 Zeilen |
| Chat-UI in index.html | ~80 Zeilen HTML/JS |
| Integration Kontext (getArticleData) | ~5 Zeilen |
| Gesamt | ~2–3 Stunden |
8. Entscheidungen (festgelegt)
| Punkt | Entscheidung |
|---|---|
| Chat Standard | Offen (schnelle Interaktion), einklappbar optional |
| History persistieren | Nein – nur Session, bei Artikel-Wechsel/Reload neu |
| Übernehmen-Button | Zeigen, wenn suggested_content vorhanden |
| Max. History | 6 Nachrichtenpaare (12 Nachrichten) |
9. Reihenfolge (bei Umsetzung)
- API-Endpoint
/api/chat - Chat-UI (Eingabe + Senden + Anzeige)
- Kontext-Anbindung (Artikel mitschicken)
- Übernehmen-Button (optional)
- Feinschliff (Spinner, Fehlerbehandlung, Einklappbar)
Plan erstellt für Redax-WP. Umsetzung nur nach explizitem OK.