Wunderlandmedia

AI-Visibility-Tools kosten 399 Dollar im Monat für drei API-Calls. Hier ist der Prompt für deinen eigenen.

Profound nimmt 399 Dollar im Monat. Ich habe das Gleiche in mein Client-Dashboard gebaut, für rund 8 Dollar. Teardown, Build-Prompt und der ehrliche Haken.

Kemal Esensoy·aktualisiert am August 25, 2026

AI-Visibility-Tools kosten 399 Dollar im Monat für drei API-Calls. Hier ist der Prompt für deinen eigenen.
Künstliche Intelligenz

Im Februar 2026 hat ein Unternehmen namens Profound 96 Millionen Dollar bei einer Bewertung von einer Milliarde eingesammelt. Lightspeed hat die Runde angeführt, Sequoia und Kleiner Perkins waren dabei. Damit stehen sie bei 154,5 Millionen Dollar in rund achtzehn Monaten, eine der schnellsten Finanzierungsserien, die Enterprise-Martech je gesehen hat. Über 700 Unternehmen als Kunden, mehr als 10 Prozent der Fortune 500. Target, Figma, Walmart, Ramp, MongoDB.

Das Produkt stellt ChatGPT eine Liste von Fragen und zählt, wie oft dein Markenname in der Antwort auftaucht.

Das ist nicht zynisch gemeint. So sieht die Sache tatsächlich aus, und ich weiß das, weil ich genau dasselbe in das Client-Dashboard gebaut habe, das ich betreibe. Drei API-Calls, etwas String-Matching, ein paar Charts. Der Betrieb kostet weniger als ein belegtes Brötchen im Monat, und meine Kunden bekommen es umsonst.

Es gibt genau eine Sache, die die teuren Tools können und meins nicht, und die ist nicht klein. Dazu komme ich, denn wenn ich sie weglasse, ist dieser Text nur noch eine weitere GEO-Schlangenöl-Tirade. Und ich wäre lieber nützlich als überheblich.

Was ein AI-Visibility-Tool tatsächlich macht

Zieh das Marketing ab, und es bleiben vier Schichten.

Poll. Für jede Query, die dich interessiert, stellst du jeder AI-Plattform die Frage, die ein echter Kunde tippen würde. Detect. Du durchsuchst den Antworttext nach deinem Markennamen und denen deiner Wettbewerber. Aggregate. Du zählst, wie oft du aufgetaucht bist, aufgeschlüsselt nach Plattform und Query, im Vergleich zur Vorperiode. Render. Ein paar KPIs, eine Share-of-Voice-Aufschlüsselung, eine Tabelle mit den letzten Polls zum Reinklicken.

Das ist das Produkt. Komplett.

In meinem Dashboard sind das poll.service.ts, detector.ts, aggregate.service.ts und pro Plattform eine kleine Datei im Ordner providers/. Rund 1.600 Zeilen TypeScript fürs Backend, weitere 1.100 für die UI. Das war keine Stunde Arbeit, sondern ein Wochenende plus ein paar Abende, und die meiste Zeit ging für etwas drauf, das du nicht erraten würdest.

Das Ganze sind drei API-Calls

Hier sind sie, mit den echten Model-IDs, denn vage Architekturdiagramme helfen niemandem.

Drei API-Verbindungen führen in einen kleinen selbstgebauten AI Visibility Tracker

ChatGPT läuft über gpt-4o-mini-search-preview mit der Chat Completions API. Ein Stolperstein hat mich einen Abend gekostet: Die *-search-preview-Varianten unterstützen OpenAIs Responses API nicht, und genau die ist in @ai-sdk/openai v4 der Standardweg für openai('model-id'). Du musst den Chat-Weg mit openai.chat(MODEL_ID) erzwingen, sonst scheitert der Call einfach. Ein natives Citation-Feld gibt es auch nicht, also fischst du die URLs per Regex aus dem Antworttext und schneidest die Satzzeichen am Ende ab.

