BLENDION REKA
AI COMMAND CENTER
JARVIS MEDICAL HYDRA TRADING TIKTOK ENGINE
BLENDION
Connected · Uptime: — · Model: —
Dashboard
--:--:--
89.167.37.0
RX 9070
💰 —
⚙ System-Check
🔍 Ctrl+K
🔔

Brain Vault

Jarvis's Autonomes Gedächtnis (Dokumente, Blutbilder, Finanzen)

Vault wird geladen...
HYDRA TRADING ALPHA —
—
DEMO MODE ACTIVE
24h P&L
—
Active Positions
—
Trades & Proposals
— / —
TikTok Engine
—
Pending Content Queue
Neural Core
—
Active Agent Instances
Server Load / Performance
—
1m avg / 4 Cores
CPU
RAM
Widgets
⚙️ System Health
—
CPU —
RAM —
Disk —
GPU VRAM —
🐳 Docker (running)
0
Laden...
📈 Trading Signale
Live
Keine Signale
📱 TikTok Content
—
Laden...
🧠 Agenten
—
Laden...
🗂️ Personal OS
—
Laden...
🦙 Ollama Modelle
—
Laden...
⚙️ n8n Workflows
—
Aktive Workflows
v4.0.1 Premium
Quick Actions
🤖 Agent-Management — LLM pro Agent
Laden...
Lokal = Ollama/LiteLLM · Claude/GPT = Cloud · Schweres Routing nutzt PC-Tunnel (LM Studio :1234)
🤖 Agenten Gesamt
—
▶ Aktiv
—
⏸ Gestoppt
—
⚠ Fehler
—
🤖 Autonome Agenten — Live Steuerung
Laden...
📋 Agent Logs — (Agent wählen)
Klicke bei einem Agenten auf „Logs" um die letzten Aktivitäten zu sehen.
🤖
PERSONAL ASSISTANT
AI Chat · Peptide Tracker · Tagesplanung · Internet Search
🧪 Jarvis Health
Laden...
🧠 LLM Engine
Laden...
💬 AI Chat
Chat starten...
⚡ Skills & Schnellzugriff
Laden...
📰 Daily Brief
🪙 KRYPTO
—
🌤 WETTER
—
💶 PORTFOLIO
—
💉 Peptide & Fitness Tracker
Fitness Stats
Letztes Training
Kalorien heute
Wasser (L)
📅 Tagesplan
Keine Aufgaben
🌐 Live Internet Suche
Suchergebnisse erscheinen hier...
Letzte Suchen:
📈
HYDRA v2 TRADING COCKPIT
Algo Trading · Capital.com DEMO · Live Positionen
DEMO
—
Equity
—
Daily P&L
—
Total P&L
—
Win Rate
—
Positionen
—
Trades Heute
✕ ALLE
Positionen schliessen
LLM Engine — welches Modell?
Laden...
📊 PnL Verlauf
Lade Chart...
Markt-Übersicht
📈 Offene Positionen — Live P&L
⌛ Lade Positionen...
⚡ Schnell-Trade — Direkt ausführen
Sofortiger Trade auf Capital.com DEMO
Markt
Größe
Stop Loss
Take Profit
Auto-Stop %
Strategy-Vorschläge
Keine offenen Vorschläge — nächste Analyse 09:00 / 15:00
Risiko-Management
Drawdown: 0%
0%DrawdownMax
Daily Loss Limit %
Max Position Size
Risk per Trade %
Max Drawdown %
Trade History (letzte 10)
ID Instrument Dir Entry Exit P&L Zeit
Lade...
Live Log
(kein Log)
🤖 Trading Agent Chat
🎯 Aktive Algo-Strategien
Laden...
Neue Strategie aktivieren:
Gesendete Aufgaben
Equity Curve (Detail)

TikTok Hub · @viralvibefinance

Finanz-Shorts · Freigabe · PRO-Render · Upload · Live-API

Profil ↗ Studio ↗
—
Warteschlange
—
Freigegeben
—
Verifiziert
—
Abgelehnt
—
Heute
—
MP4 bereit

Session & Upload

Letzter Fehler

Queue (Auszug)

Freigabe · Render · Vorschau

