Skip to content
··9 Min. Lesezeit

Was passiert, nachdem du migriert hast: 8 Tage des Zinseszinseffekts

Ich habe meinen Blog zu Next.js migriert und dachte, der schwierige Teil wäre vorbei. Dann begann der Zinseszinseffekt — 6 Mega-Leitfäden, ein klügerer KI-Assistent, nativer Newsletter, Bot-Schutz und SEO-Überholung in 8 Tagen.

Vor acht Tagen habe ich mein gesamtes Blog-Backend in 4 Tagen neu aufgebaut. Ich habe 485 WordPress-Beiträge zu Next.js migriert, Sydney (meinen KI-Chatbot) wieder zum Leben erweckt und eine Produktionsseite veröffentlicht.

Ich dachte, das wäre die Geschichte. Migration abgeschlossen, feiern, weitermachen.

Ich lag falsch. Die Migration war nicht das Ziel — sie war die Startlinie.

So sah meine Seite am 5. Februar im Vergleich zu heute aus:

Funktion5. Feb (Migrationstag)13. Feb (Heute)
Blog-Beiträge485 (von WordPress migriert)492 (6 neue Mega-Leitfäden)
Sydney KIEinfaches RAG, ungetestete QualitätEvaluiert, optimiert, 81% Trefferrate
NewsletterBeehiiv-Einbettung (Drittanbieter)Nativer Supabase + Resend, interessenbasiert
SEOEinfache Sitemap + Meta-TagsStrukturierte Daten, FAQ-Schema, llms.txt, AEO
SicherheitNur Rate LimitingCloudflare Turnstile + Rate Limiting
PerformanceGrundlegende Lighthouse-PrüfungenSystematisches Profiling mit Chrome DevTools MCP
Featured ImagesManuelle ErstellungKI-generierte Pipeline (Gemini + Auto-Optimierung)

Jede dieser Verbesserungen geschah, weil die vorherige es einfacher gemacht hat. Das ist der Zinseszinseffekt, den ich nicht erwartet hatte.


Das Unlock: Dein Blog ist jetzt Code

Hier ist das, was dir niemand über die Migration von WordPress zu einem code-basierten Stack sagt: Die Migration selbst ist nicht der Punkt. Der Punkt ist, was danach möglich wird.

Wenn dein Blog 492 MDX-Dateien in einem Git-Repository ist, anstatt Zeilen in einer MySQL-Datenbank, ändert sich alles:

  • Jeder Beitrag ist eine Datei — Claude Code kann sie in großem Maßstab lesen, suchen und modifizieren
  • Jede Änderung ist ein Diff — du kannst genau sehen, was sich geändert hat, gleichzeitig in 50 Beiträgen
  • Jede Funktion ist komponierbar — dein Newsletter-System kann dieselben Beitrags-Metadaten lesen wie dein KI-Chatbot
  • Jede Bereitstellung ist ein Befehlpnpm build && vercel --prod, fertig

Mit WordPress bedeutete das Aktualisieren von 12 Blog-Beiträgen, sich in wp-admin einzuloggen, jeden einzeln durchzuklicken, Änderungen vorzunehmen, zu speichern, zu wiederholen. Mit MDX-Dateien und Claude Code? Ich konnte sagen: "Füge einen Link zum nationalen Parks Pillar-Beitrag in allen 12 bestehenden Park-Leitfäden hinzu" und es würde jede Datei lesen, den richtigen Cross-Link im richtigen Kontext hinzufügen und mir den Diff zeigen. Alle 12 Aktualisierungen in Minuten.

Das ist das Unlock. Nicht die Migration. Die Geschwindigkeit, die danach kommt.


Sechs Mega-Leitfäden in 4 Tagen

Das Erste, was ich nach der Migration aufgebaut habe? Inhalte. Viele davon.

Ich wollte seit Monaten umfassende Expat-Leitfäden schreiben — die Art von 2.000–4.000-Wort-Pillar-Posts, die Menschen wirklich helfen, durch das Chaos des Umzugs in die USA zu navigieren. WordPress machte das mühsam. Jeder Beitrag erforderte manuelles Formatieren, Bild-Uploads, SEO-Plugin-Konfiguration, Kategorienverwaltung.

