{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_update",
"tool_input": {
"id": 26,
"content": "<nav class=\"breadcrumb\">\n <a href=\"\/docs\">Dokumentation<\/a> » <a href=\"\/docs\/content-studio\">Content Studio<\/a> » Architektur\n<\/nav>\n\n<h1>Content-Studio Architektur<\/h1>\n<p class=\"doc-meta\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-29<\/p>\n\n<p>Strukturierte Content-Erstellung mit Autorenprofilen, Contracts und Kritikersystem.<\/p>\n\n<table>\n <tr><th>Tool<\/th><td><a href=\"\/content\">\/content<\/a><\/td><\/tr>\n <tr><th>Dokumentation<\/th><td><a href=\"\/docs\/content-studio\">\/docs\/content-studio<\/a><\/td><\/tr>\n <tr><th>API-Referenz<\/th><td><a href=\"\/docs\/api\/content\">\/docs\/api\/content<\/a><\/td><\/tr>\n <tr><th>LLM<\/th><td>Claude Opus 4.5<\/td><\/tr>\n <tr><th>Kritiker-Durchläufe<\/th><td>Max. 3<\/td><\/tr>\n <tr><th>Datenbank<\/th><td>ki_content<\/td><\/tr>\n<\/table>\n\n<h2>Web-UI (RESTful)<\/h2>\n<table>\n <tr><th>URL<\/th><th>Beschreibung<\/th><\/tr>\n <tr><td><a href=\"\/content\">\/content<\/a><\/td><td>Auftrags-Liste<\/td><\/tr>\n <tr><td><a href=\"\/content\/new\">\/content\/new<\/a><\/td><td>Neuer Auftrag<\/td><\/tr>\n <tr><td>\/content\/{id}<\/td><td>Details anzeigen<\/td><\/tr>\n <tr><td>\/content\/{id}\/edit<\/td><td>Bearbeiten<\/td><\/tr>\n<\/table>\n\n<h2>Komponenten<\/h2>\n<pre><code>Content-Erstellungsauftrag\n├── Briefing (Was soll erstellt werden)\n├── Autorenprofil (Wer\/Wie schreibt) → aus content_config\n├── Contract (Qualitätsanforderungen) → aus content_config\n├── Strukturdatei (Format\/Gliederung) → aus content_config\n├── Quellen (RAG-Kontext)\n└── Kritikersystem (Review-Prozess)<\/code><\/pre>\n\n<h2>Workflow<\/h2>\n<pre><code>1. BRIEFING\n - Thema eingeben\n - Zielgruppe wählen\n - Umfang definieren\n\n2. KONFIGURATION\n - Autorenprofil wählen (aus content_config type=author_profile)\n - Contract wählen (aus content_config type=contract)\n - Struktur wählen (aus content_config type=structure)\n - Quellen auswählen (RAG)\n\n3. GENERIERUNG\n - Kapitel-für-Kapitel\n - Fortschrittsanzeige\n\n4. CRITIQUE (max 3x)\n - Kritiker analysieren sequenziell\n - Automatische Revision\n\n5. VALIDATE\n - Contract-Prüfung\n\n6. APPROVE\n - Menschliches OK\n\n7. PUBLISH\n - Export, Archivierung<\/code><\/pre>\n\n<h2>Autorenprofile<\/h2>\n<p>Gespeichert in <code>content_config<\/code> mit <code>type='author_profile'<\/code>:<\/p>\n<pre><code>{\n \"name\": \"Akademischer Autor\",\n \"stimme\": {\n \"ton\": \"sachlich, präzise\",\n \"perspektive\": \"dritte Person\"\n },\n \"stil\": {\n \"fachsprache\": true,\n \"zitate\": \"häufig, APA 7\"\n },\n \"tabus\": [\n \"Umgangssprache\",\n \"Unbelegte Behauptungen\"\n ]\n}<\/code><\/pre>\n\n<h3>Verfügbare Profile<\/h3>\n<table>\n <tr><th>Profil<\/th><th>Use-Case<\/th><\/tr>\n <tr><td>Akademisch<\/td><td>Fachartikel, Studien<\/td><\/tr>\n <tr><td>Didaktisch<\/td><td>Lernmaterialien<\/td><\/tr>\n <tr><td>Journalistisch<\/td><td>Blog, News<\/td><\/tr>\n <tr><td>Therapeutisch<\/td><td>Klientenmaterial<\/td><\/tr>\n<\/table>\n\n<h2>Contracts<\/h2>\n<p>Gespeichert in <code>content_config<\/code> mit <code>type='contract'<\/code>:<\/p>\n<pre><code>{\n \"name\": \"Fachartikel-Standard\",\n \"anforderungen\": {\n \"länge\": {\"min\": 1500, \"max\": 3000},\n \"struktur\": [\"abstract\", \"einleitung\", \"hauptteil\", \"fazit\"],\n \"quellenangaben\": 5\n },\n \"validierung\": {\n \"automatisch\": [\"wortanzahl\", \"struktur_check\"],\n \"manuell\": [\"inhaltliche_korrektheit\"]\n }\n}<\/code><\/pre>\n\n<h2>Kritikersystem<\/h2>\n<table>\n <tr><th>Kritiker<\/th><th>Fokus<\/th><\/tr>\n <tr><td>Faktenprüfer<\/td><td>Quellen, Logik, Statistik<\/td><\/tr>\n <tr><td>Stilist<\/td><td>Sprache, Lesbarkeit<\/td><\/tr>\n <tr><td>Strukturanalyst<\/td><td>Roter Faden, Gliederung<\/td><\/tr>\n<\/table>\n\n<h2>Export-Formate<\/h2>\n<ul>\n <li>Markdown (Technische Docs)<\/li>\n <li>HTML (Web-Publishing)<\/li>\n <li>DOCX (Word)<\/li>\n <li>PDF (Finale Dokumente)<\/li>\n<\/ul>\n\n<h2>Pipeline-Scripts<\/h2>\n<p>Backend-Implementierung der Content-Generierung:<\/p>\n<pre><code>\/var\/www\/scripts\/pipeline\/\n├── generate.py → Content-Generierung Kernlogik\n└── web_generate.py → Web-API Wrapper<\/code><\/pre>\n\n<h3>generate.py<\/h3>\n<p>Hauptmodul für RAG-basierte Content-Generierung mit Kritikersystem.<\/p>\n<table>\n <tr><th>RAG-Context<\/th><td>Qdrant (documents Collection)<\/td><\/tr>\n <tr><th>LLM Primary<\/th><td>Claude (Anthropic API)<\/td><\/tr>\n <tr><th>LLM Fallback<\/th><td>Mistral (Ollama lokal)<\/td><\/tr>\n <tr><th>Versionierung<\/th><td>content_versions Tabelle<\/td><\/tr>\n<\/table>\n\n<h4>Hauptfunktionen<\/h4>\n<table>\n <tr><th>Funktion<\/th><th>Beschreibung<\/th><\/tr>\n <tr><td><code>generate_content(order_id, model, collection, context_limit)<\/code><\/td><td>Generiert Content basierend auf Order<\/td><\/tr>\n <tr><td><code>run_critique_round(version_id, model)<\/code><\/td><td>Führt alle aktiven Kritiker aus<\/td><\/tr>\n <tr><td><code>revise_content(version_id, model)<\/code><\/td><td>Erstellt Revision basierend auf Feedback<\/td><\/tr>\n <tr><td><code>run_critic(content, critic_id, model)<\/code><\/td><td>Einzelner Kritiker-Durchlauf<\/td><\/tr>\n<\/table>\n\n<h4>Hilfsfunktionen<\/h4>\n<table>\n <tr><th>Funktion<\/th><th>Beschreibung<\/th><\/tr>\n <tr><td><code>get_rag_context(briefing, collection, limit)<\/code><\/td><td>Holt relevanten Kontext aus Qdrant<\/td><\/tr>\n <tr><td><code>get_author_profile(profile_id)<\/code><\/td><td>Lädt Autorenprofil aus content_config<\/td><\/tr>\n <tr><td><code>get_contract(contract_id)<\/code><\/td><td>Lädt Content-Contract aus content_config<\/td><\/tr>\n <tr><td><code>get_structure(structure_id)<\/code><\/td><td>Lädt Struktur-Template aus content_config<\/td><\/tr>\n <tr><td><code>get_order(order_id)<\/code><\/td><td>Lädt Order mit allen verknüpften Daten<\/td><\/tr>\n <tr><td><code>build_generation_prompt(...)<\/code><\/td><td>Baut den Generierungs-Prompt<\/td><\/tr>\n <tr><td><code>save_version(order_id, content, version_number)<\/code><\/td><td>Speichert Content-Version<\/td><\/tr>\n <tr><td><code>save_sources(order_id, context)<\/code><\/td><td>Speichert RAG-Quellen<\/td><\/tr>\n<\/table>\n\n<h4>CLI-Verwendung<\/h4>\n<pre><code># Content generieren\npython \/var\/www\/scripts\/pipeline\/generate.py generate <order_id> [model]\n\n# Kritik-Runde starten\npython \/var\/www\/scripts\/pipeline\/generate.py critique <version_id> [model]\n\n# Revision erstellen\npython \/var\/www\/scripts\/pipeline\/generate.py revise <version_id> [model]\n\n# Beispiel mit Anthropic\npython \/var\/www\/scripts\/pipeline\/generate.py generate 1 anthropic\n\n# Beispiel mit Ollama\npython \/var\/www\/scripts\/pipeline\/generate.py generate 1 ollama<\/code><\/pre>\n\n<h4>Status-Workflow<\/h4>\n<pre><code>draft → generating → critique → revision\/validate → approve → published\n ↑ ↓\n └────────────┘ (max 3 Runden)<\/code><\/pre>\n\n<h2>Datenbank-Tabellen (ki_content)<\/h2>\n<table>\n <tr><th>Tabelle<\/th><th>Beschreibung<\/th><\/tr>\n <tr><td>content_orders<\/td><td>Aufträge mit Briefing, Status, Verknüpfungen<\/td><\/tr>\n <tr><td>content_versions<\/td><td>Versionierte Content-Texte (JSON)<\/td><\/tr>\n <tr><td>content_sources<\/td><td>RAG-Quellen pro Order<\/td><\/tr>\n <tr><td>content_critiques<\/td><td>Kritiker-Feedback pro Version<\/td><\/tr>\n <tr><td><strong>content_config<\/strong><\/td><td>Unified Config: Autorenprofile, Contracts, Strukturen (type-Feld)<\/td><\/tr>\n <tr><td>content_config_history<\/td><td>Config-Änderungshistorie<\/td><\/tr>\n <tr><td>critics<\/td><td>Kritiker-Definitionen<\/td><\/tr>\n<\/table>\n\n<p><strong>Hinweis:<\/strong> Die früheren separaten Tabellen <code>author_profiles<\/code>, <code>content_contracts<\/code> und <code>content_structures<\/code> wurden in die einheitliche <code>content_config<\/code> Tabelle konsolidiert. Der Typ wird über das <code>type<\/code>-Feld unterschieden.<\/p>"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 26,\n \"parent_id\": 16,\n \"slug\": \"ki-content\",\n \"path\": \"\/ki-system\/ki-content\",\n \"title\": \"Content\",\n \"description\": \"Strukturierte Content-Erstellung mit Autorenprofilen, Contracts und Kritikersystem.\",\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/content-studio\\\">Content Studio<\/a> » Architektur\\n<\/nav>\\n\\n<h1>Content-Studio Architektur<\/h1>\\n<p class=\\\"doc-meta\\\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-29<\/p>\\n\\n<p>Strukturierte Content-Erstellung mit Autorenprofilen, Contracts und Kritikersystem.<\/p>\\n\\n<table>\\n <tr><th>Tool<\/th><td><a href=\\\"\/content\\\">\/content<\/a><\/td><\/tr>\\n <tr><th>Dokumentation<\/th><td><a href=\\\"\/docs\/content-studio\\\">\/docs\/content-studio<\/a><\/td><\/tr>\\n <tr><th>API-Referenz<\/th><td><a href=\\\"\/docs\/api\/content\\\">\/docs\/api\/content<\/a><\/td><\/tr>\\n <tr><th>LLM<\/th><td>Claude Opus 4.5<\/td><\/tr>\\n <tr><th>Kritiker-Durchläufe<\/th><td>Max. 3<\/td><\/tr>\\n <tr><th>Datenbank<\/th><td>ki_content<\/td><\/tr>\\n<\/table>\\n\\n<h2>Web-UI (RESTful)<\/h2>\\n<table>\\n <tr><th>URL<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td><a href=\\\"\/content\\\">\/content<\/a><\/td><td>Auftrags-Liste<\/td><\/tr>\\n <tr><td><a href=\\\"\/content\/new\\\">\/content\/new<\/a><\/td><td>Neuer Auftrag<\/td><\/tr>\\n <tr><td>\/content\/{id}<\/td><td>Details anzeigen<\/td><\/tr>\\n <tr><td>\/content\/{id}\/edit<\/td><td>Bearbeiten<\/td><\/tr>\\n<\/table>\\n\\n<h2>Komponenten<\/h2>\\n<pre><code>Content-Erstellungsauftrag\\n├── Briefing (Was soll erstellt werden)\\n├── Autorenprofil (Wer\/Wie schreibt) → aus content_config\\n├── Contract (Qualitätsanforderungen) → aus content_config\\n├── Strukturdatei (Format\/Gliederung) → aus content_config\\n├── Quellen (RAG-Kontext)\\n└── Kritikersystem (Review-Prozess)<\/code><\/pre>\\n\\n<h2>Workflow<\/h2>\\n<pre><code>1. BRIEFING\\n - Thema eingeben\\n - Zielgruppe wählen\\n - Umfang definieren\\n\\n2. KONFIGURATION\\n - Autorenprofil wählen (aus content_config type=author_profile)\\n - Contract wählen (aus content_config type=contract)\\n - Struktur wählen (aus content_config type=structure)\\n - Quellen auswählen (RAG)\\n\\n3. GENERIERUNG\\n - Kapitel-für-Kapitel\\n - Fortschrittsanzeige\\n\\n4. CRITIQUE (max 3x)\\n - Kritiker analysieren sequenziell\\n - Automatische Revision\\n\\n5. VALIDATE\\n - Contract-Prüfung\\n\\n6. APPROVE\\n - Menschliches OK\\n\\n7. PUBLISH\\n - Export, Archivierung<\/code><\/pre>\\n\\n<h2>Autorenprofile<\/h2>\\n<p>Gespeichert in <code>content_config<\/code> mit <code>type='author_profile'<\/code>:<\/p>\\n<pre><code>{\\n \\\"name\\\": \\\"Akademischer Autor\\\",\\n \\\"stimme\\\": {\\n \\\"ton\\\": \\\"sachlich, präzise\\\",\\n \\\"perspektive\\\": \\\"dritte Person\\\"\\n },\\n \\\"stil\\\": {\\n \\\"fachsprache\\\": true,\\n \\\"zitate\\\": \\\"häufig, APA 7\\\"\\n },\\n \\\"tabus\\\": [\\n \\\"Umgangssprache\\\",\\n \\\"Unbelegte Behauptungen\\\"\\n ]\\n}<\/code><\/pre>\\n\\n<h3>Verfügbare Profile<\/h3>\\n<table>\\n <tr><th>Profil<\/th><th>Use-Case<\/th><\/tr>\\n <tr><td>Akademisch<\/td><td>Fachartikel, Studien<\/td><\/tr>\\n <tr><td>Didaktisch<\/td><td>Lernmaterialien<\/td><\/tr>\\n <tr><td>Journalistisch<\/td><td>Blog, News<\/td><\/tr>\\n <tr><td>Therapeutisch<\/td><td>Klientenmaterial<\/td><\/tr>\\n<\/table>\\n\\n<h2>Contracts<\/h2>\\n<p>Gespeichert in <code>content_config<\/code> mit <code>type='contract'<\/code>:<\/p>\\n<pre><code>{\\n \\\"name\\\": \\\"Fachartikel-Standard\\\",\\n \\\"anforderungen\\\": {\\n \\\"länge\\\": {\\\"min\\\": 1500, \\\"max\\\": 3000},\\n \\\"struktur\\\": [\\\"abstract\\\", \\\"einleitung\\\", \\\"hauptteil\\\", \\\"fazit\\\"],\\n \\\"quellenangaben\\\": 5\\n },\\n \\\"validierung\\\": {\\n \\\"automatisch\\\": [\\\"wortanzahl\\\", \\\"struktur_check\\\"],\\n \\\"manuell\\\": [\\\"inhaltliche_korrektheit\\\"]\\n }\\n}<\/code><\/pre>\\n\\n<h2>Kritikersystem<\/h2>\\n<table>\\n <tr><th>Kritiker<\/th><th>Fokus<\/th><\/tr>\\n <tr><td>Faktenprüfer<\/td><td>Quellen, Logik, Statistik<\/td><\/tr>\\n <tr><td>Stilist<\/td><td>Sprache, Lesbarkeit<\/td><\/tr>\\n <tr><td>Strukturanalyst<\/td><td>Roter Faden, Gliederung<\/td><\/tr>\\n<\/table>\\n\\n<h2>Export-Formate<\/h2>\\n<ul>\\n <li>Markdown (Technische Docs)<\/li>\\n <li>HTML (Web-Publishing)<\/li>\\n <li>DOCX (Word)<\/li>\\n <li>PDF (Finale Dokumente)<\/li>\\n<\/ul>\\n\\n<h2>Pipeline-Scripts<\/h2>\\n<p>Backend-Implementierung der Content-Generierung:<\/p>\\n<pre><code>\/var\/www\/scripts\/pipeline\/\\n├── generate.py → Content-Generierung Kernlogik\\n└── web_generate.py → Web-API Wrapper<\/code><\/pre>\\n\\n<h3>generate.py<\/h3>\\n<p>Hauptmodul für RAG-basierte Content-Generierung mit Kritikersystem.<\/p>\\n<table>\\n <tr><th>RAG-Context<\/th><td>Qdrant (documents Collection)<\/td><\/tr>\\n <tr><th>LLM Primary<\/th><td>Claude (Anthropic API)<\/td><\/tr>\\n <tr><th>LLM Fallback<\/th><td>Mistral (Ollama lokal)<\/td><\/tr>\\n <tr><th>Versionierung<\/th><td>content_versions Tabelle<\/td><\/tr>\\n<\/table>\\n\\n<h4>Hauptfunktionen<\/h4>\\n<table>\\n <tr><th>Funktion<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td><code>generate_content(order_id, model, collection, context_limit)<\/code><\/td><td>Generiert Content basierend auf Order<\/td><\/tr>\\n <tr><td><code>run_critique_round(version_id, model)<\/code><\/td><td>Führt alle aktiven Kritiker aus<\/td><\/tr>\\n <tr><td><code>revise_content(version_id, model)<\/code><\/td><td>Erstellt Revision basierend auf Feedback<\/td><\/tr>\\n <tr><td><code>run_critic(content, critic_id, model)<\/code><\/td><td>Einzelner Kritiker-Durchlauf<\/td><\/tr>\\n<\/table>\\n\\n<h4>Hilfsfunktionen<\/h4>\\n<table>\\n <tr><th>Funktion<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td><code>get_rag_context(briefing, collection, limit)<\/code><\/td><td>Holt relevanten Kontext aus Qdrant<\/td><\/tr>\\n <tr><td><code>get_author_profile(profile_id)<\/code><\/td><td>Lädt Autorenprofil aus content_config<\/td><\/tr>\\n <tr><td><code>get_contract(contract_id)<\/code><\/td><td>Lädt Content-Contract aus content_config<\/td><\/tr>\\n <tr><td><code>get_structure(structure_id)<\/code><\/td><td>Lädt Struktur-Template aus content_config<\/td><\/tr>\\n <tr><td><code>get_order(order_id)<\/code><\/td><td>Lädt Order mit allen verknüpften Daten<\/td><\/tr>\\n <tr><td><code>build_generation_prompt(...)<\/code><\/td><td>Baut den Generierungs-Prompt<\/td><\/tr>\\n <tr><td><code>save_version(order_id, content, version_number)<\/code><\/td><td>Speichert Content-Version<\/td><\/tr>\\n <tr><td><code>save_sources(order_id, context)<\/code><\/td><td>Speichert RAG-Quellen<\/td><\/tr>\\n<\/table>\\n\\n<h4>CLI-Verwendung<\/h4>\\n<pre><code># Content generieren\\npython \/var\/www\/scripts\/pipeline\/generate.py generate <order_id> [model]\\n\\n# Kritik-Runde starten\\npython \/var\/www\/scripts\/pipeline\/generate.py critique <version_id> [model]\\n\\n# Revision erstellen\\npython \/var\/www\/scripts\/pipeline\/generate.py revise <version_id> [model]\\n\\n# Beispiel mit Anthropic\\npython \/var\/www\/scripts\/pipeline\/generate.py generate 1 anthropic\\n\\n# Beispiel mit Ollama\\npython \/var\/www\/scripts\/pipeline\/generate.py generate 1 ollama<\/code><\/pre>\\n\\n<h4>Status-Workflow<\/h4>\\n<pre><code>draft → generating → critique → revision\/validate → approve → published\\n ↑ ↓\\n └────────────┘ (max 3 Runden)<\/code><\/pre>\\n\\n<h2>Datenbank-Tabellen (ki_content)<\/h2>\\n<table>\\n <tr><th>Tabelle<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td>content_orders<\/td><td>Aufträge mit Briefing, Status, Verknüpfungen<\/td><\/tr>\\n <tr><td>content_versions<\/td><td>Versionierte Content-Texte (JSON)<\/td><\/tr>\\n <tr><td>content_sources<\/td><td>RAG-Quellen pro Order<\/td><\/tr>\\n <tr><td>content_critiques<\/td><td>Kritiker-Feedback pro Version<\/td><\/tr>\\n <tr><td><strong>content_config<\/strong><\/td><td>Unified Config: Autorenprofile, Contracts, Strukturen (type-Feld)<\/td><\/tr>\\n <tr><td>content_config_history<\/td><td>Config-Änderungshistorie<\/td><\/tr>\\n <tr><td>critics<\/td><td>Kritiker-Definitionen<\/td><\/tr>\\n<\/table>\\n\\n<p><strong>Hinweis:<\/strong> Die früheren separaten Tabellen <code>author_profiles<\/code>, <code>content_contracts<\/code> und <code>content_structures<\/code> wurden in die einheitliche <code>content_config<\/code> Tabelle konsolidiert. Der Typ wird über das <code>type<\/code>-Feld unterschieden.<\/p>\",\n \"status\": \"published\",\n \"sort_order\": 10,\n \"depth\": 1,\n \"created_at\": \"2025-12-20T11:13:58\",\n \"updated_at\": \"2025-12-29T15:01:21\"\n },\n \"message\": \"Document #26 updated\"\n}"
}
]
}