Communitygithub.com

Reddit ICP监控器

监控子版块中描述你解决问题的用户,根据理想客户画像(ICP)评分,并为每条高信号帖子起草一封实用且非推广的回复。用于当被要求监控Reddit上的ICP信号、寻找潜在客户、发现痛点帖子、起草回复或扫描购买信号时。

Reddit ICP监控器 是什么?

这是一个针对AI代理(如Claude Code)的专业技能,用于自动化Reddit上的潜在客户发现和互动。它通过扫描指定子版块,利用预定义的ICP文件(包含产品描述、痛点短语和排除关键词)来识别高相关度帖子。技能使用Gemini API对帖子进行1-5分评分,仅保留得分4分及以上的帖子,并基于反垃圾规则(模式1/2/3)起草自然、非推销的回复。支持OAuth认证(60 RPM)或公共端点(10 RPM),并包含自检QA流程和报告存储功能。

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Varnan-Tech/opendirectory/tree/main/skills/reddit-icp-monitor

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Reddit ICP监控器 是做什么的?

监控子版块中描述你解决的问题的用户。对其相关性进行评分。为每个匹配的帖子起草一份有用的回复。


关键规则: 切勿发明帖子URL、标题或内容。输出中的每个帖子都必须来自Reddit搜索结果。如果某个部分没有结果,标记为“未找到匹配项。”切勿为搜索结果未返回的帖子起草回复。

反垃圾规则: 除非帖子明确要求工具推荐,否则起草的回复不得提及你的产品或公司名称。听起来像从业者,而不是营销人员。


第一步:设置检查

echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
echo "REDDIT_CLIENT_ID: ${REDDIT_CLIENT_ID:-未设置,使用公共端点(10 RPM)}"

如果缺少 GEMINI_API_KEY: 停止。告知用户:“需要 GEMINI_API_KEY。请在 aistudio.google.com 获取。将其添加到您的 .env 文件中。”

如果缺少 Reddit 凭据: 继续。使用 Reddit 的公共 JSON 端点(无需认证,限制为 10 RPM)。对于大多数包含 3-6 个子版块搜索的监控会话,这已经足够。

如果设置了 REDDIT_CLIENT_ID: 使用 OAuth 以获得 60 RPM。首先获取令牌:

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'])")

在后续所有请求中使用 Authorization: Bearer $TOKEN 和 https://oauth.reddit.com 基本 URL。


第二步:加载ICP

检查是否存在ICP文件:

ls docs/icp.md 2>/dev/null && echo "找到 icp" || echo "缺少 icp"

如果存在 docs/icp.md: 读取它。提取:

  • product:一句话的产品描述
  • pain_points:痛点短语列表(精确买家语言)
  • anti_keywords:排除帖子的短语
  • subreddits:要搜索的子版块列表

如果 docs/icp.md 不存在: 询问这3个问题。在全部回答之前不要继续:

  1. 你的产品是做什么的?(一句话)
  2. 你的ICP在哪些子版块发帖?(逗号分隔,例如 devops, startups, SaaS)
  3. 哪些痛点短语应该触发匹配?(3-5个短语,用买家自己的话,例如“onboarding takes forever”、“can't see why users churn”)

收集答案后,按照 references/icp-format.md 中的规范格式保存到 docs/icp.md。确认:“ICP已保存到 docs/icp.md。在以后的运行中将自动使用。”

阅读 references/icp-format.md 以了解规范格式以及好的和坏的痛点短语示例。


第三步:搜索Reddit

对于每个子版块和痛点短语的组合,执行一次搜索。除非设置了OAuth凭据,否则使用公共端点。

不带OAuth(公共端点):

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']
    }))
"

带OAuth: 将 https://www.reddit.com 替换为 https://oauth.reddit.com,并添加 -H "Authorization: Bearer $TOKEN"。

在将短语插入查询字符串之前进行URL编码:

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

时间窗口默认值:

  • 默认值:t=week(最近7天)
  • 用户说“today”或“last 24 hours”:t=day
  • 用户说“this month”:t=month

所有搜索完成后:

  • 将所有帖子收集到一个列表中
  • 按帖子ID去重。如果同一帖子匹配多个短语,保留一次并记录所有匹配的短语。
  • 如果搜索返回0个帖子:记录下来并继续。不要停止。

在评分前说明总候选数:“在Y个子版块中找到X个候选帖子。”


第四步:使用Gemini评分相关性

将所有候选帖子和ICP上下文写入临时文件,然后评分:

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,
    "maxOutputTokens": 2048
  }
}
ENDJSON
curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d @/tmp/reddit-score-request.json \
  | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"

将 POSTS_AND_ICP_CONTEXT_HERE 替换为:

  • 步骤2中的产品描述和痛点短语
  • 每个候选帖子:id、标题、正文片段
  • ICP中的排除关键词(Gemini应将它们评分较低)

