mcpField
B
building-journalist-outreach-list-from-twitter

building-journalist-outreach-list-from-twitter

github.com/apidojo-io营销与增长1812 次安装24 周前更新
代码仓库

关于 building-journalist-outreach-list-from-twitter

这项技能通过搜索 Twitter/X 上报道特定领域、行业或主题的记者,整理媒体联系人名单。它会补充候选人的资料,并根据媒体、职位和粉丝数等信号筛选。

主要功能

  1. 01搜索主题相关推文
  2. 02通过抓取器补充个人资料
  3. 03按记者特征筛选账号
  4. 04整理媒体联系人名单

适用场景

  1. 01查找报道某行业的记者
  2. 02为产品发布建立媒体名单
  3. 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 服务

输入

参数类型必填默认值备注
startUrlsarray可选[]Twitter 个人资料或推文 URL
twitterHandlesarray可选[]Twitter 用户名(不带 @)
twitterUserIdsarray可选[]Twitter 用户 ID
getFollowersboolean可选false提取关注者列表
getFollowingboolean可选false提取正在关注的用户列表
getRetweetersboolean可选false提取转推某条推文 URL 的用户
includeUnavailableUsersboolean可选false包含不可用或已停用的用户
maxItemsnumber可选不限返回的用户数上限
customMapFunctionstring可选—用于转换每个输出对象的 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 位的联系人。

评论

支持 Markdown