Feature: Automatische Metadaten-Extraktion aus Frontmatter
- Neuer markdown_parser.py mit YAML-Frontmatter Extraktion - Unterstützung für drei Modi: Einzelne URL, YAML-Batch, Forgejo-Repo - Metadaten (name, description, tags, image, author) aus Frontmatter - Schema.org-Support für commonMetadata - Vereinfachte posts.yaml (nur URLs statt vollständiger Metadaten) - Aktualisierte Dokumentation (README.md, QUICKSTART.md) - Beispiel-Beitrag mit vollständigem Frontmatter
This commit is contained in:
parent
e3b19bb0df
commit
7a234be652
6 changed files with 880 additions and 180 deletions
194
QUICKSTART.md
194
QUICKSTART.md
|
|
@ -1,5 +1,51 @@
|
|||
# Schnellstart-Anleitung
|
||||
|
||||
## Überblick
|
||||
|
||||
Das System extrahiert **automatisch alle Metadaten aus dem YAML-Frontmatter** Ihrer Markdown-Dateien:
|
||||
- **name** → WordPress-Titel
|
||||
- **description** oder **summary** → Excerpt
|
||||
- **image** → Beitragsbild
|
||||
- **tags** → WordPress-Tags
|
||||
- **categories** → WordPress-Kategorien
|
||||
- **author** → WordPress-Autor
|
||||
|
||||
Sie müssen nur noch die **URL zur Markdown-Datei** angeben!
|
||||
|
||||
## Drei Verwendungsmodi
|
||||
|
||||
### 1. Einzelne URL (Am einfachsten!)
|
||||
|
||||
```bash
|
||||
source .venv/bin/activate
|
||||
python workflow.py "https://example.com/artikel.md"
|
||||
```
|
||||
|
||||
### 2. Mehrere URLs aus YAML-Datei
|
||||
|
||||
Erstellen Sie `posts.yaml`:
|
||||
```yaml
|
||||
posts:
|
||||
- url: "https://example.com/artikel1.md"
|
||||
- url: "https://example.com/artikel2.md"
|
||||
- file: "content/lokaler-artikel.md"
|
||||
```
|
||||
|
||||
Dann ausführen:
|
||||
```bash
|
||||
source .venv/bin/activate
|
||||
python workflow.py posts.yaml
|
||||
```
|
||||
|
||||
### 3. Ganzes Repository (Forgejo/Gitea)
|
||||
|
||||
```bash
|
||||
source .venv/bin/activate
|
||||
python workflow.py --repo "https://codeberg.org/user/repo" main
|
||||
```
|
||||
|
||||
## Schnellstart-Schritte
|
||||
|
||||
## 1. Virtuelle Umgebung aktivieren
|
||||
|
||||
Aktivieren Sie zuerst die Python-Umgebung:
|
||||
|
|
@ -28,64 +74,102 @@ WORDPRESS_USERNAME=IHR_USERNAME_HIER # ← Hier eintragen!
|
|||
WORDPRESS_APP_PASSWORD=UIVI 4Tdy oojL 9iZG g3X2 iAn5
|
||||
```
|
||||
|
||||
## 4. posts.yaml anpassen
|
||||
## 4. posts.yaml anpassen (Optional - nur für Batch-Verarbeitung)
|
||||
|
||||
Bearbeiten Sie `posts.yaml` und fügen Sie Ihre Beiträge hinzu:
|
||||
Für **einzelne URLs** brauchen Sie keine YAML-Datei!
|
||||
|
||||
Für **mehrere Beiträge** erstellen Sie `posts.yaml`:
|
||||
|
||||
```yaml
|
||||
posts:
|
||||
- title: "Ihr Beitragstitel"
|
||||
markdown_url: "https://ihre-url.de/artikel.md"
|
||||
# ODER für lokale Dateien:
|
||||
# markdown_file: "content/ihr-artikel.md"
|
||||
status: "draft"
|
||||
categories:
|
||||
- "Ihre Kategorie"
|
||||
tags:
|
||||
- "Ihr Tag"
|
||||
- url: "https://ihre-url.de/artikel.md"
|
||||
- file: "content/lokaler-artikel.md"
|
||||
|
||||
settings:
|
||||
default_status: "draft"
|
||||
```
|
||||
|
||||
**Das war's!** Alle Metadaten (Titel, Tags, Kategorien, Bild) kommen aus dem Frontmatter der Markdown-Dateien.
|
||||
|
||||
## 5. Workflow ausführen
|
||||
|
||||
Stellen Sie sicher, dass die virtuelle Umgebung aktiviert ist (siehe Schritt 1), dann:
|
||||
|
||||
### Einzelne URL (empfohlen für Tests):
|
||||
```bash
|
||||
python workflow.py
|
||||
python workflow.py "https://example.com/artikel.md"
|
||||
```
|
||||
|
||||
### Mehrere URLs aus YAML:
|
||||
```bash
|
||||
python workflow.py posts.yaml
|
||||
```
|
||||
|
||||
### Ganzes Forgejo-Repository:
|
||||
```bash
|
||||
python workflow.py --repo "https://codeberg.org/user/repo" main
|
||||
```
|
||||
|
||||
## Testen mit dem Beispiel-Beitrag
|
||||
|
||||
Ein Test-Beitrag ist bereits in `content/beispiel-beitrag.md` vorhanden.
|
||||
Ein Test-Beitrag mit vollständigem Frontmatter ist in `content/beispiel-beitrag.md`.
|
||||
|
||||
Um diesen zu verwenden, passen Sie `posts.yaml` an:
|
||||
|
||||
```yaml
|
||||
posts:
|
||||
- title: "Test: Beispiel-Beitrag"
|
||||
markdown_file: "content/beispiel-beitrag.md"
|
||||
status: "draft"
|
||||
categories:
|
||||
- "Test"
|
||||
**Direkter Test:**
|
||||
```bash
|
||||
python workflow.py "content/beispiel-beitrag.md"
|
||||
```
|
||||
|
||||
Dann führen Sie aus:
|
||||
**Oder über YAML:**
|
||||
```yaml
|
||||
posts:
|
||||
- file: "content/beispiel-beitrag.md"
|
||||
```
|
||||
|
||||
```bash
|
||||
python workflow.py
|
||||
python workflow.py posts.yaml
|
||||
```
|
||||
|
||||
## Was passiert beim Ausführen?
|
||||
|
||||
1. ✅ System liest die `posts.yaml`
|
||||
2. ✅ Für jeden Beitrag:
|
||||
- Lädt Markdown-Inhalt (von URL oder lokal)
|
||||
- Konvertiert Markdown zu HTML
|
||||
- Prüft ob Beitrag bereits existiert (nach Titel)
|
||||
- Erstellt fehlende Kategorien/Tags
|
||||
- Lädt Beitragsbilder hoch (falls vorhanden)
|
||||
- Erstellt den WordPress-Beitrag
|
||||
1. ✅ System lädt die Markdown-Datei (von URL oder lokal)
|
||||
2. ✅ **Extrahiert automatisch Metadaten aus dem YAML-Frontmatter:**
|
||||
- `name` → Titel
|
||||
- `description`/`summary` → Excerpt
|
||||
- `image` → Beitragsbild
|
||||
- `tags` → WordPress-Tags
|
||||
- `categories` → WordPress-Kategorien (falls vorhanden)
|
||||
- `author` → Autor
|
||||
3. ✅ Konvertiert Markdown zu HTML
|
||||
4. ✅ Prüft ob Beitrag bereits existiert (nach Titel)
|
||||
5. ✅ Erstellt fehlende Kategorien/Tags
|
||||
6. ✅ Lädt Beitragsbilder hoch (falls vorhanden)
|
||||
7. ✅ Erstellt den WordPress-Beitrag
|
||||
|
||||
3. ✅ Zeigt Zusammenfassung an
|
||||
## Frontmatter-Beispiel
|
||||
|
||||
Ihre Markdown-Dateien sollten so aussehen:
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: "Mein Artikel-Titel"
|
||||
description: "Eine kurze Zusammenfassung des Artikels"
|
||||
image: "https://example.com/bild.jpg"
|
||||
tags:
|
||||
- WordPress
|
||||
- Tutorial
|
||||
- Open Source
|
||||
categories:
|
||||
- Tutorials
|
||||
author:
|
||||
- Max Mustermann
|
||||
---
|
||||
|
||||
# Artikel-Inhalt
|
||||
|
||||
Hier beginnt der eigentliche Inhalt...
|
||||
```
|
||||
|
||||
Das System versteht auch Schema.org-Metadaten (wie im `beispiel-beitrag.md`)!
|
||||
|
||||
## Wichtige Hinweise
|
||||
|
||||
|
|
@ -97,34 +181,38 @@ python workflow.py
|
|||
## Beispiel-Ausgabe
|
||||
|
||||
```
|
||||
Lade Konfiguration aus: posts.yaml
|
||||
Direkt-Modus: Verarbeite URL: https://example.com/artikel.md
|
||||
|
||||
Verbinde mit WordPress: https://news.rpi-virtuell.de
|
||||
|
||||
Verarbeite 1 Beitrag/Beiträge...
|
||||
============================================================
|
||||
Verarbeite Markdown von URL: https://example.com/artikel.md
|
||||
============================================================
|
||||
Titel: Die Kraft der Gemeinschaft: Prozesse statt Strukturen
|
||||
Beitrag 'Die Kraft der Gemeinschaft' erstellt (ID: 123, Status: draft)
|
||||
|
||||
============================================================
|
||||
Verarbeite Beitrag: Test: Beispiel-Beitrag
|
||||
============================================================
|
||||
Lese lokale Markdown-Datei: content/beispiel-beitrag.md
|
||||
Beitrag 'Test: Beispiel-Beitrag' erstellt (ID: 123, Status: draft)
|
||||
|
||||
============================================================
|
||||
ZUSAMMENFASSUNG
|
||||
============================================================
|
||||
Erfolgreich: 1
|
||||
Fehler: 0
|
||||
Gesamt: 1
|
||||
============================================================
|
||||
✅ Erfolgreich: Beitrag erstellt (ID: 123)
|
||||
```
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
1. Testen Sie mit dem Beispiel-Beitrag
|
||||
2. Passen Sie `posts.yaml` für Ihre echten Beiträge an
|
||||
3. Führen Sie `python workflow.py` aus
|
||||
4. Überprüfen Sie die Beiträge in WordPress
|
||||
5. Bei Erfolg: Ändern Sie `status: "draft"` zu `status: "publish"`
|
||||
1. **Testen Sie mit dem Beispiel-Beitrag:**
|
||||
```bash
|
||||
python workflow.py "content/beispiel-beitrag.md"
|
||||
```
|
||||
|
||||
2. **Testen Sie mit Ihrer eigenen URL:**
|
||||
```bash
|
||||
python workflow.py "https://ihre-url.de/artikel.md"
|
||||
```
|
||||
|
||||
3. **Für Batch-Verarbeitung:** Erstellen Sie `posts.yaml` mit mehreren URLs
|
||||
|
||||
4. **Für Repository-Import:** Nutzen Sie `--repo` für Forgejo/Gitea
|
||||
|
||||
5. **Überprüfen Sie die Beiträge in WordPress**
|
||||
|
||||
6. **Bei Erfolg:** Ändern Sie `default_status: "publish"` in den Settings
|
||||
|
||||
## Hilfe
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue