building-twitter-prospect-lists

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Building 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

前置条件

  • APIFY_TOKEN
    environment variable set
  • Optional: Apify MCP server installed
  • 已设置
    APIFY_TOKEN
    环境变量
  • 可选:已安装Apify MCP服务器

Inputs

输入参数

ParameterTypeRequiredDefaultNotes
searchTerms
array
[]
Twitter advanced search queries (e.g.
["#AI lang:en", "from:NASA"]
)
sort
stringOptional
Top
Sort order:
Latest
,
Top
, or
Latest+Top
tweetLanguage
stringOptionalISO 639-1 language code (e.g.
en
)
maxItems
numberOptionalUnlimitedMaximum tweets to return
onlyVerifiedUsers
booleanOptional
false
Only tweets from verified users
onlyTwitterBlue
booleanOptional
false
Only Twitter Blue subscribers
onlyImage
booleanOptional
false
Only tweets with images
onlyVideo
booleanOptional
false
Only tweets with videos
onlyQuote
booleanOptional
false
Only quote tweets
author
stringOptionalFilter to a specific author handle
inReplyTo
stringOptionalTweets replying to a specific handle
mentioning
stringOptionalTweets mentioning a specific handle
geotaggedNear
stringOptionalTweets near a location
withinRadius
stringOptionalRadius around geotaggedNear
geocode
stringOptionalLat/lng + radius string
placeObjectId
stringOptionalTweets tagged with a place
minimumRetweets
numberOptionalMinimum retweet count
minimumFavorites
numberOptionalMinimum like count
minimumReplies
numberOptionalMinimum reply count
start
stringOptionalTweets after this date (YYYY-MM-DD)
end
stringOptionalTweets before this date (YYYY-MM-DD)
includeSearchTerms
booleanOptional
false
Add the matched search term to each tweet
customMapFunction
stringOptionalJavaScript function to transform each output object
参数类型是否必填默认值说明
searchTerms
数组
[]
Twitter高级搜索查询(例如:
["#AI lang:en", "from:NASA"]
sort
字符串可选
Top
排序方式:
Latest
(最新)、
Top
(热门)或
Latest+Top
(最新+热门)
tweetLanguage
字符串可选ISO 639-1语言代码(例如:
en
maxItems
数字可选无限制返回的最大推文数量
onlyVerifiedUsers
布尔值可选
false
仅返回已验证用户的推文
onlyTwitterBlue
布尔值可选
false
仅返回Twitter Blue订阅用户的推文
onlyImage
布尔值可选
false
仅返回带图片的推文
onlyVideo
布尔值可选
false
仅返回带视频的推文
onlyQuote
布尔值可选
false
仅返回引用推文
author
字符串可选筛选特定作者的账号
inReplyTo
字符串可选回复特定账号的推文
mentioning
字符串可选提及特定账号的推文
geotaggedNear
字符串可选特定地点附近的推文
withinRadius
字符串可选
geotaggedNear
周边的半径范围
geocode
字符串可选纬度/经度 + 半径字符串
placeObjectId
字符串可选标记了特定地点的推文
minimumRetweets
数字可选最低转发量
minimumFavorites
数字可选最低点赞量
minimumReplies
数字可选最低回复量
start
字符串可选此日期之后的推文(格式:YYYY-MM-DD)
end
字符串可选此日期之前的推文(格式:YYYY-MM-DD)
includeSearchTerms
布尔值可选
false
为每条推文添加匹配的搜索关键词
customMapFunction
字符串可选用于转换每个输出对象的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
undefined

Quick answer (prints table to chat)

快速输出(在聊天中打印表格)

node scripts/run_actor.js
--actor "apidojo~tweet-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--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
node scripts/run_actor.js
--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
> `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
author.username
values. Deduplicate. This gives you a candidate pool.
node scripts/run_actor.js
--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.username
值并去重,得到候选用户池。

Step 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:
  1. Bio contains at least one job title keyword OR industry signal keyword
  2. Follower count is within the specified range (if given)
  3. Location matches (if specified) — check
    location
    field
  4. 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
从个人资料数据中,仅保留满足以下所有条件的用户:
  1. 个人简介包含至少一个职位头衔关键词或行业信号关键词
  2. 粉丝数量在指定范围内(若有设置)
  3. 所在地匹配(若有指定)——检查
    location
    字段
  4. 账号非机器人(有头像、推文数量>10、账号创建时长>6个月)
移除:
  • 使用默认头像的账号
  • 推文数量为0的账号
  • 已验证的超级网红(粉丝数超出范围)
  • 明显的自动化账号

Step 5: Rank and Format

步骤5: 排序与格式化

Rank filtered prospects by:
  1. Relevance score = number of ICP keywords matched in bio
  2. Engagement proxy = (likes + retweets on recent tweets) / follower count
按照以下规则对筛选后的潜在客户进行排序:
  1. 相关性得分 = 个人简介中匹配的ICP关键词数量
  2. 互动代理值 = (近期推文的点赞数+转发数) / 粉丝数

Output Format

输出格式

undefined
undefined

Twitter Prospect List: [ICP DESCRIPTION]

Twitter潜在客户列表: [ICP描述]

Generated: [N] prospects | Filters applied: [summary] | Date: [DATE]
#NameHandleFollowersJob / BioLocationLast ActiveProfile
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位潜在客户

  1. @[handle] — "[bio]" | [N] followers | Recently tweeted about: [topic]
  2. @[handle] — "[bio]" | [N] followers | Recently tweeted about: [topic] ...
  1. @[handle] — "[个人简介]" | [N]粉丝 | 近期推文话题: [topic]
  2. @[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小时延迟
undefined

Personalizing 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的所在地为用户自行填写,存在不一致性——将其视为软信号,而非硬性筛选条件。