Algroveon-Mini-SSG – Eigener Static Site Generator
Static Site Generator in Python mit Browser-Admin-UI, direktem Deploy via SFTP/FTP, KI-gestützter Mehrsprachigkeit und flexiblem Jinja2-Template-System.
Dieses Projekt ist ein Static Site Generator (SSG) für mehrsprachige Websites. Gemeint ist damit ein System, das aus Inhalten und Vorlagen fertige HTML-Seiten erzeugt. Der komplette Ablauf bleibt dabei in Python: ohne npm und ohne JavaScript-Build-Toolchain, also ohne die sonst oft übliche zusätzliche Kette aus Frontend-Werkzeugen zum Bauen, Bündeln und Verarbeiten und ohne die sonst oft üblichen zusätzlichen Frontend-Werkzeuge. Im Mittelpunkt steht eine browserbasierte Admin-Oberfläche, über die Inhalte gepflegt, Websites gebaut und direkt auf Webserver übertragen werden können.
Admin-UI – der zentrale Arbeitsbereich
Die Admin-Oberfläche setzt lokal bewusst auf Flask und ist kein nachträglicher Zusatz, sondern der zentrale Arbeitsbereich des gesamten Systems. Für die lokale Nutzung ist das passend, für ein ordentliches öffentliches Hosting sollte davor aber ein sauber konfigurierter Webserver wie Nginx mit einer sicheren Hosting-Umgebung stehen. Von hier aus läuft der komplette Redaktions- und Veröffentlichungsprozess:
- Datei-Explorer – Inhaltsbaum aller Markdown-Dateien, sortiert nach Sprache und Typ
- Markdown-Editor – Split-Live-Preview, Toolbar, Vollbild-Modus (eigene Web-Komponente, kein npm)
- Neues Dokument – Wizard mit Vorlagen für Blog-Beitrag, Projekt oder Seite; Frontmatter wird automatisch vorbelegt
- Volltext-Suche – Suche über alle Markdown-Inhalte des Projekts
- Design-Tab – Templates direkt im Browser bearbeiten; site-spezifische Anpassungen überschreiben das Theme, ohne das Original zu verändern
- Übersetzungssystem – vollständige Unterstützung für KI-gestützte Übersetzungen mit lokalen LLMs oder Cloud-LLMs
- Multi-Site-Modus – mehrere Sites parallel über eine gemeinsame Admin-UI verwalten
Build und Deploy: ein Klick
Der Build startet build.py und zeigt den Output als Live-Stream im Browser.
Beim Deploy werden nur geänderte Dateien hochgeladen (MD5-basierter Abgleich):
- SFTP – via
paramiko, Passwort im OS-Schlüsselbund (macOS Keychain / Linux Secret Service) - FTP – klassisches FTP für einfache Hoster, ohne weitere Dependencies
- Verbindungstest – prüft Zugangsdaten vor dem eigentlichen Upload
- Inkrementell – nur Dateien mit geändertem MD5-Hash werden übertragen
Template-System
Templates sind Jinja2-HTML-Dateien unter themes/<theme>/. Das Theme wird in site.yaml
zugewiesen. Über den Design-Tab lassen sich Templates site-spezifisch anpassen –
die Änderungen werden in sites/<site>/templates/ gespeichert und haben Vorrang vor
dem Theme-Original. Layouts werden per Frontmatter-Feld zugewiesen (layout: post,
layout: project usw.).
Mehrsprachigkeit
Die Inhalte liegen unter content/<lang>/, die URLs folgen dem Schema /<lang>/seite.html.
Für jede Sprache wird eine eigene Navigation gerendert. Fehlt eine Übersetzung, greift
die Fallback-Logik, statt direkt auf eine 404-Seite zu laufen.
KI-gestützte Übersetzung
translate.py übersetzt Markdown-Inhalte per LLM. Unterstützte Provider:
- Ollama (lokal) – native Ollama-API, inkl. automatischem VRAM-Management
- OpenAI – GPT-4o-mini und andere Modelle direkt
- OpenAI-kompatibel – Mistral, LM Studio, beliebige lokal gehostete Endpoints
Das System erkennt veraltete Übersetzungen per SHA-256-Hash (Quellinhalt + übersetzte Frontmatter-Felder). Ändert sich eine Quelldatei, wird nur diese neu übersetzt. Codeblöcke bleiben erhalten, die Frontmatter-Struktur ebenfalls. Der gesamte Prozess läuft als SSE-Stream mit Live-Output im Browser.
SFTP-Konfiguration und Deploy-Credentials aktuell hart verdrahtet. Refactoring für öffentlichen Release läuft.