Topics

Implementierung der Website-Suche für mehrsprachige Seiten mit Cloudflare AI Search

  • column

Wir haben dies auf unserer eigenen Website umgesetzt, die aus Astro SSG und einem Headless CMS besteht.
Die Einrichtung selbst war recht einfach, doch da unsere Website mehrsprachig aufgebaut ist, gab es einige Stolpersteine.

Was ist Cloudflare AI Search?

Der frühere Name lautete AutoRAG; im September 2025 wurde er umbenannt. Viele Artikel in den Suchergebnissen beziehen sich noch auf den alten Namen und die alte API, daher ist hier Vorsicht geboten.

Dies sind die Schritte, die übernommen werden.

Crawling → Umwandlung in Markdown → Aufteilung in Chunks → Einbettung → Aufbau eines Vektor- und Keyword-Index

Die API bietet zwei Varianten. Die eine gibt eine Liste der Suchergebnisse zurück (search), die andere generiert mit RAG eine Antwort (chat/completions). Wir verwenden in diesem Beitrag nur die erste.

Wichtige Konfigurationspunkte

Erstellen Sie die Instanz wie folgt.

  • Wählen Sie als Datenquelle WebCrawl aus
  • Öffentliche URL als Crawl-Ziel
  • Analysetyp: Sitemap
  • Content-Selektor: main-Element angeben
  • Analysemodus: Statische Website
  • Bestimmte Sitemap angeben: sitemap.xml
  • Setzen Sie als Embedding-Modell @cf/baai/bge-m3 (da es sich um eine japanische Website handelt).

Ansonsten sind die Standardeinstellungen in der Regel problemlos.

Authentifizierung und Umgebungsvariablen

Erstellen Sie ein API-Token über Ihr Konto.
Zu beachten ist, dass nicht nur "AI Search: Lesen" erforderlich ist, sondern auch "Bearbeiten" und "Ausführen".
Das erstellte Token wird über die Umgebungsvariable AI_SEARCH_TOKEN eingelesen.

Aufbau: 1 API-Route + 1 Komponente

Die Suche ruft über eine API-Route von Astro (die als Pages Function läuft) die REST API auf. Da sich das API-Token nicht im Browser offenlegen lässt, ist ein serverseitiger Proxy zwingend erforderlich. Da Pages Functions keine Bindung für AI Search bieten, wird statt des SDK ein einfacher fetch-Aufruf verwendet.

// Astro の API ルート(Pages Functions として動く)
const res = await fetch(
  `https://api.cloudflare.com/client/v4/accounts/${id}/ai-search/instances/${name}/search`,
  {
    method: 'POST',
    headers: { Authorization: `Bearer ${token}` },
    body: JSON.stringify({
      query,
      ai_search_options: {
        retrieval: {
          retrieval_type: 'hybrid',
          max_num_results: 50
        },
      },
    }),
  }
);

Umgesetzt wurden lediglich zwei Dateien: eine API-Route und eine Such-UI-Komponente. Als nachträgliche Ergänzung zu einer SSG-Website hielt sich der Aufwand damit in engen Grenzen.

Auf mehrsprachigen Websites die Suche auf die angezeigte Sprache beschränken

Bei einer gewöhnlichen Website-Suche reicht das aus. Bei mehrsprachigen Websites liest die Suche jedoch die sitemap.xml mit allen Sprachen aus, sodass sich Ergebnisse aus unterschiedlichen Sprachen vermischen.

Die Lösung besteht darin, ein benutzerdefiniertes Metadatum locale zu definieren und bei der Suche mit filters darauf zu filtern. Dadurch werden nur noch Ergebnisse in der aktuell angezeigten Sprache ausgegeben.
Hinweis: Die Sprache lässt sich weder über das lang-Attribut im HTML noch über og:locale zuverlässig bestimmen, daher ist hier Vorsicht geboten.

<meta name="locale" content="ja_JP">

SEO-Sitemap und Such-Sitemap trennen

AI Search (Website-Datenquelle) crawlt über die Sitemap.