Jetzt? Die Pipeline sieht so aus:

  1. Brainstorm der Beitragsstruktur und Gliederung
  2. Schreibe das vollständige MDX mit integrierter SEO/AEO-Optimierung
  3. Generiere Featured Image — Claude liest den Beitrag, schreibt einen Prompt, sendet ihn an Gemini zur Bildgenerierung
  4. Optimiere — Python-Skript konvertiert in WebP, komprimiert für das Web
  5. Lade zu Vercel Blob hoch
  6. Veröffentlichegit push, vercel --prod, pnpm db:publish
  7. Sydney weiß sofort davon — der Beitrag wird mit Embeddings mit Supabase synchronisiert

Das ist in diesen 4 Tagen erschienen:

BeitragThemaWörter
Healthcare-LeitfadenHSA, FSA & HDHP erklärt~3.200
KreditaufbauVon null auf 720+ Kredit-Score~3.500
Sparen & InvestierenT-Bills vs. HYSA Aufschlüsselung~2.800
Kreditkarten-PrämienPunkte, Meilen, Cashback-Strategie~3.000
UmzugsleitfadenVollständiges Umzug-in-die-USA-Handbuch~3.800
Nationalparks26 Parks, 4 Road Trips~4.200

Jeder Beitrag folgt demselben AEO-Muster: Antwort-zuerst-Eröffnungen, Vergleichstabellen, 120–180 Wort-Abschnitte, fette Definitionen, FAQ-Schema am Ende. Die Art von Struktur, die 340% mehr KI-Zitierungen erhält.

Der Nationalparks-Leitfaden war der größte — ein Pillar-Post, der auf 12 bestehende Park-Rezensionen zurückverlinkt. Ich habe dafür auch eine PhotoGallery-Komponente gebaut, weil das Durchscrollen von 20 einzelnen Bildern brutal war. Jetzt ist es ein sauberes Raster mit einem Lightbox. Einfach, aber effektiv.


Sydney wurde klüger

Als ich Sydney während der Migration zum ersten Mal zurückbrachte, funktionierte sie — und ich testete sie manuell vor dem Start. Sie konnte Fragen beantworten, relevante Beiträge finden, Quellen zitieren. Aber manuelle Tests sagen dir nur "das scheint in Ordnung." Sie sagen dir nicht, wie in Ordnung, oder wo die Lücken sind, oder wie man es verbessern kann.

Ich hatte keine systematische Methode zur Qualitätsmessung — und ohne Messung hatte ich keine Möglichkeit zur Verbesserung.

Also baute ich ein RAG-Evaluierungs-Framework. 32 Testanfragen in 12 Kategorien, jeweils mit erwarteten Ergebnissen, die ich von Hand kuratiert habe. Fragen wie "Welche Kreditkarten sollten Expats holen?" sollten den Kreditaufbau-Leitfaden zurückgeben. "Erzähl mir von Yosemite" sollte den Yosemite-Reisebericht zurückgeben.

Dann testete ich 30 verschiedene Konfigurationskombinationen — 6 Ähnlichkeitsschwellenwerte × 5 Ergebnisanzahlen — und maß Trefferrate, Präzision und zeitliche Diversität.

Die Ergebnisse waren aufschlussreich:

MetrikVorher (Standard)Nachher (Optimiert)
Trefferrate~30%81,2%
Anfragen ohne Treffer6 von 300 von 30
Zeitliche Streuung1,2 Jahre6,7 Jahre

Die größte Korrektur war peinlich: Das OpenAI SDK ließ den dimensions-Parameter stillschweigend fallen, wenn es unter Next.js lief. Sydney generierte 1536-dimensionale Embeddings, suchte aber in einem 384-dimensionalen Index. Kein Wunder, dass die Ergebnisse schlecht waren. Der Wechsel zu direkten fetch()-Aufrufen löste das Problem über Nacht.

Ich erweiterte auch Sydneys System-Prompt, um alle 490+ Blog-Themen abzudecken — sie weiß jetzt von Nationalparks, Kreditkarten, Gesundheitswesen und der vollständigen Expat-Inhaltsbibliothek. Nicht nur KI und Marketing.

Zwei Befehle, um es selbst zu testen:

