Markdown Web: Statische Seiten aus Markdown generieren

Blog, Dokumentation & Wiki — kein CMS, kein WordPress, pure Geschwindigkeit

Python Markdown Jinja2 HTML

📝 Markdown schreiben. HTML bekommen. Fertig.

📞 02406 803 7603 ✉️ info@computerkumpel.de

🌐 Warum ein Static-Site-Generator?

WordPress & Co. sind overkill für viele Projekte. Sicherheitslücken, Updates, langsame Ladezeiten. Statische HTML-Seiten sind unschlagbar schnell, sicher und benötigen keinen Datenbank-Server. Markdown Web generiert sie automatisch aus Ihren Markdown-Dateien.

Extrem schnell
Generierung von 100 Seiten in unter 2 Sekunden. Ladezeiten < 100ms — kein DB-Overhead.
🔒
Sicher
Kein Login, keine Datenbank, keine Injection-Angriffsfläche. Statisches HTML ist inhärent sicher.
📝
Markdown-First
Schreiben im vertrauten Markdown-Format. Einfach, versionierbar (Git), überall editierbar.
🎨
Templates
Jinja2-Templates für vollständige Design-Freiheit. Eigene Themes in Minuten erstellt.

🏗️ Komponenten

📄 Markdown-Parser
Erweiterter Markdown: Tables, Code-Highlighting, Task-Lists, Footnotes. YAML-Frontmatter.
📋 Blog-Engine
Chronologische Posts, Tags, Kategorien, RSS-Feed. Automatische Index-Seiten.
📚 Dokumentation
Navigation aus Ordnerstruktur. Automatische Sidebar, Breadcrumbs, Suche.
🔍 Volltextsuche
Client-seitige Suche mit Lunr.js-Index. Kein Server nötig. Funktioniert offline.
👁️ Live-Vorschau
Lokaler Dev-Server mit Hot-Reload. Änderung speichern → Browser aktualisiert automatisch.
🚀 Deployment
FTP/SFTP-Upload, GitHub Pages, Netlify — ein Befehl. CI/CD-Integration möglich.

💻 Der Generator-Kern

import markdown
import frontmatter
from jinja2 import Environment, FileSystemLoader
from pathlib import Path

class SiteGenerator:
    """Generiert statische HTML-Seiten aus Markdown."""
    
    def __init__(self, content_dir: str, template_dir: str, output_dir: str):
        self.content_dir = Path(content_dir)
        self.output_dir = Path(output_dir)
        self.env = Environment(loader=FileSystemLoader(template_dir))
        self.md = markdown.Markdown(extensions=[
            'meta', 'toc', 'tables', 'fenced_code',
            'codehilite', 'footnotes', 'attr_list'
        ])
        
        self.pages = []
        self.posts = []
        self.tags = {}
    
    def build(self):
        """Komplette Seite generieren."""
        self._collect_content()
        self._generate_pages()
        self._generate_indexes()
        self._generate_rss()
        self._copy_static_files()
        
        print(f"✅ {len(self.pages)} Seiten generiert in {self.output_dir}")
    
    def _collect_content(self):
        """Sammelt und parst alle Markdown-Dateien."""
        for md_file in self.content_dir.rglob('*.md'):
            post = frontmatter.load(md_file)
            
            page = {
                'title': post.get('title', md_file.stem),
                'date': post.get('date'),
                'tags': post.get('tags', []),
                'template': post.get('template', 'page.html'),
                'content': self.md.convert(post.content),
                'url': str(md_file.relative_to(self.content_dir)).replace('.md', '.html')
            }
            
            self.pages.append(page)
            
            if post.get('date'):
                self.posts.append(page)
    
    def _generate_pages(self):
        """Generiert HTML für jede Seite."""
        for page in self.pages:
            template = self.env.get_template(page['template'])
            html = template.render(
                page=page,
                pages=self.pages,
                posts=sorted(self.posts, key=lambda x: x['date'], reverse=True),
                tags=self.tags
            )
            
            out_path = self.output_dir / page['url']
            out_path.parent.mkdir(parents=True, exist_ok=True)
            out_path.write_text(html, encoding='utf-8')

⚡ 100 Seiten in 2 Sekunden — keine Datenbank, kein PHP.

📞 02406 803 7603 ✉️ info@computerkumpel.de

Blog, Docs oder Wiki — statisch & schnell.

Wir konfigurieren Ihren Static-Site-Generator und das passende Deployment.

🔍
Beratung
Ist ein Static-Site-Generator das Richtige für Ihr Projekt? Wir analysieren es.
🎨
Theme-Design
Template-Erstellung nach Ihrem Design. Responsiv, barrierefrei, schnell.
🚀
Setup & Deploy
Generator konfigurieren + Deployment einrichten. In 1–2 Tagen live.
📞 02406 803 7603 ✉️ info@computerkumpel.de