Perplexity ist das Model sonar unter https://api.perplexity.ai/chat/completions. Ein OpenAI-kompatibler Endpoint, der dir native Citations als citations[]-Array liefert. Mit Abstand der sauberste der drei.

Google AI Overview hat gar keine API, also scrapst du es über die Google-Engine von SerpAPI und liest den ai_overview-Block. Der Stolperstein hier ist subtiler und wichtig: Google zeigt eine AI Overview nur bei bestimmten Query-Intents, meistens bei informationalen Fragen und nicht bei lokaler Navigation. Wenn der Block fehlt, ist das kein Fehler. Es wurde nichts angezeigt, also wurde deine Marke nicht erwähnt, und das ist ein völlig valider Datenpunkt. Verbuchst du es als Error, meldet dein Dashboard plötzlich Fehler, die nie passiert sind.

Jeder Provider ist eine Datei mit 60 bis 140 Zeilen hinter einem gemeinsamen Interface: ein Plattformname, ein isAvailable()-Check für den API-Key und eine poll(query, language)-Funktion. Mehr Integrationsarbeit ist es nicht.

Was der Betrieb wirklich kostet

Rechnen wir das durch, statt zu raten. Zwanzig getrackte Queries, drei Versuche pro Query, zwei Plattformen, wöchentlich. Das sind 480 Polls im Monat.

Vergleich einer monatlichen AI-Visibility-Rechnung mit ein paar Dollar API-Kosten

Position Rechnung Kosten
OpenAI Web-Search-Gebühr 240 Calls zu 25 $ pro 1.000 6,00 $
OpenAI Output-Tokens ~192k zu 0,60 $ pro 1M 0,12 $
Perplexity Search-Gebühr 240 Requests zu 5 $ pro 1.000 1,20 $
Perplexity Output-Tokens ~192k zu 2,50 $ pro 1M 0,48 $
SerpAPI 240 Suchen, Free Tier deckt 250 0,00 $
Gesamt ~7,80 $

Ein ehrlicher Vorbehalt: Diese Zahl ist Arithmetik auf Basis der veröffentlichten Listenpreise, kein Screenshot meiner Rechnung. Ich habe sie nicht gegen meine tatsächlichen OpenAI- und Perplexity-Abrechnungen abgeglichen. Nimm sie als richtige Größenordnung, nicht als Evangelium.

Jetzt die andere Spalte. Profound Starter kostet 99 Dollar im Monat bei jährlicher Zahlung und gibt dir nur ChatGPT, 50 Prompts, einen Seat. Growth liegt bei 399 Dollar im Monat für drei Engines, 100 Prompts, drei Seats. Enterprise ist Custom mit bis zu neun Plattformen. Peec AI liegt bei rund 89 Euro im Monat. Otterly bewegt sich zwischen 29 und 489 Dollar je nach Tier.

Achte darauf, welche Position dominiert. OpenAIs 25 Dollar pro 1.000 Search-Calls machen rund 80 Prozent meiner Summe aus, nichts anderes kommt in die Nähe. Der Hebel für deine Kosten ist also Versuche pro Query mal Frequenz, nicht die Wahl des Frameworks. Doppelte Polling-Frequenz, doppelte Rechnung. Das ist das komplette Kostenmodell.

Dasselbe Muster wie bei allem, was ich selbst hoste statt zu abonnieren. Die Rechenleistung ist billig. Bezahlt wird das Interface drumherum.

Der wirklich schwierige Teil sind nicht die API-Calls

Alles Schwierige an diesem Projekt steckt in einer Datei, detector.ts, und nichts davon ist HTTP.

Lupe findet einen Markennamen versteckt in einem längeren Wort im AI-Antworttext

Fang mit der naiven Variante an: Enthält der Antworttext meinen Markennamen? Und jetzt schau zu, wie sie bricht.

Das Model schreibt deinen Namen mit einem erfundenen Umlaut oder einem Diakritikum, das identisch aussieht, aber ein anderer Codepoint ist. Kein Treffer. Also normalisierst du zuerst mit NFKD und entfernst die kombinierenden Zeichen, und plötzlich matchen auch akzentuierte Schreibweisen.