仅保留评分 >= 4 的帖子用于回复起草。

说明:“有X个帖子获得4或5分。正在起草回复。”

如果0个帖子评分 >= 4:输出步骤7中的零结果消息并停止。不要起草空回复。


第五步:使用Gemini起草回复

在起草前阅读 references/reply-rules.md。为每个高分帖子确定帖子类型(模式1、2或3),并将模式传递给Gemini。

对于每个评分 >= 4 的帖子,起草回复(每个会话最多5个回复):

cat > /tmp/reddit-reply-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "You are a practitioner who has personally solved the exact problem being described in this Reddit post. Write a helpful reply that: (1) directly addresses what the person asked or is frustrated about, (2) shares a specific, useful insight from real experience, (3) does NOT mention any product, tool, or company by name unless the post explicitly asks for tool recommendations, (4) is 2-5 sentences, written in plain conversational prose with no headers or bullet lists, (5) optionally ends with a low-pressure invitation to continue the conversation. Do not use marketing language. Do not use these words: game-changer, best-in-class, streamline, transform, revolutionize, leverage, seamless, robust, comprehensive, innovative. Sound like a real person."
    }]
  },
  "contents": [{
    "parts": [{
      "text": "POST_CONTENT_AND_MODE_HERE"
    }]
  }],
  "generationConfig": {
    "temperature": 0.7,
    "maxOutputTokens": 512
  }
}
ENDJSON
curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d @/tmp/reddit-reply-request.json \
  | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"

将 POST_CONTENT_AND_MODE_HERE 替换为:

  • 完整的帖子标题和正文
  • 回复模式(模式1:发泄/沮丧,模式2:如何处理X,模式3:工具推荐)
  • 产品描述(以便Gemini在模式1/2中知道避免命名什么)
  • 如果是模式3:Gemini可以命名产品,并且必须命名一个替代品

第六步:自我QA

在呈现之前执行每一项检查并修复违规:

  • 模式1或模式2的回复中不出现产品名称
  • 任何回复中不出现禁用词:“game-changer”、“best-in-class”、“streamline”、“transform”、“revolutionize”、“leverage”、“seamless”、“robust”、“innovative”
  • 每个回复2-5个句子(计数并说明)
  • 每个回复直接回应帖子中的特定问题或沮丧
  • 输出中的所有URL都是来自搜索结果的真实Reddit URL(不是构造或猜测的)
  • 总共起草的回复不超过5个
  • 模式3的回复至少提到一个替代品(不仅仅是本产品)
  • 如果任何子版块在所有关键词搜索中返回0个结果,在输出中标记它

在呈现前修复任何违规。


第七步:输出和保存

呈现完整报告:

## Reddit ICP监控器 — [YYYY-MM-DD]

**监控的子版块:** r/[subreddit1]、r/[subreddit2]
**时间窗口:** 最近7天
**搜索的关键词:** [phrase1]、[phrase2]、[phrase3]
**找到的候选帖子:** X 个
**高信号匹配项(评分4-5):** Y 个

---

### 匹配项1 — 评分 [N]/5
**帖子:** [标题](url)
**子版块:** r/[subreddit] | [N] 票 | [N] 评论
**信号引用:** "[帖子正文的相关摘录]"
**匹配的关键词:** [phrase]
**帖子类型:** 模式 [1/2/3]

**起草的回复:**
[回复文本]

**回复字数:** N 字

---

[对每个匹配项重复]

---

**返回0结果的子版块:** [列出任何没有返回结果的子版块]

如果0个帖子评分 >= 4: “在过去7天内,在 [子版块] 中未找到高信号匹配项。搜索的关键词:[列出]。尝试扩大时间窗口(重新运行并说‘last month’)或拓宽 docs/icp.md 中的痛点短语。”

保存到文件:

mkdir -p docs/reddit-intel
OUTFILE="docs/reddit-intel/$(date +%Y-%m-%d).md"
cat > "$OUTFILE" << 'EOF'
REPORT_CONTENT_HERE
EOF
echo "已保存到 $OUTFILE"

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Varnan-Tech/opendirectory

Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand logos, and Google Search grounding to create beautiful 16:9 images with Gemini 3.1 Flash Image Preview.

Varnan-Tech/opendirectory

World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then applies scientific naming frameworks (Phonosemantics) and automated multi-TLD domain checking.

Varnan-Tech/opendirectory

Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused file under 100 lines containing only the non-obvious build commands, conventions, and gotchas Claude Code needs.

Varnan-Tech/opendirectory

Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using ValidEmail.co or the open-source Reacher engine.

Varnan-Tech/opendirectory

Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.

Varnan-Tech/opendirectory

Give it your product URL or description. It finds your top 5 competitors, runs three-track PR research across all of them (editorial, podcasts, communities), identifies which channels appear most frequently, looks up the journalist or host for each, and returns a tiered outreach list with story angles and ready-to-send cold pitch drafts tailored to your product. Use when asked to find PR opportunities, discover where competitors got featured, build a media outreach list, find which journalists cover my space, or get pitch templates for press coverage.

