mcpField
S
social-media-trends-research

social-media-trends-research

github.com/drshailesh88营销与增长6710 次安装24 周前更新
代码仓库

关于 social-media-trends-research

Social Media Trends Research 是供营销人员和研究者追踪搜索与社交平台话题的技能。它结合用于 Google Trends 和 Reddit 的 Python 流程,以及面向其他平台的 Perplexity MCP 查询模板。

主要功能

  1. 01获取 Google Trends 热度与相关查询
  2. 02搜索 Reddit 帖子及互动数据
  3. 03使用 Perplexity MCP 查询模板研究社交趋势
  4. 04运行内置趋势研究与 Reddit 抓取脚本
  5. 05限制请求频率并交叉核对平台信息

适用场景

  1. 01查看细分关键词的每日变化
  2. 02研究 Reddit 每周讨论及互动情况
  3. 03比较搜索与社交平台趋势
  4. 04为内容规划收集趋势依据

MCP 相关

该技能使用 Perplexity MCP 查询模板研究 Twitter/X、TikTok、YouTube 和 LinkedIn 趋势。文档还介绍了通过 Claude 内置 MCP 或 perplexity-search 技能使用它。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/drshailesh88/integrated_content_os --skill social-media-trends-research

安装后在 Claude Code 中输入/social-media-trends-research确认已加载。

附带文件scripts/reddit_scraper.pyscripts/trend_research.py

详细介绍

社交媒体趋势研究

概述

使用三款免费工具进行程序化趋势研究:

  • pytrends:Google Trends 数据(增长速度、搜索量、相关查询)
  • yars:无需 API 密钥即可抓取 Reddit 数据
  • Perplexity MCP:Twitter/TikTok/Web 趋势(通过 Claude 内置的 MCP)

此技能提供可执行的趋势研究代码。可搭配 content-marketing-social-listening 制定策略,并使用 perplexity-search 进行深度查询。

快速设置

# Install dependencies (one-time)
pip install pytrends requests --break-system-packages

无需 API 密钥。抓取 Reddit 数据使用公开的 .json 端点。


工具 1:pytrends(Google Trends)

提供的内容
  • 按国家/地区查看实时热门搜索
  • 关键词的随时间变化的关注度
  • 相关查询(上升趋势 = 增长速度指标)
  • 按地区查看关注度
  • 相关主题
基本用法
from pytrends.request import TrendReq
import time

# Initialize (no API key needed)
pytrends = TrendReq(hl='en-US', tz=330)  # tz=330 for India (IST)

# Get real-time trending searches
trending = pytrends.trending_searches(pn='india')
print(trending.head(20))
研究所在细分领域的关键词
from pytrends.request import TrendReq
import time

pytrends = TrendReq(hl='en-US', tz=330)

# Define your niche keywords (max 5 per request)
keywords = ['heart health', 'cardiology', 'cholesterol']

# Build payload
pytrends.build_payload(keywords, timeframe='now 7-d', geo='IN')

# Get interest over time
interest = pytrends.interest_over_time()
print(interest)

# CRITICAL: Wait between requests to avoid rate limiting
time.sleep(3)

# Get related queries (THIS IS GOLD - shows rising topics)
related = pytrends.related_queries()
for kw in keywords:
    print(f"\n=== Rising queries for '{kw}' ===")
    rising = related[kw]['rising']
    if rising is not None:
        print(rising.head(10))
查找爆红/突破性话题
from pytrends.request import TrendReq
import time

pytrends = TrendReq(hl='en-US', tz=330)

def find_breakout_topics(keyword, geo=''):
    """Find topics with explosive growth (potential viral content)"""
    pytrends.build_payload([keyword], timeframe='today 3-m', geo=geo)
    time.sleep(3)  # Rate limiting
    
    related = pytrends.related_queries()
    rising = related[keyword]['rising']
    
    if rising is not None:
        # Filter for breakout topics (marked as "Breakout" or very high %)
        breakouts = rising[rising['value'] >= 1000]  # 1000%+ growth
        return breakouts
    return None

