Ein intelligenter Telegram-Bot, der automatisch potenzielle Kunden findet, deren Websites analysiert und qualifizierte Leads direkt an Notion sendet.
| Feature | Beschreibung |
|---|---|
| 🔍 Multi-Source Scraping | Durchsucht Google Maps, Gelbe Seiten & Das Örtliche gleichzeitig |
| 🧠 Website-Analyse | Erkennt veraltete Designs, fehlendes SSL, mobiles Layout, Copyright-Jahre |
| 🚀 Sofort-Benachrichtigung | Jeder gefundene Lead wird sofort per Telegram-Nachricht gemeldet |
| 📝 Notion-Sync | Leads landen automatisch in deiner Notion-Datenbank |
| 🛡️ Duplikat-Schutz | Prüft vor dem Speichern, ob der Lead bereits in Notion existiert |
| 📊 Web-Dashboard | Übersicht aller Leads unter http://localhost:8000 |
| 🌙 Background-Modus | Unsichtbarer Headless-Betrieb via --background |
| 🔄 Hunt-Mode | Scannt automatisch 20 Handwerker-Branchen in einer Stadt |
┌─────────────┐ Telegram ┌─────────────┐
│ Dein Handy │ ─────────────> │ bot.py │
│ (Telegram) │ <───────────── │ (Commands) │
└─────────────┘ └──────┬──────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Google Maps │ │Gelbe Seiten │ │Das Örtliche │
│ (Playwright)│ │ (Base64-Fix)│ │ (Playwright)│
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└───────────────────┼───────────────────┘
▼
┌─────────────────┐
│ Website-Analyse │
│ (SSL, Viewport, │
│ Design, Email) │
└────────┬────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Telegram │ │ Notion │ │ CSV │
│ (Sofort) │ │ (API) │ │ (Backup) │
└────────────┘ └────────────┘ └────────────┘
- Python 3.12+
- Playwright Browser (Chromium)
- Telegram Bot Token (via @BotFather)
- Notion Integration (optional, für Sync)
git clone <repository-url>
cd LeadBotpython3 -m venv .venv
source .venv/bin/activate # Linux/Mac
# oder: .venv\Scripts\activate # Windowspip install -r requirements.txt
playwright install chromiumcp .env.example .env
nano .env # oder dein EditorErforderliche Variablen:
| Variable | Beschreibung | Woher? |
|---|---|---|
TELEGRAM_BOT_TOKEN |
Token deines Telegram-Bots | @BotFather |
AUTHORIZED_USER_ID |
Deine Telegram User-ID | @userinfobot |
Optionale Variablen (Notion-Sync):
| Variable | Beschreibung |
|---|---|
NOTION_API_KEY |
Internal Integration Token |
NOTION_DATABASE_ID |
ID deiner Notion-Datenbank |
⚠️ Sicherheitshinweis: Die.env-Datei enthält sensible Daten und ist in.gitignoreaufgeführt. Gib deine Tokens niemals öffentlich preis!
python3 run.pyÖffnet ein Chromium-Fenster für den Browser-Scraper. Ideal für:
- Erstes Setup
- Captcha-Lösung
- Debugging
python3 run.py --background
# oder kurz:
python3 run.py -bLäuft komplett im Hintergrund ohne Browser-Fenster. Perfekt für:
- 24/7-Server
- Automatisierte Hunts
- Headless-Umgebungen
python3 bot.py
# oder im Hintergrund:
python3 bot.py --background| Command | Beschreibung | Beispiel |
|---|---|---|
/start |
Willkommensnachricht & Hilfe | /start |
/find |
Gezielte Suche nach Branche & Stadt | /find dachdecker berlin |
/hunt |
Automatischer 20-Branchen-Hunt | /hunt münchen |
/radius |
Suchradius ändern (km) | /radius 25 |
/stats |
Lead-Statistiken anzeigen | /stats |
/best |
Lead mit den meisten Problemen | /best |
Der Bot versteht auch natürliche Anfragen:
- "Suche Elektriker in Hamburg"
- "Hunt Stuttgart"
- "Wie viele Leads heute?"
- "Bester Lead"
Erstelle eine Notion-Datenbank mit diesen exakten Spaltennamen:
| Spalte | Typ | Beschreibung |
|---|---|---|
| Firmenname | Title |
Name des Unternehmens |
| Name | Rich Text |
Ansprechpartner aus Impressum |
Email |
Gefundene E-Mail-Adresse | |
| Telefon | Phone Number |
Telefonnummer |
| Probleme | Rich Text |
Analyse-Ergebnisse (SSL, Viewport, etc.) |
| Website | URL |
Firmenwebsite |
| Status | Status |
Automatisch auf "Neu" gesetzt |
Hinweis: Der Bot prüft vor jedem Upload, ob der Lead bereits existiert (Duplikat-Schutz via Firmenname + Website).
LeadBot/
├── bot.py # Telegram-Bot mit Commands & Logik
├── scraper.py # Playwright-Scraper (Maps, Gelbe Seiten, Örtliche)
├── notion_db.py # Notion-API-Integration & Duplikat-Check
├── web.py # FastAPI-Dashboard (localhost:8000)
├── run.py # Prozess-Manager (Bot + Webserver)
├── requirements.txt # Python-Abhängigkeiten
├── .env.example # Beispiel-Konfiguration (ohne echte Tokens!)
├── .gitignore # Ausgeschlossene Dateien
├── db/ # TinyDB-Datenbank (lokal, .gitignore)
├── screenshots/ # Website-Screenshots (.gitignore)
├── browser_session/ # Playwright-Cookies & Cache (.gitignore)
└── backup_leads.csv # Automatisches CSV-Backup (.gitignore)
Standardmäßig sucht der Bot im Umkreis von 10 km. Ändere ihn via Telegram:
/radius 50
Der Wert wird in db/radius.json persistiert.
Wenn Google ein Captcha anzeigt:
- Der Bot pausiert automatisch
- Du erhältst eine Telegram-Nachricht: "
⚠️ CAPTCHA! Bitte am PC lösen." - Löse das Captcha im Browser-Fenster
- Drücke Enter im Terminal, um fortzufahren
Im Background-Modus (
--background) ist die Captcha-Lösung über AnyDesk/VNC empfohlen.
| Technologie | Verwendung |
|---|---|
| Python 3.12+ | Kernsprache |
| Playwright | Browser-Automatisierung (Chromium) |
| python-telegram-bot | Telegram-Bot-Framework |
| FastAPI | Web-Dashboard |
| TinyDB | Lokale JSON-Datenbank |
| Notion Client | Notion-API-Integration |
| BeautifulSoup4 | HTML-Parsing & Website-Analyse |
- Keine Secrets im Repo:
.env,*.csv, Screenshots und Session-Daten sind in.gitignore - Duplikat-Schutz: Verhindert doppelte Einträge in Notion
- Autorisierung: Nur deine Telegram User-ID kann Commands ausführen
- Tab-Isolierung: Jeder Website-Scan läuft in einem separaten Browser-Tab
Bei Problemen oder Fragen:
- Prüfe die Logs im Terminal
- Verifiziere deine
.env-Konfiguration - Stelle sicher, dass Playwright installiert ist:
playwright install chromium
Built with caffeine and love☕