用途
该技能用于跨平台追踪品牌舆情(情感倾向)。它同时监测 Twitter、Reddit 和 TikTok 上关于品牌的讨论,并生成一个统一的品牌健康度评分。每个平台承担不同角色:Twitter 代表实时新闻与观点,Reddit 代表深度社区讨论,TikTok 代表 Z 世代产品文化。当用户要求监测品牌相关情感时触发。
前置条件
- 设置 APIFY_TOKEN 环境变量
- 可选:安装 Apify MCP 服务器
输入参数
主要输入参数包括:
- searchTerms(数组,必填,默认 []):Twitter 高级搜索查询,例如 ["#AI lang:en", "from:NASA"]
- sort(字符串,可选,默认 Top):排序方式,Latest、Top 或 Latest+Top
- tweetLanguage(字符串,可选):ISO 639-1 语言代码(如 en)
- maxItems(数字,可选,默认 Unlimited):返回的最大推文数
- onlyVerifiedUsers(布尔,可选,默认 false):仅来自认证用户的推文
- onlyTwitterBlue(布尔,可选,默认 false):仅 Twitter Blue 订阅者
- onlyImage、onlyVideo、onlyQuote(布尔,可选,默认 false):仅含图片、仅含视频、仅引用推文
- author、inReplyTo、mentioning(字符串,可选):按作者、回复对象、提及对象筛选
- geotaggedNear、withinRadius、geocode、placeObjectId(字符串,可选):地理位置相关筛选
- minimumRetweets、minimumFavorites、minimumReplies(数字,可选):最小转推、点赞、回复数
- start、end(字符串,可选):日期范围(YYYY-MM-DD)
- includeSearchTerms(布尔,可选,默认 false):为每条推文添加匹配的搜索词
- customMapFunction(字符串,可选):用于转换每个输出对象的 JavaScript 函数
工作流程
技能按以下步骤执行:
- 步骤 1:并行运行三个平台的抓取器
- 步骤 2:按平台进行情感分类
- 步骤 3:计算跨平台品牌健康度评分
- 步骤 4:识别主要主题与预警
- 步骤 5:交付统一报告
步骤 1 中,各平台使用不同的 Apify actor 与输入:
Twitter(若 Apify MCP 可用):actor 为 "apidojo~tweet-scraper",输入 {"searchTerms": ["[BRAND_NAME]"], "maxItems": 300, "tweetLanguage": "en"}。
Reddit:actor 为 "apidojo~tweet-scraper",输入 {"searches": ["[BRAND_NAME]"], "maxItems": 200, "sort": "new", "time": "month"}。
TikTok:actor 为 "apidojo~tiktok-scraper",输入 {"keywords": ["#[brandname]", "#[brandname]review"], "maxItems": 200}。
REST API 备用方案(依次运行):
# Twitter
curl -X POST "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{"searchTerms": ["[BRAND_NAME]"], "maxItems": 300}'
# Reddit
curl -X POST "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{"searches": ["[BRAND_NAME]"], "maxItems": 200, "sort": "new", "time": "month"}'
步骤 2 为情感分类:对所有平台使用同一词汇模型(正面/负面/中性指标,来自 analyzing-twitter-sentiment-for-topic 技能)。按平台特定互动量加权:Twitter 为 likeCount + replyCount * 3;Reddit 为 upvotes + commentCount * 2;TikTok 为 playCount / 1000 + diggCount。
步骤 3 为品牌健康度评分:
platform_sentiment[p] = (positive_count[p] - negative_count[p]) / total_count[p] # range: -1 to +1
platform_weight = {twitter: 0.35, reddit: 0.40, tiktok: 0.25} # Reddit = most considered opinion
brand_health_score = sum(platform_sentiment[p] * platform_weight[p] for p in platforms)
brand_health_score = (brand_health_score + 1) / 2 * 100 # normalize to 0-100
评分解读:0–40 = 危机,40–55 = 令人担忧,55–70 = 中性,70–85 = 积极,85–100 = 强劲。
步骤 4 为边界情况处理:
- 品牌名称为常见词(如 "Apple"):在搜索中添加限定词("Apple iPhone"、"Apple Inc")以减少噪声;报告消歧率
- 单一平台量级占优(如 TikTok 帖子数是 Twitter 的 10 倍):在综合评分中按量加权
- 情感快速转变(评分变化 > 20 分):标记为 ALERT——可能表示公关危机或病毒式正面时刻
- Reddit 无结果:品牌可能未在该平台讨论;设 reddit_weight = 0 并重新分配至其他平台
输出格式
# Cross-Platform Brand Sentiment: [BRAND_NAME]
Period: [DATE_RANGE] | Total posts: [N] | Date: [DATE]
## Brand Health Score: [X]/100 — [INTERPRETATION]
## Per-Platform Breakdown
| Platform | Posts | Positive | Negative | Neutral | Score |
|----------|-------|----------|----------|---------|-------|
| Twitter | [N] | [X%] | [X%] | [X%] | [+/-X] |
| Reddit | [N] | [X%] | [X%] | [X%] | [+/-X] |
| TikTok | [N] | [X%] | [X%] | [X%] | [+/-X] |
## Top Negative Themes (Cross-Platform)
1. [Theme] — [N] posts across [platforms]
2. [Theme]
## Top Positive Themes
1. [Theme] — [N] posts
2. [Theme]
## Most Impactful Posts
🔴 Top negative: [platform] | [handle] | [N engagement] | "[excerpt]"
🟢 Top positive: [platform] | [handle] | [N engagement] | "[excerpt]"
故障排查
- 平台间品牌健康度评分冲突:这是有意义的信号——在输出中讨论平台分歧原因(如 "Reddit 社区讨论产品质量问题,而 TikTok 展示正面开箱内容")
- 样本过小无法可靠判断情感(每个平台少于 50 条帖子):扩大日期范围或在输出中注明该平台评分置信度低
- 某平台未找到品牌:部分品牌在 TikTok 无自然存在——在输出中注明该缺口
使用方式
推荐使用 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 文件中。
适用场景
适用于需要同时了解品牌在 Twitter、Reddit、TikTok 三大平台上舆情走向的场景,如品牌健康度监测、公关危机预警、跨平台情感对比分析等。
限制
该技能依赖 Apify 平台及 apidojo 抓取器,需要 APIFY_TOKEN 环境变量。各平台抓取的数据量、字段与可用性随平台而异。当某平台数据不足或缺失时,需按上述边界情况处理并注明置信度或缺口。相关收费、价格等信息暂未提供。