# Example usage
breakouts = find_breakout_topics('heart health', geo='IN')
print(breakouts)
pytrends 的速率限制规则
import time

# SAFE: 1 request per 3-5 seconds for casual use
time.sleep(5)

# BULK RESEARCH: 1 request per 60 seconds
time.sleep(60)

# If you get rate limited (429 error): Wait 60-120 seconds, then continue
# If persistent issues: Wait 4-6 hours before resuming
常用时间范围
时间范围使用场景
'now 1-H'过去 1 小时(实时峰值)
'now 4-H'过去 4 小时
'now 1-d'过去 24 小时
'now 7-d'过去 7 天(最适合追踪趋势)
'today 1-m'过去 30 天
'today 3-m'过去 90 天(增长速度分析)
'today 12-m'过去一年(季节性模式)

工具 2:Reddit(无需 API 密钥——公开 JSON 端点)

提供的内容
  • 在 Reddit 上搜索任意关键词
  • 获取 subreddit 中的热门、最高赞或上升帖子
  • 帖子互动数据(赞数、评论数)
  • 无需身份验证
基本用法
import requests
import time

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}

# Search Reddit for your niche
url = "https://www.reddit.com/search.json?q=heart+health&limit=10&sort=relevance&t=week"
response = requests.get(url, headers=headers, timeout=10)
data = response.json()

# Display results
for child in data.get('data', {}).get('children', []):
    post = child.get('data', {})
    print(f"Title: {post.get('title')}")
    print(f"Subreddit: r/{post.get('subreddit')}")
    print(f"Score: {post.get('score')}")
    print("---")
获取指定 subreddit 中的热门帖子
import requests
import time

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}

# Define subreddits relevant to your niche
subreddits = ['cardiology', 'health', 'medicine']

for sub in subreddits:
    print(f"\n=== Hot in r/{sub} ===")
    try:
        url = f"https://www.reddit.com/r/{sub}/hot.json?limit=10"
        response = requests.get(url, headers=headers, timeout=10)
        data = response.json()
        
        for child in data.get('data', {}).get('children', [])[:5]:
            post = child.get('data', {})
            print(f"- [{post.get('score')}] {post.get('title')[:60]}...")
    except Exception as e:
        print(f"Error: {e}")
    
    time.sleep(3)  # Rate limiting between requests
使用捆绑的 Reddit 抓取工具

声明档/reddit_scraper.py 中包含一个辅助类:

from scripts.reddit_scraper import SimpleRedditScraper

scraper = SimpleRedditScraper()

# Search
results = scraper.search("heart health tips", limit=20)
for post in results['posts']:
    print(f"[{post['score']}] r/{post['subreddit']}: {post['title']}")

# Get subreddit hot posts
results = scraper.get_subreddit("health", sort="hot", limit=10)
for post in results['posts']:
    print(f"[{post['score']}] {post['title']}")
Reddit 的速率限制规则
import time

# SAFE: 1 request per 2-3 seconds
time.sleep(3)

# If you get 429 errors: Wait 5-10 minutes
# Never do more than 60 requests per hour

工具 3:Perplexity MCP(Twitter/TikTok/Web)

对于无法直接抓取的平台,请使用 Claude 内置的 Perplexity MCP。

趋势研究查询模板

Twitter/X 趋势:

"What are the most discussed [YOUR NICHE] topics on Twitter/X this week? 
Include specific examples of viral tweets and their engagement."

TikTok 趋势(可在印度使用):

"What [YOUR NICHE] content is trending on TikTok right now? 
Include hashtags, view counts, and content formats that are working."

YouTube 趋势:

"What [YOUR NICHE] videos are getting the most views on YouTube this week? 
Include channel names, view counts, and video topics."

LinkedIn 专业领域:

"What [YOUR NICHE] topics are professionals discussing on LinkedIn this week? 
Include examples of high-engagement posts."

通用爆红内容:

"What [YOUR NICHE] content has gone viral across social media in the past 7 days? 
Include platform, format, and why it resonated."
将 Perplexity 与 perplexity-search 技能配合使用

如果已安装 perplexity-search 技能:

python scripts/perplexity_search.py \
  "What cardiology topics are trending on Twitter and TikTok this week? Include specific viral posts and hashtags." \
  --model sonar-pro

综合研究工作流

完整的趋势研究函数
from pytrends.request import TrendReq
import requests
import time
import json
from datetime import datetime

class TrendResearcher:
    def __init__(self):
        self.pytrends = TrendReq(hl='en-US', tz=330)
        self.reddit_headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        }
    
    def _reddit_request(self, url):
        """Make a Reddit API request."""
        try:
            response = requests.get(url, headers=self.reddit_headers, timeout=10)
            response.raise_for_status()
            return response.json()
        except Exception as e:
            return {'error': str(e)}
    
    def research_niche(self, keywords, subreddits=None, geo='IN'):
        """
        Complete trend research for a niche.
        
        Args:
            keywords: List of keywords (max 5)
            subreddits: List of subreddit names to monitor
            geo: Geographic region code
        
        Returns:
            Dictionary with all research data
        """
        results = {
            'timestamp': datetime.now().isoformat(),
            'keywords': keywords,
            'google_trends': {},
            'reddit': {},
            'recommendations': []
        }
        
        # 1. Google Trends - Interest Over Time
        print("📊 Fetching Google Trends data...")
        try:
            self.pytrends.build_payload(keywords[:5], timeframe='now 7-d', geo=geo)
            results['google_trends']['interest'] = self.pytrends.interest_over_time().to_dict()
            time.sleep(5)
            
            # Related queries (rising topics)
            related = self.pytrends.related_queries()
            results['google_trends']['rising_queries'] = {}
            for kw in keywords[:5]:
                rising = related[kw]['rising']
                if rising is not None:
                    results['google_trends']['rising_queries'][kw] = rising.head(10).to_dict()
            time.sleep(5)
        except Exception as e:
            results['google_trends']['error'] = str(e)
        
        # 2. Reddit Research
        print("👽 Fetching Reddit discussions...")
        if subreddits:
            for sub in subreddits[:5]:
                try:
                    url = f"https://www.reddit.com/r/{sub}/hot.json?limit=10"
                    data = self._reddit_request(url)
                    posts = []
                    for child in data.get('data', {}).get('children', [])[:5]:
                        post = child.get('data', {})
                        posts.append({
                            'title': post.get('title', ''),
                            'score': post.get('score', 0),
                            'comments': post.get('num_comments', 0)
                        })
                    results['reddit'][sub] = posts
                    time.sleep(3)
                except Exception as e:
                    results['reddit'][sub] = {'error': str(e)}
        
        # 3. Keyword search on Reddit
        print("🔍 Searching Reddit for keywords...")
        for kw in keywords[:3]:
            try:
                url = f"https://www.reddit.com/search.json?q={kw}&limit=10&sort=relevance&t=week"
                data = self._reddit_request(url)
                posts = []
                for child in data.get('data', {}).get('children', [])[:5]:
                    post = child.get('data', {})
                    posts.append({
                        'title': post.get('title', ''),
                        'subreddit': post.get('subreddit', ''),
                        'score': post.get('score', 0),
                        'comments': post.get('num_comments', 0)
                    })
                results['reddit'][f'search_{kw}'] = posts
                time.sleep(3)
            except Exception as e:
                results['reddit'][f'search_{kw}'] = {'error': str(e)}
        
        # 4. Generate recommendations
        results['recommendations'] = self._generate_recommendations(results)
        
        return results
    
    def _generate_recommendations(self, data):
        """Generate content recommendations from research data"""
        recommendations = []
        
        # From rising queries
        rising = data.get('google_trends', {}).get('rising_queries', {})
        for kw, queries in rising.items():
            if isinstance(queries, dict) and 'query' in queries:
                for query in list(queries['query'].values())[:3]:
                    recommendations.append({
                        'source': 'Google Trends',
                        'topic': query,
                        'reason': f"Rising search term related to '{kw}'"
                    })
        
        # From Reddit hot posts
        for sub, posts in data.get('reddit', {}).items():
            if isinstance(posts, list):
                for post in posts[:2]:
                    if post.get('score', 0) > 50:
                        recommendations.append({
                            'source': f'Reddit r/{sub}',
                            'topic': post.get('title', ''),
                            'reason': f"High engagement ({post.get('score')} upvotes)"
                        })
        
        return recommendations

