Multi-Agent-Semantik-Kern-Automatisierung mit Ensemble-Voting
Dieses Skript automatisiert die semantische Datenbeschaffung: geben Sie eine Maske ein, holen Sie Frequenzdaten ab und exportieren Sie sie in eine Tabelle. Es ersetzt den mühsamen Workflow Wordstat → Excel. Nutzt zwei Datenquellen: die kostenlose Bukvarix-API für umfassende Synonymabdeckung (mit monatlicher Verzögerung) und das kostenpflichtige XMLRiver für Echtzeitdaten über Proxy zu Yandex XML (kein CAPTCHA erforderlich).
XMLRiver unterstützt drei Frequenztypen:
- Grund:
Wohnungsreparatur→ 45.661 - Exakt:
"Wohnungsreparatur"→ 12.340 - Verfeinert:
[!Wohnung !Reparatur]→ 8.912
Abfragen laufen parallel über 10 Threads mit Wiederholungslogik. Die Wettbewerbsheuristik verwendet die Formel: Score = (Wortanzahl * 1000) / (Frequenz + 1). Ergebnisse werden farbcodiert:
- 🟢 LEICHT (>50)
- 🟡 MITTEL (10–50)
- 🔴 SCHWER (<10)
Optimierter Keyword-Verarbeitungspfad
Ein direkter Ansatz scheitert bei über 3.000 Keywords aufgrund doppelter SERP-Abfragen. Der Pfad filtert schrittweise:
- Erfassung: Bukvarix oder XMLRiver → ca. 3.000 Keywords.
- Regex-Schild: Entfernt Rauschen (Stellenanzeigen, Avito-Auszüge, unvollständige Begriffe).
- Fuzzy-Dedup: pymorphy2-Lemmatisierung + rapidfuzz (token_sort_ratio ≥82 %, gruppiert nach erstem Wort) → ca. 1.500–2.000 eindeutig.
- SERP-Erfassung: 10 Threads pro eindeutiges Keyword.
- Clustering: NLP + SERP-Veto.
- Intention & Metriken.
Der Schwellenwert von 82 % wurde empirisch optimiert: entfernt 30–40 % Duplikate (Morphologie), ohne verschiedene Phrasen wie "Wohnungsreparatur Preis" und "Wohnungsreparatur Kosten" zu verbinden.
Clustering mit SERP-Veto
SentenceTransformers (paraphrase-multilingual-MiniLM-L12-v2) erzeugen Embeddings. NLP-Herausforderung: semantisch ähnliche Begriffe (z. B. "Wohnungsreparatur Moskau" vs. "Wohnungsreparatur Woronesch") konkurrieren nicht.
SERP-Veto: Wenn die TOP-10-Yandex-Ergebnisse weniger als 2 sich überschneidende URLs haben, gelten sie als separate Cluster:
overlap = len(urls_core.intersection(urls_cand))
if urls_core and urls_cand and overlap < 2:
continue # unterschiedliche Cluster
Modi:
- NLP nur: Schnell, basierend auf Embeddings.
- SERP nur: Genau, langsam, URL-basiert.
- Hybrid: NLP + Veto – optimaler Kompromiss.
Geografische Isolation: Keywords aus verschiedenen Städten werden nicht zusammengefasst.
Multi-Agenten-KI-Filterung mit Ensemble-Voting
LLM (DeepSeek) klassifiziert: geeignet / irrelevant / minus / prüfen. Herausforderungen: Instabilität (38 % stabil über 3 Durchläufe), fehlender Nischenkontext.
PlannerAgent
Generiert nichenspezifische Pläne mittels Few-Shot-Prompting, Fallstrick-Erkennung und Geo-Filterung.
Beispiel:
- GEEIGNET: "Wohnungsreparatur Schlüsselamme Moskau"
- IRRELEVANT: "Stelle Wohnungsreparatur"
Token-Optimierung
ID-Nummerierung: Modell gibt nur IDs zurück, keine Texte. Batch-Größe von 20 Schlüsseln → ~80 Tokens gegenüber ~400 zuvor.
Ensemble-Voting
Drei parallele Durchläufe (Temperature=0), Mehrheitsentscheid (Schwelle=2/3). Unentschieden → ArbiterAgent.
def single_vote(_):
response = ai_client.call(system_prompt, user_message, temperature=0)
return ai_client.parse_json(response)
with ThreadPoolExecutor(max_workers=votes) as vote_pool:
vote_results = list(vote_pool.map(single_vote, range(votes)))
counts = Counter(votes_for_keyword)
threshold = votes // 2 + 1
Ergebnis: Stabilität ~85 %. Kosten: $0,30 für 3.000 Keywords.
Paranoider Modus: Whitelist (genaue Token-Übereinstimmung, keine Teilstrings) für Marken – vollständiger Ausschluss der KI.
Zusätzliche Module
SERP-Modul: Parsen von organischen Ergebnissen, verwandten Suchbegriffen, Anzeigen und neuronalen Antworten.
KI-Assistent: Chat-Oberfläche mit pandas.query() über das DataFrame.
Wichtige Erkenntnisse
- Der Pfad reduziert SERP-Anfragen von 3.000 auf 1.500 durch Fuzzy-Dedup (rapidfuzz + pymorphy2).
- Hybrid-Clustering kombiniert NLP-Geschwindigkeit mit SERP-Veto-Genauigkeit.
- Ensemble-Voting (3x) steigert die Stabilität der KI-Filterung auf 85 %.
- Token-Einsparung: ID-Nummerierung + Batching → $0,30 pro Durchlauf.
- Verarbeitungszeit: 20–30 Minuten gegenüber 3–4 Stunden manuell.
Technologiestack: Python 3.11, DeepSeek API, XMLRiver, SentenceTransformers, rapidfuzz, pymorphy2, pandas, customtkinter.
— Editorial Team
Noch keine Kommentare.