Dann trackst du einen Kunden namens Apple, und dein Matcher findet ihn fröhlich mitten in "Pineapple". Du brauchst Wortgrenzen-Checks, und \b in JavaScript ist nicht Unicode-fähig, also prüfst du die Zeichen links und rechts vom Treffer selbst.

Dann trackst du "Wunderland Media", und jeder Treffer feuert doppelt: einmal für die ganze Phrase, einmal für das "Wunderland" darin. Lösung: Terme nach Länge absteigend sortieren und getroffene Zeichenbereiche als belegt markieren, damit ein kürzerer Term nicht innerhalb eines längeren nochmal feuert.

Und dann das, was diese ganze Kategorie rutschig macht. LLMs beantworten dieselbe Frage nicht zweimal gleich. Ein einzelner Poll ist Rauschen im Datenpunkt-Kostüm. Mein Runner macht drei Versuche pro Query und Plattform, und das Ergebnis ist eine Erwähnungsrate, ein Bruchteil, nie ein Ja oder Nein. Wenn dir ein Tool einen grünen Haken mit "du bist sichtbar" zeigt, frag nach, wie oft gefragt wurde.

Zwei kleinere Lektionen, die mich echte Debugging-Zeit gekostet haben. Lass niemals einen Provider-Fehler den ganzen Run abbrechen: abfangen, Zeile mit Fehlermeldung schreiben, weitermachen. Und schreib die Ergebnisse pro Query statt in einem Batch am Ende, damit Teilergebnisse überleben, wenn der Prozess auf halber Strecke stirbt.

Nichts davon ist schwer im Sinne von "dafür braucht man einen Doktortitel". Es ist schwer im Sinne von: Du machst es beim ersten Mal falsch, und dein Dashboard meldet selbstbewusst falsche Zahlen, während alles völlig in Ordnung aussieht.

Der Prompt: Bau dir deinen heute Abend

Leg einen Ordner an. Öffne ihn in VS Code oder Cursor. Starte claude. Füg das hier ein. Es stellt dir eine Frage zum gewünschten Stack und baut dann das Ding. Du lieferst die API-Keys, fertig.

Ich lasse Claude Code solche Specs gern in einem Rutsch abarbeiten, so wie damals beim kompletten Umbau eines Wochenendprojekts. Der Trick ist nicht Cleverness, sondern Präzision bei den Stellen, die kaputtgehen.

Der Prompt bleibt bewusst auf Englisch. Die Model-IDs, Feldnamen und API-Begriffe sind ohnehin englisch, und gemischte Sprache macht solche Specs unnötig unscharf.

Build me a self-hosted AI visibility tracker.

What it does: for a list of queries I care about, it asks several AI platforms
the question, checks whether my brand and my competitors get mentioned in the
answer, stores every result, and shows me the trend over time.

Before you write any code, ask me one question: which stack do I want. Offer
Python + SQLite + a simple web UI, Next.js + SQLite/Postgres, or Vite + React
with a small Node backend. Pick sensible defaults for everything else and do
not ask me anything further.

Config I provide in a .env file:
- OPENAI_API_KEY (required)
- PERPLEXITY_API_KEY (optional)
- SERPAPI_KEY (optional, for Google AI Overview)
Skip any platform whose key is missing instead of crashing. Log which
platforms you skipped.

Config I provide in a config file: my brand terms (a list of strings,
including common misspellings), my competitor names (a list of strings), and
my tracked queries (each with the query text and a language code).

Providers, one module each behind a shared interface with platform,
isAvailable() and poll(query, language):

1. ChatGPT: model gpt-4o-mini-search-preview via the Chat Completions API.
   The *-search-preview models do not support the Responses API, so make sure
   you use the chat completions route. There is no native citation field, so
   extract URLs from the response text with a regex and strip trailing
   punctuation.
2. Perplexity: model sonar at https://api.perplexity.ai/chat/completions,
   OpenAI-compatible. Read native citations from the citations array.
