--- name: av-search-framing description: Liefert die Phase-3-Präambel, die eine Such-Engine im KI-Sichtbarkeits-Gap-Assessment (frueher ARD-Audit) so rahmt, dass Claude faktenbasiert, mit namentlichen Anbietern + URL und einer auswertbaren „Sources:"-Liste antwortet. --- # av-search-framing — Phase-3-Rahmen für die KI-Suchassistenz ## Methodik-Deklaration — Forced-Source-Design (gestützte Messung) Dieses Framing (erzwungene namentliche Anbieter-Nennung + „Sources:"-Liste) ist ein **bewusstes Forced-Source-Design**, damit die Antworten maschinell auswertbar sind (Mention- und Citation-Parsing). Es misst damit **GESTÜTZTE Sichtbarkeit in einer geframten Suchsituation** — nicht die natürliche, ungeframte Antwort einer KI-Suchmaschine. Ein getrennter **Natural Mode** (ohne erzwungene Anbieter-Nennungen und Quellen-Liste, misst die natürliche Sichtbarkeit) ist als künftige Erweiterung vorgesehen und wird separat ausgewiesen werden. Die Präambel, die der auditierten Such-Engine vorangestellt wird, damit Claude (über die Subscription) wie eine KI-Suchassistenz antwortet: faktenbasiert, konkrete Anbieter/Marken NAMENTLICH mit URL, und IMMER mit einer abschließenden Zeile „Sources:" gefolgt von Markdown-Links der genutzten Quellen. Dieses Framing entscheidet über zwei Dinge zugleich: 1. **Mess-Validität** — werden Marken überhaupt genannt? Ohne namentliche Nennung kann der Mention-Detector nichts finden. 2. **Citation-Parsing** — ist die Quellen-Liste auswertbar? Ohne saubere „Sources:"-Zeile bricht das Parsing. ## Wann nutzen - Beim Aufsetzen oder Optimieren von Phase 3 eines KI-Sichtbarkeits-Gap-Assessments. - Wenn die auditierte Such-Engine zu vage antwortet (keine Markennamen) oder die Quellen-Liste nicht maschinell auswertbar ist. - Als prompt-tragender Baustein, den der av-eval-calibrator misst und optimiert. ## Code & Artefakt - **Code:** `~/audit-app/ai-visibility-audit/src/engines.py` — Konstante `_CLI_PREAMBLE`, genutzt in `query_claude_cli` (Web-Search-Call via `claude -p --allowedTools WebSearch`). - **Citation-Parsing:** Citations werden per Regex aus dem Antworttext geparst (`_extract_citations_from_text`). Darum ist die formattreue „Sources:"-Zeile load-bearing. - **Optimierbarer Prompt:** `~/audit-app/prompts/av-search-framing.active.txt`, geladen via `prompt_store.get_prompt("av-search-framing", _CLI_PREAMBLE)`. ### Wichtig bei Optimierung - KEINE `{platzhalter}` in dieser Präambel — sie wird als fixer Vorspann vor „Frage: {prompt}" gesetzt. Bei der Optimierung KEINE Platzhalter einführen. - Die Sources-Anforderung MUSS erhalten bleiben — sonst bricht das Citation-Parsing. ## Eval-Signal `parseable_sources_rate` (0..1) = Anteil der Antworten, die ENTWEDER eine „Sources:"-Zeile enthielten ODER ≥1 geparste Citation hatten. - Berechnet in `src/skill_signals.py`. - Geloggt nach `skill-runs.jsonl` + DB. ## Optimierung (Modus c, messbar → Auto-Apply) Dieser Skill ist prompt-tragend UND measurable. Der **av-eval-calibrator** fährt darum ein echtes LIVE-A/B: 1. Ein festes Probe-Set von Such-Prompts wird mit Baseline- vs. Varianten-Präambel beantwortet — über die Subscription mit Web-Search. 2. `parseable_sources_rate` wird je Variante gemessen. 3. **Variante > Baseline + 0.05 → MODUS C: AUTO-APPLY.** Sonst Change-Board. 4. Ziel: `parseable_sources_rate` ≥ **0.75**. ## Rubrik **Gut:** - Antwort nennt Anbieter NAMENTLICH. - Jede Empfehlung kommt mit URL. - Saubere, konsistent formatierte „Sources:"-Liste am Ende. - Keine ausweichenden Meta-Antworten. **Fehler:** - Vage Antworten ohne Namen. - Fehlende oder uneinheitliche Quellen-Zeile. - Kaputte Markdown-Links. ## Verwandte Skills - **av-mention-detector** — Abnehmer: braucht namentlich genannte Marken. - **Citation-Parsing** (`_extract_citations_from_text`) — Abnehmer: braucht die formattreue „Sources:"-Liste. - **av-eval-calibrator** — Optimierer: fährt das LIVE-A/B und entscheidet Auto-Apply vs. Change-Board. Stand: 2026-07-10 (Feedback-Rework v2.1)