HomeBrowseUpload
← Back to registry
// Skill profile

Sentiment Radar

name: sentiment-radar

by danielwangyy · published 2026-03-22

日历管理开发工具加密货币
Total installs
0
Stars
★ 0
Last updated
2026-03
// Install command
$ claw add gh:danielwangyy/danielwangyy-sentiment-radar
View on GitHub
// Full documentation

---

name: sentiment-radar

description: "Multi-platform sentiment monitoring and analysis for products/brands/topics. Collect public opinions from Chinese platforms (小红书/XHS via MediaCrawler) and English platforms (Twitter/Reddit via Xpoz MCP). Generate structured sentiment reports with product mention tracking, pricing complaints, comparison analysis, and actionable insights. Use when: (1) monitoring competitor sentiment, (2) tracking product launch reception, (3) analyzing user pain points across social media, (4) building market intelligence reports."

---

# Sentiment Radar

Multi-platform social media sentiment collection and analysis.

Supported Platforms

| Platform | Method | Auth Required |

|---|---|---|

| 小红书 (XHS) | MediaCrawler (CDP browser) | QR code login |

| Twitter | Xpoz MCP (`xpoz.getTwitterPostsByKeywords`) | OAuth token |

| Reddit | Xpoz MCP (`xpoz.getRedditPostsByKeywords`) | OAuth token |

Prerequisites

MediaCrawler (for 小红书)

If not installed:

git clone https://github.com/NanmiCoder/MediaCrawler ~/.openclaw/workspace/skills/media-crawler
cd ~/.openclaw/workspace/skills/media-crawler
uv sync
playwright install chromium

Config: `config/base_config.py` — set `ENABLE_CDP_MODE = True`, `SAVE_DATA_OPTION = "json"`

Xpoz MCP (for Twitter/Reddit)

Requires mcporter with Xpoz OAuth configured. Token at `~/.mcporter/xpoz/tokens.json`.

Workflow

Step 1: Define targets

Identify products/brands and search keywords. Example:

Products: Plaud录音笔, 钉钉闪记, 飞书录音豆
Keywords (XHS): Plaud录音笔,钉钉闪记,飞书妙记,AI录音笔评测,录音豆
Keywords (Twitter): Plaud NotePin, DingTalk recorder, Lark voice

Step 2: Collect data

#### XHS collection

Run MediaCrawler with keywords. Use CDP mode (user's Chrome browser) for anti-detection.

The crawler needs QR code scan for login — run in background with `exec(background=true)`.

cd skills/media-crawler
# Update keywords in config/base_config.py, then:
.venv/bin/python main.py --platform xhs --lt qrcode

Environment fixes for macOS:

export MPLBACKEND=Agg
export PATH="/usr/sbin:$PATH"

Data output: `data/xhs/json/search_contents_YYYY-MM-DD.json` and `search_comments_YYYY-MM-DD.json`

#### Twitter/Reddit collection

Use Xpoz MCP tools directly:

  • `xpoz.getTwitterPostsByKeywords` — returns posts with engagement metrics
  • `xpoz.getRedditPostsByKeywords` — returns posts with comments
  • Step 3: Analyze

    Run the analysis script on collected data:

    python3 scripts/analyze.py \
      --data ./data \
      --products '{"Plaud": ["plaud","notepin"], "钉钉": ["钉钉","dingtalk","闪记"]}' \
      --output report.md

    The script performs:

  • Keyword distribution analysis (notes per keyword, total likes/collects)
  • Product mention frequency in comments
  • Sentiment classification (positive/negative/concern/neutral)
  • Top notes ranking by engagement
  • Price/subscription complaint extraction
  • Product comparison comment extraction
  • Step 4: Report

    The analysis outputs:

    1. JSON results to stdout (for programmatic use)

    2. Markdown report to `--output` path

    Combine XHS + Twitter data into a comprehensive report. See `references/report-template.md` for structure.

    Key Analysis Dimensions

    1. **Sentiment split** — positive vs negative vs concern ratio

    2. **Product mentions** — which products get discussed most

    3. **Pricing complaints** — subscription fatigue, value perception

    4. **Comparison comments** — head-to-head user opinions

    5. **User pain points** — feature requests, complaints, unmet needs

    6. **Engagement metrics** — likes, collects, shares as popularity signals

    Notes

  • XHS data uses Chinese number format (e.g., "1.1万") — `parse_count()` in analyze.py handles this
  • MediaCrawler has 2s sleep between requests to avoid rate limiting
  • Each keyword returns ~20 notes per page (configurable in MediaCrawler config)
  • Comments are fetched per note automatically
  • For recurring monitoring, schedule via cron and compare against previous reports
  • // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band