Finde Twitter-Influencer
Einrichtung
Wähle die verfügbare Laufzeitumgebung, bevor du Anmeldeinformationen einrichtest:
- Terminalfreier Client: Überspringe die Shell-Befehle unten. Verwende verbundene MCP-Tools. Für ScrapeCreators-Operationen lies
scrapecreators-apiund bevorzugecall_data_provider. Für einen anderen Anbieter-Schritt ohne verbundenes Tool verwende eine gleichwertige integrierte Methode des öffentlichen Webs, wenn sie den Workflow erhält, oder melde den Schritt klar als nicht verfügbar. - Lokales Terminal: Verwende die GooseWorks-Anmeldeinformationen und die Proxy-Befehle unten.
Lies deine Anmeldeinformationen aus ~/.gooseworks/credentials.json:
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
Wenn ~/.gooseworks/credentials.json nicht existiert, sage dem Benutzer: npx gooseworks login
Die lokalen Proxy-Endpunkte verwenden Bearer-Authentifizierung: -H "Authorization: Bearer $GOOSEWORKS_API_KEY". Die Beschreibungen der ScrapeCreators-Operationen bleiben in beiden Laufzeitumgebungen umgebungsneutral.
Entdecke, bewerte und reichere Twitter/X-Influencer an, die für ein Unternehmen, ein Produkt oder eine Nische relevant sind. Liefert eine sortierte Liste mit Engagement-Metriken, Relevanzbegründung und Kontaktinformationen.
Workflow
1. Anfrage parsen
Extrahiere aus der Benutzeranfrage:
- Unternehmensname oder -domäne (erforderlich) — die Marke, die Influencer sucht
- Nische/Vertikale (optional) — z. B. "Fintech Twitter", "AI/ML Ersteller", "DTC Beauty"
- Größenpräferenz (optional) — mittel (10K-100K), Makro (100K+) oder gemischt (Standard: 10K+ Minimum)
- Maximale Ergebnisse (optional, Standard 20 — hoch- oder herunterskalieren, wenn der Benutzer danach fragt)
2. Unternehmen auflösen
Verwende Brand.dev, um Domäne, Branche, Beschreibung, Zielgruppe und Keywords zu erhalten. Dieser Kontext steuert alle nachfolgenden Suchvorgänge.
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-name","query":{"name":"Acme","Corp":""}}'
Wenn eine Domäne direkt angegeben wird:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"brand-dev","path":"/v1/brand/retrieve","query":{"domain":"acme.com"}}'
Erstelle aus dem Ergebnis einen Unternehmenskontext-String: Unternehmensname, Domäne, Branche, Beschreibung und Zielgruppen-Keywords. Beispiel: "Acme Corp acme.com developer tools API platform engineering teams". Verwende diesen in allen Suchabfragen.
3. Kandidaten entdecken
Führe drei Strategien parallel aus, um die Abdeckung zu maximieren:
Strategie A — Exa-Suche nach kuratierten Influencer-Listen (primär, höchste Signalstärke):
WICHTIG: x.com- und twitter.com-Profile befinden sich NICHT im Exa-Suchindex, daher liefert includeDomains: ["x.com"] null Twitter-Ergebnisse. Suche stattdessen nach kuratierten Listenseiten, Blogbeiträgen und Artikeln über Influencer in der Nische. Verwende contents.text, um den Seiteninhalt zu erhalten, damit du Twitter-Handles daraus extrahieren kannst.
Führe 5+ Abfragevarianten aus, um die Abdeckung zu maximieren. Beziehe die Kernnische UND angrenzende Nischen mit ein — viele Influencer überspannen verwandte Themen. Jede Abfrage gibt 10 Ergebnisse mit Textinhalt zurück:
# Abfrage 1: Kernnische — kuratierte Listen
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"exa","path":"/search"}'
"query": "beste {nische} Twitter-Accounts zum Folgen",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
# Abfrage 2: Kernnische — andere Formulierung
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"exa","path":"/search"}'
"query": "top {branche} Influencer auf X Twitter zum Folgen",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
# Abfrage 3: Kernnische — Vordenker
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"exa","path":"/search"}'
"query": "{nische} Vordenker Ersteller Twitter-Handles",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
# Abfrage 4: Angrenzende Nische 1 (z. B. wenn Nische "Identitätsverifizierung", versuche "Betrugsprävention")
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"exa","path":"/search"}'
"query": "top {angrenzende_nische_1} Influencer Twitter-Accounts zum Folgen",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
# Abfrage 5: Angrenzende Nische 2 (z. B. "Cybersicherheit", "Regtech", "Biometrie")
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"exa","path":"/search"}'
"query": "beste {angrenzende_nische_2} Experten Ersteller auf X Twitter",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
Auswahl angrenzender Nischen: Identifiziere aus dem Unternehmenskontext (Schritt 2) 2-3 verwandte Vertikalen. Beispiele:
- Identitätsverifizierung → Betrugsprävention, Cybersicherheit, Regtech, Biometrie
- Fintech → Banking, Zahlungen, DeFi, Finanzregulierung
- KI/ML → Datenwissenschaft, MLOps, Entwickler-Tools
- DTC Beauty → Hautpflege, Wellness, Lifestyle, Clean Beauty
Diese Abfragen geben Listenseiten zurück (z. B. "Top 60 Fintech-Influencer", "FinTwit-Accounts zum Folgen"), deren Textinhalt Twitter-Handles, Biografien und Follower-Zahlen enthält. Parse diese in Schritt 4.
Strategie B — Exa findSimilar (erweitere von starken Listenfunden):
Nachdem Strategie A Ergebnisse geliefert hat, wähle 1-2 der besten kuratierten Listen-URLs aus und finde ähnliche Seiten:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"exa","path":"/findSimilar"}'
"url": "https://example.com/top-fintech-twitter-influencers",
"numResults": 5,
"contents": {"text": {"maxCharacters": 5000}}
}'
Dies deckt zusätzliche kuratierte Listen auf, die die Keyword-Suche möglicherweise übersehen hat. Verwende KEINE Twitter/X-Profil-URLs für findSimilar — sie befinden sich nicht im Exa-Index und geben leere Ergebnisse zurück.
Strategie C — Fiber natural-language-search (erfasse LinkedIn-lastige Fachleute):
Einige Influencer sind auf LinkedIn besser indexiert, haben aber aktive Twitter-Konten. Fiber kann diese aufdecken. Führe 2-3 Abfragen zur Kernnische und zu angrenzenden Themen durch:
# Kernnische
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/natural-language-search/profiles"}'
"query": "{nische} Vordenker Inhaltsersteller mit Twitter-Präsenz bei {branche} Unternehmen",
"pageSize": 20
}'
# Angrenzende Nische — breitere Abdeckung
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/natural-language-search/profiles"}'
"query": "{angrenzende_nische} Influencer Experte mit großer Social-Media-Gefolgschaft",
"pageSize": 20
}'
Überprüfe Fiber-Ergebnisse mit Twitter in Schritt 5 — behalte nur Personen mit aktiven Twitter-Konten. Extrahiere auch LinkedIn-URLs aus Fiber-Ergebnissen — diese sind entscheidend für die Kontaktanreicherung in Schritt 7.
4. Benutzernamen extrahieren und deduplizieren
Parse aus dem Textinhalt von Exa-Listenseiten Twitter-Handles mit mehreren Mustern:
@username-Erwähnungen im Artikeltext- URLs, die auf
x.com/benutzernameodertwitter.com/benutzernameverweisen - Entferne nachfolgende URL-Pfade (z. B.
/status/123,/followers) — behalte nur Basis-Profil-Benutzernamen - Verwerfe Nicht-Profil-Muster (Suchseiten, Hashtag-Seiten,
x.com/home,x.com/search) - Dedupliziere nach Benutzernamen (Groß-/Kleinschreibung ignorieren)
- Markiere und entferne offensichtliche Marken-/Unternehmenskonten (z. B.
@stripe,@shopify) — konzentriere dich auf einzelne Ersteller
Extrahiere aus Fiber-Ergebnissen alle Twitter/X-URLs aus Sozialprofilen. Füge neue Handles zum Kandidatenpool hinzu.
Extrahiere auch LinkedIn-URLs, die in Listenseiten zusammen mit Twitter-Handles erwähnt werden — speichere diese für die Kontaktanreicherung in Schritt 7.
Ziel: ~100-150 eindeutige Handles nach der Deduplizierung. Kuratierte Listenseiten erwähnen normalerweise 20-50 Handles pro Seite, daher liefern 5+ gute Listenergebnisse über Kern- und angrenzende Nischen einen großen Kandidatenpool.
5. Twitter-Profile + Engagement abrufen
Verwende Scrape Creators, um strukturierte Twitter-Daten abzurufen. Dies ist ein zweistufiger Prozess: Rufe Profile für ALLE Kandidaten ab (günstig, 1 Credit pro Stück), dann rufe Tweets für die besten ~2x die Zielergebnisanzahl nach Profilfilterung ab (z. B. ~40, wenn 20 Ergebnisse angestrebt werden).
Schritt 1 — Profile für alle Kandidaten abrufen:
provider: scrapecreators
method: GET
path: /v1/twitter/profile
query:
handle: examplehandle
Gibt verschachteltes JSON zurück. Wichtige Felder befinden sich in den Objekten core und legacy:
core.screen_name,core.name— Handle und Anzeigenamelegacy.description— Biografie-Textlegacy.followers_count,legacy.friends_count,legacy.statuses_count— Zählungenlegacy.location,legacy.created_at— Standort und Kontos alteris_blue_verified— Verifizierungsstatus
Die Profil-URL ist https://x.com/{screen_name}.
WICHTIG — Profilabrufe parallelisieren: Rufe Profile NICHT nacheinander in einer sequenziellen Schleife ab. Starte stattdessen ALLE Profilabrufanfragen parallel (mehrere Tool-Aufrufe in einer einzigen Nachricht). Dies reduziert die Gesamtwartezeit drastisch von Minuten auf Sekunden. Gruppiere sie ggf. in Batches von 10-15 parallelen Aufrufen.
Wende harte Filter an, um den Pool einzugrenzen:
- Weniger als 10.000 Follower (Standardminimum — anpassbar, wenn der Benutzer einen anderen Schwellenwert angibt)
- Leere Biografie oder Biografie völlig irrelevant zur Nische
- Suspendierte oder nicht gefundene Konten (API gibt Fehler zurück)
- Biografie zeigt, dass sie X verlassen haben (z. B. "finde mich auf Mastodon/Bluesky", "diese Seite aufgegeben")
- Zu breite/allgemeine Konten — Entferne Konten, deren Inhalt nicht spezifisch für die Zielnische relevant ist. Beispielsweise ein allgemeines "Tech-Evangelist"-Konto mit 500K+ Followern, das selten über die Nische twitert, ist weniger wertvoll als ein Spezialist mit 20K Followern. Wenn die Biografie und die letzten Tweets eines Kontos keine spezifische Verbindung zur Zielnische oder angrenzenden Nischen zeigen, schließe es unabhängig von der Follower-Anzahl aus
Schritt 2 — Tweets für die besten Kandidaten abrufen (nach Profilfilterung — rufe ~2x die Zielergebnisanzahl ab, um Filterung zu ermöglichen, z. B. ~40, wenn 20 Ergebnisse angestrebt werden):
provider: scrapecreators
method: GET
path: /v1/twitter/user-tweets
query:
handle: examplehandle
Gibt ein Array von Tweet-Objekten zurück. WICHTIG — Die Daten sind in jedem Tweet-Objekt verschachtelt:
legacy.full_text— Tweet-Textlegacy.favorite_count— Likes (Ganzzahl)legacy.retweet_count— Retweets (Ganzzahl)legacy.reply_count— Antworten (Ganzzahl)legacy.created_at— Zeitstempelviews.count— Aufrufanzahl (kann fehlen)url— Direkter Link zum Tweet (Feld auf oberster Ebene)
Hinweis: favorite_count, retweet_count, reply_count befinden sich im Objekt legacy, NICHT auf der obersten Ebene jedes Tweets.
WICHTIG — Tweet-Abrufe parallelisieren: Genau wie bei Profilabrufen starte ALLE Tweet-Abrufanfragen parallel (mehrere Tool-Aufrufe in einer einzigen Nachricht). Verwende KEINE sequenziellen for-Schleifen. Dies ist die größte einzelne Geschwindigkeitsoptimierung.
Identifiziere für jeden Kandidaten die Top 3 Tweets nach Engagement (Likes + Retweets + Antworten). Speichere den besten mit seiner URL für die Aufnahme in die finale Ergebnistabelle.
Berechne aus den Tweet-Daten:
- Durchschnittliche Likes pro Tweet
- Durchschnittliche Retweets pro Tweet
- Durchschnittliche Antworten pro Tweet
- Engagement-Rate: (durchschn. Likes + durchschn. Retweets + durchschn. Antworten) / Follower * 100
- Beitragshäufigkeit: abgeleitet aus
created_at-Daten - Inhaltsthemen: über welche Themen sie am meisten twitern (aus
full_text)
Zusätzliche harte Filter (angewendet nach Tweet-Abruf):
- Keine Tweets in den letzten 30 Tagen (inaktiv)
- Geschützte/private Konten
Überspringe reine Antwort-Konten (>80% der Tweets sind Antworten an andere mit minimalem Engagement).
6. Bewerten & Sortieren
Wende ein zusammengesetztes Bewertungsmodell an:
| Faktor | Gewicht | Signal |
|---|---|---|
| Relevanz | 40% | Biografie-Keywords, Inhaltsthemen, Zielgruppenüberschneidung mit Zielunternehmen |
| Engagement-Rate | 25% | Höher ist besser; Mikro-Influencer übertreffen hier oft Makro-Influencer |
| Follower-Anzahl | 15% | Log-skaliert — abnehmender Nutzen über 100K |
| Inhaltsqualität | 10% | Originalinhalte vs. Retweets, Thread-Tiefe, Mediennutzung |
| Zielgruppenausrichtung | 10% | Passen ihre Follower zur Zielgruppe des Unternehmens? Abgeleitet aus Biografie + Inhaltsthemen |
Bewertungsrichtlinien:
- Relevanz: Vergleiche Biografie und aktuelle Tweet-Themen mit dem Unternehmenskontext-String aus Schritt 2. Exakte Nischenübereinstimmung = hohe Punktzahl. Angrenzende Nische = mittel. Generisch/unzusammenhängend = niedrig.
- Engagement-Rate-Benchmarks: >3% ausgezeichnet, 1-3% gut, <1% unterdurchschnittlich (variiert nach Follower-Stufe)
- Inhaltsqualität: Bestrafe Konten, die >50% Retweets sind. Belohne originale Threads, Einblicke und medienreiche Beiträge.
Sortiere alle Kandidaten nach der zusammengesetzten Punktzahl. Wähle die Top N (Standard 20) für die endgültige Liste aus. 20 ist ein guter Standard — genug, um dem Benutzer echte Optionen zu geben, ohne ihn zu überfordern. Skaliere nach oben, wenn der Benutzer mehr verlangt, aber schließe immer mindestens die Top 20 ein, wenn so viele qualifiziert sind.
7. Kontakte anreichern
Finde für die endgültige Liste E-Mail-Adressen und LinkedIn-Profile. Die wichtigste Erkenntnis: Entdecke zuerst LinkedIn-URLs — sie verbessern die E-Mail-Erkennung erheblich. Am effektivsten ist es, LinkedIn-URLs aus Fiber-Ergebnissen (Schritt 3) und Listenseiten (Schritt 4) zu speichern. Wenn ein Kandidat keine gespeicherte LinkedIn-URL hat:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/enrich/profiles"}'
"linkedin_url": "https://linkedin.com/in/username-not-available-yet",
"fields": ["linkedin_url", "work_email", "personal_email"]
}'
# Oder namentlich suchen, wenn LinkedIn-URL unbekannt ist: falsch, benutze stattdessen die obige Methode. Wenn keine Datenbank-LinkedIn-URL vorhanden ist, suche namentlich:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/enrich/search"}'
"name": "Vorname Nachname",
"current_company": "Firmenname aus Schritt 2",
"title": "Rollen-Schlagwörter aus Biografie"
}'
Ziel: Finde mindestens eine Kontaktmethode (E-Mail oder LinkedIn) für jeden der Top 20. Gib für jeden Kandidaten sowohl Twitter-Profil als auch die gefundene Kontaktmethode aus.
8. Ergebnisse präsentieren
Gib eine formatierte Tabelle mit diesen Spalten aus:
| Rang | Handle | Name | Follower | Engagement-Rate | Relevanz | Top-Tweet | Kontakt |
Zeilen-Beispiel: | 1 | @techcreator | Tech Creator | 45,2K | 4,8% | Identität/Fintech | Link | linkedin.com/in/techcreator |
Regeln:
- Sortiere nach zusammengesetzter Punktzahl (absteigend)
- Zeige Follower-Zahlen formatiert mit K-Suffix (z. B. 45,2K)
- Zeige Engagement-Rate als Prozentsatz mit einer Dezimalstelle
- Spalte Relevanz: Kurze Beschreibung, warum dieser Influencer für das Unternehmen relevant ist (basierend auf Biografie + Inhalt)
- Top-Tweet: Verwende den Tweet mit dem höchsten Engagement, den du in Schritt 5 gefunden hast. Verlinke zur Tweet-URL
- Kontakt: Zeige E-Mail-Adresse, LinkedIn-URL oder "Nicht gefunden"
Füge ein Analyseparat nach der Tabelle hinzu, das enthält:
- Einblicke: 1-2 Beobachtungen über die Liste (z. B. "Mikro-Influencer in der Nische übertreffen Makro-Influencer beim Engagement um das Dreifache", "3 der Top 5 sind auf Cybersicherheit, nicht nur auf Identitätsverifizierung spezialisiert")
- Nächste Schritte: Wie man diese Liste für Outreach-Aktionen verwendet (z. B. Priorisiere die Top 5, maßgeschneiderte Pitch-Ideen, nutze LinkedIn für Einführungen)
Optimierung: Terminal vs. Terminalfrei
-
Terminalfrei (Claude, Cursor, Copilot): Die obigen curl-Befehle des Shell-Abschnitts sind nicht erforderlich, da die API über MCP-Tools verbunden ist. Anstatt in der Shell herumzuhantieren, rufe MCP-Tools auf. Für Schritt 5 verwende
call_data_providermit dem scrapecreats-Anbieter und übergebe das Objekt als JSON-Argument (z. B.{"method": "GET", "path": "/v1/twitter/profile", "query": {"handle": "example"}}). Mache dasselbe für brand-dev-, exa- und fiber-Tools. Die Ergebnisse sind identisch; nur die Client-Seite unterscheidet sich. -
Lokales Terminal: Führe die curl-Befehle wie oben gezeigt aus und verwende Umgebungsvariablen aus Schritt 1. Analysiere Ausgaben und erstelle Abfragestrings selbst. Verwende
jq, um JSON zu parsen, und Shell-Schleifen (bash for/in), um Handles zu durchlaufen, wenn du sie in der Shell testest. Parallelisierung ist in der Shell knifflig; für eine echte agentenbasierte Implementierung sollte der Agent mehrere Tool-Aufrufe in einer einzigen Runde ausgeben, anstatt auf die Antwort jedes Abfragenaufrufs zu warten.