feat: Update OpenGraph and Twitter meta tags to use dynamic title from meta_title variable
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
|
||||
# Key Service Server
|
||||
|
||||
Dieses Repository ist auf einen schlanken, Docker-first Betrieb ausgerichtet.
|
||||
@@ -179,6 +178,42 @@ export INSTANCE_WILDCARD_KEY_FILE=/etc/nginx/certs/wildcard.example.de.key
|
||||
./launch_prod.sh
|
||||
```
|
||||
|
||||
## SEO & LLM-Optimierung
|
||||
|
||||
Die Website ist für Suchmaschinen und LLM-Scraper optimiert:
|
||||
|
||||
- **Meta-Tags & OpenGraph**: Jede Seite enthält sinnvolle `<meta name="description">`, OpenGraph- und Twitter-Tags sowie einen Canonical-Link. Die Startseite und wichtige Unterseiten haben eine eigene `meta_description`.
|
||||
- **JSON-LD**: Die Startseite enthält strukturierte Daten (Schema.org WebSite/Organization) als JSON-LD.
|
||||
- **Maschinenlesbare Endpunkte**:
|
||||
- `/health` — gibt `{ "status": "ok", "time": ... }` zurück (Status 200), geeignet für Health-Checks und Monitoring.
|
||||
- `/sitemap.xml` — maschinenlesbare Sitemap für Suchmaschinen, dynamisch generiert.
|
||||
- `/robots.txt` — erlaubt Crawling, verweist auf Sitemap, blockiert `/admin/` und Uploads.
|
||||
- **Server-Side Rendering**: Alle wichtigen Inhalte sind serverseitig gerendert und ohne JavaScript zugänglich.
|
||||
|
||||
**Beispiel für Health-Check:**
|
||||
|
||||
```bash
|
||||
curl -i http://127.0.0.1:4999/health
|
||||
```
|
||||
|
||||
**Beispiel für Sitemap:**
|
||||
|
||||
```bash
|
||||
curl -i http://127.0.0.1:4999/sitemap.xml
|
||||
```
|
||||
|
||||
**robots.txt Beispiel:**
|
||||
|
||||
User-agent: *
|
||||
Disallow: /admin/
|
||||
Disallow: /static/uploads/
|
||||
Allow: /
|
||||
Sitemap: /sitemap.xml
|
||||
|
||||
**Hinweis:**
|
||||
- Die SEO-Meta-Tags können pro Seite in den Templates überschrieben werden (`meta_description`).
|
||||
- Die Sitemap kann bei Bedarf um weitere Seiten ergänzt werden.
|
||||
|
||||
## Empfohlener Ablauf
|
||||
|
||||
1. sudo ./gitea.sh start
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<link rel="canonical" href="{{ request.url_root.rstrip('/') }}{{ request.path }}">
|
||||
<!-- OpenGraph / Twitter -->
|
||||
<meta property="og:site_name" content="Invario">
|
||||
<meta property="og:title" content="{% block title %}Digitale Schulverwaltung{% endblock %}">
|
||||
<meta property="og:title" content="{{ meta_title|default('Digitale Schulverwaltung') }}">
|
||||
<meta property="og:description" content="{{ meta_description|default('Invario — Lehrmittel-, Inventar- und Ausleihverwaltung für Schulen. Sicher, einfach, nachvollziehbar.') }}">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="{{ request.url_root.rstrip('/') }}{{ request.path }}">
|
||||
<meta property="og:image" content="{{ url_for('static', filename='images/logo-1.jpeg') }}">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="{% block title %}Digitale Schulverwaltung{% endblock %}">
|
||||
<meta name="twitter:title" content="{{ meta_title|default('Digitale Schulverwaltung') }}">
|
||||
<meta name="twitter:description" content="{{ meta_description|default('Invario — Lehrmittel-, Inventar- und Ausleihverwaltung für Schulen. Sicher, einfach, nachvollziehbar.') }}">
|
||||
<meta name="twitter:image" content="{{ url_for('static', filename='images/logo-1.jpeg') }}">
|
||||
{% block head %}
|
||||
|
||||
Reference in New Issue
Block a user