> ## Documentation Index
> Fetch the complete documentation index at: https://docs.querying.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Citation Analysis

> KI-Sichtbarkeitsdiagnose pro Prompt: die Suchen einer Engine, die abgerufenen und zitierten Seiten, die in der Antwort genannten Marken und die Seiten dahinter, die Position Ihrer Marke und priorisierte Maßnahmen

Vergleichen Sie eine abgeschlossene KI-Antwort mit den Seiten dahinter. Das Ergebnis zeigt die Suchen, die die Engine
ausgeführt hat, die abgerufenen und die zitierten Seiten, die in der Antwort genannten Marken und die Seiten, die sie
nennen, die Position Ihrer Marke sowie priorisierte Maßnahmen. Außerdem ordnet es die Absätze jeder zitierten Seite den
Teilen der Antwort zu, denen sie entsprechen, mit einer Erklärung für jede Verknüpfung, und fasst zusammen, was die
zitierten Seiten gemeinsam haben.

Es handelt sich um eine nachträgliche Entsprechungsanalyse einer vorhandenen Antwort. Sie beweist nicht, dass eine
Quelle das Modell zu einem Satz veranlasst hat, und bewertet nicht die Qualität einer Seite. Behandeln Sie sie als
Beleg zur Prüfung, nicht als Urteil.

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/citation-analysis \
  -H "Authorization: Bearer $QUERYING_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "answer": "…the AI answer, as raw markdown…",
    "prompt": "best password manager for a small team",
    "engine": "CHATGPT",
    "brand": "1Password",
    "competitors": ["Bitwarden"],
    "citations": [
      { "url": "https://example.com/best-password-managers", "body": "…the page markdown…" },
      { "url": "https://another.example.com/pricing" }
    ]
  }'
```

Pollen Sie `GET /v1/async/task/:id` oder geben Sie beim Einreichen `webhook.url` an; der Task meldet
`taskType: "CITATION_ANALYSIS"`. Reichen Sie diese Analyse nicht über `POST /v1/async/task` ein, sondern nutzen Sie den
eigenen Endpunkt. Die alten Endpunkte `POST /v1/geo-audit`, `POST /v1/source-influence` und `POST /v1/research`, die Task-Typen `GEO_AUDIT`, `SOURCE_INFLUENCE` und `CITATION_ATTRIBUTION` sowie `include.geoAudit`, `include.sourceInfluence` funktionieren weiter; Antworten verwenden immer die neuen Namen.

### Einen bereits ausgeführten Task analysieren

Stammt die Antwort aus dieser API, senden Sie ihre Task-id, statt Antwort und Quellen aus dem Ergebnis zu kopieren:

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/citation-analysis \
  -H "Authorization: Bearer $QUERYING_API_KEY" -H "Content-Type: application/json" \
  -d '{ "taskId": "7c1f…", "brand": "1Password", "competitors": ["Bitwarden"] }'
```

Der Task muss Ihnen gehören, `COMPLETED` sein und über `GET /v1/async/task/:id` noch lesbar sein. Sein Antwort-Markdown
(Text, wenn die Engine kein Markdown geliefert hat) wird zu `answer`, und seine zitierten URLs werden in der
Reihenfolge der Engine zu `citations`: die ersten 100, davon höchstens 10 Diskussionsthreads. Platzhalter für Produkt-
und Videokarten (`googleusercontent.com`-Links) und Google-Suchlinks werden übersprungen, da sie keine lesbare Seite
haben. `prompt`, `country` und Engine des Tasks werden verwendet, sofern Sie sie nicht mitsenden. `taskId` zusammen mit
`answer` oder `citations` zu senden wird mit `400` abgelehnt, ebenso ein unfertiger Task oder einer ohne Antworttext
oder zitierte URL. Eine unbekannte oder abgelaufene Task-id liefert `404`.

### Jede Antwort schon beim Erfassen analysieren

Fügen Sie einer Erfassungsanfrage `include.citationAnalysis: true` hinzu, und die Analyse läuft auf der
Antwort, sobald sie erfasst ist. Das funktioniert mit den Antwort-Engines (`CHATGPT`, `GEMINI`, `PERPLEXITY`, `GOOGLE_AIO`, `GOOGLE_AIMODE`, `NAVER_AI_BRIEF`, `NAVER_AI_TAB`, `BING_SEARCH`, `BING_COPILOT`), in einzelnen
Tasks, Task-Batches, Rastern und `POST /v1/batches`.

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "taskType": "CHATGPT",
    "payload": { "prompt": "best password manager for a small team", "country": "US", "include": { "citationAnalysis": true } },
    "webhook": { "url": "https://example.com/hook" }
  }'