pnpm eval:rag        # Gegen lokales Supabase testen
pnpm eval:rag:prod   # Gegen Produktion testen

Jetzt kann ich tatsächlich messen, wenn Sydney klüger wird. Das ist die Art von Infrastruktur, die man nie aufbaut, wenn man WordPress betreibt.


SEO und AEO in großem Maßstab

SEO im Jahr 2026 dreht sich nicht mehr nur um Google. Es geht darum, von ChatGPT, Perplexity und Claude zitiert zu werden, wenn jemand eine Frage stellt, die dein Inhalt beantwortet.

Ich implementierte einen vollständigen SEO/AEO-Stack an einem Wochenende:

Für traditionelle Suche:

  • Dynamische Sitemap (639 Seiten indexiert)
  • Strukturierte Daten — Person, WebSite, Article, BreadcrumbList, FAQPage-Schemata
  • RSS-Feed zur Syndizierung
  • Google Search Console verifiziert

Für KI-Engines (AEO/GEO):

  • llms.txt — ein Prioritäts-Inhaltsleitfaden für KI-Crawler (GPTBot, Claude-Web, PerplexityBot alle in robots.txt erlaubt)
  • Antwort-zuerst-Muster in jeder Abschnittseröffnung (fette Schlüsselaussage in den ersten 150 Wörtern)
  • Fragen-Format H2s, die passen, wie Menschen KI-Assistenten fragen
  • FAQ-Abschnitte automatisch erkannt und als FAQPage-Schema gerendert

Für Performance: Ich verwendete Chrome DevTools MCP, um verschiedene Seitentypen zu profilieren — Startseite, Blog-Listing, einzelne Beiträge, die /ask-Seite — und identifizierte Engpässe. In der Lage zu sein, einen Performance-Trace durchzuführen, die Ergebnisse zu analysieren und das Problem in derselben Claude Code-Sitzung zu beheben, ist... unangemessen effizient.

Das Ergebnis? Jeder neue Beitrag, den ich schreibe, erhält automatisch strukturierte Daten, FAQ-Schema (wenn er einen FAQ-Abschnitt hat) und ist für die KI-Extraktion formatiert. Keine Plugins. Keine manuelle Konfiguration. So funktioniert die Seite jetzt eben.


Beehiiv raus, nativer Newsletter rein

Das überraschte mich. Ich hatte einen funktionierenden Newsletter auf Beehiiv. Er sammelte E-Mails. Er schickte Updates. Warum ersetzen?

Drei Gründe:

  1. Kontrolle — Ich wollte interessenbasierte Abonnements. "KI & Technologie"-Abonnenten sollten keine Nationalparks-Inhalte erhalten. Beehiivs kostenloser Tarif unterstützte das nicht.
  2. Integration — Meine Abonnentendaten leben jetzt in derselben Supabase-Datenbank wie Sydneys Suchindex. Eine einzige Wahrheitsquelle.
  3. Kosten — Supabase (kostenloser Tarif) + Resend (kostenloser Tarif für geringes Volumen) = 0 €/Monat.

Das System, das ich aufgebaut habe:

  • Double Opt-In — abonnieren → Bestätigungs-E-Mail → bestätigt → Willkommens-E-Mail mit personalisierten Empfehlungen
  • 5 Interessengruppen — KI, Expat-Leben, Führung, Marketing, Reise & Nationalparks
  • Smart Matching — Beitragskategorien werden automatisch Abonnenteninteressen zugeordnet. Wenn ich einen Kreditkarten-Leitfaden veröffentliche, werden nur "Expat-Leben"-Abonnenten benachrichtigt.
  • Täglicher Cron — Vercel führt einen Job um 11 Uhr PST aus, findet Beiträge der letzten 48 Stunden, sendet gezielte Benachrichtigungen
  • Deduplizierungnotification_log-Tabelle verhindert doppelte E-Mails, für immer

Das Beste daran? Das Abonnement-Formular am Ende jedes Blog-Beitrags wählt automatisch das relevante Interesse basierend auf der Kategorie des Beitrags vor. Liest du einen KI-Artikel? Die "KI & Technologie"-Pille ist vorausgewählt, wenn du nach unten scrollst, um zu abonnieren.

