finding-twitter-spaces-hosts-by-topic
About finding-twitter-spaces-hosts-by-topic
A skill for locating Twitter Spaces hosts by topic through tweet searches. It classifies host activity and scores results for topic alignment and audience size to help identify relevant speakers.
Key features
- 01Search tweets for Spaces announcements
- 02Filter by language, author, and engagement
- 03Classify hosts by activity frequency
- 04Score topic alignment and audience size
Use cases
- 01Find hosts for a topic-specific event
- 02Identify recurring Spaces hosts
- 03Locate announced upcoming Spaces
MCP support
It can optionally use the Apify MCP server to run the tweet-scraper actor.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill finding-twitter-spaces-hosts-by-topicAfter installing, type/finding-twitter-spaces-hosts-by-topicin Claude Code to confirm it loaded.
Details
From the project READMEFinding Twitter Spaces Hosts By Topic
Executes finding twitter spaces hosts by topic using apidojo scrapers. Part of the apidojo intelligence skills library.
Prerequisites
APIFY_TOKENenvironment variable set- Optional: Apify MCP server installed
Inputs
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
searchTerms | array | ✅ | [] | Twitter advanced search queries (e.g. ["#AI lang:en", "from:NASA"]) |
sort | string | Optional | Top | Sort order: Latest, Top, or Latest+Top |
tweetLanguage | string | Optional | — | ISO 639-1 language code (e.g. en) |
maxItems | number | Optional | Unlimited | Maximum tweets to return |
onlyVerifiedUsers | boolean | Optional | false | Only tweets from verified users |
onlyTwitterBlue | boolean | Optional | false | Only Twitter Blue subscribers |
onlyImage | boolean | Optional | false | Only tweets with images |
onlyVideo | boolean | Optional | false | Only tweets with videos |
onlyQuote | boolean | Optional | false | Only quote tweets |
author | string | Optional | — | Filter to a specific author handle |
inReplyTo | string | Optional | — | Tweets replying to a specific handle |
mentioning | string | Optional | — | Tweets mentioning a specific handle |
geotaggedNear | string | Optional | — | Tweets near a location |
withinRadius | string | Optional | — | Radius around geotaggedNear |
geocode | string | Optional | — | Lat/lng + radius string |
placeObjectId | string | Optional | — | Tweets tagged with a place |
minimumRetweets | number | Optional | — | Minimum retweet count |
minimumFavorites | number | Optional | — | Minimum like count |
minimumReplies | number | Optional | — | Minimum reply count |
start | string | Optional | — | Tweets after this date (YYYY-MM-DD) |
end | string | Optional | — | Tweets before this date (YYYY-MM-DD) |
includeSearchTerms | boolean | Optional | false | Add the matched search term to each tweet |
customMapFunction | string | Optional | — | JavaScript function to transform each output object |
Workflow
Progress:
- [ ] Step 1: Define parameters
- [ ] Step 2: Run tweet-scraper
- [ ] Step 3: Filter and classify results
- [ ] Step 4: Score by quality and relevance
- [ ] Step 5: Deliver output
Step 2: Run the Actor
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_TOKENmust be set in environment or.envfile.
If Apify MCP is available:
Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
"searchTerms": ["Twitter Spaces [TOPIC]", "join my Space [TOPIC]", "hosting a Space about [TOPIC]", "upcoming Space [TOPIC]"],
"maxItems": 100
}
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": ["Twitter Spaces [TOPIC]", "join my Space [TOPIC]", "hosting a Space about [TOPIC]", "upcoming Space [TOPIC]"], "maxItems": 100}'
Wait for SUCCEEDED. Fetch dataset:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN"
Step 3: Classify Results
classification: REGULAR_HOST (> 2 Spaces/month) | OCCASIONAL_HOST (1-2/month) | ONE_TIME (single event) | UPCOMING (announced future Space)
Step 4: Score Each Result
score = spaces_host_score = (hosts_regularly: > 2/month = 1, 1/month = 0.6) * 0.40 + (followerCount > 2000 ? 1 : followerCount/2000) * 0.35 + (topic_alignment ? 1 : 0.5) * 0.25
Step 5: Edge Cases
- Twitter Spaces announcement tweets don't always include #Spaces — search for 'link in bio' + 'Space' or the Spaces card URL pattern (twitter.com/i/spaces/) to identify Spaces-specific tweets
Additional fallbacks:
- < 20 results: Broaden search terms; remove secondary filters
- No results: Verify the search terms are correct; try alternate phrasings
- Data quality issues: Remove entries with missing key fields; note count in output
Output Format
# Finding Twitter Spaces Hosts By Topic
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]
Troubleshooting
Too few results: Broaden the primary search term; remove restrictive filters. Low quality results: Apply minimum score threshold (≥ 0.50) to filter noise. Actor fails to run: Verify API key; check actor status at apify.com/apidojo.