{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 76,\n \"parent_id\": 34,\n \"slug\": \"kritiker\",\n \"path\": \"\/content-studio\/kritiker\",\n \"title\": \"Kritiker\",\n \"description\": \"Kritiker-System und KI-gestützte Qualitätsprüfung\",\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/content-studio\\\">Content Studio<\/a> » Kritiker\\n<\/nav>\\n\\n<h1>Kritiker<\/h1>\\n<p class=\\\"doc-meta\\\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-20<\/p>\\n\\n<p>KI-gestütztes Qualitätsprüfungs-System mit konfigurierbaren Kritikern.<\/p>\\n\\n<table>\\n <tr><th>Modul<\/th><td>generate.py<\/td><\/tr>\\n <tr><th>Tabelle<\/th><td>critics<\/td><\/tr>\\n <tr><th>Ergebnisse<\/th><td>content_critiques<\/td><\/tr>\\n<\/table>\\n\\n<h2>Architektur<\/h2>\\n<pre><code>Content Version\\n ↓\\n┌─────────────────┐\\n│ Critic 1 │ → Feedback + Rating\\n│ Critic 2 │ → Feedback + Rating\\n│ Critic N │ → Feedback + Rating\\n└─────────────────┘\\n ↓\\nall_passed? → validate : revision<\/code><\/pre>\\n\\n<h2>Kritiker-Tabelle<\/h2>\\n<table>\\n <tr><th>Feld<\/th><th>Typ<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td>id<\/td><td>int<\/td><td>Primärschlüssel<\/td><\/tr>\\n <tr><td>name<\/td><td>varchar<\/td><td>Kritiker-Name (z.B. \\\"Lektor\\\")<\/td><\/tr>\\n <tr><td>fokus<\/td><td>json<\/td><td>Prüfungs-Schwerpunkte<\/td><\/tr>\\n <tr><td>prompt_id<\/td><td>int<\/td><td>FK zu prompts<\/td><\/tr>\\n <tr><td>is_active<\/td><td>bool<\/td><td>Aktiv-Status<\/td><\/tr>\\n <tr><td>sort_order<\/td><td>int<\/td><td>Reihenfolge<\/td><\/tr>\\n<\/table>\\n\\n<h2>Fokus-Bereiche<\/h2>\\n<p>Der <code>fokus<\/code> ist ein JSON-Array mit Prüfungsschwerpunkten:<\/p>\\n<pre><code>[\\\"Grammatik\\\", \\\"Rechtschreibung\\\", \\\"Stil\\\"]\\n[\\\"SEO\\\", \\\"Keywords\\\", \\\"Meta-Beschreibung\\\"]\\n[\\\"Fakten\\\", \\\"Quellen\\\", \\\"Aktualität\\\"]\\n[\\\"Struktur\\\", \\\"Lesbarkeit\\\", \\\"Absätze\\\"]<\/code><\/pre>\\n\\n<h2>Kritik-Ablauf<\/h2>\\n\\n<h3>1. run_critique_round() - Zeile 398-470<\/h3>\\n<ol>\\n <li>Version-Content laden<\/li>\\n <li>Alle aktiven Kritiker aus DB laden<\/li>\\n <li>Kritik-Runde inkrementieren<\/li>\\n <li>Jeden Kritiker ausführen<\/li>\\n <li>Feedback in content_critiques speichern<\/li>\\n <li>Status basierend auf Ergebnis setzen<\/li>\\n<\/ol>\\n\\n<h3>2. run_critic() - Zeile 335-395<\/h3>\\n<pre><code>def run_critic(content, critic_id, model=\\\"anthropic\\\"):\\n - Kritiker aus DB laden\\n - Fokus-Bereiche extrahieren\\n - Prompt aufbauen\\n - LLM aufrufen\\n - JSON-Feedback parsen<\/code><\/pre>\\n\\n<h2>Feedback-Format<\/h2>\\n<p>Kritiker liefern strukturiertes JSON:<\/p>\\n<pre><code>{\\n \\\"rating\\\": 8,\\n \\\"passed\\\": true,\\n \\\"issues\\\": [\\\"Issue 1\\\", \\\"Issue 2\\\"],\\n \\\"suggestions\\\": [\\\"Suggestion 1\\\"],\\n \\\"summary\\\": \\\"Kurze Zusammenfassung\\\"\\n}<\/code><\/pre>\\n\\n<table>\\n <tr><th>Feld<\/th><th>Typ<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td>rating<\/td><td>int<\/td><td>Bewertung 1-10<\/td><\/tr>\\n <tr><td>passed<\/td><td>bool<\/td><td>Kriterien erfüllt?<\/td><\/tr>\\n <tr><td>issues<\/td><td>array<\/td><td>Gefundene Probleme<\/td><\/tr>\\n <tr><td>suggestions<\/td><td>array<\/td><td>Verbesserungsvorschläge<\/td><\/tr>\\n <tr><td>summary<\/td><td>string<\/td><td>Zusammenfassung<\/td><\/tr>\\n<\/table>\\n\\n<h2>Pass-Logik<\/h2>\\n<pre><code>all_passed = True\\nfor critic in critics:\\n feedback = run_critic(content, critic.id)\\n if not feedback.passed:\\n all_passed = False\\n\\nif all_passed:\\n status = \\\"validate\\\" # → Freigabe möglich\\nelse:\\n status = \\\"revision\\\" # → Überarbeitung nötig<\/code><\/pre>\\n\\n<h2>Kritik-Speicherung<\/h2>\\n<table>\\n <tr><th>Tabelle<\/th><td>content_critiques<\/td><\/tr>\\n <tr><th>Felder<\/th><td>version_id, critic_id, round, feedback (JSON)<\/td><\/tr>\\n<\/table>\\n\\n<h2>Revision nach Kritik<\/h2>\\n<p>Die Funktion <code>revise_content()<\/code> (Zeile 473-560) lädt alle Kritiken der letzten Runde und erstellt einen Überarbeitungs-Prompt:<\/p>\\n<pre><code>## Originaler Text:\\n{content}\\n\\n## Feedback der Kritiker:\\n### Lektor:\\n- Bewertung: 6\/10\\n- Probleme: Rechtschreibfehler, Satzstellung\\n- Vorschläge: Absätze kürzen\\n\\n### SEO-Experte:\\n- Bewertung: 4\/10\\n- Probleme: Keyword-Dichte zu gering\\n...<\/code><\/pre>\\n\\n<h2>Beispiel-Kritiker<\/h2>\\n<table>\\n <tr><th>Name<\/th><th>Fokus<\/th><\/tr>\\n <tr><td>Lektor<\/td><td>Grammatik, Rechtschreibung, Stil<\/td><\/tr>\\n <tr><td>SEO-Experte<\/td><td>Keywords, Meta, Lesbarkeit<\/td><\/tr>\\n <tr><td>Faktenprüfer<\/td><td>Quellen, Aktualität, Genauigkeit<\/td><\/tr>\\n <tr><td>Strukturanalyst<\/td><td>Gliederung, Absätze, Überschriften<\/td><\/tr>\\n<\/table>\",\n \"status\": \"published\",\n \"sort_order\": 3,\n \"depth\": 1,\n \"created_at\": \"2025-12-20T13:37:24\",\n \"updated_at\": \"2025-12-27T15:58:19\"\n }\n}"
}
]
}