3. Google AI Overview: SerpAPI, engine=google, read the ai_overview block. If
   ai_overview is absent, record an empty response WITHOUT an error, because
   Google simply did not show an overview for that query. That is a valid data
   point, not a failure.

System prompt for each provider: answer the user's question directly and
helpfully the way this platform normally would, name specific companies,
products or services where appropriate, cite sources with URLs, and respond in
the requested language.

Polling: for each tracked query, for each available platform, poll 3 times.
LLMs are not deterministic, so one poll is noise. Never let a provider error
abort the run: catch it, store a row with the error message, and keep going.
Persist results per query rather than one batch at the end so partial results
survive an interrupted run.

Detection, and this is the part to get right:
- Case-insensitive.
- Normalize with NFKD and strip combining marks so an accented spelling still
  matches.
- Collapse whitespace so multi-word terms match as phrases.
- Respect word boundaries with Unicode-aware checks so "Apple" does not match
  inside "Pineapple". Do not just use \b.
- Sort terms longest-first and mark matched character ranges as covered so
  "Acme Digital" does not also produce a separate hit for "Acme".
- For every hit, store the term, the character offset, and a ~60-character
  context snippet on each side so I can audit it.

Storage: one row per poll with query text, language, platform, model name,
timestamp, brand_found boolean, brand mentions as JSON, competitor mentions as
JSON, cited URLs as JSON, the full response text, token count, and error
message. Give every run a shared run id.

Dashboard: overall brand mention rate for the period with the change versus the
previous period, a per-platform breakdown, a per-query breakdown sorted
worst-first, competitor share of voice, and a table of recent polls where I can
click through to the raw response text. Mention rate is brand_found divided by
total polls, expressed as a percentage.

Also give me: a single command to run a poll cycle, a README with setup steps
and an honest note on what each API call costs at current list prices, and a
scheduler example (cron or equivalent) for a weekly run.

Do not add authentication, multi-tenancy, billing, or a landing page. This is a
tool for one person tracking their own brand.

Das war es. Wenn du dir deinen eigenen AI Visibility Tracker bauen willst, sind dieser Prompt plus drei API-Keys die komplette Einstiegshürde.

Und jetzt muss ich ehrlich sein: Mein Tool liegt auch falsch

Surfer SEO hat 1.000 Prompt-Durchläufe pro Szenario gefahren und verglichen, was die APIs zurückgeben, mit dem, was die echten ChatGPT- und Perplexity-Oberflächen echten Menschen zeigen. Das Ergebnis ist schlecht für jeden, der Sichtbarkeit über eine API misst, und das schließt mich ein.

Dieselbe Frage von einer AI-API und der echten Chat-Oberfläche unterschiedlich beantwortet

ChatGPT-Antworten über die API kamen im Schnitt auf 406 Wörter. Die gescrapte Oberfläche auf 743. Rund 25 Prozent der API-Antworten enthielten überhaupt keine Quellen, während die gescrapten immer welche hatten. Etwa 23 Prozent der API-Antworten haben nie eine Websuche ausgelöst. Die Markenerkennung scheiterte bei rund 8 Prozent der API-Ergebnisse und bei keinem einzigen gescrapten.

Und dann die zwei Zahlen, die wirklich wehtun. Überschneidung bei den Marken zwischen beiden Methoden: 24 Prozent. Bei den Quellen: 4 Prozent.

Perplexity ist besser, aber nicht gut. API-Antworten im Schnitt 332 Wörter gegen 433 gescrapt, rund 7 Quellen gegen 10, mit 8 Prozent Quellenüberschneidung.

Ihr Data Scientist formuliert es unmissverständlich: "Diese Unterschiede sind so deutlich, dass es schlicht falsch ist, API-Antworten als Stellvertreter für deine AI-Sichtbarkeit zu beobachten."

Er hat recht, und er beschreibt mein Dashboard.

