Skip to content
Marketing
Skill

/reddit-icp-monitor

Watches subreddits for people describing the exact problem you solve, scores their relevance to your ICP, and drafts a helpful non-spammy reply for each high-signal post. Use when asked to monitor Reddit for ICP signals, find prospects on Reddit, surface pain point posts, draft

From plugin
opendirectory-gtm-skills
68865 skills

Claude Code

$ npx -y skills add Varnan-Tech/opendirectory --skill reddit-icp-monitor --agent claude-code

SKILL.md

reddit-icp-monitor.SKILL.md
name: reddit-icp-monitor
description: Watches subreddits for people describing the exact problem you solve, scores their relevance to your ICP, and drafts a helpful non-spammy reply for each high-signal post. Use when asked to monitor Reddit for ICP signals, find prospects on Reddit, surface pain point posts, draft helpful Reddit replies, or scan subreddits for buying signals. Trigger when a user says "monitor Reddit for my ICP", "find people on Reddit who need my product", "scan subreddits for pain points", "draft Reddit replies for prospects", or "check Reddit for buying signals".
author: OpenDirectory
version: 1.0.0

Reddit ICP Monitor

Watch subreddits for people describing the problem you solve. Score their relevance. Draft a helpful reply for each match.

---

**Critical rule:** Never invent post URLs, titles, or content. Every post in the output must come from a Reddit search result. Mark any section with no results as "No matches found." Never draft a reply to a post that was not returned by the search.

**Anti-spam rule:** Drafted replies must never mention your product or company name unless the post explicitly asks for tool recommendations. Sound like a practitioner, not a marketer.

---

Step 1: Setup Check

echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
echo "REDDIT_CLIENT_ID: ${REDDIT_CLIENT_ID:-not set, using public endpoints (10 RPM)}"

**If GEMINI_API_KEY is missing:** Stop. Tell the user: "GEMINI_API_KEY is required. Get it at aistudio.google.com. Add it to your .env file."

**If Reddit credentials are missing:** Continue. Use Reddit's public JSON endpoints (no auth required, 10 RPM limit). For most monitoring sessions of 3-6 subreddit searches, this is sufficient.

**If REDDIT_CLIENT_ID is set:** Use OAuth for 60 RPM. Fetch a token first:

TOKEN=$(curl -s -X POST \
  -d "grant_type=password&username=$REDDIT_USERNAME&password=$REDDIT_PASSWORD" \
  --user "$REDDIT_CLIENT_ID:$REDDIT_CLIENT_SECRET" \
  -H "User-Agent: varnan-skills/1.0" \
  https://www.reddit.com/api/v1/access_token \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])")

Use `Authorization: Bearer $TOKEN` and `https://oauth.reddit.com` base URL for all subsequent requests.

---

Step 2: Load ICP

Check for an existing ICP file:

ls docs/icp.md 2>/dev/null && echo "icp found" || echo "icp missing"

**If docs/icp.md exists:** Read it. Extract:

  • `product`: one-sentence product description
  • `pain_points`: list of pain point phrases (exact buyer language)
  • `anti_keywords`: phrases that disqualify a post
  • `subreddits`: list of subreddits to search

**If docs/icp.md does not exist:** Ask these 3 questions. Do not proceed until all 3 are answered: 1. What does your product do? (one sentence) 2. What subreddits does your ICP post in? (comma-separated, e.g. devops, startups, SaaS) 3. What pain point phrases should trigger a match? (3-5 phrases in your buyer's own words, e.g. "onboarding takes forever", "can't see why users churn")

After answers are collected, save to docs/icp.md in the canonical format from `references/icp-format.md`. Confirm: "ICP saved to docs/icp.md. It will be used automatically in future runs."

Read `references/icp-format.md` for the canonical format and examples of good vs bad pain point phrases.

---

Step 3: Search Reddit

For each combination of subreddit and pain point phrase, run one search. Use public endpoints unless OAuth credentials are set.

**Without OAuth (public endpoint):**

curl -s \
  -H "User-Agent: varnan-skills/1.0" \
  "https://www.reddit.com/r/{SUBREDDIT}/search.json?q={PHRASE}&sort=new&t=week&limit=25&restrict_sr=true" \
  | python3 -c "
import sys, json
d = json.load(sys.stdin)
posts = d.get('data', {}).get('children', [])
for p in posts:
    data = p['data']
    print(json.dumps({
        'id': data['id'],
        'title': data['title'],
        'body': data.get('selftext', '')[:600],
        'url': 'https://reddit.com' + data['permalink'],
        'score': data['score'],
        'comments': data['num_comments'],
        'subreddit': data['subreddit'],
        'created_utc': data['created_utc']
    }))
"

**With OAuth:** Replace `https://www.reddit.com` with `https://oauth.reddit.com` and add `-H "Authorization: Bearer $TOKEN"`.

**URL-encode the phrase** before inserting into the query string:

ENCODED=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "{PHRASE}")

**Time window defaults:**

  • Default: `t=week` (last 7 days)
  • User says "today" or "last 24 hours": `t=day`
  • User says "this month": `t=month`

**After all searches:**

  • Collect all posts into one list
  • Deduplicate by post ID. If the same post matches multiple phrases, keep it once and note all matching phrases.
  • If a search returns 0 posts: note it and continue. Do not stop.

State the total candidate count before scoring: "Found X candidate posts across Y subreddits."

---

Step 4: Score Relevance with Gemini

Write all candidate posts and the ICP context to a temp file, then score:

cat > /tmp/reddit-score-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "You are a GTM analyst identifying Reddit posts where someone is experiencing the exact pain point that a specific product solves. For each post provided, output a JSON object with these fields: id (the post id), score (integer 1-5), reason (one sentence explaining the score). Scoring rubric: 5 = person clearly has the problem AND is actively seeking help or venting frustration about it; 4 = strong signal, problem is present but less explicit; 3 = possible match, uncertain; 2 = tangentially related but not the core pain; 1 = unrelated. Output only a JSON array of score objects. No commentary before or after the array."
    }]
  },
  "contents": [{
    "parts": [{
      "text": "POSTS_AND_ICP_CONTEXT_HERE"
    }]
  }],
  "generationConfig": {
    "temperature": 0.2,
    "maxOu
Read more
@varnan-tech
Ships withopendirectory-gtm-skills

AI Agent Skills built for Founders who hate Marketing

Stars on GitHub

Momentum

stars in total
688
Star history of Varnan-Tech/opendirectory on GitHub, a chart by star-history.com

Other skills on opendirectory-gtm-skills.

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about reddit-icp-monitor.

Which coding agents can use reddit-icp-monitor?
reddit-icp-monitor installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.