Dieses von Grund auf neu zu bauen klingt nach viel Arbeit. Es war etwa ein Abend fokussierter Arbeit. Das Supabase-Migrations-, API-Routen-, E-Mail-Vorlagen- und Cron-Job-Scaffolding — Claude Code übernahm das Gerüst, während ich mich auf die Logik und den Text konzentrierte.


Sicherheit: Unsichtbar, bis du sie brauchst

Mit einem öffentlich zugänglichen KI-Chatbot und einer Newsletter-Anmeldung hatte ich zwei Endpunkte, die Bots gerne missbrauchen. Rate Limiting war bereits vorhanden (Upstash Redis, 5 Anfragen pro Minute), aber ich wollte eine zweite Schicht.

Hier kommt Cloudflare Turnstile — ein unsichtbares CAPTCHA, das nur dann eine Herausforderung anzeigt, wenn es verdächtige Aktivitäten vermutet. Für 99% der echten Besucher ist es völlig unsichtbar. Für Bots? Es ist eine Mauer.

Ich fügte es zuerst dem /ask-Endpunkt (Sydney Chat) hinzu, dann verwendete ich genau dasselbe Muster für /api/subscribe wieder. Dieselbe Verifizierungsbibliothek, dieselbe elegante Degradierung:

  • Keine konfigurierten Umgebungsvariablen → Bypass (lokale Entwicklung funktioniert ohne)
  • Cloudflare-API ist ausgefallen → Fail-Open (Rate Limiter ist der Fallback)
  • Token fehlt, aber geheimer Schlüssel ist gesetzt → Ablehnen (fängt Bots ab, die das Frontend umgehen)

Die Wiederverwendung macht dies zu einer Zinseszins-Geschichte. Die Turnstile-Integration für den Newsletter dauerte Minuten, nicht Stunden, weil die Infrastruktur bereits von Sydney aus vorhanden war.


Der Zinseszinseffekt

Das ist, was ich nicht geplant hatte, aber natürlich geschah:

Migration zu Next.js (1.–5. Feb)
  └─→ MDX-Dateien ermöglichen Claude Code, Inhalte in großem Maßstab zu lesen/modifizieren
       └─→ 6 Mega-Leitfäden mit SEO/AEO-Optimierung geschrieben (6.–11. Feb)
            └─→ Neue Inhalte enthüllen Sydneys Suchqualitätsprobleme
                 └─→ RAG-Eval-Framework aufgebaut, Sydney optimiert (11. Feb)
                      └─→ Mehr Inhalt braucht einen Newsletter (nicht Beehiiv)
                           └─→ Nativer Newsletter auf Supabase aufgebaut (12. Feb)
                                └─→ Öffentliche Endpunkte brauchen Bot-Schutz
                                     └─→ Turnstile zu Sydney + Subscribe hinzugefügt (12.–13. Feb)

Keines davon war als Sequenz geplant. Jedes offenbarte den nächsten Bedarf. Die Migration machte die Inhaltserstellung schnell. Schnelle Inhaltserstellung enthüllte Suchqualitätslücken. Die Behebung der Suche ließ mich eine bessere Verteilung wünschen. Bessere Verteilung brauchte Schutz.

Das ist Zinseszins. Jede Verbesserung fügt nicht nur Wert hinzu — sie multipliziert den Wert von allem, was davor kam. :)

Und der gemeinsame Faden durch all das? Jeder Teil meiner Seite ist jetzt Code, der programmatisch gelesen, getestet und modifiziert werden kann. Das ist das eigentliche Unlock.


Die Zahlen

Weil ich weiß, dass du dich das fragst:

MetrikWert
Tage seit der Migration8
Neue Blog-Beiträge7 (einschließlich diesem)
Neue Funktionen veröffentlicht6 (Newsletter, Turnstile ×2, RAG-Eval, SEO-Stack, PhotoGallery)
Aktualisierte Blog-Beiträge12+ (Cross-Linking, fehlerhafte Link-Korrekturen)
Hinzugefügte Code-Zeilen~5.600
Hinzugefügte Datenbanktabellen2 (subscribers, notification_log)
Hinzugefügte API-Endpunkte4 (subscribe, verify, unsubscribe, cron)
Kostenanstieg0 €/Monat (alle kostenlosen Tarife)

