# Changelog ## Version 0.3.0 (2025-10-01) ### Feature - Autor-zu-Tag-Mapping 🏷️ **Neues Feature:** Autoren werden automatisch als Tags hinzugefügt! **Funktion:** - Autor aus Frontmatter wird extrahiert (`author`, `#staticSiteGenerator.author`, `#commonMetadata.creator`) - Autor-Name wird automatisch als Tag im Format `Vorname_Nachname` hinzugefügt - Leerzeichen werden durch Unterstriche ersetzt - Mehrfache Unterstriche werden konsolidiert **Beispiel:** ```yaml author: Jörg Lohrer tags: - OER - Community ``` **Ergebnis:** - Tags in WordPress: `OER`, `Community`, `Jörg_Lohrer` - Filterung nach Autoren über WordPress-Tag-Taxonomie möglich **Technische Details:** - Neue Funktion `format_author_as_tag()` in `markdown_parser.py` - Autor-Tag wird nur hinzugefügt, wenn Autor vorhanden und noch nicht in Tags - Integration in `extract_wordpress_metadata()` nach Autor-Extraktion --- ## Version 0.2.2 (2025-10-01) ### Bugfix - Kritisch! 🐛 #### Tags/Kategorien werden jetzt korrekt zugewiesen **Problem:** Tags und Kategorien wurden als existierend erkannt, aber NICHT dem Beitrag zugewiesen. **Ursache:** - WordPress-API gibt bei `term_exists`-Fehler die `term_id` in den Fehler-Daten zurück - Diese `term_id` wurde nicht genutzt, es wurde nur erneut gesucht (was nichts fand) - Ohne Tag-IDs konnte WordPress die Tags nicht zuweisen **Lösung:** - Extrahiere `term_id` direkt aus `error_data['data']['term_id']` - Bei `term_exists`-Code: Nutze die zurückgegebene `term_id` sofort - Fallback: Suche erneut falls Extraktion fehlschlägt - Gezielte Suche mit `search`-Parameter für bessere Performance **Vorher:** ``` Fehler beim Erstellen des Tags 'OER': 400 Client Error... Details: {'code': 'term_exists', 'data': {'term_id': 3866}} # Tag-ID 3866 wurde NICHT genutzt → Tag nicht zugewiesen ``` **Nachher:** ``` → Tag 'OER' existiert bereits (ID: 3866) → Tag 'OEP' gefunden (ID: 3867) Gesamt Tag-IDs: [3866, 3867, ...] # Tag-IDs werden dem Beitrag zugewiesen ✅ ``` ### Verbesserungen - `get_tags()` und `get_categories()` mit optionalem `search`-Parameter - Reduziert API-Calls durch gezielte Suche statt alle Tags/Kategorien zu laden - Debug-Ausgaben zeigen jetzt auch gefundene (nicht nur neue) Tags/Kategorien ## Version 0.2.1 (2025-10-01) ### Bugfixes #### Frontmatter-Parsing für Hash-Kommentar-Stil **Problem:** Frontmatter mit `#commonMetadata:` (als YAML-Kommentar) wurde nicht korrekt geparst. **Lösung:** - Unterstützung für flaches Frontmatter (wenn `#commonMetadata:` als Kommentar behandelt wird) - `creativeWorkStatus` und `datePublished` werden jetzt auch direkt (nicht verschachtelt) erkannt - Status-Konvertierung: `Published` → `publish` (case-insensitive mit "publish" in) #### Veröffentlichungsdatum für alle Status **Problem:** Datum wurde bei draft-Posts nicht gesetzt. **Lösung:** - `date_gmt` zusätzlich zu `date` setzen für explizite Kontrolle - Hinweis bei draft-Posts, dass Datum erst beim Veröffentlichen aktiv wird ### Verbesserungen #### Debug-Ausgaben - **Tag-Verarbeitung:** Zeigt gefundene Tags aus Frontmatter und zugewiesene IDs - **Post-Erstellung:** Zeigt alle gesendeten Daten (Tags, Kategorien, Datum) - **WordPress-Response:** Zeigt zurückgegebene Daten von WordPress - **Erfolgsmeldung:** ✅ für bessere Sichtbarkeit #### Beispiel-Ausgabe: ``` Tags aus Frontmatter: ['Tag1', 'Tag2'] → Tag 'Tag1' ID: 123 → Tag 'Tag2' ID: 124 Gesamt Tag-IDs: [123, 124] Veröffentlichungsdatum: 2025-09-02T00:00:00 Erstelle Beitrag mit Daten: - Status: publish - Tags: [123, 124] - Datum: 2025-09-02T00:00:00 - Datum GMT: 2025-09-02T00:00:00 ✅ Beitrag 'Titel' erstellt (ID: 456, Status: publish) WordPress-Tags: [123, 124] WordPress-Datum: 2025-09-02T00:00:00 ``` ## Version 0.2.0 (2025-10-01) ### Bugfixes #### 1. Tag-Duplikatsfehler behoben **Problem:** Beim Erstellen bereits existierender Tags kam es zu `400 Bad Request` Fehlern. **Lösung:** - Bessere Fehlerbehandlung in `get_or_create_tag()` und `get_or_create_category()` - Bei 400-Fehler wird automatisch erneut nach dem Tag/Kategorie gesucht - Ausführlichere Fehlermeldungen mit Response-Details #### 2. Post-Duplikatsprüfung verbessert **Problem:** Beiträge mit gleichem Titel wurden trotz Duplikatsprüfung doppelt angelegt. **Lösung:** - `check_post_exists()` sucht jetzt in allen Status (draft, publish, etc.) - Case-insensitive Vergleich der Titel - Prüft sowohl `rendered` als auch `raw` Titel - Erhöhte Suchanzahl von 10 auf 100 Posts - Debug-Ausgabe bei gefundenen Duplikaten #### 3. Veröffentlichungsdatum wird gesetzt **Problem:** Das `datePublished` aus dem Frontmatter wurde nicht an WordPress übergeben. **Lösung:** - Datumsextraktion aus verschiedenen Frontmatter-Feldern: - `date` - `datePublished` - `#commonMetadata.datePublished` - `#staticSiteGenerator.datePublished` - Automatische Formatierung: `YYYY-MM-DD` → `YYYY-MM-DDT00:00:00` - Datum wird als `date`-Feld an WordPress-API übergeben ### Neue Features - **USAGE_MODES.md**: Übersichtsdokumentation der drei Verwendungsmodi ## Version 0.1.0 (2025-10-01) ### Features - Automatische Metadaten-Extraktion aus YAML-Frontmatter - Drei Verwendungsmodi: 1. Einzelne URL 2. YAML-Batch 3. Forgejo-Repository - WordPress REST-API Integration - Duplikatsprüfung für Posts und Medien - Schema.org-Support - Markdown zu HTML Konvertierung - Automatische Tag/Kategorie-Erstellung ## Bekannte Probleme Keine. ## Geplante Features ## Geplante Features ### Hoch-Priorität - [ ] **Autor-Mapping:** WordPress-User aus Frontmatter-Autor automatisch zuordnen oder manuelles Mapping - [ ] **Robuste Forgejo-API:** Bessere Fehlerbehandlung, Progress-Tracking für Batch-Imports ### Mittel-Priorität - [ ] GitHub-Repository Support (zusätzlich zu Forgejo) - [ ] Batch-Update (bestehende Posts aktualisieren statt nur überspringen) - [ ] Featured Image aus Markdown-Content extrahieren (erstes Bild falls kein Frontmatter-Image) ### Niedrig-Priorität - [ ] Custom Post Types Support - [ ] Zeitzone-Unterstützung für Veröffentlichungsdatum - [ ] Mehrsprachige Beiträge (WPML/Polylang Support) - [ ] Dry-Run-Modus (zeigt was passieren würde ohne zu erstellen)