SuperAPI AI 工具集

tracking-sports-team-fan-sentiment-twitter

数据与分析

查看项目

更新于 10-15 12:09

技能介绍

用途

该技能用于追踪 Twitter 上体育队伍粉丝的情绪倾向,基于 apidojo 的 Tweet scraper(apidojo~tweet-scraper)执行抓取与分析。它属于 apidojo 情报技能库(apidojo intelligence skills library)。

前提条件

  • 设置 APIFY_TOKEN 环境变量
  • 可选:安装 Apify MCP 服务器

主要能力

通过 Twitter 高级搜索查询抓取推文,并对结果进行情绪分类与评分。支持多种输入参数与过滤条件,包括搜索词、排序、语言、数量上限、用户认证状态、媒体类型、作者、回复/提及对象、地理位置、互动量下限、时间范围等。

输入参数

参数 类型 必填 默认 说明
searchTerms array ✅ [] Twitter 高级搜索查询(如 ["#AI lang:en", "from:NASA"])
sort string 可选 Top 排序:Latest、Top 或 Latest+Top
tweetLanguage string 可选 — ISO 639-1 语言代码(如 en)
maxItems number 可选 无限制 返回推文的最大数量
onlyVerifiedUsers boolean 可选 false 仅认证用户的推文
onlyTwitterBlue boolean 可选 false 仅 Twitter Blue 订阅者
onlyImage boolean 可选 false 仅含图片的推文
onlyVideo boolean 可选 false 仅含视频的推文
onlyQuote boolean 可选 false 仅引用推文
author string 可选 — 筛选特定作者账号
inReplyTo string 可选 — 回复特定账号的推文
mentioning string 可选 — 提及特定账号的推文
geotaggedNear string 可选 — 某地点附近的推文
withinRadius string 可选 — geotaggedNear 的半径
geocode string 可选 — 纬度/经度 + 半径字符串
placeObjectId string 可选 — 带地点标签的推文
minimumRetweets number 可选 — 最低转推数
minimumFavorites number 可选 — 最低点赞数
minimumReplies number 可选 — 最低回复数
start string 可选 — 此日期之后的推文(YYYY-MM-DD)
end string 可选 — 此日期之前的推文(YYYY-MM-DD)
includeSearchTerms boolean 可选 false 在每条推文中加入匹配的搜索词
customMapFunction string 可选 — 转换每个输出对象的 JavaScript 函数

工作流程

分五步:

  1. 定义参数
  2. 运行 tweet-scraper
  3. 过滤并分类结果
  4. 按质量与相关性评分
  5. 交付输出

步骤 2:运行 Actor

推荐使用 run_actor.js(自动处理等待、输出与文件保存):

# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
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 可用:

Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
  "searchTerms": ["[TEAM_NAME]", "#[TeamHashtag]", "[TEAM_NAME] game"],
  "maxItems": 100
}

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": ["[TEAM_NAME]", "#[TeamHashtag]", "[TEAM_NAME] game"], "maxItems": 100}'

# 等待 SUCCEEDED。获取数据集:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN"

步骤 3:分类结果

  • WIN_BOOST(赛后获胜;情绪上升 > +40%)
  • LOSS_DROP(赛后失利;情绪下降 < -30%)
  • CONTROVERSY(两极分化;正面与负面均 > 30%)
  • BASELINE(正常日)

步骤 4:评分

score = fan_sentiment_score = (positive_count - negative_count) / total_count  # range -1 to +1

步骤 5:边界情况

体育情绪受赛事结果强烈驱动——在任何情绪测量中,应始终将球队近期比赛结果作为背景注明。

其他回退策略:

  • 结果 < 20 条:放宽搜索词;移除次要过滤器
  • 无结果:确认搜索词正确;尝试其他表述
  • 数据质量问题:移除缺少关键字段的条目;在输出中注明数量

输出格式

# Tracking Sports Team Fan Sentiment Twitter
Results: [N] | Date: [DATE]

| # | [Key Field] | [Metric 1] | [Metric 2] | [Classification] | [Score] |
|---|------------|-----------|-----------|-----------------|---------|
| 1 | [value] | [value] | [value] | [type] | [0.XX] |

## Summary
Top result: [description]
Key finding: [insight]

故障排查

  • 结果过少:放宽主要搜索词;移除限制性过滤器
  • 结果质量低:应用最低分数阈值(≥ 0.50)过滤噪声
  • Actor 运行失败:验证 API 密钥;在 apify.com/apidojo 检查 actor 状态