Zeile wählen → Vorschau rechts lädt erst bei Auswahl (spart Bandbreite).

Vorschau = dieselbe MP4 wie beim Post: nach Freigabe _pro.mp4 falls vorhanden, sonst .mp4. Abgelehnte/alte Items sind nur Archiv-Vorschau.

Queue-Zeile wählen für 9:16-Vorschau vor Freigabe.

Aus: Du klickst „Posten“ — dieselbe Datei wie in der Vorschau. An: Upload startet automatisch sobald PRO-MP4 bereit ist (Account muss Session haben).

Veröffentlicht

—
Posts heute
—
Gepostet (Queue)
—
Ablehnungsrate
—
Top-Nische
—
Ø Score (pending)

Posts nach Wochentag

Accounts (API)

Account hinzufügen

Fehler-Log (Queue)

📱 Telegram Command Center
—
Lade…
Tree-of-Thought Planner
ToT Status…
⚡
DEVOPS CONTROL
Server Health · Service Control · Quick Shell · Deployment
—
FEHLER HEUTE
—
CPU %
—
RAM %
—
DISK %
—
LETZTER CHECK
LLM Engine
Laden...
Server Health Monitor
0%
CPU
0%
RAM
0%
Disk
Load Average:
—
(1m)
—
(5m)
—
(15m)
Service Control Panel
Laden...
Quick Shell
$ _
🔵 System Health Report
Lade...
Deployment
Letzte Git Commits:
Laden...
Fix-Vorschlaege
Laden...
Problem beschreiben:
🔧 Live Service Status
Auto-Refresh 60s
Laden...
—
🐳 Docker Container
NameImageStatusPorts
Laden...
⚙ n8n Workflows
Laden...
📊 Container Ressourcen (Live)
ContainerCPURAMNet I/OPIDs
Laden...
⚡ Quick Actions
🧠 Ollama Modelle
—
ModellGrößeGeändertGenutzt vonAktion
Laden...
⚡ Im VRAM geladen
—
—
🔗 LiteLLM Status
Laden...
💻 LM Studio (PC)
—
PC IP
—
⚡ Provider Schnellkonfig
Alle Agenten gleichzeitig umschalten:
OpenClaw LLM
—
Fallbacks
—
💰 LLM Kosten-Uebersicht
—
Tokens heute
—
Kosten heute
—
Tokens gesamt
—
Kosten gesamt
Provider Uebersicht
ProviderTokensKosten (USD)Requests
Laden...
📊 Kosten nach Agent
AgentTokensKostenRequests
Laden...
Preise: OpenRouter claude-3.5-haiku = $0.00025/1K input + $0.00125/1K output · Groq = kostenlos · Lokal = kostenlos
🔑 API Provider
LiteLLM konfigurierte Modelle
Laden...
Eigene Provider
Keine
💰 LiteLLM Kosten
—
Gesamt Spend
∞
Lokal frei
Spend-Details
Laden...
⚙ OpenClaw Modell-Routing
Konfigurierte Modelle in OpenClaw
Laden...
🦥 OpenClaw Command Center
SERVER (HTTPS /api/openclaw/)
Prüfe...
PC OpenClaw (nur lokal)
Prüfe...
Aktiver Kontext
—
Geladene Skills
—
Quick Command an OpenClaw
—
💜 MamaBot Status
👩
MamaBot · @MamasHelferBot
systemd: —
—
Aktive Workflows
—
Ausführungen
—
Server Uptime
—
Gateway
📡 MamaBot Activity Feed
Laden...
📋 n8n Workflows
Laden...
Statistiken
—
🔧 Skill Management
Laden...
OpenClaw Gateway
openclaw-gateway—
Telegram Plugin—
12:00
E Hënë, 1 Janar 2026

📅 Terminet

Moti (Ferizaj)