# Usage Example
if __name__ == "__main__":
    researcher = TrendResearcher()
    
    results = researcher.research_niche(
        keywords=['heart health', 'cardiology', 'cholesterol'],
        subreddits=['cardiology', 'health', 'medicine'],
        geo='IN'
    )
    
    # Save results
    with open('trend_research.json', 'w') as f:
        json.dump(results, f, indent=2, default=str)
    
    # Print recommendations
    print("\n🎯 CONTENT RECOMMENDATIONS:")
    for rec in results['recommendations']:
        print(f"- [{rec['source']}] {rec['topic']}")
        print(f"  Why: {rec['reason']}")

命令速查

每日趋势检查(5 分钟)
from pytrends.request import TrendReq
import requests
import time

# Quick Google Trends check
pytrends = TrendReq(hl='en-US', tz=330)
pytrends.build_payload(['your keyword'], timeframe='now 1-d')
print(pytrends.related_queries()['your keyword']['rising'])

time.sleep(5)

# Quick Reddit check  
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
url = "https://www.reddit.com/search.json?q=your+keyword&limit=10&t=day"
response = requests.get(url, headers=headers, timeout=10)
data = response.json()
for child in data.get('data', {}).get('children', [])[:5]:
    post = child.get('data', {})
    print(f"[{post.get('score')}] {post.get('title')}")
每周深入研究
# Use the TrendResearcher class above with:
# - 5 core keywords
# - 5 relevant subreddits
# - 90-day timeframe for velocity analysis

# Then use Perplexity MCP for:
# - Twitter trends in your niche
# - TikTok viral content
# - YouTube trending videos
# - LinkedIn discussions

与写作技能集成

研究完成后,将发现交给写作技能:

1. Run trend research (this skill)
2. Identify top 3-5 opportunities
3. Use content-marketing-social-listening for strategy
4. Use cardiology-content-repurposer or similar for content creation
5. Use authentic-voice for final polish

故障排除

pytrends 问题
错误解决方案
429 Too Many Requests等待 60 秒,然后延长休眠时间
结果为空检查关键词是否有搜索量
连接错误检查网络,5 分钟后重试
Reddit 问题
错误解决方案
429 Rate Limited等待 10 分钟
未找到 subreddit检查 subreddit 名称拼写
结果为空subreddit 可能是私有的或已被隔离
连接超时延长超时时间,检查网络

最佳实践

  1. 始终进行速率限制:在请求之间休眠
  2. 分批研究:每周进行深入研究,不要持续轮询
  3. 保存结果:在本地缓存研究数据
  4. 交叉验证:在多个平台上验证趋势
  5. 快速行动:爆红窗口很短(24-72 小时)

平台覆盖范围汇总

平台工具费用风险
Google Trendspytrends免费极低
Redditrequests(公开 JSON)免费低
Twitter/XPerplexity MCP免费*无
TikTokPerplexity MCP免费*无
YouTubePerplexity MCP免费*无
LinkedInPerplexity MCP免费*无

*使用 Claude 内置的 MCP,或在使用 perplexity-search 技能时使用 OpenRouter 额度


内置资源

  • scripts/trend_research.py:用于完整趋势研究的主命令行工具
  • scripts/reddit_scraper.py:简单的 Reddit 抓取器类(无需 API 密钥)

评论

支持 Markdown