anycoder-30de8a5b / index.html
sky-meilin's picture
Upload folder using huggingface_hub
055c312 verified
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MCP Shorts-Generierungs-Protokoll</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
:root {
--primary-color: #6c5ce7;
--secondary-color: #2d3436;
--accent-color: #fd79a8;
--success-color: #00b894;
--warning-color: #fdcb6e;
--light-bg: #f5f6fa;
--dark-text: #2f3542;
--light-text: #fff;
--border-radius: 12px;
--box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
--transition: all 0.3s ease;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
color: var(--dark-text);
line-height: 1.6;
padding: 0;
margin: 0;
min-height: 100vh;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
header {
background: linear-gradient(135deg, var(--primary-color), #a29bfe);
color: var(--light-text);
padding: 3rem 0;
text-align: center;
border-radius: 0 0 var(--border-radius) var(--border-radius);
box-shadow: var(--box-shadow);
margin-bottom: 3rem;
position: relative;
overflow: hidden;
}
header::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grid" width="10" height="10" patternUnits="userSpaceOnUse"><path d="M 10 0 L 0 0 0 10" fill="none" stroke="rgba(255,255,255,0.1)" stroke-width="0.5"/></pattern></defs><rect width="100" height="100" fill="url(%23grid)"/></svg>');
opacity: 0.3;
}
.anycoder-link {
position: absolute;
top: 1rem;
right: 1rem;
background: rgba(255, 255, 255, 0.2);
padding: 0.5rem 1rem;
border-radius: 20px;
text-decoration: none;
color: var(--light-text);
font-weight: 600;
transition: var(--transition);
backdrop-filter: blur(5px);
}
.anycoder-link:hover {
background: rgba(255, 255, 255, 0.3);
transform: translateY(-2px);
}
header h1 {
font-size: 2.8rem;
margin-bottom: 0.5rem;
font-weight: 700;
position: relative;
z-index: 1;
}
header p {
font-size: 1.2rem;
opacity: 0.95;
position: relative;
z-index: 1;
}
.mcp-diagram {
background: white;
border-radius: var(--border-radius);
padding: 2.5rem;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
margin: 3rem 0;
position: relative;
}
.agent-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-bottom: 2rem;
}
.agent-card {
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
border-radius: var(--border-radius);
padding: 2rem;
box-shadow: var(--box-shadow);
transition: var(--transition);
border-left: 5px solid var(--primary-color);
position: relative;
overflow: hidden;
}
.agent-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 5px;
background: linear-gradient(90deg, var(--primary-color), var(--accent-color));
}
.agent-card:hover {
transform: translateY(-5px);
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
}
.agent-header {
display: flex;
align-items: center;
margin-bottom: 1.5rem;
gap: 1rem;
}
.agent-icon {
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.8rem;
color: white;
flex-shrink: 0;
}
.agent-1 {
background: #6c5ce7;
}
.agent-2 {
background: #fd79a8;
}
.agent-3 {
background: #00b894;
}
.agent-card h2 {
color: var(--secondary-color);
font-size: 1.6rem;
margin-bottom: 0.5rem;
}
.agent-card .subtitle {
color: var(--primary-color);
font-weight: 600;
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 1px;
}
.agent-content {
margin-bottom: 1.5rem;
}
.agent-content h3 {
color: var(--secondary-color);
margin: 1.2rem 0 0.8rem 0;
font-size: 1.1rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.agent-content ul {
list-style-type: none;
padding-left: 0;
}
.agent-content li {
margin-bottom: 0.6rem;
padding-left: 1.5rem;
position: relative;
}
.agent-content li:before {
content: "▸";
color: var(--primary-color);
font-weight: bold;
position: absolute;
left: 0;
}
.flow-arrow {
display: flex;
justify-content: center;
margin: 1.5rem 0;
}
.arrow {
width: 100px;
height: 3px;
background: linear-gradient(90deg, var(--primary-color), var(--accent-color));
position: relative;
}
.arrow::after {
content: '→';
position: absolute;
right: -15px;
top: 50%;
transform: translateY(-50%);
color: var(--accent-color);
font-size: 1.5rem;
font-weight: bold;
}
.process-flow {
background: white;
border-radius: var(--border-radius);
padding: 2rem;
box-shadow: var(--box-shadow);
margin: 2rem 0;
}
.process-step {
margin-bottom: 1.5rem;
padding-left: 2rem;
position: relative;
}
.process-step:before {
content: counter(step);
counter-increment: step;
position: absolute;
left: 0;
top: 0;
width: 30px;
height: 30px;
background: var(--primary-color);
color: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
}
.code-block {
background: #2d3436;
color: #f8f9fa;
border-radius: 8px;
padding: 1.5rem;
margin: 1.5rem 0;
font-family: 'Courier New', monospace;
font-size: 0.9rem;
overflow-x: auto;
position: relative;
}
.code-block::before {
content: 'Python';
position: absolute;
top: 0;
right: 0;
background: #6c5ce7;
color: white;
padding: 0.3rem 1rem;
font-size: 0.7rem;
border-radius: 0 0 0 8px;
}
.highlight {
background: rgba(108, 92, 231, 0.1);
padding: 0.2rem 0.4rem;
border-radius: 3px;
}
.example-input {
background: white;
border: 2px dashed var(--primary-color);
border-radius: var(--border-radius);
padding: 1.5rem;
margin: 1.5rem 0;
text-align: center;
font-style: italic;
color: var(--secondary-color);
}
.tools-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
margin: 1rem 0;
}
.tool-card {
background: #f8f9fa;
border-radius: 8px;
padding: 1rem;
text-align: center;
border-left: 4px solid var(--accent-color);
}
.tool-card i {
font-size: 1.5rem;
color: var(--primary-color);
margin-bottom: 0.5rem;
}
.final-output {
background: linear-gradient(135deg, #6c5ce7, #a29bfe);
color: white;
padding: 2rem;
border-radius: var(--border-radius);
text-align: center;
margin: 2rem 0;
position: relative;
overflow: hidden;
}
.final-output::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 70%);
animation: pulse 3s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% {
transform: scale(1);
opacity: 0.5;
}
50% {
transform: scale(1.1);
opacity: 0.8;
}
}
.final-output i {
font-size: 3rem;
margin-bottom: 1rem;
}
.final-output h3 {
font-size: 1.5rem;
margin-bottom: 0.5rem;
}
.final-output p {
opacity: 0.9;
}
/* Database Model Section */
.database-section {
background: white;
border-radius: var(--border-radius);
padding: 2rem;
box-shadow: var(--box-shadow);
margin: 2rem 0;
}
.database-header {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 2rem;
padding-bottom: 1rem;
border-bottom: 2px solid #e9ecef;
}
.database-icon {
width: 60px;
height: 60px;
border-radius: 50%;
background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 1.8rem;
}
.database-title {
font-size: 1.8rem;
color: var(--secondary-color);
}
.database-subtitle {
color: var(--primary-color);
font-weight: 600;
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 1px;
}
.xml-container {
background: #2d3436;
color: #f8f9fa;
border-radius: 8px;
padding: 2rem;
font-family: 'Courier New', monospace;
font-size: 0.9rem;
overflow-x: auto;
position: relative;
margin: 1rem 0;
}
.xml-container::before {
content: 'XML';
position: absolute;
top: 0;
right: 0;
background: #00b894;
color: white;
padding: 0.3rem 1rem;
font-size: 0.7rem;
border-radius: 0 0 0 8px;
}
.xml-tag {
color: #fd79a8;
}
.xml-attribute {
color: #6c5ce7;
}
.xml-value {
color: #f8f9fa;
}
.xml-comment {
color: #7f8c8d;
font-style: italic;
}
.database-table {
width: 100%;
border-collapse: collapse;
margin: 1.5rem 0;
}
.database-table th {
background: var(--primary-color);
color: white;
padding: 1rem;
text-align: left;
font-weight: 600;
}
.database-table td {
padding: 1rem;
border-bottom: 1px solid #e9ecef;
}
.database-table tr:hover {
background: rgba(108, 92, 231, 0.05);
}
.agent-badge {
display: inline-block;
padding: 0.3rem 0.8rem;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
}
.agent-badge.agent-1 {
background: rgba(108, 92, 231, 0.1);
color: #6c5ce7;
}
.agent-badge.agent-2 {
background: rgba(253, 121, 168, 0.1);
color: #fd79a8;
}
.agent-badge.agent-3 {
background: rgba(0, 184, 148, 0.1);
color: #00b894;
}
.agent-badge.all {
background: rgba(243, 156, 18, 0.1);
color: #f39c12;
}
@media (max-width: 768px) {
header h1 {
font-size: 2rem;
}
.agent-row {
grid-template-columns: 1fr;
}
.flow-arrow {
transform: rotate(90deg);
}
.arrow {
width: 3px;
height: 100px;
}
.arrow::after {
top: 100%;
right: 50%;
transform: translateX(50%);
}
.database-table {
font-size: 0.9rem;
}
.database-table th,
.database-table td {
padding: 0.7rem;
}
}
</style>
</head>
<body>
<header>
<a href="https://huggingface.co/spaces/akhaliq/anycoder" class="anycoder-link">Built with anycoder</a>
<h1>🎬 MCP Shorts-Generierungs-Protokoll</h1>
<p>Logisches Grundgerüst für die automatisierte Erstellung von Kurzvideos</p>
</header>
<div class="container">
<div class="mcp-diagram">
<h2 style="text-align: center; margin-bottom: 2rem; color: var(--primary-color);">
Drei-Agenten-Architektur für die Shorts-Generierung
</h2>
<!-- Agent 1: Lese-Agent -->
<div class="agent-row">
<div class="agent-card">
<div class="agent-header">
<div class="agent-icon agent-1">
<i class="fas fa-eye"></i>
</div>
<div>
<h2>👁️ Lese-Agent</h2>
<div class="subtitle">Der Interpreter</div>
</div>
</div>
<div class="agent-content">
<p><strong>Zweck:</strong> Nimmt die Nutzereingabe entgegen und interpretiert die Anforderungen.</p>
<h3>Aufgaben:</h3>
<ul>
<li>Empfängt die Nutzeranfrage (z.B. "Bachata Reel im Pretty Babe Look")</li>
<li>Identifiziert Kernanforderungen:
<ul style="margin-top: 0.5rem;">
<li>Tanzstil (Bachata)</li>
<li>Visueller Stil (Pretty Babe Look)</li>
<li>Text-Overlay Anforderungen</li>
<li>Emotionale Ausrichtung (Vibe)</li>
</ul>
</li>
<li>Wandelt den Wunsch in eine klare interne Anweisung um</li>
<li>Validiert die Eingabe auf Machbarkeit</li>
</ul>
<div class="example-input">
<i class="fas fa-quote-left"></i>
Nutzer-Eingabe: "Bachata Reel im Pretty Babe Look mit romantischem Text-Overlay"
<i class="fas fa-quote-right"></i>
</div>
</div>
</div>
</div>
<!-- Flow Arrow -->
<div class="flow-arrow">
<div class="arrow"></div>
</div>
<!-- Agent 2: Denk-Agent -->
<div class="agent-row">
<div class="agent-card">
<div class="agent-header">
<div class="agent-icon agent-2">
<i class="fas fa-brain"></i>
</div>
<div>
<h2>🧠 Denk-Agent</h2>
<div class="subtitle">Der Planer/Skript-Ersteller</div>
</div>
</div>
<div class="agent-content">
<p><strong>Zweck:</strong> Übersetzt die Absicht in ein detailliertes, ausführbares Skript.</p>
<h3>Aufgaben:</h3>
<ul>
<li>Ruft den Script-Generator (LLM-Tool) auf</li>
<li>Generiert detaillierte Anweisungen:
<ul style="margin-top: 0.5rem;">
<li>Genauen Text-Overlay mit Timing</li>
<li>Kamera-Anweisungen (z.B. Eye-Level, Close-Up)</li>
<li>Choreografie-Anweisungen (z.B. "sanfte Hüftbewegung bei 0:45")</li>
<li>Stilvorgaben (Farben, Filter, Übergänge)</li>
</ul>
</li>
<li>Erstellt ein strukturiertes Produktionsskript</li>
<li>Optimiert die Abfolge für maximale Wirkung</li>
</ul>
<div class="code-block">
<span class="highlight">script_generator</span>.generate(<br>
&nbsp;&nbsp;dance_style=<span class="highlight">"bachata"</span>,<br>
&nbsp;&nbsp;visual_style=<span class="highlight">"pretty_babe"</span>,<br>
&nbsp;&nbsp;text_overlay=<span class="highlight">"Romantische Zitate"</span>,<br>
&nbsp;&nbsp;camera_angles=<span class="highlight">["eye_level", "close_up"]</span><br>
)
</div>
</div>
</div>
</div>
<!-- Flow Arrow -->
<div class="flow-arrow">
<div class="arrow"></div>
</div>
<!-- Agent 3: Schreib-Agent -->
<div class="agent-row">
<div class="agent-card">
<div class="agent-header">
<div class="agent-icon agent-3">
<i class="fas fa-pen-nib"></i>
</div>
<div>
<h2>✍️ Schreib-Agent</h2>
<div class="subtitle">Der Ausführer/Renderer</div>
</div>
</div>
<div class="agent-content">
<p><strong>Zweck:</strong> Führt die eigentliche Arbeit durch und generiert das Endprodukt.</p>
<h3>Aufgaben:</h3>
<ul>
<li>Ruft sequenziell Spezial-Tools auf:</li>
</ul>
<div class="tools-grid">
<div class="tool-card">
<i class="fas fa-user"></i>
<h4>Pose-Wandler</h4>
<p>Erstellt Posen-Daten aus dem Skript mit präzisen Bewegungsabläufen</p>
</div>
<div class="tool-card">
<i class="fas fa-video"></i>
<h4>Video-Renderer</h4>
<p>Rendert das Video basierend auf Posen, Stil und Kameraanweisungen</p>
</div>
<div class="tool-card">
<i class="fas fa-music"></i>
<h4>Audio-Matcher</h4>
<p>Fügt passenden Soundtrack hinzu und synchronisiert mit Bewegungen</p>
</div>
</div>
<h3>Output:</h3>
<ul>
<li>Liefert die fertige Video-Datei (MP4)</li>
<li>Gibt das Ergebnis an das Gradio-Interface zurück</li>
<li>Protokolliert den Generierungsprozess</li>
</ul>
</div>
</div>
</div>
</div>
<!-- Database Model Section -->
<div class="database-section">
<div class="database-header">
<div class="database-icon">
<i class="fas fa-database"></i>
</div>
<div>
<div class="database-title">Datenbank-Modell: Shorts-Generator (MCP)</div>
<div class="database-subtitle">XML-Format</div>
</div>
</div>
<div class="xml-container">
<pre><code><span class="xml-tag">&lt;datenbank_tabelle</span> <span class="xml-attribute">name=</span><span class="xml-value">"shorts_generierung_protokoll"</span><span class="xml-tag">&gt;</span>
<span class="xml-tag">&lt;spalten_definition&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Generierung_ID</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">PRIMARY KEY (UUID/INT)</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Eindeutiger Schlüssel für jede Generierungsanfrage.</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Alle Agenten</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Nutzer_Prompt</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">TEXT</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Die ursprüngliche Textanfrage des Nutzers.</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Lese-Agent</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Interpretierte_Vibes</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">LIST/ARRAY (Tags)</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Herausgefilterte Kernanforderungen (z.B. BACHATA, ROMANTIC, SLOW-MOTION).</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Lese-Agent</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Skript_Text</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">TEXT</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Das detaillierte, vom LLM generierte Storyboard und der Text-Overlay.</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Denk-Agent</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Bewegungs_Daten</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">JSON/BLOB</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Strukturierte Posen-Keypoints oder Bewegungsvektoren.</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Schreib-Agent</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Audio_Track_Name</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">VARCHAR (255)</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Name und Künstler des ausgewählten Hintergrund-Songs.</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Schreib-Agent</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Video_File_Path</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">VARCHAR (500)</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Der Pfad zur fertig gerenderten Videodatei.</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Schreib-Agent</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Generierungs_Status</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">ENUM</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Aktueller Zustand (PLANNING, RENDERING, COMPLETED, FAILED).</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Alle Agenten</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;spalte&gt;</span>
<span class="xml-tag">&lt;name&gt;</span><span class="xml-value">Erstellungs_Zeitpunkt</span><span class="xml-tag">&lt;/name&gt;</span>
<span class="xml-tag">&lt;daten_typ&gt;</span><span class="xml-value">DATETIME</span><span class="xml-tag">&lt;/daten_typ&gt;</span>
<span class="xml-tag">&lt;beschreibung&gt;</span><span class="xml-value">Zeitpunkt, zu dem die Anfrage gestartet wurde.</span><span class="xml-tag">&lt;/beschreibung&gt;</span>
<span class="xml-tag">&lt;agenten_rolle&gt;</span><span class="xml-value">Alle Agenten</span><span class="xml-tag">&lt;/agenten_rolle&gt;</span>
<span class="xml-tag">&lt;/spalte&gt;</span>
<span class="xml-tag">&lt;/spalten_definition&gt;</span>
<span class="xml-tag">&lt;/datenbank_tabelle&gt;</span></code></pre>
</div>
<h3 style="margin: 2rem 0 1rem 0; color: var(--primary-color);">Tabellarische Übersicht</h3>
<table class="database-table">
<thead>
<tr>
<th>Spaltenname</th>
<th>Datentyp</th>
<th>Beschreibung</th>
<th>Agenten-Rolle</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Generierung_ID</strong></td>
<td>PRIMARY KEY (UUID/INT)</td>
<td>Eindeutiger Schlüssel für jede Generierungsanfrage</td>
<td><span class="agent-badge all">Alle Agenten</span></td>
</tr>
<tr>
<td><strong>Nutzer_Prompt</strong></td>
<td>TEXT</td>
<td>Die ursprüngliche Textanfrage des Nutzers</td>
<td><span class="agent-badge agent-1">Lese-Agent</span></td>
</tr>
<tr>
<td><strong>Interpretierte_Vibes</strong></td>
<td>LIST/ARRAY (Tags)</td>
<td>Herausgefilterte Kernanforderungen (z.B. BACHATA, ROMANTIC, SLOW-MOTION)</td>
<td><span class="agent-badge agent-1">Lese-Agent</span></td>
</tr>
<tr>
<td><strong>Skript_Text</strong></td>
<td>TEXT</td>
<td>Das detaillierte, vom LLM generierte Storyboard und der Text-Overlay</td>
<td><span class="agent-badge agent-2">Denk-Agent</span></td>
</tr>
<tr>
<td><strong>Bewegungs_Daten</strong></td>
<td>JSON/BLOB</td>
<td>Strukturierte Posen-Keypoints oder Bewegungsvektoren</td>
<td><span class="agent-badge agent-3">Schreib-Agent</span></td>
</tr>
<tr>
<td><strong>Audio_Track_Name</strong></td>
<td>VARCHAR (255)</td>
<td>Name und Künstler des ausgewählten Hintergrund-Songs</td>
<td><span class="agent-badge agent-3">Schreib-Agent</span></td>
</tr>
<tr>
<td><strong>Video_File_Path</strong></td>
<td>VARCHAR (500)</td>
<td>Der Pfad zur fertig gerenderten Videodatei</td>
<td><span class="agent-badge agent-3">Schreib-Agent</span></td>
</tr>
<tr>
<td><strong>Generierungs_Status</strong></td>
<td>ENUM</td>
<td>Aktueller Zustand (PLANNING, RENDERING, COMPLETED, FAILED)</td>
<td><span class="agent-badge all">Alle Agenten</span></td>
</tr>
<tr>
<td><strong>Erstellungs_Zeitpunkt</strong></td>
<td>DATETIME</td>
<td>Zeitpunkt, zu dem die Anfrage gestartet wurde</td>
<td><span class="agent-badge all">Alle Agenten</span></td>
</tr>
</tbody>
</table>
<div class="agent-content" style="margin-top: 2rem;">
<h3>Datenfluss zwischen Agenten und Datenbank:</h3>
<ul>
<li><span class="agent-badge agent-1">Lese-Agent</span> schreibt <strong>Nutzer_Prompt</strong> und <strong>Interpretierte_Vibes</strong> in die Datenbank</li>
<li><span class="agent-badge agent-2">Denk-Agent</span> liest die interpretierten Daten und schreibt das <strong>Skript_Text</strong></li>
<li><span class="agent-badge agent-3">Schreib-Agent</span> liest das Skript und schreibt <strong>Bewegungs_Daten</strong>, <strong>Audio_Track_Name</strong> und <strong>Video_File_Path</strong></li>
<li>Alle Agenten aktualisieren den <strong>Generierungs_Status</strong> während des Prozesses</li>
<li>Die <strong>Generierung_ID</strong> wird als Verknüpfung zwischen allen Tabellen verwendet</li>
</ul>
</div>
</div>
<div class="process-flow">
<h2 style="margin-bottom: 1.5rem; color: var(--primary-color);">Gesamtprozess-Ablauf</h2>
<div style="counter-reset: step;">
<div class="process-step">
<h3>Nutzereingabe</h3>
<p>Der Nutzer gibt seine Wunschvorstellung für das Short ein (z.B. Tanzstil, Look, Stimmung).</p>
</div>
<div class="process-step">
<h3>Interpretation</h3>
<p>Der Lese-Agent analysiert die Eingabe und extrahiert die wesentlichen Anforderungen.</p>
</div>
<div class="process-step">
<h3>Skriptgenerierung</h3>
<p>Der Denk-Agent erstellt ein detailliertes Produktionsskript mit allen notwendigen Anweisungen.</p>
</div>
<div class="process-step">
<h3>Pose-Generierung</h3>
<p>Der Pose-Wandler generiert die Bewegungsdaten basierend auf dem Skript.</p>
</div>
<div class="process-step">
<h3>Video-Rendering</h3>
<p>Der Video-Renderer erstellt das visuelle Material mit korrekten Kameraeinstellungen.</p>
</div>
<div class="process-step">
<h3>Audio-Integration</h3>
<p>Der Audio-Matcher fügt passende Musik hinzu und synchronisiert sie mit den Bewegungen.</p>
</div>
<div class="process-step">
<h3>Ausgabe</h3>
<p>Das fertige Short wird an den Nutzer zurückgegeben und kann direkt verwendet werden.</p>
</div>
</div>
</div>
<div class="final-output">
<i class="fas fa-check-circle"></i>
<h3>Fertiges Short!</h3>
<p>Das MCP-Protokoll hat erfolgreich ein maßgeschneidertes Kurzvideo generiert, das alle Nutzeranforderungen
erfüllt.</p>
<p style="margin-top: 1rem; font-size: 0.9rem; opacity: 0.8;">
Bereit für den Upload auf TikTok, Instagram Reels oder YouTube Shorts!
</p>
</div>
</div>
<script>
// Add some interactive elements
document.addEventListener('DOMContentLoaded', function() {
const agentCards = document.querySelectorAll('.agent-card');
const databaseRows = document.querySelectorAll('.database-table tbody tr');
agentCards.forEach(card => {
card.addEventListener('click', function() {
this.style.transform = 'scale(1.02)';
setTimeout(() => {
this.style.transform = '';
}, 300);
});
});
databaseRows.forEach(row => {
row.addEventListener('mouseenter', function() {
this.style.background = 'rgba(108, 92, 231, 0.08)';
});
row.addEventListener('mouseleave', function() {
this.style.background = '';
});
});
});
</script>
</body>
</html>