tracking-hiring-signals-from-company-tweets
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTracking Hiring Signals from Company Tweets
跟踪企业推文中的招聘信号
Monitors company Twitter accounts for hiring announcements and growth signals. Companies tweet about openings before jobs.page or LinkedIn posts go live — Twitter is an early signal channel.
监控企业Twitter账号的招聘公告与增长信号。企业会在Jobs.page或LinkedIn发布职位之前先在Twitter推文——Twitter是一个早期信号渠道。
Prerequisites
前提条件
- environment variable set
APIFY_TOKEN - Optional: Apify MCP server installed
- 已设置环境变量
APIFY_TOKEN - 可选:已安装Apify MCP服务器
Inputs
输入参数
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
| array | ✅ | | Twitter advanced search queries (e.g. |
| string | Optional | | Sort order: |
| string | Optional | — | ISO 639-1 language code (e.g. |
| number | Optional | Unlimited | Maximum tweets to return |
| boolean | Optional | | Only tweets from verified users |
| boolean | Optional | | Only Twitter Blue subscribers |
| boolean | Optional | | Only tweets with images |
| boolean | Optional | | Only tweets with videos |
| boolean | Optional | | Only quote tweets |
| string | Optional | — | Filter to a specific author handle |
| string | Optional | — | Tweets replying to a specific handle |
| string | Optional | — | Tweets mentioning a specific handle |
| string | Optional | — | Tweets near a location |
| string | Optional | — | Radius around geotaggedNear |
| string | Optional | — | Lat/lng + radius string |
| string | Optional | — | Tweets tagged with a place |
| number | Optional | — | Minimum retweet count |
| number | Optional | — | Minimum like count |
| number | Optional | — | Minimum reply count |
| string | Optional | — | Tweets after this date (YYYY-MM-DD) |
| string | Optional | — | Tweets before this date (YYYY-MM-DD) |
| boolean | Optional | | Add the matched search term to each tweet |
| string | Optional | — | JavaScript function to transform each output object |
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 数组 | ✅ | | Twitter高级搜索查询语句(例如: |
| 字符串 | 可选 | | 排序方式: |
| 字符串 | 可选 | — | ISO 639-1语言代码(例如: |
| 数字 | 可选 | 无限制 | 返回的最大推文数量 |
| 布尔值 | 可选 | | 仅返回已认证用户的推文 |
| 布尔值 | 可选 | | 仅返回Twitter Blue订阅用户的推文 |
| 布尔值 | 可选 | | 仅返回带图片的推文 |
| 布尔值 | 可选 | | 仅返回带视频的推文 |
| 布尔值 | 可选 | | 仅返回引用推文 |
| 字符串 | 可选 | — | 筛选特定作者账号 |
| 字符串 | 可选 | — | 筛选回复特定账号的推文 |
| 字符串 | 可选 | — | 筛选提及特定账号的推文 |
| 字符串 | 可选 | — | 筛选特定地点附近的推文 |
| 字符串 | 可选 | — | |
| 字符串 | 可选 | — | 纬度/经度 + 半径字符串 |
| 字符串 | 可选 | — | 筛选标记特定地点的推文 |
| 数字 | 可选 | — | 最小转发量 |
| 数字 | 可选 | — | 最小点赞量 |
| 数字 | 可选 | — | 最小回复量 |
| 字符串 | 可选 | — | 筛选此日期之后的推文(格式:YYYY-MM-DD) |
| 字符串 | 可选 | — | 筛选此日期之前的推文(格式:YYYY-MM-DD) |
| 布尔值 | 可选 | | 为每条推文添加匹配的搜索词 |
| 字符串 | 可选 | — | 用于转换输出对象的JavaScript函数 |
Workflow
工作流程
Progress:
- [ ] Step 1: Search for hiring-signal tweets in sector
- [ ] Step 2: (Optional) Scrape specific company accounts
- [ ] Step 3: Extract role and team info from tweet text
- [ ] Step 4: Score growth signal strength
- [ ] Step 5: Deliver hiring intelligence report进度:
- [ ] 步骤1:搜索特定领域内的招聘信号推文
- [ ] 步骤2:(可选)抓取特定企业账号的内容
- [ ] 步骤3:从推文中提取岗位与团队信息
- [ ] 步骤4:为增长信号评分
- [ ] 步骤5:生成招聘情报报告Step 1: Search Hiring Signals
步骤1:搜索招聘信号
Recommended — run_actor.js (handles waiting, output, and file saving automatically):
bash
undefined推荐方式 —— run_actor.js(自动处理等待、输出与文件保存):
bash
undefinedQuick answer (prints table to chat)
快速输出(在聊天窗口打印表格)
node scripts/run_actor.js
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
Save as CSV
保存为CSV格式
node scripts/run_actor.js
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
node scripts/run_actor.js
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
Save as JSON
保存为JSON格式
node scripts/run_actor.js
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
> `APIFY_TOKEN` must be set in environment or `.env` file.
**If Apify MCP is available:**Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
"searchTerms": ["we're hiring [SECTOR]", "join our team [SECTOR]", "[ROLE] hiring [SECTOR]"],
"maxItems": 300
}
**REST API fallback:**
```bash
curl -X POST "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{
"searchTerms": ["we are hiring fintech", "join our team SaaS startup", "software engineer hiring"],
"maxItems": 300
}'node scripts/run_actor.js
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
> 必须在环境变量或`.env`文件中设置`APIFY_TOKEN`。
**若Apify MCP可用:**工具: apify:run-actor
Actor: "apidojo~tweet-scraper"
输入:
{
"searchTerms": ["we're hiring [SECTOR]", "join our team [SECTOR]", "[ROLE] hiring [SECTOR]"],
"maxItems": 300
}
**REST API备选方案:**
```bash
curl -X POST "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{
"searchTerms": ["we are hiring fintech", "join our team SaaS startup", "software engineer hiring"],
"maxItems": 300
}'Step 2: Extract Role Signals from Tweet Text
步骤2:从推文中提取岗位信号
role_mentioned = extract noun phrases after "hiring a/an", "looking for a/an", "seeking a"
team_mentioned = extract from: "engineering team", "sales team", "marketing", "product team"
urgency = "immediately", "ASAP", "urgent" → HIGH; "growing team" → MEDIUM; general → LOWrole_mentioned = 提取"hiring a/an"、"looking for a/an"、"seeking a"后的名词短语
team_mentioned = 从以下内容提取:"engineering team"、"sales team"、"marketing"、"product team"
urgency = 出现"immediately"、"ASAP"、"urgent" → 高优先级;出现"growing team" → 中优先级;通用表述 → 低优先级Step 3: Growth Signal Score
步骤3:增长信号评分
hiring_signal_score = (is_confirmed_company_account ? 1 : 0.5) * 0.30
+ (role_is_specific ? 1 : 0.5) * 0.25
+ (post_is_recent: ≤7 days = 1, 8-14 = 0.7, 15-30 = 0.4) * 0.25
+ (link_to_job_page ? 1 : 0) * 0.20Growth tier: Multiple hiring tweets in 30 days = HIGH_GROWTH; 1-2 = STEADY_HIRE; no link = SIGNAL_ONLY
hiring_signal_score = (是否为已认证企业账号 ? 1 : 0.5) * 0.30
+ (岗位是否具体 ? 1 : 0.5) * 0.25
+ (推文发布时间: ≤7天 = 1, 8-14天 = 0.7, 15-30天 = 0.4) * 0.25
+ (是否包含职位页面链接 ? 1 : 0) * 0.20增长等级: 30天内发布多条招聘推文 = 高增长;1-2条 = 稳定招聘;无链接 = 仅信号
Step 4: Edge Cases
步骤4:边缘情况处理
- Retweets from employee accounts: If a company employee retweets a job post, keep — it's still a valid signal; note it's not the company's official account
- Job boards posting on behalf of company: Filter out accounts named "JobsAt[Company]", staffing agencies, or accounts posting > 10 hiring tweets/day (aggregators)
- Role extraction fails: Note the tweet verbatim and mark — still a growth signal
role = "unspecified" - Same company posts 5 roles: Deduplicate by ; count unique companies, not unique tweets
author.username
- 员工账号转发的招聘信息:若企业员工转发职位发布内容,保留该信号——仍为有效信息;需标注非企业官方账号
- 代发招聘信息的求职平台:过滤名为"JobsAt[Company]"的账号、人力中介或每日发布超过10条招聘推文的账号(聚合平台)
- 岗位提取失败:保留推文原文并标记——仍视为增长信号
role = "unspecified" - 同一企业发布5个岗位:按去重;统计独特企业数量,而非独特推文数量
author.username
Output Format
输出格式
undefinedundefinedHiring Signal Intelligence: [SECTOR/ROLE]
招聘信号情报: [领域/岗位]
Tweets analyzed: [N] | Companies with hiring signals: [N] | Date: [DATE]
分析推文数量: [N] | 存在招聘信号的企业数量: [N] | 日期: [DATE]
High-Growth Companies (Multiple Roles Posted)
高增长企业(发布多个岗位)
| Company | @Handle | Roles Mentioned | Teams | Posts | Link to Jobs | Score |
|---|---|---|---|---|---|---|
| [name] | @[handle] | [role list] | [eng/mktg] | [N] | [Yes/No] | [0.XX] |
| 企业 | @账号 | 提及岗位 | 团队 | 发布数量 | 职位链接 | 评分 |
|---|---|---|---|---|---|---|
| [名称] | @[账号] | [岗位列表] | [技术/营销] | [N] | [是/否] | [0.XX] |
Single Hire Signals
单次招聘信号
| Company | @Handle | Role | Team | Tweet Date | Job Link |
|---|
| 企业 | @账号 | 岗位 | 团队 | 推文日期 | 职位链接 |
|---|
Role Distribution Across All Companies
全企业岗位分布
| Role Category | # Companies Hiring | Urgency |
|---|---|---|
| Engineering | [N] | [High/Med] |
| Marketing | [N] | |
| Sales | [N] |
undefined| 岗位类别 | 招聘企业数量 | 紧急程度 |
|---|---|---|
| 技术 | [N] | [高/中] |
| 营销 | [N] | |
| 销售 | [N] |
undefinedTroubleshooting
故障排除
Results dominated by job boards: Add negative terms to search:
Sector too broad: Narrow with a sub-sector or specific stage: "Series A fintech" instead of "fintech".
Job links are broken/expired: Hiring tweets are posted in real-time; check within 48h for best link validity.
-jobs -jobboard -staffing -recruiting结果被求职平台主导:在搜索词中添加排除项:
领域范围过宽:缩小至细分领域或特定阶段:例如用"A轮金融科技"代替"金融科技"
职位链接失效/过期:招聘推文为实时发布;建议在48小时内查看以获得最佳链接有效性。
-jobs -jobboard -staffing -recruiting