Der Grund ist strukturell. Die API ist das rohe Model. ChatGPT als Produkt legt einen eigenen System-Prompt darüber, eigenes Retrieval, Memory und einen Haufen Interface-Logik. Gleiche Model-ID, anderes Tier. Ich habe schon mal darüber geschrieben, wonach ChatGPT im Hintergrund tatsächlich sucht, und hier zeigt sich dieselbe Lücke von der anderen Seite.

Wofür sind die 399 Dollar also da? Für Scraping-Infrastruktur gegen die echten Produktoberflächen, im großen Maßstab, dauerhaft gepflegt gegen ständige UI-Änderungen. Das ist ernsthaft schwer, ernsthaft teuer im Betrieb, und genau der Teil, den ich nicht gebaut habe. Wer dir erzählt, die ganze Kategorie sei Betrug, hat diese Studie auch nicht gelesen.

Selbst bauen oder kaufen?

Bau es selbst, wenn du allein oder eine kleine Agentur bist, eine Marke oder eine Handvoll trackst, eine Richtungsanzeige statt einer belastbaren Messung brauchst und ohnehin etwas betreibst, wo du es reinhängen kannst.

Kauf es, wenn du Zahlen brauchst, die dem entsprechen, was Kunden in der echten Oberfläche sehen, wenn du historische Baselines und Branchen-Benchmarks brauchst, die du selbst nicht erzeugen kannst, wenn du Referral-Analytics aus deinen Logs oder deinem CDN willst, oder wenn du an einen Beirat berichtest, der irgendwann fragt, wer diese Zahl eigentlich prüft.

Der Mittelweg, den ich tatsächlich empfehle: Bau es zuerst. Lass es ein Quartal laufen. Und finde dann heraus, ob überhaupt jemand in deinem Unternehmen jemals auf die Zahl reagiert.

Die meisten schauen zweimal drauf und hören dann auf. Das für acht Dollar zu lernen ist deutlich billiger als für 4.788 Dollar im Jahr.

Was ich mit der Zahl wirklich machen würde

Tracking ist Diagnose, keine Behandlung. Eine Erwähnungsrate sagt dir, dass du unsichtbar bist. Sie sagt dir nicht, warum, und behebt es ganz sicher nicht.

Mein Dashboard hat eine zweite Hälfte, die mehr Arbeit leistet als die Charts. Sie crawlt die Kundenseite und die Wettbewerberseite, die stattdessen zitiert wird, und erzeugt daraus einen strukturierten Vergleich: Themen, die der Wettbewerber abdeckt und der Kunde nicht, strukturelle Signale, die Modelle offenbar bevorzugen (FAQ-Blöcke, Schema-Markup, Testimonials, klar benannte Leistungen, Team-Bios, transparente Preise), und Services, die der Wettbewerber sichtbar anbietet. Dieser Output ist die eigentliche Arbeitsliste. Der Sichtbarkeitsprozentsatz ist nur das, was dir sagt, dass du hinschauen sollst.

Wenn dich die Strategie mehr interessiert als die Technik: Ich habe aufgeschrieben, was eine Studie mit 1,4 Millionen Prompts über Zitate bei ChatGPT herausgefunden hat und wie du steuerst, was AI über deine Marke sagt. Das sind die Teile, die die Zahl bewegen.

Und damit sind wir bei dem, was mich an dieser Kategorie stört. Das Tool ist der billige Teil. Die Korrekturen sind der teure. Und die Branche verkauft es gerade genau andersherum.

Ich betreibe das für meine Kunden als Teil des Dashboards, das sie sowieso haben, weil es sich seltsam angefühlt hätte, drei API-Calls separat abzurechnen. Wenn du lieber jemanden hättest, der die teure Hälfte übernimmt, lass uns reden.

Über den Autor

KE

Kemal Esensoy

Kemal Esensoy, Gründer von Wunderlandmedia, begann seine Karriere als freiberuflicher Webentwickler und Designer. Er führte Web-Design-Kurse mit über 3.000 Studenten durch. Heute leitet er eine preisgekrönte Full-Stack-Agentur, die sich auf Webentwicklung, SEO und digitales Marketing spezialisiert hat.

Eigenen AI Visibility Tracker bauen | Wunderlandmedia