Social Listening
Turn a brand/topic and a few options into a social-listening report: Reddit mentions with sentiment, the subreddits driving the conversation, emerging themes, and verbatim voice-of-customer quotes — plus optional YouTube channel/video engagement analysis.
This skill is Reddit-first because Reddit is where unprompted, candid opinions about products and brands live, and the routed Actor scores sentiment in the same run. YouTube is a secondary, engagement-analysis module (it inspects specific channels/videos you name — it does not keyword-search YouTube for mentions).
Prerequisites
- Apify account (sign up)
- Authentication via one of:
apify login(OAuth, if using the Apify CLI)APIFY_TOKENenvironment variable- Token from Apify Console → Settings → Integrations
Two execution paths, same Actors:
- MCP path (default in Claude sessions). If the Apify MCP server is connected, no setup is needed — auth runs through the user's account. Use the
call-actorandget-dataset-itemstools. - CLI path (portable / scheduled / non-Claude). Requires the Apify CLI and a token. Every CLI call in this skill uses three flags:
--json,--user-agent apify-awesome-skills/apify-social-listening, and2>/dev/null.
Workflow
Copy this checklist and track progress:
Task Progress:
- [ ] Step 1: Collect the listening brief (subject, scope, window, depth, modules)
- [ ] Step 2: Route each module to the right Actor + input
- [ ] Step 3: Run the Actor(s), confirm cost if the run is large
- [ ] Step 4: Aggregate sentiment, themes, communities, and quotes
- [ ] Step 5: Deliver the listening report
Step 1: Collect the listening brief
Ask these as one block before any Actor call:
- Subject — the brand, product, competitor, or topic to listen for (e.g.
"Notion AI","my-saas","electric bikes"). This becomes the RedditsearchQueriesterm(s). Accept several. - Scope —
whole-of-Reddit(keyword search everywhere, default) orspecific communities(the user names subreddits, e.g.r/SaaS,r/productivity). Communities give depth; keyword search gives reach. You can do both. - Time window —
today/week(default) /month/year/all. Maps to the ReddittimeFilter. - Depth — how many posts to pull per query/subreddit (
maxPostsPerSubreddit, default100). Larger = more cost and more signal. - Voice-of-customer — include comments? (
includeComments). Defaultyesfor listening, since the candid opinions live in comment threads. Comments add cost per post. - YouTube module (optional) — if the user wants engagement on specific channels/videos (theirs or a competitor's), collect the channel or video URLs. Skip if they only care about mentions.
If the subject is ambiguous (a common word that will pull noise, e.g. "apple"), say so and suggest narrowing via communities or a more specific query.
Step 2: Route each module to the right Actor
| User need | Actor ID | Tier | Best for |
|---|---|---|---|
| Brand/topic mentions + sentiment across Reddit | renzomacar/reddit-scraper |
community | keyword search (searchQueries) with built-in sentiment scoring |
| Deep-dive on specific subreddits | renzomacar/reddit-scraper |
community | community monitoring via subreddits |
| Voice-of-customer quotes | renzomacar/reddit-scraper |
community | includeComments: true pulls candid comment threads |
| YouTube channel/video engagement (named URLs) | renzomacar/youtube-scraper |
community | competitor channel analysis, view/like/comment signals |
Tier = apify (Apify-maintained) or community (third-party). Both Actors are public on the Apify Store.
Note: the YouTube Actor takes channel/video URLs, not search keywords — it analyzes engagement on content you name, it does not find mentions of your brand on YouTube. Set expectations accordingly.
Step 3: Run the Actor(s)
Build the Reddit input from the brief. Keyword listening + voice-of-customer, last week:
apify actors call "renzomacar/reddit-scraper" \
-i '{"searchQueries": ["Notion AI"], "sortBy": "relevance", "timeFilter": "week", "maxPostsPerSubreddit": 100, "includeComments": true, "maxCommentsPerPost": 50}' \
--user-agent apify-awesome-skills/apify-social-listening \
--json 2>/dev/null
Specific-community monitoring instead of (or in addition to) keyword search:
apify actors call "renzomacar/reddit-scraper" \
-i '{"subreddits": ["SaaS", "productivity"], "sortBy": "top", "timeFilter": "month", "maxPostsPerSubreddit": 75, "includeComments": true}' \
--user-agent apify-awesome-skills/apify-social-listening \
--json 2>/dev/null
Optional YouTube engagement module:
apify actors call "renzomacar/youtube-scraper" \
-i '{"channelUrls": ["https://www.youtube.com/@competitor"], "maxVideosPerChannel": 30}' \
--user-agent apify-awesome-skills/apify-social-listening \
--json 2>/dev/null
MCP path equivalent: call call-actor with the same actor id and the same input object, then get-dataset-items for the run's dataset.
Cost guardrails and recovery are in references/gotchas.md. If a run looks large (high depth × many queries × comments), state the rough scale and confirm before launching.
Step 4: Aggregate sentiment, themes, communities, quotes
The Reddit dataset has one item per post and (when includeComments) per comment, distinguished by dataType. Each carries score, upvoteRatio, commentCount, subreddit, body, postTitle, author, createdUtc, url. Build the report from these:
- Sentiment — the Actor scores community reception via
scoreandupvoteRatio. Treat high-score/ high-upvoteRatioitems as positively received and low/negative as contested. Read the text of the top and bottom items to label sentiment (positive / neutral / negative) rather than trusting the number alone — a high score can sit on a critical post. - Volume & trend — count mentions over the window; note spikes by
createdUtc. - Communities — group by
subreddit; report which communities drive the conversation. - Themes — cluster recurring topics from
postTitle+body(praise, complaints, comparisons, feature requests, questions). - Voice-of-customer — pull 3–8 verbatim quotes from high-signal posts/comments, each with its
subredditandurlso the user can verify.
For the YouTube module, summarize per video: viewCount, likeCount, commentCount, publishDate, and engagement rate (likes+comments / views).
Step 5: Deliver the listening report
Render a compact report:
- Summary — subject, window, total mentions, overall sentiment split (e.g. 60% positive / 25% neutral / 15% negative).
- Top communities — subreddits by mention volume.
- Themes — 3–6 bullets, each with a representative quote + link.
- Voice-of-customer — the strongest verbatim quotes with
subreddit+url. - Notable posts — highest-
scoreand most-discussed items, linked. - YouTube engagement (if run) — per-channel/video table.
- Dataset link — the Apify dataset/console URL for the full data.
Always link back to source posts so claims are verifiable. State the data window and that this is public-Reddit data, not a representative survey.
Responsible use
Only public Reddit/YouTube content is collected. Don't use this to target, dox, or harass individuals — aggregate sentiment and themes, not profiles of named private users. Respect each platform's terms.