Twitterインフルエンサーを見つける
セットアップ
資格情報の設定を行う前に、利用可能なランタイムを選択してください。
- ターミナルフリークライアント: 以下のシェルコマンドはスキップしてください。接続されているMCPツールを使用します。ScrapeCreatorsの操作では、
scrapecreators-apiを読み、call_data_providerを優先してください。接続されたツールがない別のプロバイダーのステップでは、ワークフローを維持できる場合は同等の組み込みパブリックウェブメソッドを使用し、それが不可能な場合はそのステップが利用不可であることを明確に報告してください。 - ローカルターミナル: 以下のGooseWorks認証情報とプロキシコマンドを使用します。
~/.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'))")
~/.gooseworks/credentials.json が存在しない場合は、ユーザーに npx gooseworks login を実行するように指示してください。
ローカルプロキシエンドポイントはBearer認証を使用します: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"。以下のScrapeCreators操作の説明は、両方のランタイムで環境に依存しないままです。
会社、製品、またはニッチ分野に関連するTwitter/Xインフルエンサーを発見、スコアリング、エンリッチします。エンゲージメント指標、関連性の根拠、連絡先情報を含むランク付けされたリストを返します。
ワークフロー
1. リクエストの解析
ユーザーのクエリから以下を抽出します:
- 会社名またはドメイン (必須) — インフルエンサーを探しているブランド
- ニッチ/分野 (オプション) — 例: "fintech Twitter", "AI/ML creators", "DTC beauty"
- サイズの希望 (オプション) — ミッド tier (10K-100K), マクロ (100K+), または混合 (デフォルト: 10K+ 最小)
- 最大結果数 (オプション、デフォルト 20 — ユーザーの要求に応じて増減)
2. 会社の解決
Brand.devを使用して、ドメイン、業界、説明、ターゲットオーディエンス、キーワードを取得します。このコンテキストが後続のすべての検索を推進します。
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":""}}'
ドメインが直接提供された場合:
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"}}'
結果から、会社コンテキスト文字列を作成します: 会社名、ドメイン、業界、説明、ターゲットオーディエンスキーワード。例: "Acme Corp acme.com developer tools API platform engineering teams"。これをすべての検索クエリで使用します。
3. 候補の発見
カバレッジを最大化するために、3つの戦略を並行して実行します:
戦略A — インフルエンサーリストの厳選のためのExa検索 (プライマリ、最高シグナル):
重要: x.com および twitter.com のプロフィールはExaの検索インデックスにありません。そのため、includeDomains: ["x.com"] はTwitterの結果をゼロ件返します。代わりに、ニッチ分野のインフルエンサーに関する厳選されたリストページ、ブログ記事、記事を検索してください。contents.text を使用してページコンテンツを取得し、そこからTwitterハンドルを抽出します。
カバレッジを最大化するために、5つ以上のクエリバリエーションを実行します。コアニッチと隣接ニッチの両方を含めてください。多くのインフルエンサーは関連トピックにまたがっています。各クエリはテキストコンテンツとともに10件の結果を返します:
# クエリ 1: コアニッチ — 厳選リスト
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": "best {niche} Twitter accounts to follow",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
# クエリ 2: コアニッチ — 異なる言い回し
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 {industry} influencers on X Twitter must follow",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
# クエリ 3: コアニッチ — ソートリーダー
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": "{niche} thought leaders creators Twitter handles",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
# クエリ 4: 隣接ニッチ 1 (例: ニッチが「identity verification」の場合、「fraud prevention」を試す)
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 {adjacent_niche_1} influencers Twitter accounts to follow",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
# クエリ 5: 隣接ニッチ 2 (例: "cybersecurity", "regtech", "biometrics")
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": "best {adjacent_niche_2} experts creators on X Twitter",
"numResults": 10,
"contents": {"text": {"maxCharacters": 5000}}
}'
隣接ニッチの選択: 会社コンテキスト(ステップ2)から、2〜3の関連する垂直分野を特定します。例:
- 本人確認 → 不正防止、サイバーセキュリティ、RegTech、生体認証
- FinTech → 銀行、決済、DeFi、金融規制
- AI/ML → データサイエンス、MLOps、開発者ツール
- DTC美容 → スキンケア、ウェルネス、ライフスタイル、クリーンビューティー
これらのクエリは、テキストコンテンツにTwitterハンドル、バイオ、フォロワー数が含まれているリスト記事(例:「Top 60 Fintech Influencers」、「FinTwit Accounts to Follow」)を返します。ステップ4でこれらを解析します。
戦略B — Exa findSimilar(強力なリスト記事の発見から拡大):
戦略Aが結果を返した後、最良の厳選リストURLを1〜2つ選択し、類似ページを見つけます:
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}}
}'
これにより、キーワード検索で見逃される可能性のある追加の厳選リストが明らかになります。findSimilar には Twitter/X プロフィールURLを使用しないでください。これらはExaのインデックスになく、空の結果が返されます。
戦略C — Fiber自然言語検索(LinkedIn重視のプロフェッショナルをキャッチ):
一部のインフルエンサーはLinkedInでよりよくインデックスされていますが、アクティブなTwitterアカウントを持っています。Fiberはこれらを表面化できます。コアニッチと隣接トピックをカバーする2〜3のクエリを実行します:
# コアニッチ
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": "{niche} thought leader content creator with Twitter presence at {industry} companies",
"pageSize": 20
}'
# 隣接ニッチ — より広いカバレッジ
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": "{adjacent_niche} influencer expert with large social media following",
"pageSize": 20
}'
Fiberの結果をステップ5でTwitterと相互参照します。アクティブなTwitterアカウントを持つ人だけを保持します。また、Fiberの結果からLinkedIn URLも抽出します。これらはステップ7の連絡先エンリッチメントにとって重要です。
4. ユーザー名の抽出と重複排除
Exaのリスト記事のテキストコンテンツから、複数のパターンを使用してTwitterハンドルを解析します:
- 記事テキスト内の
@usernameメンション x.com/usernameまたはtwitter.com/usernameに一致するURL- 末尾のURLパスを削除(例:
/status/123,/followers)— ベースプロフィールユーザー名のみを保持 - 非プロフィールパターン(検索ページ、ハッシュタグページ、
x.com/home、x.com/search)を破棄 - ユーザー名で重複排除(大文字と小文字を区別しない)
- 明らかなブランド/企業アカウント(例:
@stripe、@shopify)にフラグを立てて削除 — 個人クリエイターに焦点を当てる
Fiberの結果から、ソーシャルプロフィールからTwitter/X URLを抽出します。新しいハンドルを候補プールに追加します。
また、リスト記事内でTwitterハンドルと一緒に言及されているLinkedIn URLも抽出します — これらはステップ7の連絡先エンリッチメントのために保存します。
目標: 重複排除後、約100〜150の一意のハンドル。厳選リストページはそれぞれ20〜50のハンドルを言及しているため、コアおよび隣接ニッチで5つ以上の良好なリスト記事結果があれば、大規模な候補プールが得られます。
5. Twitterプロフィールとエンゲージメントの取得
Scrape Creatorsを使用して、構造化されたTwitterデータを取得します。これは2段階のプロセスです: まずすべての候補のプロフィールを取得し(低コスト、1クレジット/件)、その後プロフィールフィルタリング後に上位約2倍の目標結果数(例: 20件を目標とする場合は約40件)のツイートを取得します。
ステップ 1 — すべての候補のプロフィールを取得:
provider: scrapecreators
method: GET
path: /v1/twitter/profile
query:
handle: examplehandle
ネストされたJSONを返します。キーフィールドは core および legacy オブジェクト内にあります:
core.screen_name、core.name— ハンドルと表示名legacy.description— バイオテキストlegacy.followers_count、legacy.friends_count、legacy.statuses_count— カウントlegacy.location、legacy.created_at— 場所とアカウントの経過期間is_blue_verified— 認証ステータス
プロフィールURLは https://x.com/{screen_name} です。
重要 — プロフィール取得を並列化: 順次ループで1つずつプロフィールを取得しないでください。代わりに、すべてのプロフィール取得呼び出しを並行して(1つのメッセージで複数のツール呼び出し)起動してください。これにより、総待機時間が数分から数秒に大幅に短縮されます。必要に応じて、10〜15の並列呼び出しのバッチにグループ化します。
プールを絞り込むためにハードフィルターを適用します:
- フォロワー数が10,000未満(デフォルトの最小値 — ユーザーが別のしきい値を指定した場合は調整可能)
- バイオが空、またはバイオがニッチと完全に無関係
- 停止または見つからないアカウント(APIがエラーを返す)
- バイオがXを離れたことを示している(例: "find me on Mastodon/Bluesky"、"abandoned this site")
- 広すぎる/一般的なアカウント — コンテンツがターゲットニッチに特に関連していないアカウントを削除します。たとえば、50万以上のフォロワーがいる一般的な「テクノロジー伝道者」アカウントが、そのニッチについてほとんどツイートしていない場合、2万フォロワーの専門家よりも価値が低くなります。アカウントのバイオと最近のツイートがターゲットニッチまたは隣接ニッチとの具体的な関連性を示さない場合は、フォロワー数に関係なく除外します
ステップ 2 — 上位候補のツイートを取得(プロフィールフィルタリング後 — フィルタリングを考慮して目標結果数の約2倍、例: 20件を目標とする場合は約40件を取得):
provider: scrapecreators
method: GET
path: /v1/twitter/user-tweets
query:
handle: examplehandle
ツイートオブジェクトの配列を返します。重要 — データは各ツイートオブジェクト内にネストされています:
legacy.full_text— ツイートテキストlegacy.favorite_count— いいね(整数)legacy.retweet_count— リツイート(整数)legacy.reply_count— 返信(整数)legacy.created_at— タイムスタンプviews.count— ビュー数(常に存在するとは限らない)url— ツイートへの直接リンク(トップレベルフィールド)
注: favorite_count、retweet_count、reply_count は legacy オブジェクト内にあり、各ツイートのトップレベルではありません。
重要 — ツイート取得を並列化: プロフィール取得と同様に、すべてのツイート取得呼び出しを並行して(1つのメッセージで複数のツイートツール呼び出し)起動してください。順次forループを使用しないでください。これは最大の速度最適化です。
各候補について、エンゲージメントで上位3件のツイート(いいね+リツイート+返信)を特定します。最良のものをそのURLとともに保存し、最終結果テーブルに含めます。
ツイートデータから計算:
- 平均いいね ツイートあたり
- 平均リツイート ツイートあたり
- 平均返信 ツイートあたり
- エンゲージメント率: (平均いいね + 平均リツイート + 平均返信) / フォロワー数 * 100
- 投稿頻度:
created_atの日付から推定 - コンテンツテーマ: 最も多くツイートしているトピック(
full_textから)
追加のハードフィルター(ツイート取得後に適用):
- 過去30日間にツイートがない(非アクティブ)
- 保護された/プライベートなアカウント
返信専用アカウント(ツイートの80%以上が他者への返信でエンゲージメントが最小限)はスキップします。
6. スコアリングとランク付け
複合スコアリングモデルを適用します:
| 要素 | 重み | シグナル |
|---|---|---|
| 関連性 | 40% | バイオキーワード、コンテンツテーマ、ターゲット企業とのオーディエンスの重複 |
| エンゲージメント率 | 25% | 高いほど良い; マイクロインフルエンサーはマクロよりもここで優れていることが多い |
| フォロワー数 | 15% | 対数スケール — 10万を超えると逓減する |
| コンテンツ品質 | 10% | オリジナルコンテンツ vs リツイート、スレッドの深さ、メディアの使用 |
| オーディエンスの一致 | 10% | フォロワーはターゲット企業のオーディエンスと一致するか?バイオとコンテンツテーマから推定 |
スコアリングガイドライン:
- 関連性: バイオと最近のツイートトピックをステップ2の会社コンテキスト文字列と比較。正確なニッチ一致 = 高スコア。隣接ニッチ = 中程度。一般的/無関係 = 低スコア。
- エンゲージメント率のベンチマーク: >3% 優秀、1-3% 良好、<1% 平均以下(フォロワー層によって異なる)
- コンテンツ品質: リツイートが50%を超えるアカウントは減点。オリジナルのスレッド、洞察、メディアリッチな投稿を加点。
複合スコアですべての候補をランク付けします。上位N件(デフォルト20)を最終リストとして選択します。20は良いデフォルトです — ユーザーに実際の選択肢を提供し、圧倒されることはありません。ユーザーがさらに要求した場合は増やしますが、該当する場合は常に少なくとも上位20件を含めます。
7. 連絡先のエンリッチメント
最終リストについて、メールアドレスとLinkedInプロフィールを見つけます。重要な洞察: 最初にLinkedIn URLを発見する — これらはScrapeCreatorsのメールエンリッチメントのパフォーマンスを劇的に向上させます。
メール発見戦略(優先順位順):
- ScrapeCreatorsメールエンリッチメント: 同じAPIを使用しますが、LinkedInプロフィールで呼び出すと最良の結果が得られます。
GET /v1/linkedin/profileを使用して詳細なLinkedInデータを取得し、そこからメールアドレスを抽出します。 - Apifyのメール抽出: LinkedInまたはTwitterプロフィールURLをメール発見APIに渡します(利用可能な場合)。
- 手動検索: 上記がいずれも機能しない場合、会社のウェブサイトや公開プロフィールで手動検索します。
ScrapeCreators LinkedInプロフィール呼び出し:
provider: scrapecreators
method: GET
path: /v1/linkedin/profile
query:
url: https://www.linkedin.com/in/username/
止められない限り、各呼び出しから email フィールドを探します。
並列化と代替: 各候補について、LinkedIn検索(Fiberから、または名前+会社の手動検索)をScrapeCreatorsのLinkedInプロフィールAPIへの呼び出しと並行して実行します。また、ウェブ検索を実行して公開メールアドレスや連絡先フォームを見つけます。
# 公開メールのウェブ検索
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": "{influencer_name} {company} email contact",
"numResults": 5,
"contents": {"text": {"maxCharacters": 3000}}
}'
各候補について、見つかった最高品質の連絡先経路を優先します。
8. 出力の書式設定
マークダウンテーブルとして明確に書式設定された結果をユーザーに提示します:
| ランク | ハンドル | 名前 | フォロワー | エンゲージメント率 | 関連性スコア | トップツイート | 連絡先 |
|---|---|---|---|---|---|---|---|
| 1 | @handle | 表示名 | 45.2K | 3.8% | 95/100 | リンク | [email protected] |
| 2 | @handle2 | 表示名2 | 128K | 1.2% | 88/100 | リンク |
次のステップを提案します:
- リストのエクスポート(必要に応じてフォーマットを指定)
- アウトリーチドラフトの生成
- 傾向分析のための特定のインフルエンサーのより深い分析
- 特定のサブニッチや地理的ターゲットに焦点を当てた改良
デフォルトよりも多くの結果を提供する場合: これらの追加結果には簡略化されたテーブルを使用して、情報過多にならないようにします(ハンドル、名前、フォロワー、スコア、連絡先のみ — ツイートは省略)。ユーザーに完全な拡張リストを提供するかどうかを尋ねます。