No description
Find a file
Christian Säum | Web-SEO-Consulting 8814f7d765 Add city wildcard search filter
2026-05-15 13:01:54 +02:00
.idea First Commit 2026-05-14 22:41:37 +02:00
.gitignore idea 2026-05-15 00:50:54 +02:00
AGENTS.md First Commit 2026-05-14 22:41:37 +02:00
CLAUDE.md First Commit 2026-05-14 22:41:37 +02:00
config.json.example Add lead scraper v1 implementation 2026-05-15 00:49:08 +02:00
generate_regions.py Add unified lead workflow CLI 2026-05-15 08:42:15 +02:00
Handbuch.md Add city wildcard search filter 2026-05-15 13:01:54 +02:00
import_leads.py Add unified lead workflow CLI 2026-05-15 08:42:15 +02:00
Leads.py Add city wildcard search filter 2026-05-15 13:01:54 +02:00
Projekt.md First Commit 2026-05-14 22:41:37 +02:00
README.md Add city wildcard search filter 2026-05-15 13:01:54 +02:00
region_resolver.py Add lead scraper v1 implementation 2026-05-15 00:49:08 +02:00
requirements.txt Add lead scraper v1 implementation 2026-05-15 00:49:08 +02:00
search_leads.py Add city wildcard search filter 2026-05-15 13:01:54 +02:00

Lead Scraper

Lead Scraper findet Betriebe in DE/AT/CH über die Google Places API, reichert Leads über die jeweilige Website bzw. Impressumsseite an und importiert gültige Kontakte nach Mautic.

Aktuelle Version: v1.2.0

Hauptfunktionen

  • Generiert Regionsdateien aus offiziellen Quellen für Deutschland, Österreich und die Schweiz.
  • Sucht Betriebe über Google Places API (New).
  • Ruft Google Place Details ab, z. B. Website, Telefon, Adresse, Bewertung und Maps-Link.
  • Schreibt Suchergebnisse in CSV.
  • Prüft Webseiten direkt vom lokalen Rechner aus.
  • Sucht Impressum-/Kontaktseiten und extrahiert E-Mail-Adressen.
  • Überspringt Leads ohne E-Mail.
  • Importiert neue Kontakte nach Mautic.
  • Aktualisiert bestehende Kontakte anhand der E-Mail-Adresse.
  • Erstellt Mautic-Segmente automatisch, falls sie fehlen.
  • Weist Kontakte Segmenten und Tags zu.
  • Nutzt Mautic-Standardfelder und wenige Google-/Scraping-Custom-Fields.

Projektdateien

  • generate_regions.py: lädt offizielle Gemeindelisten und erzeugt regions/**/*.json.
  • region_resolver.py: löst Regionsargumente wie DE, BY, NW, CH:SH auf.
  • search_leads.py: sucht Leads über Google Places und schreibt CSV.
  • import_leads.py: validiert CSV-Leads, scannt Webseiten und importiert nach Mautic.
  • Leads.py: zentrale CLI, die Regionsgenerierung, Suche und Import zusammenführt.
  • config.json.example: Beispielkonfiguration ohne Secrets.
  • regions/: generierte Regionsdateien.

Datenquellen Für Regionen

  • Deutschland: Destatis Gemeindeverzeichnis.
  • Österreich: Statistik Austria Gemeindeliste.
  • Schweiz: BFS Amtliches Gemeindeverzeichnis.

Mautic-Import

Der Import nutzt primär Mautic-Standardfelder:

  • company
  • email
  • phone
  • website
  • address1
  • city
  • state
  • zipcode
  • country
  • preferred_locale
  • timezone

Zusätzlich werden Google-/Scraping-Daten in Custom Fields geschrieben:

  • google_place_id
  • google_maps_url
  • google_rating
  • google_reviews_count
  • lead_source
  • lead_segment
  • website_status
  • impressum_url
  • import_batch

Sicherheit

  • config.json ist in .gitignore und darf nicht committed werden.
  • Mautic Basic Auth sollte nur über HTTPS genutzt werden.
  • Für den Import empfiehlt sich ein eigener Mautic-Benutzer mit starkem Passwort.
  • Google API-Keys sollten in Google Cloud eingeschränkt werden.

Typischer Ablauf

.venv/bin/python Leads.py generate-regions

.venv/bin/python Leads.py run \
  --query Polsterei \
  --regions BY \
  --searchterm 'K*' \
  --limit-cities 5 \
  --limit-results-per-city 5 \
  --segment Polsterei \
  --output polsterei_by.csv \
  --import-output polsterei_by_import_results.csv

.venv/bin/python Leads.py run \
  --query Polsterei \
  --regions BY \
  --limit-cities 5 \
  --limit-results-per-city 5 \
  --segment Polsterei \
  --output polsterei_by.csv \
  --import-output polsterei_by_import_results.csv \
  --execute \

Ausführliche Beispiele stehen in Handbuch.md.

Aktueller Stand v1.2.0

  • Zentrale Bedienung über Leads.py.
  • Städtefilter über --searchterm mit Wildcards, z. B. K*, *kc, K*laut*.
  • Import bricht bei einzelnen fehlerhaften Kontakten nicht mehr komplett ab.
  • Mautic-Feldlängen werden beim echten Import per API gelesen.
  • Aktuell geprüfte Mautic-Limits:
    • firstname, lastname, company, position: 128 Zeichen.
    • google_maps_url, impressum_url: 191 Zeichen.