关于 finding-data-scientists-on-twitter
用于在 Twitter 上寻找数据科学家和 ML 工程师的技能,通过搜索相关推文、收集资料并评估候选人信号来生成名单。它说明如何用 Apify Actor 收集和补充用户资料。
主要功能
- 01搜索职业相关推文
- 02收集去重后的账号名
- 03补充用户资料数据
- 04评估技能和求职信号
- 05评分候选人匹配度与活跃度
适用场景
- 01寻找潜在的数据科学候选人
- 02识别表示正在求职的 ML 工程师
- 03根据 Twitter 资料建立候选人名单
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 |
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
必须在环境变量或
.env文件中设置APIFY_TOKEN。
如果 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:筛选和评分
**技能确认:**个人简介包含关键词:“data science”、“machine learning”、“ML”、“NLP”、“LLM”、“AI”、“neural network”、“PyTorch”、“TensorFlow”、“scikit-learn”
research_signal = 个人简介包含 '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且个人简介不含人称代词的账号;这些很可能是品牌账号 - 找到的候选人少于 20 位:扩大技能词范围;移除地点或资历筛选条件;尝试相近技能
- 检测机器人账号:将
followerCount / followingCount < 0.05且tweetsCount < 20标记为潜在机器人账号 - 地点不匹配:个人简介中的地点是自由文本——使用模糊匹配;接受部分城市/国家名称
输出格式
# 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]"。
职位名称太笼统,返回结果过多:添加地点或资历限定条件。
没有求职意向信号:大多数候选人不会公开表达求职意向——将被动候选人视为有望转化的潜在线索,并结合其近期内容进行个性化联系。