social · listening

Social Listening & Engagement Triage

How to surface the right posts to engage with each day — instead of randomly scrolling. The goal is a short, scorable list ("here are your top 10 posts to comment on") rather than an open feed.

Contents


When to Use This

Use listening when the goal is commenting and relationships, not posting. Typical asks:

If the user wants to create content, use the rest of the social skill. Listening feeds creation (it surfaces angles, language, objections), but the output is different.


The Daily Triage Loop

A repeatable 20-minute loop the user (or you, on their behalf) can run each morning.

  1. Pull — fetch new posts from defined sources (target accounts, keywords, subreddits, hashtags). See tooling.
  2. Filter — drop anything older than 24h, low signal, or off-topic.
  3. Score — apply the rubric. Keep top 10.
  4. Draft — for each, draft a comment matched to the post's tier.
  5. Post — user reviews, edits, posts. Mark which actually went live.
  6. Log — track what you commented on and what got replies. This is your engagement loop dataset.

Output format Claude should produce:

TOP 10 POSTS — 2026-06-05

1. [Score 9/10] @author — LinkedIn — 2h ago
   "We just rolled out X and the team is loving it…"
   Why: ICP fit (B2B SaaS, 50–200 employees), buying-intent signal
   Suggested comment: [draft]
   Link: https://…

Scoring Rubric

Score each post 1–10 across five dimensions, then sum and rank.

Dimension What it measures Weight
ICP fit Is the author your target customer / influencer? 2x
Intent signal Are they expressing a problem, asking, or shopping? 2x
Reach potential Is the post getting traction (likes/comments rising)? 1x
Comment opportunity Can you say something genuinely useful, not generic? 2x
Recency Posted in last 1–4h (early comments win, especially on LinkedIn) 1x

Intent signal examples (high-value):

Drop if any of these are true:


Comment Quality Tiers

Match the comment to the post. Don't waste a tier-1 draft on a tier-3 opportunity.

Tier 1 — Relationship builder (target accounts, ICP, high intent)

Tier 2 — Visibility play (high-reach post, adjacent topic)

Tier 3 — Light touch (relationship maintenance)

Never: "Great post!", emoji-only, "+1", LinkedIn-isms like "This is gold 🔥"


Sources & Light Tooling (curl recipes)

These are public JSON endpoints — no auth needed. Run them from bash, pipe to jq, and Claude can parse the output to score and draft comments.

Requires: jq (most recipes) and xmllint (RSS only). Install once:

# macOS
brew install jq
# xmllint ships with macOS; on Linux: apt install libxml2-utils

Reddit (free, scriptable)

New posts in a subreddit:

curl -s -A "listening/1.0" \
  "https://www.reddit.com/r/SaaS/new.json?limit=25" \
  | jq '.data.children[].data | {title, author, url: ("https://reddit.com"+.permalink), score, num_comments, created_utc, selftext: (.selftext | .[0:300])}'

Search across Reddit by keyword (last day, sorted new):

curl -s -A "listening/1.0" \
  "https://www.reddit.com/search.json?q=KEYWORD&sort=new&t=day&limit=25" \
  | jq '.data.children[].data | {subreddit, title, url: ("https://reddit.com"+.permalink), author, score, created_utc}'

Swap KEYWORD for things like "alternative to notion", "recommend a crm", your competitor names, or your own brand for mentions. Use quotes around multi-word phrases.

Hacker News (Algolia search)

Recent stories mentioning a keyword (last 24h):

SINCE=$(($(date +%s) - 86400))
curl -s "https://hn.algolia.com/api/v1/search_by_date?query=KEYWORD&tags=story&numericFilters=created_at_i>${SINCE}" \
  | jq '.hits[] | {title, url, author, points, num_comments, created_at, story_id: .objectID, hn_url: ("https://news.ycombinator.com/item?id="+.objectID)}'

Recent comments mentioning a keyword:

curl -s "https://hn.algolia.com/api/v1/search_by_date?query=KEYWORD&tags=comment&numericFilters=created_at_i>${SINCE}" \
  | jq '.hits[] | {author, comment_text, story_title, hn_url: ("https://news.ycombinator.com/item?id="+.objectID)}'

