LinkedIn-Nachrichten zu verfassen, kann frustrierend sein. Stundenlang starrt man auf einen leeren Texteditor, während generische Floskeln wie „Ich würde mich freuen, Sie in mein Netzwerk aufzunehmen“ ignoriert werden. Doch was, wenn ein Algorithmus diese Aufgabe übernimmt – präzise, schnell und ohne Ermüdung?
Genau das hat ein Entwickler mit ConnectAI umgesetzt: eine Chrome-Erweiterung, die LinkedIn-Profile analysiert und maßgeschneiderte Nachrichten mit dem Anthropic-Claude-API generiert. Das Ergebnis? Individuelle Kontaktanfragen, die tatsächlich gelesen und beantwortet werden.
Wie die Erweiterung funktioniert: Vier Schritte zur automatisierten Nachricht
1. Profilanalyse mit Content Script
Die Erweiterung nutzt ein Content Script, das auf LinkedIn-Profilseiten (z. B. linkedin.com/in/benutzername) läuft. Dabei werden folgende Daten extrahiert:
- Vollständiger Name
- Aktuelle Position und Unternehmen
- Die drei wichtigsten Fähigkeiten
- Aktuelle Aktivitäten oder Posts
- Profil-URL
Die größte Hürde: LinkedIn nutzt eine React-basierte Single-Page-Anwendung (SPA), deren HTML-Struktur sich regelmäßig ändert. Um Stabilität zu gewährleisten, setzt die Erweiterung auf mehrere CSS-Selektoren als Fallback – etwa:
function scrapeProfile() {
const profileData = {};
profileData.fullName = getMultipleTexts([
"h1.text-heading-xlarge",
"h1[class*='heading']",
"h1"
]);
profileData.currentRole = getMultipleTexts([
".text-body-medium.break-words",
".pv-top-card .text-body-medium"
]);
chrome.storage.local.set({ profileData });
}Zusätzlich wird ein MutationObserver eingesetzt, um die Daten bei Navigationsänderungen (z. B. zwischen Profilseiten) neu zu laden.
2. KI-generierte Nachrichten via Service Worker
Die eigentliche Nachrichtenerstellung läuft über einen Background Service Worker – nicht im Popup-Fenster. Der Grund: CORS-Einschränkungen in Manifest V3 verhindern direkte API-Aufrufe aus dem Popup.
Stattdessen kommuniziert das Popup über chrome.runtime.sendMessage mit dem Hintergrunddienst:
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.type === "GENERATE_MESSAGES") {
handleGenerateMessages(message.payload)
.then(result => sendResponse({ success: true, data: result }))
.catch(err => sendResponse({ success: false, error: err.message }));
return true; // Asynchronen Kanal offenhalten
}
});3. Präzise KI-Steuerung durch Prompt-Engineering
Die Herausforderung: Claude soll konsistente Antworten im JSON-Format liefern – und zwar unter 300 Zeichen pro Nachricht. Dazu wird ein strenger System-Prompt verwendet, der folgende Regeln erzwingt:
- Keine Floskeln wie „Ich bin auf Ihr Profil gestoßen“
- Konkrete Referenzen zum Profilinhalt (z. B. Skills, aktuelle Projekte)
- Natürlicher Tonfall, der nicht nach maschineller Antwort klingt
- Strikte JSON-Ausgabe ohne Markdown-Formatierung
const systemPrompt = `
Du bist ein LinkedIn-Outreach-Experte. STRENGE REGELN:
1. Jede Nachricht muss unter 300 Zeichen liegen.
2. Vermeide Sätze wie „Ich bin auf Ihr Profil gestoßen“.
3. Beziehe dich auf spezifische Inhalte des Zielprofils.
4. Klinge menschlich – nicht wie eine KI.
AUSGABE: Nur reines JSON, ohne Markdown
`;4. Benutzerfreundliche Oberfläche im Popup
Das Popup-Fenster ist 420 Pixel breit und folgt einem dunklen Design. Es zeigt:
- Die extrahierten Profilinformationen des Zielkontakts
- Eine editierbare Absenderzeile (Name, Rolle, Unternehmen)
- Vier Zweck-Kategorien (z. B. Netzwerken, Empfehlung, Kooperation)
- Einen „Nachricht generieren“-Button
- Drei Vorschläge mit Zeichenlimit-Anzeige (🟢 unter 300, 🔴 darüber)
- Ein-Klick-Kopierfunktion
// Zeichenlimit-Logik für visuelles Feedback
function updateMessageBadge(message, element) {
if (message.length <= 300) {
element.className = "badge green";
} else {
element.className = "badge red";
}
}Technischer Stack: Was steckt hinter der Erweiterung?
Die Erweiterung setzt auf eine schlanke Architektur mit folgenden Komponenten:
| Komponente | Technologie | Zweck | |---------------------|--------------------------------------|----------------------------------------| | Manifest | Chrome Extension Manifest V3 | Berechtigungen und Struktur | | Programmiersprache | Vanilla JavaScript (ohne Bundler) | Performance und Kompatibilität | | KI-Modell | Anthropic Claude API | Nachrichtengenerierung | | Datenspeicher | Chrome Storage API | Lokale Datenhaltung | | Web Scraping | Content Scripts | Profilanalyse | | Styling | Pure CSS (dunkles Theme) | Benutzerfreundlichkeit |
Die größten Hürden – und wie sie gemeistert wurden
1. Dynamische LinkedIn-DOM-Strukturen
LinkedIn aktualisiert regelmäßig seine CSS-Klassennamen und nutzt React für das Frontend. Die Lösung:
- Mehrere Selektoren pro Feld als Fallback
- MutationObserver zur automatischen Neuerfassung bei Änderungen
- Regelmäßige Anpassung der Scraper-Logik
2. CORS-Einschränkungen in Manifest V3
Das Popup kann keine externen API-Aufrufe direkt durchführen. Der Workaround:
- Service Worker als Proxy für alle API-Anfragen
- Nutzung von
chrome.runtime.sendMessagefür die Kommunikation
3. Konsistente KI-Ausgabe
Claude neigt dazu, JSON-Ergebnisse in Markdown-Codeblöcken einzubetten. Die Lösung:
- Regex-Extraktion zur Bereinigung (Entfernen von Backticks)
- Fallback-Mechanismus für instabile Antworten
Was kommt als Nächstes? Roadmap für ConnectAI
Das Projekt ist noch in der Entwicklung, aber bereits jetzt vielversprechend. Geplante Features umfassen:
- Automatische Zweckerkennung basierend auf Profilinhalten (z. B. „Jobsuche“ oder „Kooperationsanfrage“)
- Nachrichtenhistorie pro Kontakt für bessere Nachverfolgung
- Individuelle Tonfall-Einstellungen (z. B. formell, locker, technisch)
- Unterstützung für Firefox (derzeit Chrome-only)
Fazit: Zeitersparnis mit KI – aber mit Bedacht nutzen
Tools wie ConnectAI zeigen, wie KI repetitive Aufgaben übernehmen kann – ohne dabei die persönliche Note zu verlieren. Doch Vorsicht: Automatisierte Nachrichten sollten immer noch menschlich und relevant wirken. Ein übertrieben generischer Text fällt schneller auf als eine manuell verfasste Nachricht.
Für Entwickler, die ähnliche Projekte umsetzen möchten, bietet die Erweiterung wertvolle Einblicke in Web Scraping unter schwierigen Bedingungen, API-Integration mit CORS und KI-Prompting für präzise Ausgaben. Wer bereits Chrome-Erweiterungen gebaut hat, kennt die Herausforderungen von LinkedIns dynamischen DOM – teilen Sie Ihre Lösungsansätze in den Kommentaren!
KI-Zusammenfassung
LinkedIn’e kişiselleştirilmiş iletiler göndermek için saatler harcamanıza gerek kalmadı. İşte profesyonel bağlantılarınızla etkili iletişim kurmanızı kolaylaştıracak yeni bir Chrome eklentisi ve nasıl çalıştığı.