关于 building-journalist-outreach-list-from-twitter
这项技能通过搜索 Twitter/X 上报道特定领域、行业或主题的记者,整理媒体联系人名单。它会补充候选人的资料,并根据媒体、职位和粉丝数等信号筛选。
主要功能
- 01搜索主题相关推文
- 02通过抓取器补充个人资料
- 03按记者特征筛选账号
- 04整理媒体联系人名单
适用场景
- 01查找报道某行业的记者
- 02为产品发布建立媒体名单
- 03筛选适合定向联系的记者
MCP 相关
若有 Apify MCP,可运行 `apidojo~tweet-scraper` 和 `apidojo~twitter-user-scraper` Actors。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill building-journalist-outreach-list-from-twitter安装后在 Claude Code 中输入/building-journalist-outreach-list-from-twitter确认已加载。
详细介绍
基于 Twitter 构建记者联络名单
在 Twitter/X 上查找报道特定领域、行业或主题的记者和媒体专业人士。记者是最活跃地使用 Twitter 进行职业交流的人群——这是建立媒体联系人名单的最佳平台。
前置条件
- 已设置
APIFY_TOKEN环境变量 - 可选:已安装 Apify MCP 服务
输入
| 参数 | 类型 | 必填 | 默认值 | 备注 |
|---|---|---|---|---|
startUrls | array | 可选 | [] | Twitter 个人资料或推文 URL |
twitterHandles | array | 可选 | [] | Twitter 用户名(不带 @) |
twitterUserIds | array | 可选 | [] | Twitter 用户 ID |
getFollowers | boolean | 可选 | false | 提取关注者列表 |
getFollowing | boolean | 可选 | false | 提取正在关注的用户列表 |
getRetweeters | boolean | 可选 | false | 提取转推某条推文 URL 的用户 |
includeUnavailableUsers | boolean | 可选 | false | 包含不可用或已停用的用户 |
maxItems | number | 可选 | 不限 | 返回的用户数上限 |
customMapFunction | string | 可选 | — | 用于转换每个输出对象的 JavaScript 函数 |
工作流
Progress:
- [ ] Step 1: Define beat, industry, and target publications
- [ ] Step 2: Search for journalists tweeting about the beat
- [ ] Step 3: Enrich profiles to extract publication affiliation
- [ ] Step 4: Filter and verify journalist signals
- [ ] Step 5: Deliver press contact list
第 1 步:明确参数
询问用户:
- 报道领域/主题(例如“人工智能”“气候科技”“金融科技”“B2B SaaS”)
- 目标媒体(可选,例如“TechCrunch”“Forbes”“Wired”“任何一线科技媒体”)
- 类型——媒体记者、自由撰稿人,或两者兼有
- 地区(可选——美国、英国、全球)
- 名单规模(默认:30 位联系人)
第 2 步:搜索与报道领域相关的推文
查找近期积极发布相关推文的记者——报道的时效性对联络至关重要。
推荐——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": [
"[TOPIC] journalist",
"[TOPIC] reporter",
"writing about [TOPIC]",
"[TOPIC] story [current year]"
],
"maxItems": 300,
"tweetLanguage": "en"
}
另外,再运行一次搜索,查找包含文章链接的推文(记者会发布自己发表的作品链接):
Input:
{
"searchTerms": ["[TOPIC] [publication_domain OR article link signal]"],
"maxItems": 200
}
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": ["[TOPIC] journalist", "[TOPIC] reporter", "writing about [TOPIC]"],
"maxItems": 300
}'
从所有结果中收集不重复的作者用户名。
第 3 步:补充个人资料信息
如果 Apify MCP 可用:
Tool: apify:run-actor
Actor: "apidojo~twitter-user-scraper"
Input:
{
"usernames": ["[username1]", "...", "up to 150 usernames"]
}
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": ["[username1]", "[username2]"]}'
第 4 步:根据记者特征筛选
保留个人简介中包含以下任意内容的账号:
- 媒体名称(例如“TechCrunch”“@Forbes”“Bloomberg”“@Wired”)
- 记者职称:“reporter”“journalist”“editor”“correspondent”“writer at”“staff writer”“freelance writer”“contributing editor”
- 署名特征:“bylines at”“writes for”“covering”
- 新闻资质:“press”“media”
**关注者范围:**1,000–500,000(排除完全不知名的用户,以及不会回复提案的大型电视台主播)
**排除:**公关/传播人员(个人简介中包含“PR”“communications”“agency”)、品牌账号,以及没有记者资历的学者。
第 5 步:整理输出
输出格式
# Journalist Outreach List: [BEAT/TOPIC]
Contacts found: [N] | Publication filter: [if any] | Date: [DATE]
## Contact List
| # | Name | @Handle | Publication | Beat | Followers | Recent Coverage |
|---|------|---------|-------------|------|-----------|-----------------|
| 1 | [name] | @[handle] | [pub] | [beat] | [N] | [recent tweet/article topic] |
## By Publication
### [Publication Name] ([N] contacts)
1. **[Name]** (@[handle]) — [title from bio] | [N] followers
Recent tweet: "[excerpt showing beat relevance]"
2. **[Name]** (@[handle]) — [title] | [N] followers
### Freelancers / Independent ([N] contacts)
1. **[Name]** (@[handle]) — writes for [pubs mentioned in bio] | [N] followers
## Pitch Angle Notes
Based on recent tweets, the top 5 contacts are actively covering:
1. @[handle]: recently tweeted about [specific topic] — pitch angle: [suggestion]
2. @[handle]: covering [topic] — pitch angle: [suggestion]
个性化建议
发送提案前,阅读记者最近的 3 条推文和最新发表的文章,并提及具体内容。泛泛而谈的提案不会奏效。此输出中的近期推文数据可帮助你进行个性化沟通,无需额外调查。
故障排除
**结果中非记者过多:**加强个人简介筛选条件——要求其中必须准确包含“reporter”“journalist”或“editor”,而不能仅包含媒体名称。
**找不到冷门领域的记者:**扩大搜索范围,涵盖相邻领域,或直接尝试以媒体名称作为搜索词。
**关注者数量似乎过时:**对于最终联络名单,可直接在 Twitter 上抽查排名前 10 位的联系人。