Sitemap enthält nur 1 URL statt 22 — Blog fehlt komplett #58

Open
opened 2026-09-06 19:58:55 +00:00 by Phil · 0 comments
Owner

Google findet die Blogartikel nicht über die Sitemap. Gemessen am 06.09.2026.

Symptom

https://philflow.io/sitemap.xml ist ein Index auf zwei Unter-Sitemaps:

  • sitemap_sections_1_0.xml → genau 1 URL (die Startseite)
  • sitemap_sections_3_0.xml → leeres <urlset/>, 0 URLs

Zusätzlich existieren sitemap_sections_2_0.xml, _4_0, _5_0, _6_0 — alle erreichbar (200), alle leer, keine im Index.

Gesamtzahl URLs in allen Sitemaps: 1. Tatsächlich erreichbare HTML-Seiten: 22 (11 DE + 11 EN, inkl. 6 Blogartikel je Sprache). Keiner der Blogartikel taucht auf. Die EN-Startseite steht nur als hreflang-Alternate, nicht als eigener <loc>.

Die robots.txt blockiert nichts (Allow: /), die Artikel sind live und liefern 200. Sie werden aktuell nur über den Link auf der Startseite und /blog/feed.xml gefunden — nicht über den Kanal, den Suchmaschinen zuerst auswerten.

Ursache (belegt über die Datenbank)

SELECT * FROM seo_sitemap liefert 5 Zeilen, alle vom 31.10.2024:

id group url (= sectionId) enabled
1 sections 4 1
2 sections 5 1
3 sections 1 1
4 sections 3 1
5 categories 1 0

SELECT id, name, handle FROM sections liefert: 1 Startseite (single), 3 Unterseiten (channel), 7 Blog Index (single), 8 Blog (channel).

Also:

  • Die Einträge für Section 4 und 5 zeigen auf gelöschte Bereiche → erzeugen leere Sitemap-Dateien
  • Blog (8) und Blog Index (7) sind gar nicht eingetragen — der Blog kam nach dem Sitemap-Setup dazu
  • Dass die Unterseiten-Sitemap (3) leer bleibt, ist korrekt: Impressum und Datenschutz stehen auf noindex

Es ist ether/seo, nicht SEOmatic.

Weitere Befunde im selben Schritt

  • /en und /en/ sind zwei URLs für dieselbe Seite. /en liefert 200 ohne Redirect, das Canonical zeigt aber auf /en/.
  • 11 verbesserungswürdige Seitentitel: templates/_system/seo.twig:12-16 gibt jeder Seite ohne entry — Kategorie-Archiv, jede Nicht-Entry-Route — den 404-Titel als Seitentitel.
  • 12 problematische Meta-Descriptions: config/project/project.yaml:325 leitet die Standard-Description aus einem Feld paragraph ab, das im Projekt nicht existiert (ls config/project/fields | grep -c paragraph → 0). Der Fallback ist damit immer leer, und seo.twig:17 gibt das leere description-Tag trotzdem aus.
  • Die EN-Startseite verlinkt auf die deutschen Rechtsseiten (/impressum, /datenschutz statt /en/impressum, /en/datenschutz) und zeigt eine abweichende Telefonnummer (+49 152 51440476 statt +49 155 63696346).
  • llms.txt enthält den Blog nicht (Stand 31.05.), llms-full.txt existiert nur auf dem Server und nicht im Repo — Drift gegen die Projektregel, dass docker compose up alles aufbauen muss.

Akzeptanzkriterien

  • /sitemap.xml enthält alle 6 Blogartikel je Sprache, mindestens 14 URLs statt 1
  • Verwaiste Einträge für Section 4 und 5 entfernt, keine leeren Sitemap-Dateien mehr im Index
  • Die Sitemap-Konfiguration liegt als Craft-Migration im Repo — sie steckt in der Datenbank, nicht im Project-Config, und wäre nach einem frischen docker compose up sonst wieder weg
  • /en leitet auf /en/ weiter (301)
  • Kategorie-Archiv trägt nicht mehr den 404-Titel
  • Kein leeres description-Tag mehr im Quelltext; Fallback aus einem real existierenden Feld
  • EN-Startseite verlinkt auf die englischen Rechtsseiten, Telefonnummer auf +49 155 63696346 vereinheitlicht
  • llms.txt und llms-full.txt im Repo, mit Blog-Abschnitt

Plan: .claude/plans/ (Schritt 2 von 3). Voraussetzung: #57.

