finding-trending-twitter-topics-for-content

>

Installs32deduplicated source total
8-week historyLatest recorded total per week
GitHub stars1source repository
UpdatedOct 05, 2026normalized snapshot

SKILL.md

Finding Trending Twitter Topics for Content

Identifies trending conversations in a niche on Twitter to inform timely content. Twitter trends are 48–72 hour windows — act fast or pivot to the evergreen angle.

Prerequisites

  • APIFY_TOKEN environment variable set
  • Optional: Apify MCP server installed

Inputs

ParameterTypeRequiredDefaultNotes
searchTermsarray✅[]Twitter advanced search queries (e.g. ["#AI lang:en", "from:NASA"])
sortstringOptionalTopSort order: Latest, Top, or Latest+Top
tweetLanguagestringOptional—ISO 639-1 language code (e.g. en)
maxItemsnumberOptionalUnlimitedMaximum tweets to return
onlyVerifiedUsersbooleanOptionalfalseOnly tweets from verified users
onlyTwitterBluebooleanOptionalfalseOnly Twitter Blue subscribers
onlyImagebooleanOptionalfalseOnly tweets with images
onlyVideobooleanOptionalfalseOnly tweets with videos
onlyQuotebooleanOptionalfalseOnly quote tweets
authorstringOptional—Filter to a specific author handle
inReplyTostringOptional—Tweets replying to a specific handle
mentioningstringOptional—Tweets mentioning a specific handle
geotaggedNearstringOptional—Tweets near a location
withinRadiusstringOptional—Radius around geotaggedNear
geocodestringOptional—Lat/lng + radius string
placeObjectIdstringOptional—Tweets tagged with a place
minimumRetweetsnumberOptional—Minimum retweet count
minimumFavoritesnumberOptional—Minimum like count
minimumRepliesnumberOptional—Minimum reply count
startstringOptional—Tweets after this date (YYYY-MM-DD)
endstringOptional—Tweets before this date (YYYY-MM-DD)
includeSearchTermsbooleanOptionalfalseAdd the matched search term to each tweet
customMapFunctionstringOptional—JavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Search niche keywords + trending signals
- [ ] Step 2: Extract high-engagement tweet clusters
- [ ] Step 3: Identify topic themes and their velocity
- [ ] Step 4: Score content opportunity per topic
- [ ] Step 5: Deliver trending topic brief

Step 1: Search Tweets

Recommended — run_actor.js (handles waiting, output, and file saving automatically):

# 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 must be set in environment or .env file.

If Apify MCP is available:

Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
  "searchTerms": ["[NICHE]", "#[niche]", "[NICHE] [current_year]"],
  "maxItems": 500,
  "tweetLanguage": "en",
  "since": "[7 days ago]"
}

REST API fallback:

curl -X POST   "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{
    "searchTerms": ["B2B SaaS", "#saas", "B2B SaaS 2026"],
    "maxItems": 500,
    "tweetLanguage": "en"
  }'

Step 2: Identify Trending Topics

Group tweets by topic cluster using keyword co-occurrence. For each cluster:

topic_velocity = count_of_tweets_in_cluster
topic_engagement = sum(likeCount + replyCount * 3 + retweetCount * 2) / topic_velocity

Topic freshness:

freshness = proportion of cluster tweets from last 48 hours

Step 3: Score Content Opportunity

opportunity_score = (topic_velocity / 50, max 1) * 0.30
                  + (topic_engagement / 100, max 1) * 0.30
                  + freshness * 0.20
                  + (top_tweet_by_influencer ? 1 : 0) * 0.20

Content angle recommendation by freshness:

  • Freshness > 0.7 → "Timely reaction piece / hot take"; publish within 24h
  • Freshness 0.3–0.7 → "Analysis / deep dive"; publish within 72h
  • Freshness < 0.3 → "Evergreen explainer"; no urgency

Step 4: Edge Cases

  • Topic is news event, not evergreen: Flag as NEWS_REACTIVE — good for social media posts but risky for long-form content investment
  • Trending topic is negative controversy: Flag as RISK_TOPIC; joining controversy can be brand-damaging; present option to "inform from a distance"
  • Niche too broad (returns unrelated topics): Add second qualifier — "B2B SaaS growth" not just "SaaS"
  • Trending terms are abbreviations or jargon: Define them in output for non-native audience clarity

Output Format

# Trending Twitter Topics: [NICHE]
Period: [DATE_RANGE] | Tweets analyzed: [N] | Topic clusters identified: [N] | Date: [DATE]

## Top Trending Topics
| # | Topic | Tweets | Avg Engagement | Freshness | Type | Score |
|---|-------|--------|---------------|---------|------|-------|
| 1 | [topic] | [N] | [N] | [X%] | [TRENDING/NEWS/EVERGREEN] | [0.XX] |

## Content Opportunities

### 1. [Topic Name] (Score: [X])
Volume: [N] tweets | Avg engagement: [N] | Freshness: [X%]
Angle: [recommended content format and angle]
Top tweet: @[handle] ([N] likes): "[excerpt]"

### 2. [Topic Name] ...

## Hashtag Map
| Hashtag | Usage Count | Avg Likes | Co-used With |
|---------|------------|-----------|-------------|

Troubleshooting

No trending topics (flat distribution): Niche may not be particularly active on Twitter; try extending to 14-day window or switching to Reddit for content research in this niche. All topics are political/news: Add niche qualifier more aggressively in search terms; most general news topics will surface on any broad search. Content idea doesn't fit your format: Trending topics are inputs, not prescriptions — adapt the angle to your format (e.g. a Twitter controversy about pricing → a blog post "How to Communicate Pricing Changes").