一键导入
community-scanner
Scan Reddit communities for people with data problems, classify opportunities, propose responses, and create a PR with results.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Scan Reddit communities for people with data problems, classify opportunities, propose responses, and create a PR with results.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generate news-driven data content using the everyrow SDK. Orchestrates news discovery, dataset finding, SDK execution, and graphics generation. Use when asked to "run the news pipeline", "generate daily content", or "find news content".
Run the SEO optimization pipeline. Collects Google Search Console data, analyzes pages with LLM judgment, proposes improvements, and creates a PR. Use when asked to "run seo", "seo pipeline", or "optimize seo".
A minimal example skill that adds two numbers, saves the result, and creates a PR.
| name | community-scanner |
| description | Scan Reddit communities for people with data problems, classify opportunities, propose responses, and create a PR with results. |
Scan subreddits for people struggling with data problems, classify opportunities with a structured rubric, draft responses for the best ones, and create a PR with a report.
This is a simplified version of a production pipeline that scans 18 community sources daily. It demonstrates the pattern: Python does the mechanical fetching, Claude does the judgment. In production, each phase fans out to parallel subagents. Here, everything runs in a single process to keep it simple.
Phase 1: Scan
└── Python scanner fetches posts from each subreddit
↓ dedup against seen.txt, initial filtering
Phase 2: Classify
└── Answer 13 structured questions per post, assign 1-5 score
↓ filter to score 4-5
Phase 3: Propose
└── Select strategy, draft forum response for each high-scoring post
↓
Phase 4: Report
└── Markdown report with metrics, top opportunities, draft responses
↓
Phase 5: PR
└── Branch, commit, push, open PR
The output is a pull request. A human opens it, reads the report, and decides what to do.
Subreddits to scan (edit this list to target your communities):
Products we're looking for opportunities to help with:
Run the Python scanner for each subreddit:
python -m lib.scanner dataengineering
python -m lib.scanner excel
python -m lib.scanner salesforce
Each call outputs JSON to stdout with recent posts from that subreddit. Collect all results into a single list. If a subreddit fails (rate limited, unavailable), log the failure and continue with the others.
Deduplicate against data/seen.txt - skip any URL that already appears in that file. Append new URLs to data/seen.txt. Create the file if it doesn't exist.
After deduplication, if no new posts remain, skip to Phase 4 (Report) with an empty report.
For each post, do a quick first-pass judgment: is this even potentially about a data problem? Skip posts that are clearly:
Log skipped posts and why. Keep everything else for classification.
For each remaining post, answer ALL of these questions. Be concise but specific. Use your judgment for implicit signals even without explicit statements.
Based on your answers, assign a score from 1 to 5. The main question: "Would a comment describing an LLM-based approach be useful for people reading this post?"
| Score | Meaning |
|---|---|
| 1 | Not a fit - not a data problem, or trivially solvable with existing tools |
| 2 | Weak fit - data problem but exact matching / VLOOKUP / simple SQL would work |
| 3 | Possible fit - could benefit from semantic understanding, but might be too niche or platform-specific |
| 4 | Good fit - clear need for semantic matching or AI-powered processing, readers would benefit from knowing LLM approaches exist |
| 5 | Excellent fit - perfect use case, high visibility, a helpful response would get upvoted |
Important: At no point should you write a Python script for classification. Read the posts and think about them. If you feel like you need to write code, you've misunderstood these instructions.
Write all classifications to data/classified/scan-<date>.json:
{
"classified_at": "ISO timestamp",
"classifications": [
{
"url": "...",
"title": "...",
"subreddit": "...",
"answers": {
"canonical": "...",
"best_product": "...",
"data_format": "...",
"row_count": "...",
"tools_tried": "...",
"tried_llms": "...",
"difficulty": "...",
"data_provided": "...",
"accuracy_expectation": "...",
"importance": "...",
"person_importance": "...",
"commenter_solutions": "...",
"freshness": "..."
},
"score": 4,
"summary": "One-line explanation of why this score"
}
],
"metrics": {
"total_classified": 25,
"score_distribution": {"1": 15, "2": 5, "3": 3, "4": 1, "5": 1}
}
}
Most posts will score 1-2. That's expected. A 2-3% hit rate is normal.
For opportunities scoring 4 or 5, generate a response proposal.
Choose a strategy based on the audience and context:
| Strategy | Use When |
|---|---|
PROVE_CAPABILITY | Default (~80%). Show a demo or example proving we solve the problem. |
SHOW_SDK_CODE | Technical audience (StackOverflow, GitHub). Lead with a code snippet. |
EXPLAIN_APPROACH | Audience wants to understand why LLMs beat fuzzy matching. |
SHOW_INTEGRATION | User is building workflows (Make, Zapier, n8n). Show how results fit their pipeline. |
OFFER_HANDS_ON | Recent post, engaged OP. Offer to run their actual data. |
Write a draft forum reply for each opportunity. The draft should:
The draft is an anchor for the human reviewer, not the final post. Keep the tone helpful, not salesy.
Write proposals to data/proposals/scan-<date>.json:
{
"proposed_at": "ISO timestamp",
"proposals": [
{
"url": "...",
"title": "...",
"score": 5,
"product": "Dedupe",
"strategy": "SHOW_SDK_CODE",
"reasoning": "Why this strategy for this opportunity",
"key_points": ["Point 1", "Point 2", "Point 3"],
"draft": "The actual forum response text..."
}
]
}
If no opportunities scored 4-5, skip this phase.
Write a markdown report to data/reports/scan-<date>.md:
# Community Scan Report - <date>
## Summary
| Metric | Count |
|--------|-------|
| Subreddits scanned | N |
| Posts fetched | N |
| After dedup | N |
| After initial filter | N |
| Classified | N |
| Score 4-5 | N |
| Score 3 | N |
| Score 1-2 | N |
| Proposals generated | N |
## Score Distribution
| Score | Count | % |
|-------|-------|---|
| 5 | N | N% |
| 4 | N | N% |
| 3 | N | N% |
| 2 | N | N% |
| 1 | N | N% |
## Top Opportunities (Score 4-5)
### [Score X] <title> (<subreddit>)
- **URL:** <url>
- **Product:** <best_product>
- **Strategy:** <strategy>
- **Summary:** <classifier summary>
**Key Points:**
- <key points from proposal>
<details>
<summary>Draft Response (click to expand)</summary>
<draft response text>
</details>
## All Classifications
| Score | Subreddit | Title | URL |
|-------|-----------|-------|-----|
| ... | ... | ... | ... |
## Skipped Posts
| Reason | Count |
|--------|-------|
| Already in seen.txt | N |
| No text body | N |
| Career/job posting | N |
| Product announcement | N |
If no posts were found or all scored 1-2, the report should still be created noting that. An empty run is still a data point.
scan/<date>data/reports/scan-<date>.mddata/classified/scan-<date>.jsondata/proposals/scan-<date>.json (if it exists)data/seen.txtThe PR is the output. A human opens it, reads the report, expands the draft responses, tweaks the wording, and decides what to post. GitHub is the UI.
After each run, check if any process improvements were discovered and update data/learnings.md. These aren't logs - they're instructions for future runs. Examples:
- "r/excel: most posts are formula syntax questions, not data problems. Consider removing."
- "Posts starting with 'What's your favorite...' are never opportunities. Skip during initial filter."
- "Competitor marketing posts account for ~50% of Reddit noise. Look for: product links in post body, account history of only posting about one tool."
- "r/dataengineering: 3% hit rate. Keep scanning."
Before scanning, read data/learnings.md if it exists and apply any relevant instructions (e.g., skip certain subreddits, adjust filtering).
The learnings file is the pipeline's memory. Over time it accumulates knowledge about which sources work, what patterns to ignore, and what signals matter. This is one of the most valuable outputs of the whole system.
Never fail the entire skill due to individual component failures. Always produce a report.