Die öffentliche Sitemap unserer Website hatte jedoch aus SEO-Gründen einige Sprachen bewusst ausgeschlossen. Die Folge: In diesen Sprachen lieferte die Suche stets 0 Ergebnisse.

Da die Sitemap mit @astrojs/sitemap generiert wird, habe ich mich für einen Ansatz entschieden, bei dem eine separate Sitemap mit allen Sprachen für die Suche ausgegeben wird.

Wie die Suchergebnisse angeordnet werden

Das weicht ziemlich von der Vorstellung ab, die man beim Begriff "AI-Suche" hat.

AI Search teilt japanischen Text in Abschnitte (Chunks) von etwa 300 bis 450 Zeichen auf.
Bis zu 50 passende Chunks werden ausgewählt, und die Seiten, die diese enthalten, erscheinen als Ergebnisse.
Seiten mit Chunks, die als besonders relevant eingestuft wurden, stehen weiter oben. Da mehrere Chunks von einer einzigen Seite stammen können, fällt die Anzahl der Suchtreffer niedriger aus als 50.

Die Zusammenführung der Ergebnisse auf Seitenebene erfolgt im Frontend. Bei diesem gesamten Ablauf wird übrigens kein einziges Mal generative KI ausgeführt.

Fazit

Voraussetzung für den Einsatz ist, dass die DNS-Zone der Domain bei Cloudflare liegt und der Betrieb über Pages / Workers erfolgt. Die Implementierung ist jedoch unkompliziert, und für eine einfache Website-Suche dürfte sie sehr gut geeignet sein.

Umgekehrt gilt: Wenn man die Suche nachträglich hinzufügen möchte, ohne die Infrastruktur anzufassen, oder wenn alle Inhalte aufgelistet werden sollen, oder wenn Verwaltungsfunktionen für Betreiber wie Suchprotokoll-Analysen, Vorschläge und Synonymwörterbücher benötigt werden, ist das klassische ASP-basierte Modell klar im Vorteil.

Für ein ASP ist der Aufwand allerdings zu hoch, die Suche wird aber dennoch gewünscht. Für Websites dieser Größenordnung ist dies meiner Ansicht nach eine sehr passende Option.

Über den Autor

Vom DTP in die Webwelt: Heute beherrscht er Markup, Frontend, Projektleitung und Barrierefreiheit gleichermaßen – ein wahrer "Techniker-Guru". Seit den Anfängen von Liberogic vielseitig im Einsatz und heute eine lebende Enzyklopädie im Team. Derzeit tüftelt er mit großer Begeisterung an effizienteren Abläufen durch gezielte Prompts – etwa mit der Frage: "Können wir bei der Barrierefreiheit nicht mehr auf KI setzen?" Technik und Denkweise entwickeln sich weiter.

Ayumu Futamata

IAAP-zertifizierter Web Accessibility Specialist (WAS) / Markup-Entwickler / Frontend-Entwickler / Webdirektor

Artikel dieses Teammitglieds ansehen

Verlässliches Team und schnelle Reaktionsfähigkeit sind unsere Stärken

Bei Liberogic werden wir von unseren Kunden hoch geschätzt, da unsere erfahrenen Mitarbeiter Projekte proaktiv vorantreiben.
Wir achten darauf, Projektmanager und Direktoren gezielt einzusetzen, damit das gesamte Projekt reibungslos verläuft. Um unnötige Kostensteigerungen durch Vollzeitbindung zu vermeiden, verteilen wir Ressourcen passgenau. Zudem sind wir für unsere Geschwindigkeit bekannt, vom Verständnis der Anforderungen bis zur Erstellung und Einreichung von Angeboten.

Hinweis: Wir bieten keine SES-typischen Vor-Ort-Einsätze an. Wir bitten um Ihr Verständnis.

Sie können nahezu alle gängigen Tools für Projektmanagement und Chat nutzen, darunter Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex und viele weitere.

Sprechen Sie uns gerne auf Ihre Herausforderungen im Web an.

Fallstudien