Meine Nichte Meicken hat einen Hof in Mehrum, einem Ortsteil von Hohenhameln im Landkreis Peine. Sie wollte wissen, wie es konkret bei ihr vor Ort um die Bienen steht — nicht aus dritter Hand, nicht aus dem Garten-Magazin, sondern aus wissenschaftlich verifizierbaren Daten. Daraus wurde innerhalb von zehn Tagen bienenatlas.de: ein Echtzeit-Dashboard für die Wildbienen-Lage in 121 deutschen Gemeinden, mit vier Datenquellen, 235 Bildern, und einem rigorosen UWG-§5-Disziplin-Versprechen — keine erfundenen Zahlen, keine Marketing-Adjektive.
V1: ein Dashboard für einen Hof
Die erste Iteration war pragmatisch klein: ein einziges Astro-Dashboard, das via GBIF-API für die Mehrum-Bbox Apidae-Beobachtungen zog (Familie Apidae, taxonKey 4334), Top-Arten zählte, die letzten 30 Tage mit dem Vorjahres-Fenster verglich, und die Funde als Cards rendete. Keine Datenbank, kein State, kein Build-Schritt für Daten — alles SSR bei jedem Request, mit fünf Minuten Edge-Cache auf Netlify. Sechs Tage von der ersten Skizze zur Live-Version, Sprint MEICKEN-MVP-001 bis MVP-012.
Meicken sah das auf dem Handy beim Familien-Frühstück und fragte, was eine “Bbox” sei. Das war der Moment, in dem klar wurde: das funktioniert für sie als Hof-Werkzeug, aber als Plattform-Idee skaliert es nicht. Niemand außerhalb von Mehrum würde bei ?gemeinde=hohenhameln landen. Es war ein Hof-Tool, kein Bienen-Atlas.
Der Pivot zu 121 Gemeinden
Der Umbau begann mit einer einfachen Frage: wenn jede deutsche Gemeinde ihre eigene URL hätte, was wäre der Aufwand? Die Antwort ist die Architektur, die heute steht:
/— nationaler Landing mit aggregierten Daten über alle Gemeinden/<bundesland>/— 16 Bundesland-Hubs (/niedersachsen/,/bayern/, …) mit regionalen Daten und Liste aller Gemeinden des Landes/<bundesland>/<gemeinde>/— 121 individuelle Gemeinde-Dashboards, identisch zur V1 aber mit lokalen Daten
Die Datei src/data/regions.ts enthält für jede Gemeinde einen ags-Slug, den name, den land-Code und eine bbox. Astro 6 erlaubt SSR-Dynamic-Routes ohne getStaticPaths() — die Datei src/pages/[bundesland]/[gemeinde]/index.astro löst beim Request den Slug-Paar zu einer Region auf, holt die GBIF-Daten für die bbox, rendert die Seite, cached fünf Minuten am Edge. Wenn ein User /bayern/halle/ aufruft (Halle liegt in Sachsen-Anhalt, nicht Bayern), 301-canonicalisiere ich auf /sachsen-anhalt/halle/ statt 404 zu liefern.
Vier Datenquellen, pro Gemeinde aggregiert
Das größte Risiko bei 134 Seiten mit gleichem Layout ist Googles Helpful Content Update — near-duplicate-Inhalte werden demotiert. Die Lösung ist nicht weniger Seiten, sondern mehr genuiner Inhalt pro Seite. Vier Datenquellen geben jeder Gemeinde-Seite einzigartige Inhalte:
1. GBIF (Global Biodiversity Information Facility)
Wissenschaftlicher Aggregator für Funddaten. REST-API ohne Auth, gefiltert auf Familie Apidae + Deutschland + Gemeinde-Bbox. Pro Seite: Gesamt-Datensätze, häufigste Apidae-Arten (Facet-API), Jahresverlauf 3-Jahre, 30-Tage-Fenster vs. Vorjahr, Einzelfund-Cards mit Foto-Lizenz-Filter (nur CC0 / CC BY / CC BY-SA wird kommerziell-sicher gerendert).
2. DWD Phänologie (Deutscher Wetterdienst Climate Data Center)
Langjährige Blühbeginn-Mittel für 7 bienenrelevante Pflanzen (Salweide, Schlehe, Löwenzahn, Apfel, Holunder, Sommerlinde, Heidekraut). Die Datei scripts/build-phaenologie-context.mjs liest die annual_reporters/historical/-CSVs von opendata.dwd.de (cp1252-kodiert, semicolon-separated, eor-Endmarker), berechnet die Haversine-Distanz zur nächsten Station, und schreibt src/data/phaenologie-context.json. Ergebnis: 121/121 Gemeinden mit Nearest-Station-Median 2,0 km, 769 (Station × Art) Durchschnitte. Hohenhameln bekommt die DWD-Station Soßmar (0,6 km Luftlinie) mit 14-30 Jahren Daten pro Pflanze.
3. OpenStreetMap Overpass — Naturschutzgebiete
Pro Gemeinde-Bbox eine Query auf boundary=protected_area + leisure=nature_reserve + boundary=national_park. Klassifiziert nach protect_class zu NP/NSG/FFH/LSG, dedupliziert, max. 5 pro Gemeinde. 119 von 121 Gemeinden haben mindestens ein Schutzgebiet aus OSM, gesamt 559 Areas (29 NP, 507 NSG, 7 LSG, 16 sonstige). Inklusive Wikipedia- und offizielle Website-Links wenn OSM die Tags hat.
4. NABU naturgucker + Wikipedia (per-Gemeinde-Kontext)
Wikipedia-Infobox-Scrape pro Gemeinde: Postleitzahl, Landkreis, Einwohner-Stand, Höhe ü. NN, Fläche. Verifiziert über de.wikipedia.org direkt mit Quellen-Link. Plus: NABU-Landesverband-Webseite pro Bundesland (zero-trust verifiziert, 14 NABU + Bayern→LBV + Saarland→nabu-saar.de), Naturschutzbehörde-URL (13 Ministerien direkt, BE+SL Bot-Block → WebFetch-Querverifikation), Insektenschutz-Aktionsplan-Status (10 vorhanden, 6 keiner-bekannt — ehrlich gekennzeichnet).
235 Bilder mit Nano Banana
Google’s Gemini 2.5 Flash Image (intern “Nano Banana”) generiert 1024×1024-PNGs für ca. 0,039 USD pro Bild (Standard-Tier). Über fünf Image-Generation-Sprints sind 235 Illustrationen entstanden, geclusterte mit konsistenter Aquarell-Ästhetik:
| Set | Anzahl | Kosten |
|---|---|---|
| National hero + OG card | 2 | $0,08 |
| Bundesland heroes (16) | 16 | $0,62 |
| Gemeinde heroes (121) | 121 | $4,72 |
| DIY heroes (5) + Schritt-für-Schritt (16) | 21 | $0,82 |
| /about + /404 + 3 Social variants | 5 | $0,20 |
| Naturschutzgebiet-Flagships (16) + Apidae-Gattung-Moodboards (10) | 26 | $1,02 |
| Per-Bundesland 1:1-Accents (16) | 16 | $0,62 |
| 5 Explanatory-Scenes + 3 panoramic Dividers | 8 | $0,32 |
| 8 Logo-Concepts | 8 | $0,31 |
| Total | 223 | $8,71 |
Plus 12 favicon/PWA-Icons via sharp (programmatisch aus favicon.svg) — kostenlos. Gesamter Image-Generation-Etat: weniger als 9 Euro gegen das €260-Free-Trial-Credit von Google Cloud (das beim Aktivieren der Billing-API mitkommt).
Drei Lessons aus dem Nano-Banana-Workflow:
- Typografie ist unzuverlässig. Bei den 8 Logo-Concepts hat das Modell durchgängig “Bieneatlas” statt “Bienenatlas” gerendert — der zweite
nist verschwunden. Image-Modelle können Text fast nicht. Logos müssen vektoriell mit echter Typo finalisiert werden. - Konsistenz braucht einen Style-String. Ein wiederverwendbarer Prompt-Suffix garantiert konsistente Optik über alle Generationen:
Painted in soft watercolor with a vintage natural-history-book aesthetic, warm honey-amber and forest-green palette. Soft golden-hour light. Hand-illustrated, not photoreal. No text, no labels, no people.Jede Generation referenziert diesen Block. - Rate-Limits + Free-Tier-Wechsel sind ein Stolperstein. Gemini-2.5-Flash-Image hat keinen kostenlosen Tier mehr — bei Account-Aktivierung muss Billing scharf gestellt werden. Bei Free-Trial-Credit fließt das Guthaben automatisch. Mein Generator-Script (
scripts/nano-banana-gen.mjs) hat 429-Retry + Backoff eingebaut, dasretryDelay-Feld aus dem Gemini-Error-Body parsed.
Sedcards mit voller Datentiefe
Jede Apidae-Art bekommt einen Steckbrief unter /art/<gbif-speciesKey>/. Diese Seite ist die datendichteste der Plattform — Ziel ist ein wissenschaftliches Referenz-Werkzeug mit visueller Klarheit gleichzeitig. Das Layout ist zweispaltig (Hauptspalte + Sticky-Sidebar) mit fünf Sidebar-Karten:
- Verwandte Arten — selber Gattungs-Lookup über GBIF Search-API
- Live-Phänologie heute — vergleicht heutigen Day-of-Year gegen den langjährigen Blühbeginn-Mittel der lokalen DWD-Station. Pulsiert sanft wenn “aktiv jetzt”,
prefers-reduced-motion-safe - Verwechselbar mit — kuratierte Verwechslungspartner aus Westrich (2018), 9 Arten Hand-verifiziert, keine Fabrikationen
- Wo dokumentiert — Top-5-Bundesländer aus GBIF
stateProvince-Facet, verlinkt zur entsprechenden Gemeinde - Wissenschaftliche Quellen — 8 WebFetch-verifizierte externe URLs. Das Bundesamt für Naturschutz hat null Bienen-Steckbriefe in der Artenportraits-Datenbank — ehrlich weggelassen statt fabriziert. Westrich.de lieferte ECONNREFUSED beim Probe — als gedrucktes Buch zitiert, nicht als URL. wildbiene.com und Wildbienen-Kataster Stuttgart wurden als Universal-Links bestätigt.
Plus drei neue Hauptspalten-Sektionen pro Sedcard: vollständige taxonomische Klassifikation (<dl>), Originalbeschreibung mit Autor + Jahr (nur wenn GBIF die hat — sonst weglassen), Habitat- und Phänologie-Quer-Schnitt.
SEO + AEO-Architektur
Ein systematisches SEO-Audit der Plattform ergab 24 Findings (2 Blocker, 8 Hoch, 9 Medium, 5 Low) — 14 davon inline behoben:
robots.txtursprünglich blockierte GPTBot, ChatGPT-User, anthropic-ai, ClaudeBot, PerplexityBot, Google-Extended — alle für AEO geblockt. Nach expliziter Ratifizierung umgekehrt aufUser-agent: * Allow: /. Begründung dokumentiert im Header: Inhalte sind aus offenen Datenquellen (CC-BY GBIF, ODbL OSM, DWD-Open), nichts IP-schutzbedürftig, AEO-Citations in ChatGPT/Claude/Perplexity sind 2026 der wichtigste Traffic-Hebel.llms.txtneu angelegt nach llmstxt.org-Spec — gibt AI-Crawlern eine kuratierte Übersicht des Sites mit UWG-§5-Quellen-Disziplin-AussageHowTo-Schema auf den 4 DIY-Anleitungen (Insektenhotel, Nisthilfen, Wildblumen-Streifen, Glyphosat-Ersatz) mit Schritt-Listen, Materialien, Werkzeugen, Dauer-Angaben — qualifiziert für Google AI Overview SnippetsPlace-Schema auf jeder Gemeinde-Seite mit@idundcontainedInPlace-Pointer auf den Bundesland-Hub — Site-interner Entity-Graph- Cross-Gemeinde-Sibling-Block auf jeder der 121 Gemeinde-Seiten verlinkt zu allen Schwester-Städten im selben Bundesland — schließt die größte interne Verlinkungs-Lücke
- Sitemap-Prioritäten je Routen-Typ via
serialize-Callback: 1.0 Landing, 0.9 Hubs, 0.8 Gemeinden, 0.7 DIY, 0.3 legal
Parallel dazu kamen 62 neue interne <a href>-Links über 8 Dateien hinzu. Die kritische Lücke war /art/<speciesKey>/ mit null internen Links — geschlossen auf neun. Jede Seite hat jetzt zwischen 8 und 14 interne Links plus eine “Beobachtungen in deiner Gegend”-CTA-Box, die auf die Pilot-Gemeinde oder die Bundesland-Karte führt.
Domain-Setup
Zwei kuratierte Domains: bienenatlas.de als kanonischer Hauptdomain plus wildbienenkarte.de als SEO-Alias mit 301-Redirect auf den primären Host. Mail bleibt vom Web getrennt — eigene MX-Konfiguration, unabhängig von der Web-Auslieferung.
Der DNS-Zonen-Cleanup war chirurgisch: nur den Apex auf den Web-Host umstellen, AAAA-Records entfernen wo nicht gebraucht, www als CNAME setzen, SOA-Serial bumpen — sonst alles unverändert. Mail-Records (MX, SRV, DKIM, SPF) bleiben intakt. SSL-Zertifikate provisionierten sich innerhalb von Minuten für alle vier Hostnames (Apex und www pro Domain).
Vier Host-Redirects sorgen dafür, dass alle Alias-Hostnames auf die kanonische Apex-Domain landen — kein Duplicate-Content-Risiko. Die Path-Splat-Substitution sorgt dafür, dass /niedersachsen/hohenhameln/ auf jedem Alias als 301 auf bienenatlas.de/niedersachsen/hohenhameln/ landet.
Google Search Console: sc-domain:bienenatlas.de als Domain-Property registriert via DNS-TXT-Verifikation, Sitemap eingereicht (146 URLs, 0 Errors, 0 Warnings).
Was als nächstes kommt
Drei Sprints stehen offen:
- Echte Indexierung beobachten. Google hat das Sitemap-Index akzeptiert und 146 URLs zur Crawl-Queue gestellt. Wann wieviele indexiert werden, ist nicht vorhersagbar — typisch 1-4 Wochen bei einer neuen Domain. Reindex-Submissions kommen für die Top-20 Gemeinden in Phase 2.
- Mehr Gemeinden. Aktuell 121 — Deutschland hat etwa 11.000 Gemeinden. Die Bbox-Definitionen sind manuell kuratiert; ein Skript könnte OSM-Nominatim-Anfragen automatisieren, um die Liste auf 500 oder 1.000 Gemeinden zu erweitern. Trade-off: jede neue Gemeinde braucht ein generiertes Hero-Bild (Nano-Banana), Wikipedia-Enrichment-Run, OSM-Naturschutz-Query — pro 100 neuer Gemeinden circa $4 Image-Kosten plus 30 Minuten Pipeline-Lauf.
- Logo-Finalisierung. Acht Concepts sind generiert; die finale Wordmark wird vektoriell mit Inter oder Söhne als CSS-Layer über dem gewählten Mark gesetzt. Das ist ein Figma-Sprint, kein Code-Sprint.
Stack
Repository (privat, Wender Media Brand Property License): arnoldwender/wm-brand-bienenatlas. Live: bienenatlas.de.
Was hier funktioniert, ist nicht die Technologie — die Komponenten sind alle Standard. Was funktioniert, ist die redaktionelle Disziplin: keine Aussage ohne zitierte Quelle, jede URL händisch verifiziert, jede Schätzung als solche gekennzeichnet, jeder Aktionsplan-Status ehrlich zwischen vorhanden und keiner-bekannt differenziert. Das ist das, was Meicken am Anfang wollte — und das ist das, was am Ende auch 121 anderen Gemeinden helfen kann.