Was als nächstes kommt

Ich bin noch nicht fertig. Der Zinseszins hat nicht aufgehört:

  • Mehr Expat-Leitfäden — Steuerstrategie, Visum-Zeitpläne, Bankvergleiche. Die Serie hat Potenzial.
  • Sydney wird klüger — jetzt, da ich Qualität messen kann, möchte ich die Trefferrate über 90% bringen.
  • Mehr Tiefen-Analysen zum Bauen mit KI — die Tools entwickeln sich wöchentlich weiter. Ich dokumentiere, während ich vorgehe. (Neuestes: eine native iOS-App ohne Swift-Kenntnisse bauen und entdecken, dass die KI dich 60% des Weges bringt — die letzten 40% sind der Bereich, in dem das Produkt tatsächlich lebt.)

Aber ehrlich gesagt? Ich bin hauptsächlich einfach gespannt, weiterzuschreiben. Zum ersten Mal in 17 Jahren Bloggen macht das Veröffentlichen eines neuen Beitrags wirklich Spaß — keine 45-minütige WordPress-Aufgabe. :D

Hast du diesen Zinseszinseffekt nach einer Migration oder einer großen technischen Entscheidung erlebt? Ich bin neugierig — was war das erste unerwartete Unlock, das dich überrascht hat?

Viele Grüße,

Chandler


Häufig gestellte Fragen

Was ist der Zinseszinseffekt in der Website-Entwicklung?

Der Zinseszinseffekt entsteht, wenn jede Verbesserung an deiner Website die nächste Verbesserung schneller und einfacher macht. Zum Beispiel ermöglichte die Migration zu einem code-basierten Stack KI-gestützte Inhaltserstellung, die Suchqualitätsprobleme enthüllte, was zum Aufbau eines Evaluierungs-Frameworks führte. Jeder Schritt baute auf dem vorherigen auf.

Wie optimierst du Blog-Beiträge für KI-Suchmaschinen?

KI-Suchmaschinen bevorzugen strukturierten, antwort-zuerst-Inhalt mit klaren Überschriften und prägnanten Abschnitten. Wichtige Techniken umfassen: fette Definitions-Aussagen in den ersten 150 Wörtern, fragen-Format H2-Überschriften, Vergleichstabellen, 120–180 Wort-Abschnitte und FAQ-Schemata. Diese Muster erhalten bis zu 340% mehr KI-Zitierungen.

Was ist ein RAG-Evaluierungs-Framework?

Ein RAG-Evaluierungs-Framework testet, wie gut dein KI-Assistent relevante Inhalte findet und zurückgibt. Es verwendet vordefinierte Anfragen mit erwarteten Ergebnissen (Ground Truth) und misst Metriken wie Trefferrate, Präzision und zeitliche Diversität. Damit kannst du deine Sucheinstellungen systematisch optimieren, anstatt zu raten.

Warum Beehiiv durch ein benutzerdefiniertes Newsletter-System ersetzen?

Ein benutzerdefiniertes Newsletter-System gibt dir volle Kontrolle über Abonnentendaten, interessenbasiertes Targeting und Integration mit deiner bestehenden Datenbank. Durch den Aufbau auf Supabase + Resend erhielt ich interessenbasierte Abonnements, automatisierte Benachrichtigungen und 0 €/Monat Hosting — alles integriert mit Sydneys Suchindex.

Wie unterscheidet sich Cloudflare Turnstile von traditionellen CAPTCHAs?

Cloudflare Turnstile ist ein unsichtbares Bot-Erkennungssystem, das verdächtigen Besuchern nur Herausforderungen anzeigt. Im Gegensatz zu traditionellen CAPTCHAs, die jeden Benutzer Rätsel lösen lassen, läuft Turnstile für legitime Benutzer still im Hintergrund. Es verwendet Browser-Signale, um Bots zu erkennen, ohne die Benutzererfahrung zu unterbrechen.


Noch am Coden, noch am Lernen, noch dabei, den Zinseszins wachsen zu sehen.

Weiterlesen

Mein Weg
Vernetzen
Sprache
Einstellungen