mcpField
F
finding-freelancers-by-skill-on-twitter

finding-freelancers-by-skill-on-twitter

github.com/apidojo-io其他1757 次安装24 周前更新
代码仓库

关于 finding-freelancers-by-skill-on-twitter

这项技能通过技能相关推文、个人资料线索和求职信号,在 Twitter 上发现自由职业者与独立承包人。它收集候选账号、补充资料并评分,适用于招聘流程。

主要功能

  1. 01搜索技能与招聘相关推文
  2. 02收集去重后的个人资料账号
  3. 03补充候选人的个人资料数据
  4. 04按技能、可接单信号和活跃度评分

适用场景

  1. 01为自由职业岗位建立候选名单
  2. 02寻找表示愿意承接项目的账号

MCP 相关

可选用 Apify MCP 服务运行推文和 Twitter 用户抓取 Actor。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill finding-freelancers-by-skill-on-twitter

安装后在 Claude Code 中输入/finding-freelancers-by-skill-on-twitter确认已加载。

详细介绍

在 Twitter 上寻找自由职业者和独立承包商

通过技能关键词、作品集/项目线索和开放求职信号,在 Twitter 上发现自由职业者和独立承包商。Twitter 上有许多积极讨论自己专业领域的从业者,这是一个很强的被动候选人信号。

前提条件

  • 已设置 APIFY_TOKEN 环境变量
  • 可选:已安装 Apify MCP 服务

输入

参数类型必填默认值说明
startUrlsarray可选[]Twitter 个人资料或推文 URL
twitterHandlesarray可选[]Twitter 用户名(不含 @)
twitterUserIdsarray可选[]Twitter 用户 ID
getFollowersboolean可选false提取关注者列表
getFollowingboolean可选false提取正在关注的用户列表
getRetweetersboolean可选false提取转发某条推文 URL 的用户
includeUnavailableUsersboolean可选false包含无法访问或已暂停的用户
maxItemsnumber可选无限制返回的用户数量上限
customMapFunctionstring可选—用于转换每个输出对象的 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": ["freelance [SKILL]", "[SKILL] for hire", "available for contract [SKILL]"],
  "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": ["freelance [SKILL]", "[SKILL] for hire", "available for contract [SKILL]"], "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 步:筛选和评分

**技能确认:**简介中包含关键词:"freelance"、"independent"、"for hire"、"consulting"、"contract"、"available"、"hire me"、"DM for work"

availability_signal = 简介或近期推文中包含 'available'、'taking clients'、'open for projects'、'DM for rates'

候选人评分:

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 的账号标记为疑似机器人
  • 地点不匹配:简介中的地点为自由文本 — 使用模糊匹配;接受不完整的城市/国家名称

输出格式

# Freelancers And Independent Contractors Candidates: [FREELANCE_SKILL]
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]"。 职位过于宽泛,返回结果太多:添加地点或资历限定词。 没有开放求职信号:大多数候选人不会公开表明求职意向 — 将被动候选人视为有希望的潜在对象,并通过个性化联系提及他们近期发布的内容。

评论

支持 Markdown