Monitor Reddit, Hacker News, X, and Bluesky for keyword mentions of a product or website using the RedReplier API. Use when the user wants to track mentions...
---
name: redreplier
description: Monitor Reddit, Hacker News, X, and Bluesky for keyword mentions of a product or website using the RedReplier API. Use when the user wants to track mentions of their brand across Reddit, Hacker News, X (Twitter), or Bluesky, find leads from social discussions, manage monitored websites and keywords, triage AI-scored mention relevance, approve/reject leads, or configure mention email alerts. RedReplier is a SaaS tool — no self-hosting required.
homepage: https://redreplier.com
metadata: { 'openclaw': { 'emoji': '🛰️', 'primaryEnv': 'REDREPLIER_API_KEY', 'requires': { 'env': ['REDREPLIER_API_KEY'] } } }
---
# RedReplier
Monitor Reddit, Hacker News, X, and Bluesky for keyword mentions of your product, AI-scored 0-100 for relevance so you act on real leads instead of noise. SaaS — no self-hosting needed.
## Setup
1. Sign up at https://redreplier.com/signup
2. Go to Settings → API Tokens → generate a **dedicated, revocable** API token for this agent — do not reuse a token also used by other tools or humans.
3. Set the environment variable:
```bash
export REDREPLIER_API_KEY="redreplier_your-token-here"
```
Base URL: `https://ai.redreplier.com/ai-app/api/v1`
Auth header: `Authorization: Bearer $REDREPLIER_API_KEY`
The account is determined by the token — you never pass an account or group ID.
## Safety rules — read before any write call
Most RedReplier operations are safe and reversible (listing mentions, approving/rejecting). Two classes of action are **not** and need explicit confirmation:
1. **Billing — `POST /keywords/activate-pending`.** Activating pending keywords promotes everything that fits the plan for free, then **charges a real plan upgrade** to cover the rest. Always call `GET /keywords/activate-pending/preview` first, show the user the `immediateCharge` / `targetPlanName`, and get an explicit "yes" before activating. Never activate in a loop.
2. **Deletion — `DELETE /websites/{id}`.** This stops all monitoring for the website. Confirm with the user first; name the website (domain), not just the ID.
Other guidance:
- **Keyword edits are metered.** `PATCH /keywords/{id}` counts against a monthly edit allowance (`GET /keywords/change-usage`). Adding and disabling are unlimited — prefer those. Don't spend edits on cosmetic changes.
- **Don't fight the grader.** A `SUSPENDED` keyword was auto-judged too noisy. Fix the wording with an edit; don't try to force it back to ACTIVE.
- **Triage, don't fabricate.** When approving/rejecting mentions, act on the AI `relevanceScore`/`relevanceReason` and the actual content — don't invent leads.
## Core Workflow
### 1. List monitored websites (and their keywords)
```bash
curl -s -H "Authorization: Bearer $REDREPLIER_API_KEY" \
https://ai.redreplier.com/ai-app/api/v1/websites
```
Returns `{ "websites": [{ "id", "domain", "url", "name", "description", "keywords": [{ "id", "value", "status" }] }] }`. Keyword `status` is one of `PENDING`, `ACTIVE`, `DISABLED`, `SUSPENDED`. Save website IDs and keyword IDs — you need them everywhere else.
### 2. Add a website to monitor
Omit `description` to let RedReplier scrape the site and AI-generate one (used as context for relevance scoring). Initial `keywords` are added as `PENDING`.
```bash
curl -X POST https://ai.redreplier.com/ai-app/api/v1/websites \
-H "Authorization: Bearer $REDREPLIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"name": "Example",
"keywords": ["example tool", "competitor name"]
}'
```
To preview an AI description without creating anything:
```bash
curl -X POST https://ai.redreplier.com/ai-app/api/v1/websites/analyze-description \
-H "Authorization: Bearer $REDREPLIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com" }'
```
### 3. Add keywords (and activate within plan)
Adding keywords auto-activates as many as fit the plan for free; the rest stay `PENDING`.
```bash
curl -X POST https://ai.redreplier.com/ai-app/api/v1/websites/WEBSITE_ID/keywords \
-H "Authorization: Bearer $REDREPLIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "keywords": ["my product", "use case phrase"] }'
```
Preview what activating the remaining pending keywords would cost, **then** activate (paid upgrade possible — confirm first):
```bash
curl -s -H "Authorization: Bearer $REDREPLIER_API_KEY" \
https://ai.redreplier.com/ai-app/api/v1/keywords/activate-pending/preview
curl -X POST https://ai.redreplier.com/ai-app/api/v1/keywords/activate-pending \
-H "Authorization: Bearer $REDREPLIER_API_KEY"
```
Other keyword actions: `PATCH /keywords/{id}` `{ "value": "new" }` (edit, metered), `POST /keywords/{id}/disable`, `POST /keywords/{id}/enable`, `DELETE /keywords/{id}` (PENDING only).
### 4. List mentions (the leads)
```bash
curl -s -H "Authorization: Bearer $REDREPLIER_API_KEY" \
"https://ai.redreplier.com/ai-app/api/v1/mentions?sort=RELEVANCE&limit=20"
```
Returns `{ "mentions": [...], "total", "limit", "offset" }`. Each mention has `relevanceScore` (0-100), `relevanceReason`, `tags`, `keyword`, `title`, `contentText`, `url`, `author`, `subreddit`, `source`, `status`. `source` is one of `REDDIT_POST`, `REDDIT_COMMENT`, `TWITTER` (X), `BLUESKY`, `HACKERNEWS`; `subreddit` is populated only for Reddit sources (null for X, Bluesky, and Hacker News).
**Defaults**: `REJECTED` mentions are excluded and anything scoring below 30 is hidden. Add `&includeLowRelevance=true` to see everything.
Useful filters (combine freely): `websiteId`, `statuses` (NEW/APPROVED/REJECTED), `scoreBuckets` (VERY_LOW/LOW/MEDIUM/HIGH/VERY_HIGH), `keywords`, `sources` (REDDIT_POST/REDDIT_COMMENT/TWITTER/BLUESKY/HACKERNEWS), `sort` (RELEVANCE/RECENT), `from`/`to` (ISO 8601 ingestion window), `limit` (1-500), `offset`. Repeat a key for arrays: `?statuses=NEW&statuses=APPROVED`. See [references/mention-filtering.md](references/mention-filtering.md).
```bash
# This week's high-relevance, unreviewed leads for one site
curl -s -H "Authorization: Bearer $REDREPLIER_API_KEY" \
"https://ai.redreplier.com/ai-app/api/v1/mentions?websiteId=WEBSITE_ID&statuses=NEW&scoreBuckets=HIGH&scoreBuckets=VERY_HIGH&sort=RECENT"
```
Count only:
```bash
curl -s -H "Authorization: Bearer $REDREPLIER_API_KEY" \
"https://ai.redreplier.com/ai-app/api/v1/mentions/count?statuses=NEW"
```
### 5. Understand why a mention scored the way it did
```bash
curl -X POST https://ai.redreplier.com/ai-app/api/v1/mentions/MENTION_ID/explain \
-H "Authorization: Bearer $REDREPLIER_API_KEY"
```
Returns the mention with `relevanceReason` and `tags` (lazily generated if missing).
### 6. Triage a mention (approve / reject / reset)
```bash
curl -X PATCH https://ai.redreplier.com/ai-app/api/v1/mentions/MENTION_ID/status \
-H "Authorization: Bearer $REDREPLIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "status": "APPROVED" }'
```
`APPROVED` = real lead, `REJECTED` = noise (hidden from default lists), `NEW` = back to inbox. Reversible.
### 7. Email alerts
```bash
# Read current settings (includes plan's fastest allowed cadence)
curl -s -H "Authorization: Bearer $REDREPLIER_API_KEY" \
https://ai.redreplier.com/ai-app/api/v1/alert-settings
# Enable a 4-hour digest
curl -X PUT https://ai.redreplier.com/ai-app/api/v1/alert-settings \
-H "Authorization: Bearer $REDREPLIER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "enabled": true, "cadenceMinutes": 240 }'
```
`cadenceMinutes` must be one of `60`, `240`, `720`, `1440`, and is clamped up to the plan's `minIntervalMinutes`. Returns the resolved settings (so you can confirm the cadence actually applied).
## Keyword Lifecycle Cheat Sheet
| Status | Meaning | What you can do |
| --- | --- | --- |
| `PENDING` | Proposed, not yet live/paid | Activate (may upgrade), delete |
| `ACTIVE` | Live, monitoring all channels | Disable, edit |
| `DISABLED` | Stopped | Enable (may need upgrade), edit |
| `SUSPENDED` | Auto-rejected as too noisy | Edit to fix (free re-grade) |
## Relevance Buckets
| Bucket | Score | Typical meaning |
| --- | --- | --- |
| `VERY_HIGH` | 75-100 | Strong buying intent / direct fit — review first |
| `HIGH` | 50-74 | Relevant discussion worth engaging |
| `MEDIUM` | 30-49 | Loosely related |
| `LOW` | 10-29 | Tangential (hidden by default) |
| `VERY_LOW` | 0-9 | Noise (hidden by default) |
## Tips for the Agent
- **Always list `/websites` first** to get website + keyword IDs; nothing else takes an account parameter.
- **Lead-first triage**: pull `scoreBuckets=HIGH&scoreBuckets=VERY_HIGH&statuses=NEW`, summarize each with its `source` (and `subreddit` for Reddit), `relevanceScore`, and a one-line `relevanceReason`, then ask the user which to approve.
- **Confirm before money or deletion** (activate-pending upgrades, website deletion). Everything else is safe.
- **Prefer disabling over deleting** keywords — only `PENDING` keywords can be deleted anyway.
- **Use `RECENT` sort** for "what's new since yesterday", default `RELEVANCE` for "best leads".
- **Watch `includeLowRelevance`** — leave it off unless the user explicitly wants the long tail; it floods results with noise.
- For full request/response shapes, see [references/api-reference.md](references/api-reference.md).
don't have the plugin yet? install it then click "run inline in claude" again.
formalized procedure steps with explicit inputs/outputs, added decision points for destructive actions (activation upgrades, website deletion), clarified edge cases (rate limits, token expiry, empty results, suspension handling), documented external connection details, expanded output contract with file locations and edge cases, and provided explicit outcome signals.
Track brand mentions across Reddit, Hacker News, X (Twitter), and Bluesky. RedReplier AI-scores each mention 0-100 for relevance so you focus on real leads instead of noise. Use this skill when you need to monitor keywords, triage leads, manage websites, configure alerts, or activate pending keywords.
RedReplier ingests social mentions across four platforms and surfaces them ranked by relevance. this skill lets you manage monitored websites and keywords, list incoming mentions sorted by score or recency, approve or reject them for lead qualification, explain why the grader scored each mention, and set up email digests. the API is fully reversible except for two destructive actions (activating pending keywords with plan upgrades, deleting websites) which require explicit confirmation. use it when you want to catch product discussions before competitors do, find inbound leads hiding in comments, or build a searchable archive of what people say about your brand online.
environment
REDREPLIER_API_KEY: bearer token, created at https://redreplier.com/signup under Settings → API Tokens. generate a dedicated, revocable token per agent (do not reuse across tools or humans). required.external connection
https://ai.redreplier.com/ai-app/api/v1. account determined by token, no account ID passed. ingests Reddit (posts and comments), Hacker News, X, and Bluesky in real-time. has rate limits (API docs site-specific; assume 10 req/sec, backoff if 429 returned).context from user
input: REDREPLIER_API_KEY env var
call
GET /websites
header: Authorization: Bearer $REDREPLIER_API_KEY
output: JSON object { "websites": [{ "id", "domain", "url", "name", "description", "keywords": [{ "id", "value", "status" }] }] }. keyword status is one of PENDING, ACTIVE, DISABLED, SUSPENDED.
use: extract website IDs and keyword IDs for all downstream operations. if no websites exist, proceed to step 2.
input: website URL, optional name and description, initial keywords list
call
POST /websites
header: Authorization: Bearer $REDREPLIER_API_KEY
body: { "url": "https://example.com", "name": "Example", "keywords": ["example tool", "competitor name"] }
omit description to let RedReplier scrape and AI-generate one (used for relevance scoring context).
output: newly created website object with keyword IDs.
preview without creating: call POST /websites/analyze-description with { "url": "..." } first.
input: website ID (from step 1), list of keyword phrases
call
POST /websites/{WEBSITE_ID}/keywords
header: Authorization: Bearer $REDREPLIER_API_KEY
body: { "keywords": ["my product", "use case phrase"] }
keywords auto-activate up to plan limit; remainder stay PENDING.
output: list of added keywords with IDs and statuses.
related: edit with PATCH /keywords/{id} (metered against monthly allowance), disable with POST /keywords/{id}/disable, enable with POST /keywords/{id}/enable, delete with DELETE /keywords/{id} (PENDING only).
input: confirmation from user (yes/no) to upgrade plan if needed
step 4a: preview cost
GET /keywords/activate-pending/preview
header: Authorization: Bearer $REDREPLIER_API_KEY
output: { "pendingCount", "immediateCharge", "targetPlanName", "... }
show user immediateCharge and targetPlanName. if cost is zero, activation is free. if nonzero, confirm "yes" explicitly.
step 4b: activate (only after confirmation)
POST /keywords/activate-pending
header: Authorization: Bearer $REDREPLIER_API_KEY
output: list of newly activated keywords.
do not loop this call; activate once per user request.
input: filters (optional): website ID, statuses (NEW/APPROVED/REJECTED), relevance buckets (VERY_LOW/LOW/MEDIUM/HIGH/VERY_HIGH), sources (REDDIT_POST/REDDIT_COMMENT/TWITTER/BLUESKY/HACKERNEWS), keywords, date range (ISO 8601 from/to), sort (RELEVANCE or RECENT), limit (1-500), offset, includeLowRelevance (bool, default false)
call
GET /mentions?sort=RELEVANCE&limit=20&[filters]
header: Authorization: Bearer $REDREPLIER_API_KEY
defaults: excludes REJECTED, hides scores below 30. add &includeLowRelevance=true to see all.
example: this week's unreviewed high-relevance leads for one website
GET /mentions?websiteId=WEBSITE_ID&statuses=NEW&scoreBuckets=HIGH&scoreBuckets=VERY_HIGH&sort=RECENT
output: { "mentions": [...], "total", "limit", "offset }. each mention has relevanceScore, relevanceReason, tags, keyword, title, contentText, url, author, subreddit (Reddit only, null for X/Bluesky/HN), source, status.
count only (no data)
GET /mentions/count?[filters]
input: mention ID (from step 5)
call
POST /mentions/{MENTION_ID}/explain
header: Authorization: Bearer $REDREPLIER_API_KEY
output: mention object with relevanceReason and tags populated (generated on-demand if missing).
use when score is borderline or reasoning is unclear before triaging.
input: mention ID, new status (APPROVED, REJECTED, or NEW)
call
PATCH /mentions/{MENTION_ID}/status
header: Authorization: Bearer $REDREPLIER_API_KEY
body: { "status": "APPROVED" }
output: updated mention object.
meanings: APPROVED = real lead (kept), REJECTED = noise (hidden from default lists), NEW = back to inbox. all reversible.
input: enabled (bool), cadenceMinutes (60, 240, 720, or 1440)
step 8a: read current settings
GET /alert-settings
header: Authorization: Bearer $REDREPLIER_API_KEY
output: { "enabled", "cadenceMinutes", "minIntervalMinutes" (plan limit)}.
step 8b: set new cadence
PUT /alert-settings
header: Authorization: Bearer $REDREPLIER_API_KEY
body: { "enabled": true, "cadenceMinutes": 240 }
cadenceMinutes is clamped up to plan's minIntervalMinutes.
output: resolved settings (confirms actual cadence applied).
if user wants to add keywords but you must upgrade the plan (step 4)
if user wants to delete a website (destructive)
if a keyword is SUSPENDED
if user wants to edit keywords frequently
GET /keywords/change-usage to show remaining budget.if mention score is below 30 or user asks for "all mentions"
&includeLowRelevance=true to the request.if user pulls unreviewed mentions (NEW status) and wants to triage at scale
statuses=NEW&sort=RELEVANCE to show best first.if API returns 429 (rate limit)
if token is invalid or expired
successful list of websites
successful mention triage
successful keyword activation
successful alert configuration
file/location: no files written to disk. all state lives in RedReplier account (read via step 1 list).
edge cases
user knows it worked when
GET /websites returns the list and user sees their domains.GET /websites shows them with correct IDs and status (PENDING or ACTIVE).POST /keywords/activate-pending, those keywords move from PENDING to ACTIVE in the list.GET /mentions returns a list with scores, reasons, and sources. user can see at least one mention (or zero if no matches, which is valid).PATCH /mentions/{id}/status, that mention's status changes in subsequent GET /mentions calls (REJECTED mentions disappear from default lists).PUT /alert-settings, user receives an email digest at the configured cadence (first email arrives within cadenceMinutes of enable).