forum-monitor

v2026.09.24

Use when monitoring online forums (Reddit, HN, ProductHunt) for recurring user pain points, feature requests, and unmet needs. Invoke for market research, pain-point discovery, trend detection, and competitive intelligence. Designed for scheduled execution via CronCreate.

GitHub
安装命令
npx skhub add oimiragieo/forum-monitor
Markdown
SKILL.md

Forum Monitor

Overview

Systematic workflow for monitoring online communities to discover recurring user pain points. Transforms unstructured forum discussions into ranked, evidence-backed opportunity reports suitable for automated app generation pipelines.

Core principle: Pain points with high frequency and high engagement are the strongest product signals. Monitor, classify, rank, report.

When to Use

  • Discovering product opportunities from community feedback
  • Running periodic (daily/weekly) market research scans
  • Identifying trending complaints or feature requests
  • Competitive intelligence gathering from user discussions
  • Feeding the app-generation-workflow with validated pain points

Cron Integration

This skill is designed to run on a schedule via CronCreate:

CronCreate({
  name: 'weekly-forum-scan',
  schedule: '0 9 * * MON', // Every Monday at 9 AM
  prompt:
    'Run forum monitor scan for [target domain]. Invoke Skill({ skill: "forum-monitor" }). Save report to .claude/context/reports/backend/',
});

Workflow

Step 1: Configure Target Forums

Define the forums to monitor based on the target domain:

Forum Selection Matrix:

ForumBest ForQuery Pattern
RedditConsumer pain points, UX issuessite:reddit.com <topic> frustrating OR wish
Hacker NewsDeveloper tools, B2B SaaSsite:news.ycombinator.com <topic>
ProductHuntNew product gaps, feature envysite:producthunt.com <topic>
Indie HackersSolo dev pain points, pricingsite:indiehackers.com <topic>
Dev.toDeveloper workflow frictionsite:dev.to <topic> pain OR annoy

Query Templates:

"{topic} frustrating OR annoying OR wish OR need OR missing"
"{topic} alternative to OR better than OR looking for"
"{topic} feature request OR roadmap OR please add"

Step 2: Scrape and Collect

For each configured forum, execute searches and extract content:

// Search for pain points
WebSearch({ query: 'site:reddit.com {topic} frustrating OR wish OR need 2026' });

// Fetch specific threads with high engagement
WebFetch({
  url: '{thread-url}',
  prompt:
    'Extract all complaints, feature requests, and pain points. For each, note the exact quote, upvote count, and whether others agreed.',
});

Collection Requirements:

  • Minimum 20 posts per forum per scan
  • Include posts from the last 30 days (or configurable window)
  • Capture: title, URL, community, engagement (upvotes + comments), date, key quotes

Step 3: Classify Pain Points

Categorize each collected item into one of these categories:

CategorySignal WordsExample
missing-feature"wish", "need", "please add", "roadmap""I wish Notion had offline mode"
workflow-friction"slow", "clunky", "takes forever""It takes 10 clicks to export a PDF"
bug-report"broken", "crashes", "error""The app crashes on large files"
pricing"expensive", "not worth", "free alt""Too expensive for a solo dev"
ux-confusion"confusing", "can't find", "intuitive""I had no idea where settings were"
integration-gap"connect to", "integrate with", "API""No Zapier integration available"

Step 4: Cluster and Deduplicate

Group similar pain points into clusters:

  1. Exact duplicates: same complaint, different posts -> merge, sum engagement
  2. Semantic duplicates: similar complaint, different wording -> cluster, note variants
  3. Related but distinct: same domain, different problems -> keep separate

Step 5: Rank by Opportunity Score

For each cluster, compute:

Opportunity Score = (Frequency x 0.4) + (Engagement x 0.3) + (Recency x 0.2) + (Sentiment Intensity x 0.1)

Where:

  • Frequency: Number of unique posts mentioning this pain point (normalized 0-10)
  • Engagement: Total upvotes + comments across all posts (normalized 0-10)
  • Recency: How recent the complaints are (last 7 days = 10, last 30 days = 5, older = 2)
  • Sentiment Intensity: How strongly negative the language is (0-10)

Step 6: Generate Report

Write structured output to .claude/context/reports/backend/forum-monitor-report-{YYYY-MM-DD}.md:

<!-- Agent: forum-monitor-agent | Task: #{id} | Session: {date} -->

# Forum Monitor Report

**Scan Period**: {start-date} to {end-date}
**Forums Monitored**: {list}
**Total Posts Analyzed**: {count}
**Pain Point Clusters Found**: {count}

## Top Pain Points (Ranked by Opportunity Score)

| Rank | Pain Point | Category | Freq | Engagement | Score | Sources |
| ---- | ---------- | -------- | ---- | ---------- | ----- | ------- |
| 1    | [desc]     | [cat]    | [n]  | [n]        | [n.n] | [n]     |

## Detailed Findings

### 1. [Pain Point Title] (Score: X.X)

**Category**: [type]
**Frequency**: [n] mentions across [n] sources
**Engagement**: [total upvotes] upvotes, [total comments] comments
**Forums**: [list of forums where this appeared]

**Representative Quotes:**

1. "[exact quote]" - [source URL] ([n] upvotes)
2. "[exact quote]" - [source URL] ([n] upvotes)
3. "[exact quote]" - [source URL] ([n] upvotes)

**App Opportunity Assessment:**

- Buildable as standalone app: YES/NO
- Estimated complexity: LOW/MEDIUM/HIGH
- Existing solutions: [list or "none found"]
- Differentiation angle: [what would make a new solution win]

Iron Laws

  1. ALWAYS cite source URLs for every finding -- unverifiable claims are worthless
  2. NEVER fabricate engagement metrics -- counts must come from actual collected data
  3. ALWAYS cross-reference at least 2 forums before declaring a trend
  4. NEVER include content from private or gated forums -- public content only
  5. ALWAYS include verbatim quotes -- user language is more valuable than agent summaries

Anti-Patterns

Anti-PatternWhy It FailsCorrect Approach
Single-forum reportsOne community is not representativeCross-reference 2+ forums before trending
Subjective rankingPersonal opinion is not dataUse weighted opportunity formula
Missing source URLsDownstream agents cannot validate findingsEvery finding must have a clickable source
Stale data without date rangeTrends from 2024 are not 2026 trendsAlways specify scan period in report header
Over-counting duplicatesSame user posting in 3 threads is not 3 data pointsDeduplicate by unique user + unique complaint

Related Skills

  • browser-automation -- for deeper scraping when WebSearch/WebFetch are insufficient
  • deep-research -- for comprehensive investigation of specific pain points
  • feedback-analysis -- for structured sentiment and NPS analysis

Assigned Agents

AgentRole
forum-monitor-agentPrimary -- executes the full workflow
researcherSupporting -- deeper investigation
app-generator-agentConsumer -- reads reports for app ideas

Memory Protocol (MANDATORY)

Before starting:

node .claude/lib/memory/memory-search.cjs "forum monitor pain points trends"

Read .claude/context/memory/learnings.md

After completing:

  • New monitoring pattern -> .claude/context/memory/learnings.md
  • Forum access issue -> .claude/context/memory/issues.md
  • Scoring model decision -> .claude/context/memory/decisions.md

ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

未指定

源路径

.claude/skills/forum-monitor

默认分支

main

最新提交

64b580e

Tree SHA

42a1df4