Install
openclaw skills install @thcjp/social-sentiment-tool-free社交情感分析免费版为个人用户提供轻量级的社交媒体情感监控能力. 核心能力: - 单平台社交媒体数据采集 - 关键词情感分类(正面/负面/中性) - 基础主题提取 - 情感分布统计 适用场景: - 个人品牌口碑监控 - 产品用户反馈分析 - 话题情感趋势追踪 差异化:免费版聚焦核心情感分析流程,通过Python+CSV实现轻量部署,适合个人用户监控单一平台的品牌或话题情感,无需复杂配置. 适用关键词: 社交媒体, 情感分析, sentiment, 口碑监控, 品牌追踪, 舆情分析, 关键词监控
openclaw skills install @thcjp/social-sentiment-tool-free社交情感分析免费版是一款轻量级的社交媒体情感监控工具。它通过关键词搜索采集社交媒体数据,使用基于词典的情感分类方法(正面/负面/中性)对内容进行分析,提取讨论主题,生成情感分布统计报告. 免费版适合个人用户监控单一平台的品牌或话题情感。工具使用Python和pandas处理CSV数据,部署轻量,无需复杂的基础设施。情感分类基于预定义关键词词典,覆盖中英文常见情感词汇.
| 能力模块 | 说明 | 免费版支持 |
|---|---|---|
| 数据采集 | 社交媒体关键词搜索 | 支持(单平台) |
| 情感分类 | 正面/负面/中性分类 | 支持(词典法) |
| 主题提取 | 讨论主题识别 | 支持(基础) |
| 情感统计 | 情感分布占比 | 支持 |
| CSV导入 | 从CSV文件导入数据 | 支持 |
| 多平台 | 跨平台数据采集 | 不支持 |
| LLM情感分析 | AI增强情感分析 | 不支持 |
| 病毒式传播检测 | 高互动内容识别 | 不支持 |
| 竞品对比 | 多品牌情感对比 | 不支持 |
| 定时监控 | 定时自动监控 | 不支持 |
| 可视化报告 | 图表可视化 | 不支持 |
执行已知限制操作,使用input_params参数进行配置,支持创建/查询/导出等操作.
input_params参数,支持创建/查询/导出操作仅支持单一平台数据采集
处理: 解析仅支持单一平台数据采集的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回仅支持单一平台数据采集的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作情感分类使用词典法(准确率约70-80%)
处理: 解析情感分类使用词典法(准确率约7的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回情感分类使用词典法(准确率约7的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作不支持LLM增强情感分析
处理: 解析不支持LLM增强情感分析的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回不支持LLM增强情感分析的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作不支持病毒式传播内容检测
处理: 解析不支持病毒式传播内容检测的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回不支持病毒式传播内容检测的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作不支持竞品情感对比
处理: 解析不支持竞品情感对比的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回不支持竞品情感对比的响应数据,包含状态码、结果和日志.
执行此能力时使用input_params参数,支持创建/查询/导出操作
不支持定时自动监控
不支持可视化图表报告
处理: 解析已知限制的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回已知限制的响应数据,包含状态码、结果和日志. 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:轻量级社交媒体情、感分析工具、支持单平台关键词、监控与基础情感分、适合个人品牌追踪、社交情感分析免费、版为个人用户提供、轻量级的社交媒体、情感监控能力等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.
独立开发者希望监控社交媒体上对自己产品或品牌的讨论情感.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 社交情感分析免费版处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
import pandas as pd
# ...
# 从CSV导入社交媒体数据(手动导出或API获取)
df = pd.read_csv('social-mentions.csv')
# ...
# 情感分类词典
POSITIVE = ['love', 'amazing', 'best', 'recommend', '喜欢', '推荐', '好用', '优秀']
NEGATIVE = ['hate', 'terrible', 'worst', 'broken', '讨厌', '糟糕', '难用', '问题']
# ...
def classify(text):
t = str(text).lower()
pos = sum(1 for k in POSITIVE if k in t)
neg = sum(1 for k in NEGATIVE if k in t)
return 'positive' if pos > neg else ('negative' if neg > pos else 'neutral')
# ...
df['sentiment'] = df['text'].apply(classify)
# ...
# 情感分布统计
print(df['sentiment'].value_counts(normalize=True).round(2))
输出示例:
positive 0.58
negative 0.24
neutral 0.18
产品团队希望分析用户在社交媒体上的产品反馈,识别主要痛点.
import pandas as pd
# ...
# 加载用户反馈数据
df = pd.read_csv('product-feedback.csv')
# ...
# 情感分类
POSITIVE = ['好', '棒', '爱了', '推荐', '方便', '快速', 'nice', 'great', 'love']
NEGATIVE = ['差', '烂', '问题', 'bug', '崩溃', '慢', 'bad', 'broken', 'hate']
# ...
def classify(text):
t = str(text).lower()
pos = sum(1 for k in POSITIVE if k in t)
neg = sum(1 for k in NEGATIVE if k in t)
return 'positive' if pos > neg else ('negative' if neg > pos else 'neutral')
# ...
# ...
# 负面反馈分析
negative_feedback = df[df['sentiment'] == 'negative']
print("=== 负面反馈样本 ===")
for _, row in negative_feedback.head(10).iterrows():
print(f"- {row['text'][:100]}")
# ...
# 主题关键词提取(简单词频)
from collections import Counter
import re
# ...
words = []
for text in negative_feedback['text']:
words.extend(re.findall(r'[\u4e00-\u9fa5]{2,4}', str(text)))
# ...
print("\n=== 负面反馈高频词 ===")
for word, count in Counter(words).most_common(10):
print(f" {word}: {count}次")
用户希望追踪某个话题在社交媒体上的情感变化趋势.
import pandas as pd
from datetime import datetime
# ...
# 加载带时间戳的数据
df = pd.read_csv('topic-timeline.csv')
df['date'] = pd.to_datetime(df['created_at']).dt.date
# ...
# 情感分类
POSITIVE = ['好', '支持', '赞', 'nice', 'great', 'love', '支持']
NEGATIVE = ['反对', '差', '问题', 'bad', 'hate', '糟糕']
# ...
def classify(text):
t = str(text).lower()
pos = sum(1 for k in POSITIVE if k in t)
neg = sum(1 for k in NEGATIVE if k in t)
return 'positive' if pos > neg else ('negative' if neg > pos else 'neutral')
# ...
# ...
# 按日统计情感分布
daily = df.groupby('date')['sentiment'].unstack()
print(daily.fillna(0).round(2))
以下场景社交情感分析免费版不适合处理:
需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于非本工具能力范围的需求.
pip3 install pandas
从社交媒体平台导出数据为CSV格式,或通过API获取。CSV需包含至少text列(文本内容).
# social-mentions.csv
id,text,created_at,author
1,"这个产品真好用,推荐!","2026-07-18T10:00:00","user_a"
2,"又出bug了,太糟糕了","2026-07-18T11:00:00","user_b"
3,"功能还可以,就是有点慢","2026-07-18T12:00:00","user_c"
import pandas as pd
# ...
# ...
POSITIVE = ['好', '推荐', '好用', '优秀', 'love', 'amazing', 'best']
NEGATIVE = ['差', '糟糕', '问题', 'bug', 'hate', 'terrible', 'broken']
# ...
def classify(text):
t = str(text).lower()
pos = sum(1 for k in POSITIVE if k in t)
neg = sum(1 for k in NEGATIVE if k in t)
return 'positive' if pos > neg else ('negative' if neg > pos else 'neutral')
# ...
# ...
# 输出结果
print(df[['text', 'sentiment']])
print("\n情感分布:")
# 生成情感分析报告
report = f"""
# 情感分析报告
# ...
## 数据概况
- 总提及数: {len(df)}
- 分析时间: {datetime.now().strftime('%Y-%m-%d %H:%M')}
# ...
## 情感分布
- 正面: {(df['sentiment']=='positive').sum()} 条 ({(df['sentiment']=='positive').mean()*100:.1f}%)
- 负面: {(df['sentiment']=='negative').sum()} 条 ({(df['sentiment']=='negative').mean()*100:.1f}%)
- 中性: {(df['sentiment']=='neutral').sum()} 条 ({(df['sentiment']=='neutral').mean()*100:.1f}%)
# ...
## 情感得分: {((df['sentiment']=='positive').mean()*100 - (df['sentiment']=='negative').mean()*100):.0f}/100
"""
# ...
print(report)
免费版使用预定义词典,可根据领域扩展:
# 领域定制情感词典
POSITIVE = [
# 通用正面词
'好', '棒', '推荐', '喜欢', '优秀', '方便', '快速',
'love', 'amazing', 'best', 'recommend', 'great', 'nice',
# 产品领域正面词
'流畅', '稳定', ' intuitive', '易用', '高效', '专业'
]
# ...
NEGATIVE = [
# 通用负面词
'差', '烂', '问题', 'bug', '崩溃', '慢', '讨厌',
'hate', 'terrible', 'worst', 'broken', 'bad', 'awful',
# 产品领域负面词
'卡顿', '闪退', '难用', '反人类', '垃圾', '坑'
]
# 必需字段
text # 文本内容(必需)
# ...
# 可选字段(增强分析)
created_at # 创建时间(趋势分析)
author # 作者(用户分析)
likes # 点赞数(热度分析)
retweets # 转发数(传播分析)
platform # 平台来源
#!/usr/bin/env python3
"""社交情感分析免费版 - 分析脚本模板"""
# ...
import pandas as pd
import sys
from datetime import datetime
# ...
# 情感词典
POSITIVE = ['好', '棒', '推荐', '喜欢', 'love', 'amazing', 'best', 'great']
NEGATIVE = ['差', '烂', '问题', 'bug', 'hate', 'terrible', 'broken', 'bad']
# ...
def classify_sentiment(text):
"""基于词典的情感分类"""
t = str(text).lower()
pos = sum(1 for k in POSITIVE if k in t)
neg = sum(1 for k in NEGATIVE if k in t)
if pos > neg:
return 'positive'
elif neg > pos:
return 'negative'
else:
return 'neutral'
# ...
def analyze(csv_path):
"""执行情感分析"""
df = pd.read_csv(csv_path)
apply(classify_sentiment)
# ...
# 统计
total = len(df)
pos = (df['sentiment'] == 'positive').sum()
neg = (df['sentiment'] == 'negative').sum()
neu = (df['sentiment'] == 'neutral').sum()
score = int((pos - neg) / total * 100) if total > 0 else 0
# ...
print(f"总提及数: {total}")
print(f"正面: {pos} ({pos/total*100:.1f}%)")
print(f"负面: {neg} ({neg/total*100:.1f}%)")
print(f"中性: {neu} ({neu/total*100:.1f}%)")
print(f"情感得分: {score}/100")
# ...
if __name__ == '__main__':
analyze(sys.argv[1])
通用词典的准确率有限。根据监控领域(产品、服务、话题)定制情感词典,加入领域特有表达,可显著提升准确率:
# 电商领域:加入"划算"、"性价比"、"假货"等领域词
# 技术产品:加入"流畅"、"卡顿"、"闪退"等领域词
情感分析的统计意义依赖数据量。少于50条提及时,情感分布波动大,结论不可靠。建议至少收集100条以上提及再进行分析.
正面反馈确认做得好的地方,负面反馈揭示改进机会。重点分析负面反馈的内容主题,识别高频痛点:
negative = df[df['sentiment'] == 'negative']
# 提取负面反馈中的高频词,识别主要痛点
单次情感分析只是快照。定期采集数据,对比不同时期的情感分布,发现趋势变化:
# 按日/周统计情感分布
df.value_counts(normalize=True)
词典法准确率约70-80%,存在误判(如"不好"含"好"但为负面)。对关键结论(如"负面占比突增")应人工复核原始数据,避免基于误判做决策.
A: 词典法准确率约70-80%,受限于:(1)词典覆盖面有限;(2)无法理解上下文(如反讽);(3)无法处理复合表达(如"不好")。提升方法:(1)扩展领域词典;(2)添加否定词处理逻辑;(3)升级到专业版使用LLM增强情感分析,准确率达85-95%.
A: 免费版不内置数据采集功能。数据获取方式:(1)社交媒体平台官方导出功能(如Twitter数据导出);(2)平台API(如Twitter API、Reddit API);(3)第三方数据导出工具;(4)手动复制整理为CSV。CSV需包含text字段.
A: 免费版本身不限定平台,任何能导出为CSV格式的社交媒体数据均可分析。常见适用平台:Twitter、Reddit、微博、小红书等。但免费版每次只分析一个平台的数据,不支持跨平台对比.
A: 情感得分 = (正面条目数 - 负面条目数) / 总条目数 * 100。得分范围-100到+100。0分表示正负面持平,正分表示偏正面,负分表示偏负面。得分仅基于词典分类,仅供参考.
A: pandas处理1万条以下CSV通常在秒级。如数据量更大:(1)使用chunksize参数分批读取;(2)过滤无关列减少内存;(3)对文本字段限制长度。免费版适合中小规模数据(1万条以下),更大规模建议升级专业版.
A: 可以。情感词典支持多语言,只需在词典中添加目标语言的词汇。例如日语正面词"いい"、"素晴らしい",负面词"ダメ"、"最悪"。但免费版不自动检测语言,需确保词典覆盖目标语言.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Python 3.8+ | 运行时 | 必需 | https://python.org |
| pandas | Python库 | 必需 | pip3 install pandas |
| 社交媒体数据 | 数据源 | 必需 | 平台导出或API获取 |
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| 网络访问 | 网络 | 条件必需 | 通过API获取数据时需要 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |