building-twitter-prospect-lists
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBuilding Twitter Prospect Lists
构建Twitter潜在客户列表
Searches Twitter/X for profiles matching a target ICP (Ideal Customer Profile) using bio keywords and topic-based tweet search. Delivers a contact-ready list with engagement signals and bio context.
通过个人简介关键词和基于话题的推文搜索,在Twitter/X上查找符合目标ICP(理想客户画像)的个人资料。提供包含互动信号和个人简介背景信息、可直接用于联系的列表。
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 ICP and search strategy
- [ ] Step 2: Run tweet-scraper for keyword/topic tweets
- [ ] Step 3: Extract unique authors from results
- [ ] Step 4: Enrich with twitter-user-scraper for bio + follower data
- [ ] Step 5: Filter, rank, and deliver prospect list进度:
- [ ] 步骤1: 定义ICP和搜索策略
- [ ] 步骤2: 运行tweet-scraper抓取关键词/话题相关推文
- [ ] 步骤3: 从结果中提取唯一作者
- [ ] 步骤4: 使用twitter-user-scraper补充个人简介+粉丝数据
- [ ] 步骤5: 筛选、排序并交付潜在客户列表Step 1: Define ICP and Strategy
步骤1: 定义ICP与策略
Ask the user:
- Job title keywords for Twitter bio search (e.g., "Head of Growth", "Founder", "CTO")
- Topic keywords — what topics does the ICP tweet about? (e.g., "SaaS metrics", "PLG", "RevOps")
- Industry signals — keywords that suggest the right industry in bio (e.g., "SaaS", "fintech", "healthcare")
- Follower range (optional) — e.g., 1,000–50,000 (avoids both nobodies and celebrities)
- Location (optional) — e.g., "San Francisco", "London"
- List size — how many prospects needed?
询问用户:
- 职位头衔关键词 用于Twitter个人简介搜索(例如:"Head of Growth", "Founder", "CTO")
- 话题关键词 — 你的ICP会关注哪些话题?(例如:"SaaS metrics", "PLG", "RevOps")
- 行业信号 — 个人简介中能体现目标行业的关键词(例如:"SaaS", "fintech", "healthcare")
- 粉丝数量范围 (可选) — 例如1,000–50,000(避开无影响力用户和名人)
- 所在地 (可选) — 例如"San Francisco", "London"
- 列表规模 — 需要多少个潜在客户?
Step 2: Search for Topic-Based Tweets
步骤2: 搜索基于话题的推文
Search Twitter for tweets about topics your ICP cares about. People who actively tweet about a topic are warmer prospects.
Recommended — run_actor.js (handles waiting, output, and file saving automatically):
bash
undefined在Twitter上搜索ICP关注的话题相关推文。积极讨论相关话题的用户是更优质的潜在客户。
推荐方式 — 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": ["[TOPIC_KEYWORD_1]", "[TOPIC_KEYWORD_2]"],
"maxItems": 200,
"tweetLanguage": "en"
}
**If Apify MCP is not available:**
```bash
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": ["[TOPIC_KEYWORD]"],
"maxItems": 200
}'Run for each topic keyword. Collect all values. Deduplicate. This gives you a candidate pool.
author.usernamenode 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` 必须在环境变量或 `.env` 文件中设置。
**如果Apify MCP可用:**工具: apify:run-actor
Actor: "apidojo~tweet-scraper"
输入:
{
"searchTerms": ["[TOPIC_KEYWORD_1]", "[TOPIC_KEYWORD_2]"],
"maxItems": 200,
"tweetLanguage": "en"
}
**如果Apify MCP不可用:**
```bash
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": ["[TOPIC_KEYWORD]"],
"maxItems": 200
}'为每个话题关键词执行一次。收集所有 值并去重,得到候选用户池。
author.usernameStep 3: Enrich Candidates with Profile Data
步骤3: 补充候选用户的个人资料数据
Take the top 100-200 unique usernames from Step 2. Fetch full profile data to filter by bio keywords and follower count.
If Apify MCP is available:
Tool: apify:run-actor
Actor: "apidojo~twitter-user-scraper"
Input:
{
"usernames": ["[username1]", "[username2]", "..."],
"maxItems": 100
}If Apify MCP is not available:
bash
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~twitter-user-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"usernames": ["[username1]", "[username2]"]
}'从步骤2中选取前100-200个唯一用户名,获取完整的个人资料数据,以便根据个人简介关键词和粉丝数量进行筛选。
如果Apify MCP可用:
工具: apify:run-actor
Actor: "apidojo~twitter-user-scraper"
输入:
{
"usernames": ["[username1]", "[username2]", "..."],
"maxItems": 100
}如果Apify MCP不可用:
bash
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~twitter-user-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"usernames": ["[username1]", "[username2]"]
}'Step 4: Filter Against ICP Criteria
步骤4: 根据ICP标准筛选
From profile data, keep only users where ALL of these are true:
- Bio contains at least one job title keyword OR industry signal keyword
- Follower count is within the specified range (if given)
- Location matches (if specified) — check field
location - Account is not a bot (has profile picture, has >10 tweets, account age >6 months)
Remove:
- Accounts with default profile images
- Accounts with 0 tweets
- Verified mega-influencers (follower count above range)
- Obviously automated accounts
从个人资料数据中,仅保留满足以下所有条件的用户:
- 个人简介包含至少一个职位头衔关键词或行业信号关键词
- 粉丝数量在指定范围内(若有设置)
- 所在地匹配(若有指定)——检查 字段
location - 账号非机器人(有头像、推文数量>10、账号创建时长>6个月)
移除:
- 使用默认头像的账号
- 推文数量为0的账号
- 已验证的超级网红(粉丝数超出范围)
- 明显的自动化账号
Step 5: Rank and Format
步骤5: 排序与格式化
Rank filtered prospects by:
- Relevance score = number of ICP keywords matched in bio
- Engagement proxy = (likes + retweets on recent tweets) / follower count
按照以下规则对筛选后的潜在客户进行排序:
- 相关性得分 = 个人简介中匹配的ICP关键词数量
- 互动代理值 = (近期推文的点赞数+转发数) / 粉丝数
Output Format
输出格式
undefinedundefinedTwitter Prospect List: [ICP DESCRIPTION]
Twitter潜在客户列表: [ICP描述]
Generated: [N] prospects | Filters applied: [summary] | Date: [DATE]
| # | Name | Handle | Followers | Job / Bio | Location | Last Active | Profile |
|---|---|---|---|---|---|---|---|
| 1 | [name] | @[handle] | [N] | [bio excerpt] | [city] | [date] | [url] |
| 2 | [name] | @[handle] | [N] | [bio excerpt] | [city] | [date] | [url] |
生成时间: [N]个潜在客户 | 应用的筛选条件: [摘要] | 日期: [DATE]
| # | 姓名 | 账号 | 粉丝数 | 职位/个人简介 | 所在地 | 最后活跃时间 | 个人资料链接 |
|---|---|---|---|---|---|---|---|
| 1 | [name] | @[handle] | [N] | [个人简介节选] | [城市] | [日期] | [链接] |
| 2 | [name] | @[handle] | [N] | [个人简介节选] | [城市] | [日期] | [链接] |
Top 10 Highest-Priority Prospects
优先级最高的10位潜在客户
- @[handle] — "[bio]" | [N] followers | Recently tweeted about: [topic]
- @[handle] — "[bio]" | [N] followers | Recently tweeted about: [topic] ...
- @[handle] — "[个人简介]" | [N]粉丝 | 近期推文话题: [topic]
- @[handle] — "[个人简介]" | [N]粉丝 | 近期推文话题: [topic] ...
Notes
备注
- [N] candidates found in topic search
- [N] filtered out (didn't match ICP criteria)
- [N] final prospects delivered
- Engagement signals are 24-48h delayed
undefined- 在话题搜索中找到[N]个候选用户
- [N]个用户被筛选掉(不符合ICP标准)
- 最终交付[N]个潜在客户
- 互动信号存在24-48小时延迟
undefinedPersonalizing Outreach
个性化客户开发
For each top prospect, the recent tweet sample can be used to personalize outreach. Note their recent topics to reference in a first message.
对于每位高优先级潜在客户,可利用其近期推文样本来个性化开发内容。在首次沟通中提及他们近期关注的话题。
Troubleshooting
故障排除
Too few results after filtering: Broaden bio keywords (use OR logic, not AND). Try more topic keywords in Step 2.
Too many irrelevant accounts: Add industry-specific keywords to bio filter (e.g., require "SaaS" or "B2B" in bio).
Location filter not working: Twitter location is self-reported and inconsistent — treat it as a soft signal, not a hard filter.
筛选后结果过少: 放宽个人简介关键词(使用OR逻辑,而非AND)。在步骤2中尝试更多话题关键词。
无关账号过多: 在个人简介筛选中添加行业特定关键词(例如要求个人简介包含"SaaS"或"B2B")。
所在地筛选无效: Twitter的所在地为用户自行填写,存在不一致性——将其视为软信号,而非硬性筛选条件。