```

Die Analyse liest die Antwort und ihre zitierten URLs genauso wie `taskId` oben. Das Ergebnis der Antwort
enthält dann `response.citationAnalysis`: den Analyse-Task genau so, wie `GET /v1/async/task/:id` ihn
zurückgibt, mit `task`, `credits` und `response` oder `error`.

* **Webhook**: wird einmal gesendet, nachdem die Analyse fertig ist, mit Antwort und Analyse zusammen.
* **Polling**: Der Antwort-Task ist `COMPLETED`, sobald die Antwort bereitsteht. Fragen Sie weiter ab, bis `response.citationAnalysis.task.status` `COMPLETED` oder `FAILED` ist.
* **Batches** sind abgeschlossen, wenn alle Antworten und ihre Analysen fertig sind.
* **Keine Analyse**: Zitiert die Antwort keine lesbare URL, oder decken Ihre Credits oder das Tageslimit des Schlüssels die Reservierung der Analyse nicht, ist `response.citationAnalysis` gleich `{ "error": "…" }` und die Antwort wird sofort zugestellt.
* **Abrechnung**: Die Analyse wird separat nach Verbrauch berechnet, wie jeder Citation-Analysis-Task. Die Abrechnung der Antwort ändert sich nicht. Ein Schlüssel, der auf bestimmte Task-Typen beschränkt ist, muss auch `CITATION_ANALYSIS` erlauben.

## Payload

| Feld | Pflicht | Hinweise |
| - | - | - |
| `taskId` | statt `answer` + `citations` | Ein abgeschlossener Antwort-Task von Ihnen; siehe oben. |
| `answer` | ja, außer bei `taskId` | Ursprüngliches Antwort-Markdown, 1–200.000 Zeichen. Nicht verändern; jeder Bereich ist ein UTF-16-Offset in genau diesem Text. |
| `citations[]` | ja, außer bei `taskId` | Die von der Engine zitierten Seiten und optional Seiten, die sie abgerufen, aber nicht zitiert hat: höchstens 100 zitierte und 50 nicht zitierte, mindestens eine zitierte, höchstens 10 URLs von Diskussionsthreads. |
| `citations[].url` | ja | HTTP(S)-URL, höchstens 2.048 Zeichen. |
| `citations[].body` | nein | Quell-Markdown, höchstens 300.000 Zeichen pro Quelle; der gesamte Anfrage-Body höchstens 1 MiB. Ein mitgelieferter Body wird unverändert analysiert und nie durch einen aktuellen Abruf ersetzt. Ohne Body rufen wir die Seite ab; eine nicht lesbare Seite wird bei dieser Quelle mit `error` gemeldet. |
| `citations[].kind` | nein | `inline` oder `panel`; wird aus den Links der Antwort erkannt, wenn es fehlt. |
| `citations[].cited` | nein | Standard `true`. `false` kennzeichnet eine Seite, die die Engine abgerufen (ein Suchergebnis), aber nicht zitiert hat. |
| `citations[].position` | nein | Ganzzahl ≥ 1: der eigene Rang der Engine für die Seite in ihren Suchergebnissen. |
| `citations[].query` | nein | Die Suche (≤ 500 Zeichen), die die Seite gefunden hat; wird `queries` hinzugefügt, falls sie fehlt. |
| `citations[].citedText[]` | nein | Bis zu 20 Passagen (je ≤ 2.000 Zeichen), die die Engine selbst als zitiert gemeldet hat. |
| `citations[].publishedAt` | nein | Veröffentlichungsdatum, wie von der Engine gemeldet, ≤ 64 Zeichen. |
| `queries[]` | nein | Bis zu 20 Suchen, die die Engine ausgeführt hat, je ≤ 500 Zeichen. |
| `prompt` | nein | Ursprüngliche Frage. |
| `engine` | nein | Die KI-Engine, die die Antwort erzeugt hat. |
| `brand` | nein | Ihr Markenname. Damit enthält das Ergebnis zusätzlich `visibility` und `actions`. |
| `brandDomains[]` | nein | Bis zu 10 Hostnamen der eigenen Websites Ihrer Marke, etwa `coway.com`: nur der Hostname ohne Schema oder Pfad, aus Buchstaben, Ziffern, Punkten und Bindestrichen, höchstens 253 Zeichen. Erfordert `brand`; ohne `brand` gesendet, wird die Anfrage mit `422` abgelehnt. Fehlt `brandDomains`, gilt ein Host, dessen Name den Markennamen enthält, als eigene Website der Marke. |
| `brandAliases[]` | nein | Bis zu 10 weitere Namen Ihrer Marke (Produktlinien, lokale Schreibweisen), je ≤ 200 Zeichen. Erfordert `brand`; ohne `brand` gesendet, wird die Anfrage mit `422` abgelehnt. |
| `competitors[]` | nein | Bis zu 25 Wettbewerbernamen, in `brands` mit der Rolle `competitor` gemeldet. |
| `country` | nein | Land für den Quellenabruf, Standard `US`. |

Mit `taskId` oder `include.citationAnalysis` werden diese Felder aus den Rohdaten der Antwort befüllt. Bei `CHATGPT`
werden die Suchen der Engine zu `queries`, und jede abgerufene Seite wird zu einer Quelle mit `cited`, `position`,
`citedText`, `publishedAt` und `query`; dieselbe URL mit unterschiedlichen Tracking-Parametern wird zusammengeführt.
Bei Google AI Overview sind die Quellen der Übersicht zitiert und organische Ergebnisse außerhalb davon nicht zitiert,
wobei `position` ihren organischen Rang angibt. Andere Engines liefern nur zitierte Quellen.

> [!WARNING]
>
> Eine Anfrage mit `analysis` wird mit `400` abgelehnt. Jeder Ergebnisdatensatz enthält Insights.

## Ergebnis

Vor v4 gespeicherte Ergebnisse behalten ihre frühere Form, ohne `version`-Feld.

```json theme={"theme":"css-variables"}
{
  "version": 4,
  "answer": "For most homes, the Coway Airmega 250 is the best all-round pick. Levoit Core 300 is a strong budget choice, and Blueair Blue Pure 211+ suits large rooms.",
  "queries": [
    { "id": "q0", "text": "best air purifiers 2026 reviews", "sourceIds": ["s0", "s1", "s2"] }
  ],
  "sources": [
    {
      "id": "s0",
      "url": "https://www.example-reviews.com/best-air-purifiers",
      "domain": "example-reviews.com",
      "channel": "editorial",
      "cited": true,
      "position": 1,
      "queryIds": ["q0"],
      "publishedAt": "October 7, 2026",
      "citedText": ["Levoit Core 300 is the best budget purifier we tested."],
      "brandIds": ["b1", "b2"],
      "own": false,
      "paragraphs": [
        { "id": "s0p0", "text": "Levoit Core 300 is the best budget purifier we tested." },
        { "id": "s0p1", "text": "For large rooms, the Blueair Blue Pure 211+ cleared the air fastest." }
      ]
    },
    {
      "id": "s1",
      "url": "https://www.coway.com/airmega-250",
      "domain": "coway.com",
      "channel": "own",
      "cited": false,
      "position": 4,
      "queryIds": ["q0"],
      "publishedAt": null,
      "citedText": [],
      "brandIds": ["b0"],
      "own": true,
      "paragraphs": []
    },
    {
      "id": "s2",
      "url": "https://www.reddit.com/r/AirPurifiers/comments/abc123/budget_pick",
      "domain": "reddit.com",
      "channel": "community",
      "cited": true,
      "position": 6,
      "queryIds": ["q0"],
      "publishedAt": null,
      "citedText": [],
      "brandIds": ["b1"],
      "own": false,
      "paragraphs": [
        { "id": "s2p0", "text": "Two years with the Levoit Core 300 and it is still quiet on sleep mode." }
      ]
    }
  ],
  "brands": [
    { "id": "b0", "name": "Coway", "role": "target", "rank": 1, "answerRanges": [{ "start": 20, "end": 25 }], "citedSourceIds": [], "retrievedSourceIds": ["s1"], "ownSourceIds": ["s1"] },
    { "id": "b1", "name": "Levoit", "role": "competitor", "rank": 2, "answerRanges": [{ "start": 66, "end": 72 }], "citedSourceIds": ["s0", "s2"], "retrievedSourceIds": [], "ownSourceIds": [] },
    { "id": "b2", "name": "Blueair", "role": "answer", "rank": 3, "answerRanges": [{ "start": 113, "end": 120 }], "citedSourceIds": ["s0"], "retrievedSourceIds": [], "ownSourceIds": [] }
  ],
  "links": [
    { "id": "l0", "paragraphId": "s0p0", "answerRanges": [{ "start": 66, "end": 154 }], "explanation": "Names the Levoit Core 300 as the budget pick." },
    { "id": "l1", "paragraphId": "s0p1", "answerRanges": [{ "start": 66, "end": 154 }], "explanation": "Recommends the Blueair Blue Pure 211+ for large rooms." },
    { "id": "l2", "paragraphId": "s2p0", "answerRanges": [{ "start": 66, "end": 154 }], "explanation": "Reports long-term use of the Levoit Core 300." }
  ],
  "visibility": { "brandId": "b0", "stage": "mentioned", "rank": 1, "answerBrands": 3 },
  "actions": [
    {
      "id": "a0",
      "type": "improve_page",
      "control": "owned",
      "priority": 1,
      "summary": "Coway's Airmega 250 page was retrieved for this search but not cited.",
      "steps": [
        "Add a table of room coverage, noise level and yearly filter cost, the criteria the cited review compares.",
        "Show when the specifications were last updated."
      ],
      "sourceIds": ["s1"],
      "brandIds": ["b0"],
      "queryIds": ["q0"],
      "linkIds": []
    },
    {
      "id": "a1",
      "type": "publish_page",
      "control": "owned",
      "priority": 2,
      "summary": "No Coway page was cited for this search; the cited review is a dated buying guide.",
      "steps": [
        "Publish a 2026 air purifier buying guide on coway.com, organized by room size and budget.",
        "Explain how models were compared, show measured results, and name the author and date."
      ],
      "sourceIds": ["s0"],
      "brandIds": ["b0"],
      "queryIds": ["q0"],
      "linkIds": ["l0", "l1"]
    },
    {
      "id": "a2",
      "type": "post_on_platform",
      "control": "platform",
      "priority": 3,
      "summary": "A cited Reddit thread recommends Levoit and never mentions Coway.",
      "steps": [
        "Reply as an identified Coway representative with the Airmega 250 details the thread asks about."
      ],
      "sourceIds": ["s2"],
      "brandIds": ["b1"],
      "queryIds": ["q0"],
      "linkIds": ["l2"]
    },
    {
      "id": "a3",
      "type": "pitch_publisher",
      "control": "outreach",
      "priority": 4,
      "summary": "The top cited review names Levoit and Blueair but not Coway; only its publisher can add the Airmega 250.",
      "steps": [
        "Offer the editors an Airmega 250 for testing.",
        "Send test data for the criteria the review uses: room coverage, noise and filter cost."
      ],
      "sourceIds": ["s0"],
      "brandIds": ["b1", "b2"],
      "queryIds": ["q0"],
      "linkIds": ["l0", "l1"]
    }
  ],
  "insights": [
    { "summary": "Both cited pages recommend Levoit for a budget; the review also backs Blueair for large rooms.", "sourceIds": ["s0", "s2"], "linkIds": ["l0", "l1", "l2"] },
    { "summary": "The answer names Coway first, yet no cited page names it; only its own page, which was not cited, does.", "sourceIds": ["s1"], "linkIds": [] }
  ]
}
```

### `version`

Für diese Form immer `4`.

### `answer`

Die eingereichte Antwort, unverändert. `answerRanges` sind Offsets in genau diesem String: JavaScript-UTF-16-Codeeinheiten,
`start` inklusive, `end` exklusive. Schneiden Sie ihn unverändert aus, mit `answer.slice(start, end)`, statt den Text
neu aufzuteilen. Jeder Bereich in `links[]` bezeichnet eine vollständige Sinneinheit Ihrer Antwort: einen Satz, einen
Listenpunkt oder eine Tabellenzelle. Jeder Bereich in `brands[]` ist der Name genau so, wie er geschrieben steht. Die
Grenzen beziehen sich auf den Originaltext.

### `queries[]`

Die Suchen, die die Engine für diese Antwort ausgeführt hat. Jede hat eine `id`, ihren `text` und `sourceIds`: die
Quellen, die diese Suche gefunden hat. Leer, wenn die Engine keine Suchen offengelegt und Sie keine gesendet haben.

### `sources[]`: ein Eintrag pro Seite

* `id`: undurchsichtige Kennung, eindeutig im Ergebnis.
* `url`: die URL der Seite; `domain`: ihr Host.
* `channel`: wer die Seite kontrolliert, beurteilt anhand ihres Hosts:
  * `own`: die eigene Website Ihrer Marke (genau dann, wenn `own` `true` ist).
  * `brand`: die eigene Website einer anderen im Ergebnis genannten Marke.
  * `editorial`: ein Herausgeber; nur der Herausgeber kann die Seite ändern. Nicht erkannte Hosts werden als
    `editorial` gemeldet.
  * `retailer`: ein Onlineshop oder Marktplatz.
  * `review_platform`: eine Bewertungsplattform für Kunden oder Unternehmen.
  * `community`: ein Forum oder eine Frage-und-Antwort-Website.
  * `video`: eine Videoplattform.
  * `social`: ein soziales Netzwerk.
  * `blog_platform`: ein gehosteter Blogdienst.
  * `reference`: eine Enzyklopädie oder ein Wiki; nie Ziel einer Maßnahme.
* `cited`: `true`, wenn die Antwort die Seite zitiert, `false`, wenn die Engine sie nur abgerufen hat.
* `position`: der eigene Rang der Engine für die Seite, oder `null`, wenn sie keinen angegeben hat.
* `queryIds[]`: die Suchen, die die Seite gefunden haben.
* `publishedAt`: das Veröffentlichungsdatum, wie von der Engine gemeldet, oder `null`.
* `citedText[]`: Passagen, die die Engine selbst als zitiert gemeldet hat; `[]`, wenn keine.
* `brandIds[]`: Marken, die auf der lesbaren Seite, in ihrem Titel oder in `citedText` genannt werden.
* `own`: `true`, wenn die Seite auf der eigenen Website Ihrer Marke liegt.
* `paragraphs[]`: die im Ergebnis enthaltenen Absätze einer zitierten Seite. Jeder hat eine `id` (im gesamten Ergebnis
  eindeutig) und den `text` des Absatzes. Ein Absatz kann auch ohne Verknüpfung enthalten sein. Bei nicht zitierten
  Seiten immer leer.
* `error`: nur vorhanden, wenn die Seite nicht gelesen werden konnte. `paragraphs` ist dann leer, und der String nennt
  kurz den Grund für diese Quelle.

### `brands[]`

Jede Marke, die das Ergebnis verfolgt: Ihre `brand` (`role: "target"`), Ihre `competitors` (`"competitor"`) und
weitere Marken, die die Antwort nennt (`"answer"`).

* `rank`: die Reihenfolge, in der der Markenname zum ersten Mal in der Antwort vorkommt, beginnend bei 1; `null`, wenn die Antwort die Marke nicht nennt.
* `answerRanges[]`: die genauen Stellen, an denen die Antwort die Marke oder einen ihrer Produktnamen nennt, in denselben UTF-16-Offsets; `answer.slice(start, end)` liefert den Namen so, wie er geschrieben steht. Der Abgleich ignoriert Groß- und Kleinschreibung und erfasst ganze Wörter (außer in Schriften ohne Leerzeichen); er umfasst Überschriften und Tabellenzellen, nie Link-URLs oder Bild-Markup. Anders als die Bereiche in `links[]` sind dies keine vollständigen Antworteinheiten.
* `citedSourceIds[]`: zitierte Quellen, deren Seite sie nennt.
* `retrievedSourceIds[]`: nicht zitierte Quellen, deren Seite sie nennt.
* `ownSourceIds[]`: Quellen auf der eigenen Website der Marke; nur für die Zielmarke befüllt.

### `links[]`: eine Beziehung pro Absatz

* `paragraphId`: der Absatz, um den es in dieser Verknüpfung geht. Er zeigt immer auf einen Absatz, der in `sources[]` existiert.
* `answerRanges[]`: die Teile der Antwort, denen dieser Absatz entspricht, als `start`/`end`-Paare in denselben
  UTF-16-Offsets. Eine Verknüpfung kann mehrere Bereiche haben; derselbe Antworttext wiederholt sich nicht zwischen
  ihnen. Jeder Bereich ist eine vollständige Antworteinheit (Satz, Listenpunkt oder Tabellenzelle).
* `explanation`: ein kurzer Satz, der die Entsprechung beschreibt, also was der Absatz über diesen Teil der Antwort aussagt.

### `visibility`

Wo Ihre Marke in dieser Antwort steht; `null`, wenn keine `brand` gesendet wurde.

* `brandId`: Ihre Marke in `brands[]`.
* `stage`: einer der folgenden Werte:
  * `mentioned`: Die Antwort nennt Ihre Marke.
  * `on_cited_page`: Die Antwort nennt sie nicht, aber eine zitierte Seite.
  * `on_retrieved_page`: Nur Seiten, die die Engine abgerufen, aber nicht zitiert hat, nennen sie.
  * `not_found`: Keine gelesene Seite nennt sie.
* `rank`: der `rank` Ihrer Marke in `brands[]`.
* `answerBrands`: wie viele Marken die Antwort nennt.

### `actions[]`

Priorisierte nächste Schritte für Ihre Marke; `[]`, wenn keine `brand` gesendet wurde. `priority` beginnt bei 1 (zuerst
erledigen) und hat keine Lücken. Maßnahmen sind nach `control` geordnet: zuerst, was Ihre Marke kontrolliert (`owned`),
dann Plattformen, auf denen sie posten kann (`platform`), dann Outreach (`outreach`). `summary` ist ein Satz, und
`steps[]` enthält ein bis fünf konkrete Schritte, beides in der Sprache der Antwort. `sourceIds`, `brandIds`,
`queryIds` und `linkIds` verweisen auf die Belege in diesem Ergebnis.

| `type` | `control` | Wann er erscheint | `sourceIds` |
| - | - | - | - |
| `improve_page` | `owned` | Eine pro eigener Website: Ihre eigenen Seiten dort wurden abgerufen, aber nicht zitiert, oder zitiert, während die Antwort Ihre Marke nicht nennt. Die Schritte sagen, was zu ergänzen oder zu ändern ist, damit die Seiten den Prompt so beantworten wie die zitierten Seiten: Kriterien, Zahlen, Aktualität. | Bis zu drei Ihrer Seiten auf dieser Website, nicht zitierte zuerst. |
| `publish_page` | `owned` | Für eine Suche, bei der keine Ihrer Seiten zitiert wurde: ein Briefing für eine neue Seite auf Ihrer eigenen Website nach dem Vorbild der zitierten Seiten, mit Seitentyp und Titel, Abschnitten und Kriterien, zu zeigenden Belegen, Datum und klarer Urheberschaft der Marke. | Die zitierten Seiten als Vorbild. |
| `post_on_platform` | `platform` | Eine Seite auf einem Händler, einer Bewertungsplattform, einer Community, einer Video-, Social- oder Blogplattform nennt konkurrierende Marken, aber nicht Ihre. Die Maßnahme ist der eigene Eintrag, das Profil, die Antwort oder der Beitrag Ihrer Marke auf dieser Plattform, über Ihr eigenes Konto: Ihr Produkt listen oder verbessern, Ihr Profil beanspruchen und echte Kunden um Bewertungen bitten, als erkennbare Vertretung der Marke antworten oder eine Demo oder einen Vergleich veröffentlichen. Sie bittet nie die Plattform oder den Seiteninhaber um etwas. Höchstens eine pro Domain. | Die zitierte Seite auf dieser Plattform, die jemand anderem gehört. |
| `pitch_publisher` | `outreach` | Eine zitierte redaktionelle Seite nennt konkurrierende Marken, aber nicht Ihre, oder nennt Ihre, während die Antwort sie nicht nennt. Nur der Herausgeber kann sie ändern; die Schritte sagen, was Sie senden sollten. | Die Seite, für die Sie den Herausgeber ansprechen. |

`brandIds` nennt Ihre Marke oder die konkurrierenden Marken, die diese Seiten nennen. Maßnahmen schlagen nie gefälschte
oder nicht offengelegte Bewertungen vor, kein Auftreten als unabhängiger Tester, keinen Linkkauf und keine Bearbeitung
von Seiten, die Ihrer Marke nicht gehören. Drittanbieterseiten, die Ihre Marke nennen, aber nicht zitiert wurden,
stehen in `brands[].retrievedSourceIds` und nicht unter den Maßnahmen.

### `insights[]`

Bis zu vier kurze Zusammenfassungen dessen, was die Seiten zusammen ergeben: welche Kanäle zitiert wurden, welches
Format, welche Aktualität oder welche Kriterien die zitierten Seiten teilen, wie die Reihenfolge der Marken in der
Antwort zu dem passt, was die zitierten Seiten abdecken, und wo Ihre Marke steht. `sourceIds` nennt die Seiten und
`linkIds` die Verknüpfungen, auf denen jede Zusammenfassung beruht; mindestens eines davon ist nicht leer, und beide
nennen nur Einträge in diesem Ergebnis. Insights beschreiben Entsprechungen; sie sind keine Empfehlungen.

## Das Ergebnis richtig lesen

* **Keine Verknüpfung ist kein Urteil.** Ein Absatz ohne Verknüpfung hat schlicht keinem Antwortbereich entsprochen,
  und ein Antwortteil ohne Bereich bedeutet, dass kein Absatz mit ihm verknüpft wurde. Beides besagt nicht, dass die
  Seite irrelevant, ungenutzt oder unzuverlässig ist.
* **Eine ungelesene Seite bleibt ungewiss.** Ist `sources[].error` gesetzt, wurde diese Quelle von der Analyse
  ausgeschlossen; werten Sie fehlende Verknüpfungen nicht als negatives Ergebnis. Versuchen Sie es erneut oder liefern
  Sie ihren `body`, wenn sie wichtig ist.
* **Entsprechung, nicht Kausalität.** Das Ergebnis beschreibt, wie eine vorhandene Antwort und ein vorhandener
  Seitentext nachträglich zusammenpassen und welche Marken diese Seiten nennen. Es misst keinen Einfluss auf die
  Generierung, bewertet die Seite nicht und sagt nicht, wie die Antwort entstanden ist.
* **`not_found` heißt: auf keiner gelesenen Seite.** Es bedeutet nicht, dass Ihre Marke im Web fehlt.
* **Abrufdaten hängen von der Engine ab.** Nicht zitierte Seiten erscheinen nur, wenn die Engine sie offenlegt (ChatGPT,
  Google AI Overview) oder Sie Seiten mit `cited: false` senden. Andernfalls ist jede Quelle zitiert, und Ihre eigene
  Seite kann nur als zitiert erscheinen.
* **Kanäle werden anhand des Hosts beurteilt.** `channel` wird aus dem Host der Seite abgeleitet, nicht durch Lesen,
  wer sie geschrieben hat.
* **Maßnahmen sind Vorschläge, keine Garantien.** Sie werden anhand der in diesem Ergebnis aufgeführten Seiten
  priorisiert; eine umzusetzen garantiert nicht, dass sich die Antwort ändert.
* **Ids sind intern.** Speichern Sie `s…`/`q…`/`b…`/`l…`/`a…`-Kennungen nicht als stabile Schlüssel über Läufe hinweg;
  sie gelten nur innerhalb eines Ergebnisses.

## Ausführung und Grenzen

* **Größe ist kein Fehlergrund.** Alles, was der Anfragevertrag akzeptiert, also eine `answer` mit bis zu 200.000
  Zeichen und bis zu 100 Quellen, wird analysiert. Lange Antworten, große Quellsätze und sehr lange Seiten werden durch
  Aufteilen der Arbeit bewältigt, nicht durch Ablehnen des Tasks.
* **Die Tiefe richtet sich nach der Antwort, nicht nach der Seite.** Eine lange Seite erzeugt nicht mehr Verknüpfungen,
  als die Antwort tragen kann: Die Analyse konzentriert sich auf die Passagen, die der Antwort am wahrscheinlichsten
  entsprechen, und jede Quelle mit einer Entsprechung ist vertreten. Bei einer großen Seite oder einer, die dieselbe
  Aussage in Navigation, Listen und Bewertungen wiederholt, erhalten Sie die stärksten Passagen statt jedes Vorkommens.
* **Markup ist kein Beleg.** Sitemaps, Linkverzeichnisse und Bildergalerien liefern keine Verknüpfungen; eine Seite, die
  nur daraus besteht, wird ohne Absätze gemeldet statt mit erfundenen Entsprechungen.
* Eine nicht lesbare Quelle wird in `sources[].error` gemeldet, ohne den Task scheitern zu lassen, wenn eine andere
  Quelle lesbar ist. Der Task scheitert, wenn keine Quelle gelesen werden konnte, bei einem Analysefehler, einem
  Timeout oder einem Konfigurationsfehler des Dienstes.
* Anfragen werden wie der Rest der API nach Nutzung abgerechnet. Die Antwort beim Einreichen zeigt die vorläufige
  Credit-Reservierung; die endgültige Belastung wird verrechnet, wenn der Task einen Endzustand erreicht.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.