- fuenfvoracht/STATE.md: Review-Flow entfernt, direkt approved, neuer Changelog - arakava-news/STATE.md: Aktualisiert - redax-wp/STATE.md + src/app.py: Aktualisiert - flugpreisscanner/STATE.md: Aktualisiert - infrastructure/STATE.md: Aktualisiert - fuenfvoracht READMEs und Kurzuebersichten hinzugefuegt Made-with: Cursor
408 lines
11 KiB
HTML
408 lines
11 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>Redax-WP — Kurzübersicht</title>
|
||
<style>
|
||
@page { size: A4 landscape; margin: 14mm 16mm 14mm 16mm; }
|
||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||
body {
|
||
font-family: 'Segoe UI', Arial, sans-serif;
|
||
font-size: 9.5pt;
|
||
color: #1e293b;
|
||
background: #fff;
|
||
width: 297mm;
|
||
min-height: 210mm;
|
||
padding: 14mm 16mm;
|
||
}
|
||
|
||
/* Header */
|
||
.header {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
border-bottom: 3px solid #2563eb;
|
||
padding-bottom: 9px;
|
||
margin-bottom: 12px;
|
||
}
|
||
.header-left { display: flex; align-items: center; gap: 14px; }
|
||
.logo-icon {
|
||
font-size: 28pt;
|
||
line-height: 1;
|
||
}
|
||
.header-left h1 {
|
||
font-size: 20pt;
|
||
font-weight: 800;
|
||
color: #2563eb;
|
||
letter-spacing: -0.5px;
|
||
line-height: 1;
|
||
}
|
||
.header-left .subtitle {
|
||
font-size: 9pt;
|
||
color: #64748b;
|
||
margin-top: 3px;
|
||
}
|
||
.header-right {
|
||
text-align: right;
|
||
font-size: 8pt;
|
||
color: #94a3b8;
|
||
line-height: 1.6;
|
||
}
|
||
.badge {
|
||
display: inline-block;
|
||
background: #2563eb;
|
||
color: white;
|
||
font-size: 7.5pt;
|
||
font-weight: 700;
|
||
padding: 2px 8px;
|
||
border-radius: 20px;
|
||
margin-bottom: 3px;
|
||
}
|
||
|
||
/* Intro-Banner */
|
||
.intro {
|
||
background: linear-gradient(135deg, #eff6ff, #f0fdf4);
|
||
border: 1px solid #bfdbfe;
|
||
border-left: 4px solid #2563eb;
|
||
padding: 7px 12px;
|
||
border-radius: 0 6px 6px 0;
|
||
margin-bottom: 12px;
|
||
font-size: 9.5pt;
|
||
color: #334155;
|
||
line-height: 1.5;
|
||
}
|
||
|
||
/* Drei-Spalten-Layout */
|
||
.three-col {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr 1fr;
|
||
gap: 10px;
|
||
margin-bottom: 10px;
|
||
}
|
||
|
||
/* Zwei-Spalten-Layout */
|
||
.two-col {
|
||
display: grid;
|
||
grid-template-columns: 1.1fr 0.9fr;
|
||
gap: 10px;
|
||
margin-bottom: 10px;
|
||
}
|
||
|
||
/* Boxen */
|
||
.box {
|
||
border: 1px solid #e2e8f0;
|
||
border-radius: 8px;
|
||
padding: 9px 11px;
|
||
}
|
||
.box.blue { border-top: 3px solid #2563eb; }
|
||
.box.green { border-top: 3px solid #16a34a; }
|
||
.box.purple{ border-top: 3px solid #7c3aed; }
|
||
.box.orange{ border-top: 3px solid #ea580c; }
|
||
.box.teal { border-top: 3px solid #0891b2; }
|
||
.box.rose { border-top: 3px solid #e11d48; }
|
||
|
||
.box h3 {
|
||
font-size: 9pt;
|
||
font-weight: 700;
|
||
color: #1e293b;
|
||
margin-bottom: 6px;
|
||
padding-bottom: 5px;
|
||
border-bottom: 1px solid #f1f5f9;
|
||
}
|
||
.box ul {
|
||
list-style: none;
|
||
padding: 0;
|
||
}
|
||
.box ul li {
|
||
font-size: 8.5pt;
|
||
color: #374151;
|
||
padding: 1.5px 0 1.5px 12px;
|
||
position: relative;
|
||
line-height: 1.4;
|
||
}
|
||
.box ul li::before {
|
||
content: "›";
|
||
position: absolute;
|
||
left: 0;
|
||
color: #2563eb;
|
||
font-weight: bold;
|
||
}
|
||
|
||
/* Workflow horizontal */
|
||
.workflow {
|
||
border: 1px solid #e2e8f0;
|
||
border-radius: 8px;
|
||
padding: 9px 12px;
|
||
margin-bottom: 10px;
|
||
}
|
||
.workflow h3 {
|
||
font-size: 9pt;
|
||
font-weight: 700;
|
||
color: #1e293b;
|
||
margin-bottom: 7px;
|
||
}
|
||
.workflow-steps {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
.step { text-align: center; flex: 1; }
|
||
.step-icon { font-size: 13pt; display: block; margin-bottom: 2px; }
|
||
.step-label {
|
||
font-size: 7pt;
|
||
color: #475569;
|
||
line-height: 1.3;
|
||
font-weight: 600;
|
||
}
|
||
.step-sub {
|
||
font-size: 6.5pt;
|
||
color: #94a3b8;
|
||
line-height: 1.3;
|
||
}
|
||
.arrow { color: #cbd5e1; font-size: 13pt; flex-shrink: 0; padding: 0 3px; }
|
||
|
||
/* Routing-Tabelle */
|
||
.routing {
|
||
border: 1px solid #e2e8f0;
|
||
border-radius: 8px;
|
||
padding: 9px 11px;
|
||
}
|
||
.routing h3 {
|
||
font-size: 9pt;
|
||
font-weight: 700;
|
||
color: #1e293b;
|
||
margin-bottom: 7px;
|
||
}
|
||
.route-row {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
padding: 4px 0;
|
||
border-bottom: 1px solid #f8fafc;
|
||
font-size: 8.5pt;
|
||
}
|
||
.route-row:last-child { border-bottom: none; }
|
||
.route-tag {
|
||
font-size: 7.5pt;
|
||
font-weight: 700;
|
||
padding: 1px 7px;
|
||
border-radius: 20px;
|
||
white-space: nowrap;
|
||
}
|
||
.tag-ki { background: #dbeafe; color: #1d4ed8; }
|
||
.tag-rss { background: #dcfce7; color: #166534; }
|
||
.route-arrow { color: #94a3b8; font-weight: bold; }
|
||
.route-dest { color: #374151; }
|
||
|
||
/* Zugangsdaten */
|
||
.access-grid {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 5px;
|
||
margin-top: 4px;
|
||
}
|
||
.access-item {
|
||
background: #f8fafc;
|
||
border: 1px solid #e2e8f0;
|
||
border-radius: 5px;
|
||
padding: 4px 8px;
|
||
}
|
||
.access-item .label {
|
||
font-size: 7pt;
|
||
color: #94a3b8;
|
||
font-weight: 700;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.3px;
|
||
}
|
||
.access-item .value {
|
||
font-size: 8.5pt;
|
||
color: #1e293b;
|
||
font-weight: 600;
|
||
font-family: 'Courier New', monospace;
|
||
}
|
||
|
||
/* Footer */
|
||
.footer {
|
||
border-top: 1px solid #e2e8f0;
|
||
padding-top: 7px;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
.footer span { font-size: 7.5pt; color: #94a3b8; }
|
||
|
||
@media print {
|
||
body { padding: 0; }
|
||
* { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<!-- Header -->
|
||
<div class="header">
|
||
<div class="header-left">
|
||
<div class="logo-icon">📝</div>
|
||
<div>
|
||
<div class="badge">WordPress · KI · RSS</div>
|
||
<h1>Redax-WP</h1>
|
||
<div class="subtitle">KI-gestütztes Redaktionssystem für WordPress — selbst gehostet</div>
|
||
</div>
|
||
</div>
|
||
<div class="header-right">
|
||
Stand: Februar 2026<br>
|
||
CT 113 · pve-hetzner<br>
|
||
<strong>redax.orbitalo.net</strong><br>
|
||
deutschlandblog.orbitalo.net
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Intro -->
|
||
<div class="intro">
|
||
Redax-WP verbindet ein KI-Dashboard direkt mit WordPress. Artikel werden generiert, SEO-optimiert und mit einem Klick veröffentlicht. Parallel importiert ein RSS-Manager Fremdinhalte automatisch — ohne dass der Redakteur eingreifen muss.
|
||
</div>
|
||
|
||
<!-- Workflow -->
|
||
<div class="workflow">
|
||
<h3>⚡ Workflow</h3>
|
||
<div class="workflow-steps">
|
||
<div class="step"><span class="step-icon">🔗</span><span class="step-label">Quelle / Thema</span><span class="step-sub">URL oder Freitext</span></div>
|
||
<div class="arrow">›</div>
|
||
<div class="step"><span class="step-icon">🤖</span><span class="step-label">KI generiert</span><span class="step-sub">OpenRouter API</span></div>
|
||
<div class="arrow">›</div>
|
||
<div class="step"><span class="step-icon">✏️</span><span class="step-label">Redigieren</span><span class="step-sub">Markdown + WP-Preview</span></div>
|
||
<div class="arrow">›</div>
|
||
<div class="step"><span class="step-icon">🔍</span><span class="step-label">SEO befüllen</span><span class="step-sub">Titel, Meta, Keyword</span></div>
|
||
<div class="arrow">›</div>
|
||
<div class="step"><span class="step-icon">🖼️</span><span class="step-label">Bild & Kategorie</span><span class="step-sub">Featured Image</span></div>
|
||
<div class="arrow">›</div>
|
||
<div class="step"><span class="step-icon">📅</span><span class="step-label">Einplanen</span><span class="step-sub">Datum & Uhrzeit</span></div>
|
||
<div class="arrow">›</div>
|
||
<div class="step"><span class="step-icon">🚀</span><span class="step-label">Veröffentlichen</span><span class="step-sub">WordPress + Telegram</span></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Feature-Boxen (3 Spalten) -->
|
||
<div class="three-col">
|
||
|
||
<div class="box blue">
|
||
<h3>✍️ KI-Redaktion</h3>
|
||
<ul>
|
||
<li>Artikel generieren via OpenRouter</li>
|
||
<li>GPT-4o, Claude, Mistral wählbar</li>
|
||
<li>Mehrere Schreibstile & Töne</li>
|
||
<li>Markdown-Editor mit WP-Vorschau</li>
|
||
<li>Prompt-Bibliothek verwaltbar</li>
|
||
<li>Versionierung bei Neu-Generierung</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="box green">
|
||
<h3>📰 RSS Feed-Import</h3>
|
||
<ul>
|
||
<li>Beliebig viele Feeds verwaltbar</li>
|
||
<li>Automatischer Import (stündlich)</li>
|
||
<li>Duplikat-Schutz via GUID</li>
|
||
<li>Blacklist-Filter für Themen</li>
|
||
<li>Featured Image via og:image</li>
|
||
<li>Optional: KI-Umschreiben vor Publish</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="box purple">
|
||
<h3>🔍 WordPress & SEO</h3>
|
||
<ul>
|
||
<li>WordPress REST API Integration</li>
|
||
<li>Yoast SEO: Titel, Meta, Keyword</li>
|
||
<li>Kategorien & Tags direkt wählbar</li>
|
||
<li>Featured Image Upload automatisch</li>
|
||
<li>Permalink-Struktur /%postname%/</li>
|
||
<li>Entwurf, Geplant oder Sofort-Publish</li>
|
||
</ul>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Zweite Reihe: Routing + Planung + Zugang -->
|
||
<div class="two-col">
|
||
|
||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
|
||
|
||
<div class="box orange">
|
||
<h3>📲 Telegram & Alerts</h3>
|
||
<ul>
|
||
<li>KI-Artikel als Teaser posten</li>
|
||
<li>Morgen-Briefing 10:00 Uhr</li>
|
||
<li>Fehler-Alarm bei Posting-Fehlern</li>
|
||
<li>Mehrere Reviewer unterstützt</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="box teal">
|
||
<h3>🗓️ Planung & History</h3>
|
||
<ul>
|
||
<li>7-Tage-Redaktionskalender</li>
|
||
<li>Umplanen & Löschen im Board</li>
|
||
<li>Veröffentlichungs-History</li>
|
||
<li>Strukturiertes JSON-Logging</li>
|
||
</ul>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="routing">
|
||
<h3>🔀 Inhalts-Routing</h3>
|
||
<div class="route-row">
|
||
<span class="route-tag tag-ki">KI-Artikel</span>
|
||
<span class="route-arrow">→</span>
|
||
<span class="route-dest">WordPress veröffentlichen</span>
|
||
</div>
|
||
<div class="route-row">
|
||
<span class="route-tag tag-ki">KI-Artikel</span>
|
||
<span class="route-arrow">→</span>
|
||
<span class="route-dest">Telegram Kanal (Teaser)</span>
|
||
</div>
|
||
<div class="route-row">
|
||
<span class="route-tag tag-rss">RSS-Artikel</span>
|
||
<span class="route-arrow">→</span>
|
||
<span class="route-dest">Nur WordPress</span>
|
||
</div>
|
||
<div class="route-row">
|
||
<span class="route-tag tag-rss">RSS-Artikel</span>
|
||
<span class="route-arrow">✗</span>
|
||
<span class="route-dest" style="color:#94a3b8;">Kein Telegram-Post</span>
|
||
</div>
|
||
<div style="margin-top: 8px;">
|
||
<div class="label" style="font-size:7.5pt;color:#94a3b8;font-weight:700;text-transform:uppercase;letter-spacing:0.3px;margin-bottom:4px;">Zugang</div>
|
||
<div class="access-grid">
|
||
<div class="access-item">
|
||
<div class="label">Dashboard</div>
|
||
<div class="value">redax.orbitalo.net</div>
|
||
</div>
|
||
<div class="access-item">
|
||
<div class="label">Blog</div>
|
||
<div class="value">deutschlandblog.orbitalo.net</div>
|
||
</div>
|
||
<div class="access-item">
|
||
<div class="label">WP-Admin Login</div>
|
||
<div class="value">admin / Redax2026!</div>
|
||
</div>
|
||
<div class="access-item">
|
||
<div class="label">Stack</div>
|
||
<div class="value">Flask · WordPress · MySQL · Docker</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Footer -->
|
||
<div class="footer">
|
||
<span>Redax-WP · Orbitalo Homelab · Stand Februar 2026 · CT 113 pve-hetzner</span>
|
||
<span>github.com/Orbitalo/Redax-Wordpress</span>
|
||
<span>Drucken: Querformat · DIN A4 · Ränder: Minimal</span>
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|