[REPLACE: SKILL_NAME]
This skill monitors social media platforms (X and Reddit) for specified keywords, scoring posts by engagement and recency, filtering out low-signal noise and bot activity, then generates a daily markdown digest with sentiment analysis and top posts. Use it to track brand mentions, industry trends, or topic discussions across social channels, with automatic notification summaries and historical logging for trend analysis.
git clone --depth 1 https://github.com/aaronjmars/aeon /tmp/-replace-skill_name- && cp -r /tmp/-replace-skill_name-/skill-templates/social-monitor ~/.claude/skills/-replace-skill_name-SKILL.md
> **${var}** — Optional. Pass alternative keywords (comma-separated) to override the default. If empty, monitors `[REPLACE: KEYWORDS]`.
Today is ${today}. Monitor social mentions of **[REPLACE: KEYWORDS]** and produce a summary.
## Steps
1. **Resolve keywords** — `KEYWORDS="${var:-[REPLACE: KEYWORDS]}"`. Split on commas, trim each, lower-case. Each token becomes its own search query.
2. **Search X** — for each keyword, use the X / xAI search path (project's standard pattern):
```bash
# Uses XAI_API_KEY via the prefetch helper. See scripts/prefetch-*.sh in this repo.
#
# If your fork uses a different X integration, swap this with the fetch-tweets
# path: read .x-cache/[keyword].json or call WebFetch on a Nitter mirror.
```
Restrict to language `[REPLACE: LANGUAGE]` (e.g. `en`, `fr`, `any`). Drop posts with fewer than `[REPLACE: MIN_LIKES]` likes — that filter is what protects the channel from low-signal noise.
3. **Search Reddit** — for each keyword:
```bash
# Reddit's keyless JSON endpoint. WebFetch fallback if curl fails (sandbox).
curl -sf "https://www.reddit.com/search.json?q=$KEYWORD&t=day&restrict_sr=0" \
-H "User-Agent: aeon/1.0" > .reddit-cache.json || \
echo "use WebFetch on https://www.reddit.com/search.json?q=$KEYWORD&t=day"
```
4. **Score and pick top 5 per platform** — score on engagement (likes, comments, score) × recency (last 24h gets full marks). Drop reposts and obvious bot accounts (handles like `*_bot`, account age < 7 days with > 100 posts).
5. **Tag sentiment** — for the top 10 posts overall, label each `positive` / `neutral` / `negative` based on tone of the post text. Keep this lightweight — one-token classification, no nested reasoning.
6. **Write `articles/[REPLACE: SKILL_NAME]-${today}.md`**:
```markdown
# [REPLACE: KEYWORDS] — ${today}
## Volume
- X: N posts (vs 7d avg M)
- Reddit: N posts (vs 7d avg M)
## Sentiment
positive: X · neutral: Y · negative: Z
## Top posts
1. [Author · platform · timestamp]
"Excerpt or paraphrase."
→ URL
2. ...
```
7. **Notify** via `./notify` with a 2-3 line summary: `*[REPLACE: KEYWORDS] — ${today}* · N posts · sentiment skews positive/negative · top: <one-line title>. Full digest: <url>`. Silent on quiet days (volume < 25% of 7d average AND no negative-sentiment spike).
8. **Log** to `memory/logs/${today}.md`:
```
## [REPLACE: SKILL_NAME]
- **Volume**: x_posts=N, reddit_posts=N, vs_7d_avg=Δ%
- **Sentiment**: pos=X, neu=Y, neg=Z
- **Status**: SOCIAL_OK | SOCIAL_QUIET | SOCIAL_SPIKE (vol > 2x avg) | SOCIAL_DEGRADED
```
## Sandbox note
X / xAI requires `XAI_API_KEY` and won't work with raw `curl` from inside the sandbox — use the project's prefetch pattern (see `scripts/prefetch-*.sh`). Reddit's JSON endpoint is keyless but rate-limited per IP — `WebFetch` is the fallback when `curl` returns 429.
## Constraints
- **Bot filter** is critical. New accounts with high posting velocity dominate any keyword and are almost always inauthentic. Strict drop.
- **Volume is more honest than sentiment**. A `SPIKE` (volume > 2x 7d avg) is a real signal; sentiment shifts within normal volume often aren't.
- **Engagement filters scale**. `MIN_LIKES = [REPLACE: MIN_LIKES]` is a starting threshold — raise it as the topic gains attention so noise stays out.5 concrete real-life actions, leverage-scored against open loops with specificity and anti-fluff gates
Curated AI-agent tweets, clustered into narratives with insight summaries
Tracker of AI agent substitution signals — which roles, companies, and industries show real headcount displacement. Named roles + real deployments only.
Competitive-intelligence digest on the AI agent framework space — momentum, releases, breaking changes across a curated watchlist
Cross-domain market pulse from AIXBT's free grounding endpoint — crypto, macro, tradfi, geopolitics. Refreshes taxonomy references (clusters, chains) as a bonus.
Pre-batch API provider health check — detects credit exhaustion or auth failure for every configured provider key before the scheduled batch runs, giving the operator a window to act before skills degrade
List a wallet's live ERC-20 token approvals on Base and flag unlimited / risky spender grants. Keyless via Base RPC (eth_getLogs + eth_call) — no explorer key needed.
Article idea synthesizer — ranks signals from topic-momentum, beat-tracker, and narrative-tracker into a prioritized queue the article skill reads on its next run