Zum Hauptinhalt springen

Claude Code macht jetzt mein SEO. Und zwar besser als Ahrefs und Semrush zusammen

Wie ich OpenSEO, eine Open-Source-Alternative zu Ahrefs und Semrush, lokal per Docker selbst gehostet habe, mit Claude Code als Setup-Assistent. Kosten, Stolpersteine, und warum sich das für gelegentliche Nutzung klar lohnt.

Tobe
BlogVeröffentlich am 14.08.26, Tobias Lorsbach

Ich brauchte echte Keyword-Daten, nicht mehr geraten. Ahrefs oder Semrush für gelegentliche Recherche zu abonnieren, lohnt sich bei meinem Nutzungsvolumen nicht. Also hab ich mir OpenSEO angeschaut, eine Open-Source-Alternative, MIT-lizenziert, self-hostbar. Den kompletten Aufbau hab ich mit Claude Code als Assistenten gemacht, vom Klonen bis zur ersten echten Abfrage. Hier die Kurzfassung, inklusive der Stellen, wo es geklemmt hat.

Was OpenSEO ist, und was es nicht ist

OpenSEO ist selbst kostenlos und Open Source. Die eigentlichen Daten, Suchvolumen, Backlinks, Rankings, kommen von DataForSEO, einer separaten, kostenpflichtigen API. Die App ist also nur die Oberfläche, bezahlt wird nach Verbrauch bei DataForSEO, nicht für OpenSEO selbst.

Zwei Wege, das zu nutzen:

  • Gehostet bei OpenSEO: ab 10 $/Monat, inklusive 10 $ Nutzungsguthaben, danach 28 % Aufschlag auf jede DataForSEO-Anfrage.
  • Selbst gehostet: die App kostet nichts, DataForSEO wird direkt und ohne Aufschlag bezahlt, per Pay-as-you-go, ohne Abo.

Bei gelegentlicher Nutzung, ein paar hundert Keyword-Abfragen im Monat, sind das gehostet über 120 $ Fixkosten im Jahr plus Aufschlag, selbst gehostet einmalig eine Einzahlung von 50 $ bei DataForSEO, die bei diesem Volumen vermutlich Jahre reicht. Die Rechnung war für mich eindeutig.

Der Aufbau

OpenSEO selbst empfiehlt für den persönlichen Gebrauch explizit Docker auf dem eigenen Rechner, nicht die Cloudflare-Variante, die für Team-Zugriff über das Internet gedacht ist. Die Kurzfassung:

git clone https://github.com/every-app/open-seo.git
cd open-seo
cp .env.example .env
docker compose up -d

Läuft dann unter http://localhost:3001. Wichtig, und in der Doku leicht zu übersehen: ohne explizite Konfiguration erwartet die App standardmäßig Cloudflare Access als Auth-Methode. Für ein rein lokales Setup ohne öffentliches Netz muss in der .env explizit gesetzt werden:

AUTH_MODE=local_noauth

Sonst versucht die App beim Start, sich gegen einen Cloudflare-Team-Domain zu authentifizieren, die es lokal gar nicht gibt.

Die zwei Stolpersteine, die nicht in der Kurzanleitung stehen

DataForSEO braucht eine Account-Verifizierung, bevor die API überhaupt antwortet. Der erste Versuch, ein Keyword zu suchen, endete mit einem generischen “An unexpected error occurred”. Erst ein Blick in die Docker-Logs zeigte den eigentlichen Fehler: Please verify your account before using the API. Die Verifizierung selbst dauert eine Minute im DataForSEO-Dashboard, aber ohne den Blick in die Logs wäre das ein rätselhafter Fehler geblieben.

Google Search Console braucht einen Testnutzer, nicht nur OAuth-Zugangsdaten. Solange die Google-Cloud-App im “Testing”-Status ist, was für ein privates Setup normal ist, dürfen sich nur explizit freigegebene Google-Konten anmelden. Der Fix: In der Google Cloud Console unter “OAuth consent screen” die eigene Mail-Adresse als Test-User eintragen. Ohne diesen Schritt gibt’s einen “Zugriff blockiert”-Fehler, der nichts mit der eigentlichen Konfiguration zu tun hat.

Wo Claude Code den Unterschied gemacht hat

Zwei Dinge liefen anders, als wenn ich das allein gemacht hätte:

Erstens, die Fehlersuche ging über reines Doku-Lesen hinaus. Statt bei “An unexpected error occurred” zu raten, konnte direkt in die laufenden Docker-Logs geschaut werden, der eigentliche Fehler (DataForSEO-Verifizierung) stand da in Klarschrift, nur eben nicht in der Fehlermeldung selbst.

Zweitens, sobald die MCP-Verbindung (claude mcp add --transport http --scope user openseo http://localhost:3001/mcp) stand, waren die SEO-Daten direkt im Chat abfragbar, keine Weiterreiche zwischen Browser-Tab und Terminal mehr. Search-Console-Performance, Keyword-Metriken, Wettbewerber-Rankings, alles direkt nutzbar, um Content-Entscheidungen sofort zu treffen, statt Zahlen erst zu exportieren und dann zu interpretieren.

Fazit

Für gelegentliche Keyword-Recherche ist Self-Hosting hier keine Ideologie-Frage, sondern schlicht die günstigere, genauso funktionierende Option. Der eigentliche Wert von KI-Unterstützung lag dabei weniger im Setup selbst, das ist in 20 Minuten erledigt, sondern darin, zwei nicht-offensichtliche Fehler schnell einzugrenzen, und danach die Daten direkt im Workflow zu haben, statt in einem separaten Tab.

Vibe-Coding 2 Enterprise

Dein Prototyp funktioniert. Ist er auch startklar?

Security, Datenschutz, Barrierefreiheit, Testing, Infrastruktur, das denkt beim Prompten kaum jemand mit. Ich mach deinen KI-gebauten Prototyp bereit für echte Nutzer.

Kommentare

Kommentar schreiben

0 / 5000 Zeichen

* Pflichtfelder

Noch keine Kommentare. Sei der Erste!