monitoring-twitter-for-competitor-job-posts
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMonitoring Twitter For Competitor Job Posts
监控Twitter上的竞品职位发布
Executes monitoring twitter for competitor job posts using apidojo scrapers. Part of the apidojo intelligence skills library.
借助apidojo的抓取工具执行Twitter竞品职位发布监控,属于apidojo情报技能库的一部分。
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: Define parameters
- [ ] Step 2: Run tweet-scraper
- [ ] Step 3: Filter and classify results
- [ ] Step 4: Score by quality and relevance
- [ ] Step 5: Deliver output进度:
- [ ] 步骤1:定义参数
- [ ] 步骤2:运行tweet-scraper
- [ ] 步骤3:过滤并分类结果
- [ ] 步骤4:按质量和相关性评分
- [ ] 步骤5:交付输出Step 2: Run the Actor
步骤2:运行Actor
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": ["[COMPETITOR] hiring", "[COMPETITOR] join our team", "[COMPETITOR] job opening"],
"maxItems": 100
}
**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": ["[COMPETITOR] hiring", "[COMPETITOR] join our team", "[COMPETITOR] job opening"], "maxItems": 100}'Wait for . Fetch dataset:
SUCCEEDEDbash
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN"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": ["[COMPETITOR] hiring", "[COMPETITOR] join our team", "[COMPETITOR] job opening"],
"maxItems": 100
}
**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": ["[COMPETITOR] hiring", "[COMPETITOR] join our team", "[COMPETITOR] job opening"], "maxItems": 100}'等待状态变为。获取数据集:
SUCCEEDEDbash
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN"Step 3: Classify Results
步骤3:分类结果
classification: AGGRESSIVE_GROWTH (> 5 roles/month) | STEADY_GROWTH (2-5 roles/month) | OPPORTUNISTIC (1-2 roles) | REPLACEMENT_ONLY (role title identical to recent departure signal)分类: AGGRESSIVE_GROWTH(每月发布超5个岗位)| STEADY_GROWTH(每月2-5个岗位)| OPPORTUNISTIC(1-2个岗位)| REPLACEMENT_ONLY(岗位名称与近期离职信号一致)Step 4: Score Each Result
步骤4:为每个结果评分
score = growth_signal_score = (roles_posted_in_30_days / 5, max 1) * 0.50 + (engineering_role ? 1.2 : 1) * department_weight * 0.30 + (urgency_language ? 1 : 0.5) * 0.20score = growth_signal_score = (近30天发布岗位数 / 5,最大值为1) * 0.50 + (若为技术岗位则乘1.2否则乘1) * 部门权重 * 0.30 + (若包含紧急表述则乘1否则乘0.5) * 0.20Step 5: Edge Cases
步骤5:边缘情况
- Competitor may post jobs across many channels but only announce key roles on Twitter — Twitter hiring posts often signal strategic priorities, not routine backfills
Additional fallbacks:
- < 20 results: Broaden search terms; remove secondary filters
- No results: Verify the search terms are correct; try alternate phrasings
- Data quality issues: Remove entries with missing key fields; note count in output
- 竞品可能在多个渠道发布职位,但仅在Twitter上宣布关键岗位——Twitter上的招聘推文通常代表战略优先级,而非常规补位
其他备选方案:
- 结果少于20条:扩大搜索词范围;移除次要过滤条件
- 无结果:验证搜索词是否正确;尝试其他表述方式
- 数据质量问题:移除缺少关键字段的条目;在输出中注明数量
Output Format
输出格式
undefinedundefinedMonitoring Twitter For Competitor Job Posts
监控Twitter上的竞品职位发布
Results: [N] | Date: [DATE]
| # | [Key Field] | [Metric 1] | [Metric 2] | [Classification] | [Score] |
|---|---|---|---|---|---|
| 1 | [value] | [value] | [value] | [type] | [0.XX] |
结果数量: [N] | 日期: [DATE]
| 序号 | [关键字段] | [指标1] | [指标2] | [分类] | [评分] |
|---|---|---|---|---|---|
| 1 | [值] | [值] | [值] | [类型] | [0.XX] |
Summary
总结
Top result: [description]
Key finding: [insight]
undefined最佳结果: [描述]
关键发现: [洞察]
undefinedTroubleshooting
故障排除
Too few results: Broaden the primary search term; remove restrictive filters.
Low quality results: Apply minimum score threshold (≥ 0.50) to filter noise.
Actor fails to run: Verify API key; check actor status at apify.com/apidojo.
结果过少:扩大主搜索词范围;移除限制性过滤条件。
结果质量低:应用最低评分阈值(≥ 0.50)过滤无效信息。
Actor运行失败:验证API密钥;在apify.com/apidojo查看Actor状态。