☁️
--°C
📸
Kujtimet
📱
Videot
🎵
Radio
🧠
Lojërat
🎤
Fillo Bisedën
🌐 Global Settings
Telegram Bot
Bot Token
Chat ID
n8n Webhook URL
Telegram Benachrichtigungen
📲 TikTok Account Settings
Laden...
Posting Schedule
Posts pro Tag
Posting-Zeiten
Nischen-Filter
Laden...
📈 Trading Settings
HYDRA Server URL
Auto-Approve ab (%)
Max Position (€)
Risk per Trade (%)
🔒 Passwort & System
Aktuelles PW
Neues PW
Bestätigen
Server89.167.37.0
Backendblendion_ctl v3
Container—
Uptime—
💾 Backup & Export
Konfigurationen sichern und exportieren:
🤖 Global LLM Config
Laden...
Routing: leicht → Ollama/Groq · schwer → PC LM Studio (Tunnel :1234) · Fallback → DeepSeek V3
🌐 GLOBAL SETTINGS
🔑 Environment Variables
Lade...
IMAP_HOST
IMAP_USER
IMAP_PASS
🔄 Service Restart
🖥 HYDRA v2 Status
Lade...
⚡ n8n Workflows
Lade...
🔒 fail2ban
Lade...
🔔 BenachrichtigungenLoeschen
Keine Benachrichtigungen
⚡ LIVE LOGS -
Klicke Refresh...
) // ═══════════════════════════════════════════════════════════════════ // ── 1. Video Generator State ────────────────────────────────────── const VG_STATE = { generating: false, queue: [], done: [], }; // ── 2. Fix: Account laden wenn TikTok-Tab geöffnet wird ────────── const _origShowPage = window.showPage; window.showPage = function(name, ...args) { _origShowPage && _origShowPage(name, ...args); if (name === 'tiktok') { loadTiktokAccountsSafe(); renderVideoGenPanel(); } }; // Account-Daten mit localStorage-Fallback (zeigt auch wenn API down) async function loadTiktokAccountsSafe() { const infoEl = document.getElementById('ttAccountInfo'); const listEl = document.getElementById('ttAccountList'); // Zeige gecachte Daten sofort const cached = localStorage.getItem('tt_accounts_cache'); if (cached && infoEl) { try { const accounts = JSON.parse(cached); if (accounts.length) { infoEl.innerHTML = accounts.map(a => `
@${a.username||a.account_id} ${a.status||'konfiguriert'}
` ).join(''); } } catch(e) {} } // Dann frisch laden try { const [accR, nicheR, mapR] = await Promise.all([ fetch(SERVER+'/api/agent/tiktok/accounts').then(r=>r.json()), fetch(SERVER+'/api/agent/tiktok/niches').then(r=>r.json()).catch(()=>({niches:[]})), fetch(SERVER+'/api/agent/tiktok/niche-map').then(r=>r.json()).catch(()=>({mapping:{}})), ]); const accounts = accR.accounts || []; localStorage.setItem('tt_accounts_cache', JSON.stringify(accounts)); if (infoEl) { if (accounts.length) { infoEl.innerHTML = accounts.map(a => `
@${a.username||a.account_id}
${a.display_name||''} · ${a.auto_post?'🤖 Auto':'👁 Manuell'}
` ).join(''); } else { infoEl.innerHTML = '
⚠️ Kein Account konfiguriert
Füge unten einen Account hinzu
'; } } if (listEl) renderTiktokAccounts(accounts, nicheR.niches||[], mapR.mapping||{}); } catch(e) { if (infoEl && !cached) { infoEl.innerHTML = '
⚠️ Server nicht erreichbar — gecachte Daten werden gezeigt
'; } } } // ── 3. Video Generator Panel ────────────────────────────────────── function renderVideoGenPanel() { // Panel nur einmal einfügen if (document.getElementById('ttVideoGenPanel')) return; const queue = document.getElementById('ttQueueTable')?.closest('.page > div[style*="margin-bottom:14px"]') || document.querySelector('#page-tiktok > div:nth-child(3)'); const panel = document.createElement('div'); panel.id = 'ttVideoGenPanel'; panel.innerHTML = `
🎬 VIDEO GENERATOR PROFESSIONAL PIPELINE Bereit
📝
SCRIPT
LLM generiert
→
🔊
AUDIO
ElevenLabs/edge-tts
→
🎥
FOOTAGE
Pexels API (free)
→
⚡
COMPOSITING
FFmpeg 9:16 TikTok
→
📱
MP4 READY
1080×1920 TikTok
🎤 TTS ENGINE
🎥 PEXELS API KEY
MAX VIDEOS
`; // Panel NACH dem Queue einfügen const queueSection = document.querySelector('#page-tiktok [id="ttQueueTable"]')?.closest('div[style*="border-radius:12px"]'); if (queueSection) { queueSection.insertAdjacentElement('afterend', panel); } else { document.getElementById('page-tiktok')?.appendChild(panel); } loadVgSettings(); } function updateVgTtsLabel() { const engine = document.getElementById('vgTtsEngine')?.value; const keyDiv = document.getElementById('vgElKeyDiv'); const label = document.getElementById('vgTtsLabel'); const icon = document.getElementById('vgTtsIcon'); if (engine === 'elevenlabs') { if (keyDiv) keyDiv.style.display = 'block'; if (label) label.textContent = 'ElevenLabs (9/10 Qualität)'; if (icon) icon.textContent = '⭐'; } else if (engine === 'coqui') { if (keyDiv) keyDiv.style.display = 'none'; if (label) label.textContent = 'Coqui (lokal, CPU)'; if (icon) icon.textContent = '🏠'; } else { if (keyDiv) keyDiv.style.display = 'none'; if (label) label.textContent = 'Microsoft Neural (gratis)'; if (icon) icon.textContent = '🆓'; } saveVgSettings(); } function saveVgSettings() { localStorage.setItem('vg_settings', JSON.stringify({ engine: document.getElementById('vgTtsEngine')?.value, el_key: document.getElementById('vgElKey')?.value, pexels_key: document.getElementById('vgPexelsKey')?.value, max_count: document.getElementById('vgMaxCount')?.value, })); } function loadVgSettings() { try { const s = JSON.parse(localStorage.getItem('vg_settings') || '{}'); if (s.engine) document.getElementById('vgTtsEngine').value = s.engine; if (s.el_key) document.getElementById('vgElKey').value = s.el_key; if (s.pexels_key) document.getElementById('vgPexelsKey').value = s.pexels_key; if (s.max_count) document.getElementById('vgMaxCount').value = s.max_count; updateVgTtsLabel(); } catch(e) {} } function vgLog(msg) { const el = document.getElementById('vgLog'); if (el) { const time = new Date().toLocaleTimeString('de-DE', {hour:'2-digit',minute:'2-digit',second:'2-digit'}); el.innerHTML += `
[${time}] ${msg}
`; el.scrollTop = el.scrollHeight; } } function vgSetProgress(pct, label) { const bar = document.getElementById('vgProgressBar'); const pctEl = document.getElementById('vgProgressPct'); const labelEl = document.getElementById('vgProgressLabel'); if (bar) bar.style.width = pct + '%'; if (pctEl) pctEl.textContent = pct + '%'; if (labelEl && label) labelEl.textContent = label; } async function vgSetupCheck() { toast('Prüfe Setup...', 'info'); try { const r = await fetch(SERVER+'/api/video/setup').then(res=>res.json()); const lines = Object.entries(r).map(([k,v]) => `${v?'✅':'❌'} ${k}`).join('\n'); alert('Video Generator Setup:\n\n' + lines); } catch(e) { alert('⚠️ Video API nicht verfügbar\n\nStelle sicher dass video_generator.py auf dem Server ist.'); } } async function vgInstallDeps() { if (!confirm('Installiere FFmpeg + edge-tts auf dem Server?')) return; toast('Installiere... (kann 2-3 min dauern)', 'info'); try { const r = await fetch(SERVER+'/api/video/install', {method:'POST'}).then(res=>res.json()); toast(r.msg || 'Installation gestartet', r.ok ? 'ok' : 'error'); } catch(e) { toast('Server-API nicht verfügbar: ' + e.message, 'error'); } } async function vgGenerateBatch() { if (VG_STATE.generating) { toast('Läuft bereits...', 'info'); return; } const approved = TT_QUEUE_CACHE.filter(i => i.status === 'approved'); if (!approved.length) { toast('Keine approved Videos in der Queue! Erst Skripte genehmigen.', 'error'); return; } const max = parseInt(document.getElementById('vgMaxCount')?.value || '3'); const toProcess = approved.slice(0, max); const settings = { engine: document.getElementById('vgTtsEngine')?.value || 'edge_tts', el_key: document.getElementById('vgElKey')?.value || '', pexels_key: document.getElementById('vgPexelsKey')?.value || '', }; VG_STATE.generating = true; const btn = document.getElementById('vgBatchBtn'); if (btn) { btn.disabled = true; btn.textContent = '⏳ Generiere...'; } document.getElementById('vgProgress').style.display = 'block'; document.getElementById('vgLog').innerHTML = ''; vgLog(`🚀 Starte Batch: ${toProcess.length} Videos`); let done = 0; for (const item of toProcess) { vgSetProgress(Math.round(done/toProcess.length*100), `Video ${done+1}/${toProcess.length}: ${(item.niche||'').substring(0,30)}...`); vgLog(`📝 ${item.id}: ${(item.niche||'').substring(0,40)}`); try { const r = await fetch(SERVER+'/api/video/generate', { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({item_id: item.id, settings}) }).then(res=>res.json()); if (r.ok) { vgLog(`✅ Fertig: ${r.video_path || 'OK'} (${Math.round(r.duration||0)}s)`); done++; } else { vgLog(`❌ Fehler: ${r.error || 'Unbekannt'}`); } } catch(e) { vgLog(`❌ API-Fehler: ${e.message}`); } } vgSetProgress(100, `Fertig! ${done}/${toProcess.length} Videos`); vgLog(`\n🎉 Batch abgeschlossen: ${done}/${toProcess.length} erfolgreich`); VG_STATE.generating = false; if (btn) { btn.disabled = false; btn.textContent = '🚀 Batch Videos generieren (Approved → MP4)'; } setTimeout(() => fetchTiktok(), 2000); } async function vgTestSingle() { if (VG_STATE.generating) return; const testItem = { id: 'test_' + Date.now(), niche: 'Finanz-Tipps fuer Anfaenger', script: 'Wusstest du, dass 70% der Deutschen ihr Geld falsch anlegen? Die 3 größten ETF-Fehler: Erstens zu lange warten. Zweitens falsche Kosten. Drittens keine Diversifikation. Folge mir für mehr Finanztipps!' }; document.getElementById('vgProgress').style.display = 'block'; document.getElementById('vgLog').innerHTML = ''; vgLog('🧪 Test-Video mit Dummy-Script...'); try { const r = await fetch(SERVER+'/api/video/generate', { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({ item_id: testItem.id, item: testItem, settings: { engine: document.getElementById('vgTtsEngine')?.value || 'edge_tts', el_key: document.getElementById('vgElKey')?.value || '', pexels_key: document.getElementById('vgPexelsKey')?.value || '', } }) }).then(res=>res.json()); if (r.ok) { vgLog(`✅ Test erfolgreich: ${r.video_path}`); vgLog(` Dauer: ${Math.round(r.duration||0)}s`); toast('Test-Video erstellt! ✅', 'ok'); } else { vgLog(`❌ Test fehlgeschlagen: ${r.error}`); toast('Test fehlgeschlagen: ' + r.error, 'error'); } } catch(e) { vgLog(`❌ ${e.message} — Server-API nicht verfügbar`); toast('Video-API nicht verfügbar', 'error'); } } // ── 4. Competitor Inspiration Panel ────────────────────────────── function renderCompetitorPanel() { if (document.getElementById('ttCompetitorPanel')) return; const panel = document.createElement('div'); panel.id = 'ttCompetitorPanel'; panel.innerHTML = `
🔍 COMPETITOR ANALYSE — Was funktioniert auf DE TikTok Lerne von den Besten
💰 @finanzfluss
• Klarer Hook in Sekunde 1
• Zahlen fett hervorheben
• "Das sagst du nicht!" Format
• 30-60 Sek optimal
• Weiß-auf-Dunkel Text
→ Profil ansehen
📈 @aktien_mit_kopf
• Charts & Grafiken zeigen
• "Die meisten wissen nicht..." Hook
• 3-Punkte-Format sehr beliebt
• Emojis als Aufzählung
• Schnelle Schnitte (≤3 Sek)
→ Profil ansehen
🚀 @etf_einfach
• "In 60 Sekunden erklärt"
• Bildschirm-Recordings
• Authentisch (kein Hochglanz)
• Deutsche Sprache konsequent
• Starke CTA: "Folge mir!"
→ Profil ansehen
⚡ TOP HOOKS die viral gehen (Copy & Paste für Skripte):
${[ 'Wusstest du, dass 70% der Deutschen...', 'Das erklärt niemand dir — außer ich:', 'In 60 Sekunden mehr Geld als du denkst', '3 ETF-Fehler die dich 50.000€ kosten', 'Die meisten verlieren hier Geld:', 'Warum deine Bank das NICHT will', 'Mit 100€/Monat zum Millionär — so geht\'s:', 'Kein Bullshit: Das ist der einfachste Weg zu', 'Diese 3 Apps benutzen alle Reichen:', 'Stop! Mach das NICHT bevor du das weißt:' ].map(hook => `` ).join('')}
⏱️
DAUER
30-60 Sek ideal
Max 90 Sek
✂️
SCHNITTE
Alle 2-3 Sek
Keine Pausen
📝
TEXT
Weiß Bold
Immer sichtbar
📣
CTA
"Folge mir!"
Immer am Ende
`; // Panel am Ende der TikTok-Page einfügen const page = document.getElementById('page-tiktok'); if (page) page.appendChild(panel); } function copyHookToGen(hook) { const ideaEl = document.getElementById('ttGenIdea'); if (ideaEl) ideaEl.value = hook; } // ── 5. Auto-init wenn TikTok-Page aktiv ist ────────────────────── document.addEventListener('DOMContentLoaded', () => { // Wenn TikTok schon aktiv beim Load if (document.getElementById('page-tiktok')?.classList.contains('active')) { loadTiktokAccountsSafe(); renderVideoGenPanel(); renderCompetitorPanel(); } }); // Competitor Panel auch bei showPage rendern const _origShowPageFull = window.showPage; window.showPage = function(name, ...args) { _origShowPageFull && _origShowPageFull(name, ...args); if (name === 'tiktok') { setTimeout(() => { renderCompetitorPanel(); }, 100); } }; // ── 6. Generate Video Button in Queue Table ────────────────────── // Override renderTiktokQueueTable to add "Generate Video" button const _origRenderTable = window.renderTiktokQueueTable; window.renderTiktokQueueTable = function(items) { _origRenderTable && _origRenderTable(items); // Add "Generate Video" button to approved rows setTimeout(() => { document.querySelectorAll('#ttQueueTable tr[data-id]').forEach(row => { const id = row.dataset.id; const item = TT_QUEUE_CACHE.find(i => i.id == id); if (!item || item.status !== 'approved') return; if (row.querySelector('.vg-gen-btn')) return; const actionsTd = row.querySelector('td:last-child'); if (!actionsTd) return; const btn = document.createElement('button'); btn.className = 'vg-gen-btn'; btn.textContent = '🎬 Video'; btn.style.cssText = 'background:rgba(0,229,255,0.15);border:1px solid rgba(0,229,255,0.3);color:#00e5ff;border-radius:6px;padding:3px 8px;font-size:9px;cursor:pointer;margin-left:4px'; btn.onclick = () => vgGenerateSingle(id); actionsTd.appendChild(btn); }); }, 200); }; async function vgGenerateSingle(itemId) { const item = TT_QUEUE_CACHE.find(i => i.id == itemId); if (!item) return; document.getElementById('vgProgress').style.display = 'block'; vgLog(`🎬 Einzelvideo: ${item.niche || itemId}`); try { const r = await fetch(SERVER+'/api/video/generate', { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({ item_id: itemId, settings: { engine: document.getElementById('vgTtsEngine')?.value || 'edge_tts', el_key: document.getElementById('vgElKey')?.value || '', pexels_key: document.getElementById('vgPexelsKey')?.value || '', } }) }).then(res=>res.json()); if (r.ok) { vgLog(`✅ Fertig: ${Math.round(r.duration||0)}s`); toast(`Video erstellt: ${Math.round(r.duration||0)}s ✅`, 'ok'); fetchTiktok(); } else { vgLog(`❌ ${r.error}`); toast('Fehler: ' + r.error, 'error'); } } catch(e) { vgLog('❌ API nicht erreichbar'); toast('Video-API nicht erreichbar', 'error'); } } console.log('✅ TikTok Dashboard Upgrade v3 geladen');