finding-data-scientists-on-twitter について
TwitterでデータサイエンティストやMLエンジニアを探すスキルです。職種関連の投稿を検索してプロフィールを収集・補完し、候補者の情報を評価して一覧にまとめます。
主な機能
- 01職種に関連するツイートの検索
- 02重複のないアカウント名の収集
- 03ユーザーデータによるプロフィール補完
- 04スキルと求職シグナルの評価
- 05候補者の適合度と活動状況の採点
活用シーン
- 01データサイエンス分野の候補者探し
- 02求職中のMLエンジニアの特定
- 03Twitterプロフィールから候補者一覧を作成
MCP 対応
Apify MCPサーバーでtweet-scraperとtwitter-user-scraper Actorを実行できます。REST APIを使う方法も記載されています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill finding-data-scientists-on-twitterインストール後、Claude Code で/finding-data-scientists-on-twitterを入力して読み込まれたか確認します。
詳細
Twitter でデータサイエンティストと ML エンジニアを探す
スキルキーワード、ポートフォリオ/プロジェクトのシグナル、転職意欲を示すシグナルを使って、Twitter 上のデータサイエンティストと ML エンジニアを見つけます。Twitter では、自分の専門分野について積極的に発信しているプロフェッショナルを見つけられます。これは、候補者の潜在的な関心を示す有力なシグナルです。
前提条件
- 環境変数
APIFY_TOKENが設定されていること - 任意:Apify MCP サーバーがインストールされていること
入力
| パラメーター | 型 | 必須 | デフォルト | 備考 |
|---|---|---|---|---|
startUrls | array | 任意 | [] | Twitter のプロフィール URL またはツイート URL |
twitterHandles | array | 任意 | [] | Twitter のユーザー名(@なし) |
twitterUserIds | array | 任意 | [] | Twitter のユーザー ID |
getFollowers | boolean | 任意 | false | フォロワーリストを抽出します |
getFollowing | boolean | 任意 | false | フォロー中のユーザーリストを抽出します |
getRetweeters | boolean | 任意 | false | ツイート URL のリツイートユーザーを抽出します |
includeUnavailableUsers | boolean | 任意 | false | 利用できないユーザー/凍結されたユーザーを含めます |
maxItems | number | 任意 | 無制限 | 返すユーザーの最大数 |
customMapFunction | string | 任意 | — | 各出力オブジェクトを変換する JavaScript 関数 |
ワークフロー
Progress:
- [ ] Step 1: Search for role-specific tweets
- [ ] Step 2: Collect unique handles
- [ ] Step 3: Enrich profiles
- [ ] Step 4: Score candidate fit
- [ ] Step 5: Deliver candidate list
ステップ 1:検索クエリ
推奨 — run_actor.js(待機、出力、ファイル保存を自動で処理します):
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~twitter-user-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~twitter-user-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~twitter-user-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format json
APIFY_TOKENは環境変数または.envファイルに設定してください。
Apify MCP が利用可能な場合:
Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
"searchTerms": ["data scientist", "ML engineer", "LLM engineer", "machine learning open to work"],
"maxItems": 300,
"tweetLanguage": "en"
}
REST API による代替手段:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms": ["data scientist", "ML engineer", "LLM engineer", "machine learning open to work"], "maxItems": 300}'
結果から一意な author.username を収集します。
ステップ 2:プロフィール情報の補完
Apify MCP が利用可能な場合:
Tool: apify:run-actor
Actor: "apidojo~twitter-user-scraper"
Input: {"usernames": ["[username1]", "[username2]", "..."]}
REST API による代替手段:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~twitter-user-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"usernames": ["handle1", "handle2"]}'
ステップ 3:フィルタリングとスコアリング
スキルの確認: bio に次のキーワードが含まれていること:「data science」、「machine learning」、「ML」、「NLP」、「LLM」、「AI」、「neural network」、「PyTorch」、「TensorFlow」、「scikit-learn」
research_signal = bio に「PhD」、「researcher」が含まれている、または論文/Google Scholar へのリンクがある
候補者スコア:
candidate_score = (skill_confirmed ? 1 : 0) * 0.35
+ (open_to_work_signal ? 1 : 0) * 0.30
+ (followerCount in 200..20000 ? 1 : 0.6) * 0.20
+ (tweeted_in_last_30_days ? 1 : 0) * 0.15
アクティビティ:アクティブ(30日未満) | パッシブ(30~90日) | 休眠(90日超)
ステップ 4:エッジケース
- 結果に企業/ブランドのアカウントが含まれる場合:
followerCount > 50Kかつ bio に一人称代名詞が含まれないアカウントを除外します。ブランドアカウントの可能性があります - 候補者が20人未満の場合:スキル用語の範囲を広げます。地域または職位のフィルターを外すか、隣接するスキルを試します
- ボットの検出:
followerCount / followingCount < 0.05かつtweetsCount < 20のアカウントに、ボットの可能性があるというフラグを付けます - 所在地が一致しない場合:bio の所在地は自由記述です。あいまい検索を使い、都市名/国名の部分一致も許容します
出力形式
# Data Scientists And Ml Engineers Candidates: [ML_SPECIALTY]
Profiles found: [N] | Open-to-work: [N] | Active: [N] | Date: [DATE]
## Priority: Open-to-Work Candidates
| Name | @Handle | Specialty | Location | Followers | Last Active | Score |
|------|---------|----------|---------|-----------|------------|-------|
## Passive Candidates
| Name | @Handle | Specialty | Location | Followers | Score |
|------|---------|----------|---------|-----------|-------|
## Bio Highlights (Top 5)
1. @[handle]: "[bio excerpt]"
トラブルシューティング
結果が個人ではなく、すべて代理店/企業になる場合:一人称代名詞のフィルターを追加するか、「I am a [role]」、「I do [skill]」で検索します。 役職が一般的すぎて結果が多すぎる場合:地域または職位の条件を追加します。 転職意欲を示すシグナルがない場合:候補者の多くは公には転職意欲を示しません。パッシブ候補者を有望な見込み客とみなし、最近の投稿に触れたパーソナライズされたメッセージでアプローチします。