diff --git a/Makefile b/Makefile
index 7aa6e69..5d0dd72 100644
--- a/Makefile
+++ b/Makefile
@@ -83,6 +83,7 @@ html: copy-assets
echo " $$f.html"; \
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \
done
+ @./scripts/generate-index.sh $(BUILD_DIR)
@echo "Done! HTML files in $(BUILD_DIR)/"
# Clean generated files
diff --git a/scripts/generate-index.sh b/scripts/generate-index.sh
new file mode 100755
index 0000000..1f5b5b4
--- /dev/null
+++ b/scripts/generate-index.sh
@@ -0,0 +1,93 @@
+#!/usr/bin/env bash
+# Generate index.html for slide overview
+
+BUILD_DIR="${1:-build}"
+
+cat > "$BUILD_DIR/index.html" << 'HEADER'
+
+
+
+
+
+ 223015b - Dateiformate, Schnittstellen, Speichermedien
+
+
+
+ 223015b
+ Dateiformate, Schnittstellen, Speichermedien & Distributionswege
+ HdM Stuttgart - WS 2025/26 - Michael Czechowski
+HEADER
+
+# Generate links for each termin (sorted)
+for html in $(ls "$BUILD_DIR"/2*.html 2>/dev/null | sort); do
+ filename=$(basename "$html")
+
+ # Extract components from filename
+ # Format: 2025-12-19-termin-1-grundlagen-text-audio.html
+ date=$(echo "$filename" | grep -oE '^[0-9]{4}-[0-9]{2}-[0-9]{2}')
+ termin_num=$(echo "$filename" | grep -oE 'termin-[0-9]+' | grep -oE '[0-9]+')
+ topic_raw=$(echo "$filename" | sed -E 's/^[0-9]{4}-[0-9]{2}-[0-9]{2}-termin-[0-9]+-//' | sed 's/\.html$//')
+
+ # Format topic: replace - with space, capitalize
+ topic=$(echo "$topic_raw" | sed 's/-/ /g' | sed 's/.*/\u&/')
+
+ # Format date
+ if [[ "$date" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
+ formatted_date=$(date -d "$date" "+%d.%m.%Y" 2>/dev/null || echo "$date")
+ else
+ formatted_date="TBA"
+ fi
+
+ # Handle termin number
+ if [[ "$termin_num" == "0" ]]; then
+ termin_label="Einfuhrung"
+ else
+ termin_label="Termin $termin_num"
+ fi
+
+ cat >> "$BUILD_DIR/index.html" << LINK
+
+ $termin_label
+ $formatted_date
+ $topic
+
+LINK
+done
+
+cat >> "$BUILD_DIR/index.html" << 'FOOTER'
+
+
+
+FOOTER
+
+echo "Generated $BUILD_DIR/index.html"