Google findet die Blogartikel nicht über die Sitemap. Gemessen am 06.09.2026. ## Symptom `https://philflow.io/sitemap.xml` ist ein Index auf zwei Unter-Sitemaps: - `sitemap_sections_1_0.xml` → genau **1 URL** (die Startseite) - `sitemap_sections_3_0.xml` → leeres `<urlset/>`, **0 URLs** Zusätzlich existieren `sitemap_sections_2_0.xml`, `_4_0`, `_5_0`, `_6_0` — alle erreichbar (200), alle leer, keine im Index. **Gesamtzahl URLs in allen Sitemaps: 1.** Tatsächlich erreichbare HTML-Seiten: 22 (11 DE + 11 EN, inkl. 6 Blogartikel je Sprache). Keiner der Blogartikel taucht auf. Die EN-Startseite steht nur als hreflang-Alternate, nicht als eigener `<loc>`. Die `robots.txt` blockiert nichts (`Allow: /`), die Artikel sind live und liefern 200. Sie werden aktuell nur über den Link auf der Startseite und `/blog/feed.xml` gefunden — nicht über den Kanal, den Suchmaschinen zuerst auswerten. ## Ursache (belegt über die Datenbank) `SELECT * FROM seo_sitemap` liefert 5 Zeilen, alle vom 31.10.2024: | id | group | url (= sectionId) | enabled | |---|---|---|---| | 1 | sections | 4 | 1 | | 2 | sections | 5 | 1 | | 3 | sections | 1 | 1 | | 4 | sections | 3 | 1 | | 5 | categories | 1 | 0 | `SELECT id, name, handle FROM sections` liefert: **1** Startseite (single), **3** Unterseiten (channel), **7** Blog Index (single), **8** Blog (channel). Also: - Die Einträge für Section 4 und 5 zeigen auf **gelöschte Bereiche** → erzeugen leere Sitemap-Dateien - **Blog (8) und Blog Index (7) sind gar nicht eingetragen** — der Blog kam nach dem Sitemap-Setup dazu - Dass die Unterseiten-Sitemap (3) leer bleibt, ist korrekt: Impressum und Datenschutz stehen auf `noindex` Es ist ether/seo, nicht SEOmatic. ## Weitere Befunde im selben Schritt - **`/en` und `/en/` sind zwei URLs für dieselbe Seite.** `/en` liefert 200 ohne Redirect, das Canonical zeigt aber auf `/en/`. - **11 verbesserungswürdige Seitentitel:** `templates/_system/seo.twig:12-16` gibt jeder Seite ohne `entry` — Kategorie-Archiv, jede Nicht-Entry-Route — den **404-Titel** als Seitentitel. - **12 problematische Meta-Descriptions:** `config/project/project.yaml:325` leitet die Standard-Description aus einem Feld `paragraph` ab, **das im Projekt nicht existiert** (`ls config/project/fields | grep -c paragraph` → 0). Der Fallback ist damit immer leer, und `seo.twig:17` gibt das leere `description`-Tag trotzdem aus. - **Die EN-Startseite verlinkt auf die deutschen Rechtsseiten** (`/impressum`, `/datenschutz` statt `/en/impressum`, `/en/datenschutz`) und zeigt eine abweichende Telefonnummer (+49 152 51440476 statt +49 155 63696346). - **`llms.txt` enthält den Blog nicht** (Stand 31.05.), `llms-full.txt` existiert nur auf dem Server und nicht im Repo — Drift gegen die Projektregel, dass `docker compose up` alles aufbauen muss. ## Akzeptanzkriterien - [ ] `/sitemap.xml` enthält alle 6 Blogartikel je Sprache, mindestens 14 URLs statt 1 - [ ] Verwaiste Einträge für Section 4 und 5 entfernt, keine leeren Sitemap-Dateien mehr im Index - [ ] Die Sitemap-Konfiguration liegt als **Craft-Migration im Repo** — sie steckt in der Datenbank, nicht im Project-Config, und wäre nach einem frischen `docker compose up` sonst wieder weg - [ ] `/en` leitet auf `/en/` weiter (301) - [ ] Kategorie-Archiv trägt nicht mehr den 404-Titel - [ ] Kein leeres `description`-Tag mehr im Quelltext; Fallback aus einem real existierenden Feld - [ ] EN-Startseite verlinkt auf die englischen Rechtsseiten, Telefonnummer auf +49 155 63696346 vereinheitlicht - [ ] `llms.txt` und `llms-full.txt` im Repo, mit Blog-Abschnitt Plan: `.claude/plans/` (Schritt 2 von 3). Voraussetzung: #57.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Phil/philflow.io#58
No description provided.