Bluesky (free, public API)

Search posts by keyword:

curl -s "https://public.api.bsky.app/xrpc/app.bsky.feed.searchPosts?q=KEYWORD&limit=25&sort=latest" \
  | jq '.posts[] | {author: .author.handle, text: .record.text, likes: .likeCount, replies: .replyCount, url: ("https://bsky.app/profile/"+.author.handle+"/post/"+(.uri | split("/") | last))}'

RSS for blogs, podcasts, YouTube channels

For target accounts that publish to RSS (most blogs, all YouTube channels):

# YouTube channel feed (replace CHANNEL_ID)
curl -s "https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID"

# Generic blog feed
curl -s "https://example.com/feed/" | xmllint --xpath "//item[position()<6]" - 2>/dev/null

LinkedIn & X — use the browser

LinkedIn and X don't expose useful public APIs, but you can drive a real browser session. dev-browser (MCP, already in the global setup) and Playwright both maintain persistent state — log in once, the session stays alive, Claude can navigate the authenticated feed.

dev-browser workflow (preferred — already wired up):

  1. User logs into LinkedIn / X once in the dev-browser session
  2. Claude navigates to a target URL (feed, profile, saved search, hashtag)
  3. Claude reads the accessibility tree / page text, extracts posts
  4. Claude scores using the rubric and drafts comments
  5. User reviews and posts manually (don't auto-post — high-stakes, bot detection risk)

Useful URLs to feed dev-browser:

URL pattern What it shows
linkedin.com/in/HANDLE/recent-activity/all/ A target account's recent posts
linkedin.com/feed/hashtag/TOPIC/ Hashtag feed
linkedin.com/feed/ Your main feed (algorithmic — less useful for triage)
x.com/HANDLE A target account's profile
x.com/search?q=QUERY&f=live Real-time search (use f=live for chronological)
x.com/i/lists/LIST_ID A curated list — best for target accounts

Tips:

Paid alternatives if you don't want to drive a browser:

Platform Tools
LinkedIn Sales Navigator (saved searches), Taplio (engagement)
X TweetDeck/X Pro (saved columns), Typefully, Taplio, Tweet Hunter

Still closed (no good path):


Per-Platform Notes

LinkedIn

Twitter/X

Reddit

Hacker News

Bluesky


Common Workflows

"Give me my top 10 posts to comment on today"

  1. Pull from: target account RSS/saved searches + Reddit (relevant subs) + HN (last 24h)
  2. Score with the rubric
  3. Output top 10 with suggested comments

"Find people complaining about [competitor]"

  1. Reddit search: "competitor name" -site:competitor.com sorted by new
  2. HN comment search for competitor name
  3. Bluesky search for competitor handle/name
  4. Score by intent signal (high if switching language: "moving from", "alternatives to", "frustrated with")

"Surface brand mentions from the last week"

  1. Reddit search for brand name
  2. HN search (stories + comments) for brand name
  3. Bluesky search for brand name + handle
  4. Output as: reply needed (yes/no), tone (positive/negative/neutral), suggested response

"Find target-account posts I missed"

  1. Maintain a list of target accounts with their RSS / Reddit usernames / Bluesky handles
  2. Fetch each source's recent posts
  3. Filter to last 24h, output sorted by score

Setting Up the Source List

The user should maintain a list of sources somewhere persistent at .agents/listening-sources.md (or .claude/listening-sources.md). Claude reads it when running the daily loop.

A ready-to-fill template lives at listening-sources-template.md. Copy it into the project and edit. The source path depends on how the skill was installed:

# Plugin / marketplace install (most common):
cp .agents/skills/social/references/listening-sources-template.md .agents/listening-sources.md
# .claude/ install:
cp .claude/skills/social/references/listening-sources-template.md .agents/listening-sources.md
# Working inside the marketingskills repo:
cp skills/social/references/listening-sources-template.md .agents/listening-sources.md

The template covers: brand/category, ICP (for scoring), target accounts per platform, intent keywords, subreddits, saved-search URLs, and a do-not-engage list.


Source: https://github.com/coreyhaines31/marketingskills/skills/social/references/listening.md · v2.2.0 · MIT License (c) 2025 Corey Haines.