Varnan-Tech/opendirectory

Generate high-converting, deep-dive growth case studies in MDX format. Use this skill when asked to write a case study or blog post about a company's growth, tech stack, or product-led strategy. It handles the full pipeline (researching the company via Tavily, generating a 16:9 cover image, quality checking the draft, uploading assets to cloud storage, and pushing directly to the target repository).

Varnan-Tech/opendirectory

Scans your project for outdated npm, pip, Cargo, Go, or Ruby packages. Runs a CVE security audit. Fetches changelogs, summarizes breaking changes with Gemini, and opens one PR per risk group (patch, minor, major). Includes Diagnosis Mode for install conflicts. Use when asked to update dependencies, check for outdated packages, open dependency PRs, scan for package updates, audit for CVEs, or flag breaking changes in upgrades. Trigger when a user says "check for outdated packages", "update my dependencies", "open PRs for dependency updates", "scan for CVEs", or "which packages need upgrading".

Varnan-Tech/opendirectory

Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture. Uses graphify to build a knowledge graph first, then writes accurate docs from it. Use when asked to write docs, generate a README, document an API, update stale docs, create an API reference from code, add an architecture section, or document a project in any language. Trigger when a user says their docs are missing, outdated, or wants to document their codebase without writing it manually.

Varnan-Tech/opendirectory

Evaluates expired domain candidates against a target niche, scores them by topical relevance, historical activity level, and history cleanliness, then outputs a ranked shortlist with explainable reasoning and risk flags.

Varnan-Tech/opendirectory

Brutally honest developer-experience audit for a GitHub repo. Scores 10 DX dimensions (time-to-first-success, README clarity, visual proof, install, quick-start, docs, examples, community, trust, marketing), writes a shareable roast in the requested tone (brutal/honest/kind), produces a prioritized action plan ranked by impact × effort, and sketches an ideal README. Trigger when user says "roast my repo", "audit my README", "dx audit", "developer experience review", "score my GitHub project", "before launch checklist", or "make my repo shareable".

Varnan-Tech/opendirectory

Drafts and designs a complete HTML email newsletter from a topic or content brief. Outputs paste-ready HTML for Loops, Mailchimp, Beehiiv, Resend, or any standard email platform. Includes subject line options and plain-text fallback. Trigger when a user says "write a newsletter", "draft an email newsletter", "create an HTML email", "design an email for my subscribers", or "write a newsletter about [topic]".

Varnan-Tech/opendirectory

Takes a GitHub PR URL or the current branch and writes a plain-English explanation of what it does and why, then posts it as a PR comment. Use when asked to explain a PR, summarize a pull request, write a plain-English description of a PR, add a summary comment to a PR, or understand what a PR changes. Trigger when a user says "explain this PR", "summarize this pull request", "what does this PR do", "add a comment explaining the PR", or shares a GitHub PR URL and asks what it does.

Varnan-Tech/opendirectory

Audit how often LLMs recommend your brand vs competitors and generate a GEO action plan.

Varnan-Tech/opendirectory

Takes a competitor's public GitHub repo URL, fetches their open issues via the GitHub REST API, filters noise locally, clusters issues into 6 demand categories, computes a demand score per issue and per cluster, and outputs a ranked demand gap report with a GTM messaging brief. Use when asked to scan a competitor's GitHub issues, find what their users are begging for, turn GitHub complaints into product positioning, identify competitor feature gaps, or generate messaging from real user demand. Trigger when a user says "scan competitor issues", "what are users asking for on X repo", "find demand gaps in Y", "turn GitHub issues into messaging", or "what should I build based on competitor complaints".

Varnan-Tech/opendirectory

Find recurring confusion in your repo's GitHub Discussions, rank it by urgency, and draft the actual docs fixes and content angles — with verbatim community quotes and source links as evidence.

Varnan-Tech/opendirectory

SEO keyword research workflow for blog generation using Google Trends data. Use when writing blog posts, planning content calendars, or optimizing articles for search engines. Finds breakout keywords, builds content structure, and generates SEO-optimized blog outlines targeting tech and developer audiences.

Varnan-Tech/opendirectory

Generates a professionally designed case study PDF for B2B SaaS sales and marketing. Supports 7 page layouts, 9 style presets, 1-4 page output. Trigger when user says "create a case study", "write a customer story", "make a case study PDF", "design a success story", "turn this customer win into a PDF".

Varnan-Tech/opendirectory

Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6. 1080×1080px default, 5 style presets, highlight annotations. Trigger when user says "create a chart", "visualize data", "make a bar chart", "line graph", "pie chart", "data visualization", "chart this data", "plot", "graph", or "visualize these numbers".

Varnan-Tech/opendirectory

Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.

相关技能