Communitygithub.com

Reddit ICP モニター

サブレディットを監視し、あなたのソリューションが解決する問題を正確に説明している投稿を見つけ、ICP(理想的な顧客プロファイル)に基づいてスコアリングし、高シグナル投稿ごとにスパムにならない役立つ返信を下書きします。

Reddit ICP モニター とは?

このスキルは、Reddit上であなたの製品が解決する問題に苦しんでいる人々を自動的に発見し、関連性をスコアリングし、本物の実務者らしい自然な返信を下書きするReddit ICPモニターです。Gemini APIを使用して投稿の関連性を評価し、Redditのパブリックエンドポイント(レート制限10 RPM)またはOAuth(60 RPM)のいずれかを使用して検索を実行します。ICP(理想的な顧客プロファイル)は `docs/icp.md` に保存され、製品説明、ペインポイントフレーズ、アンチキーワード、監視するサブレディットが定義されます。高スコア(4以上)の投稿に対してのみ返信を生成し、プロダクト名を宣伝しない(明示的にツール推薦を求められた場合を除く)、禁止用語(game-changer、best-in-classなど)を使用しない、などの反スパムルールに従います。最終的なレポートは日付別のファイルとして `docs/reddit-intel/` に保存され、各マッチのスコア、抽出されたシグナル引用、下書きされた返信が含まれます。Claude Code、Coder、CursorなどのAIエージェント向けに設計されています。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Reddit ICP モニター は何をしますか?

サブレディットを監視して、あなたが解決する問題を説明している人々を見つけます。関連性をスコアリングし、各マッチに対して役立つ返信を下書きします。


重要なルール: 投稿URL、タイトル、または内容を決してでっち上げないでください。出力内のすべての投稿はRedditの検索結果から取得されたものでなければなりません。結果がないセクションは「一致するものは見つかりませんでした」とマークしてください。検索で返されなかった投稿に対して返信を下書きしないでください。

スパム防止ルール: 下書きされた返信では、投稿が明示的にツール推薦を求めていない限り、製品名や会社名を決して言及してはいけません。マーケターではなく、実務者のように見せてください。


ステップ 1: セットアップ確認

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を使用してください。


ステップ 2: ICP の読み込み

既存のICPファイルを確認します:

ls docs/icp.md 2>/dev/null && echo "icp が見つかりました" || echo "icp が見つかりません"

docs/icp.md が存在する場合: 読み込んで、以下を抽出します:

  • product: 1文の製品説明
  • pain_points: ペインポイントフレーズのリスト(購入者の実際の言葉)
  • anti_keywords: 投稿を無効にするフレーズ
  • subreddits: 検索するサブレディットのリスト

docs/icp.md が存在しない場合: 以下の3つの質問をしてください。3つすべてに回答されるまで先に進まないでください。

  1. あなたの製品は何をしますか?(1文で)
  2. あなたのICPはどのサブレディットに投稿していますか?(カンマ区切り、例:devops, startups, SaaS)
  3. どのペインポイントフレーズがマッチのトリガーになるべきですか?(購入者の言葉で3〜5フレーズ、例:「オンボーディングに時間がかかりすぎる」「ユーザーがなぜ離脱するのかわからない」)

回答が収集されたら、references/icp-format.md の標準形式で docs/icp.md に保存します。確認メッセージ:「ICP を docs/icp.md に保存しました。今後の実行で自動的に使用されます。」

標準形式と、優れたペインポイントフレーズと悪いフレーズの例については references/icp-format.md を参照してください。


ステップ 3: Reddit を検索

サブレディットとペインポイントフレーズの各組み合わせに対して、1回の検索を実行します。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日間)
  • ユーザーが「今日」または「過去24時間」と言った場合:t=day
  • ユーザーが「今月」と言った場合:t=month

すべての検索後:

  • すべての投稿を1つのリストにまとめる
  • 投稿IDで重複を排除する。同じ投稿が複数のフレーズにマッチした場合、1つにまとめ、すべてのマッチしたフレーズを記録する
  • 検索結果が0件の場合:それをメモし、続行する。停止しない

スコアリング前に候補の総数を報告:「X 件の候補投稿が Y 個のサブレディットで見つかりました。」


ステップ 4: Gemini で関連性をスコアリング

すべての候補投稿とICPコンテキストを一時ファイルに書き込み、スコアリングします:

cat > /tmp/reddit-score-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "あなたは、特定の製品が解決するまさにそのペインポイントを誰かが経験しているReddit投稿を特定するGTMアナリストです。提供された各投稿に対して、以下のフィールドを持つJSONオブジェクトを出力してください:id(投稿ID)、score(整数1〜5)、reason(スコアを説明する1文)。スコアリング基準:5=その人が明らかに問題を抱えており、積極的に助けを求めているか、その問題について不満を述べている;4=強いシグナル、問題は存在するがそれほど明示的ではない;3=可能性あり、不確か;2=関連はあるが核心的な痛みではない;1=無関係。スコアオブジェクトのJSON配列のみを出力してください。配列の前後にコメントを付けないでください。"
    }]
  },
  "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の結果ゼロメッセージを出力し、停止します。空の返信を下書きしないでください。


ステップ 5: Gemini で返信を下書き

下書きの前に references/reply-rules.md を読んでください。各高スコア投稿の投稿タイプ(モード1、2、または3)を判定し、そのモードをGeminiに渡します。

スコア >= 4 の各投稿に対して、返信を下書きします(セッションあたり最大5件の返信):

cat > /tmp/reddit-reply-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "あなたはこのReddit投稿で説明されているまさにその問題を個人的に解決した実務者です。役立つ返信を書いてください。その返信は:(1) その人が尋ねたことや不満に思っていることに直接答える、(2) 実際の経験から得た具体的で有用な洞察を共有する、(3) 投稿が明示的にツール推薦を求めていない限り、製品、ツール、または会社名を名前で言及しない、(4) 2〜5文で、ヘッダーや箇条書きのない平易な会話調の散文で書く、(5) オプションで、会話を続けるためのプレッシャーの少ない招待で終わる。マーケティング用語を使用しないでください。次の言葉を使用しないでください:game-changer、best-in-class、streamline、transform、revolutionize、leverage、seamless、robust、comprehensive、innovative。本物の人のように振る舞ってください。"
    }]
  },
  "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:どのように対処するか、モード3:ツール推薦)
  • 製品説明(Geminiがモード1/2で名前を避けるために)
  • モード3の場合:Geminiは製品名を挙げてもよく、かつ少なくとも1つの代替案を挙げなければなりません

ステップ 6: セルフQA

すべてのチェックを実行し、提示前に違反を修正してください:

  • モード1またはモード2の返信に製品名がない
  • どの返信にも禁止用語がない:「game-changer」、「best-in-class」、「streamline」、「transform」、「revolutionize」、「leverage」、「seamless」、「robust」、「innovative」
  • すべての返信が2〜5文である(文数を数えて報告)
  • 各返信が投稿内の特定の質問や不満に直接対応している
  • 出力内のすべてのURLが検索結果からの実際のReddit URLである(構築または推測されたものではない)
  • 下書きされた返信が合計で5件を超えない
  • モード3の返信が少なくとも1つの代替案に言及している(製品だけではない)
  • いずれかのサブレディットがすべてのキーワード検索で0件の結果を返した場合、出力でフラグを立てる

提示前にすべての違反を修正してください。


ステップ 7: 出力と保存

完全なレポートを提示します:

## Reddit ICP モニター — [YYYY-MM-DD]

**監視したサブレディット:** r/[subreddit1], r/[subreddit2]
**時間枠:** 過去7日間
**検索したキーワード:** [phrase1], [phrase2], [phrase3]
**見つかった候補:** X 件の投稿
**高シグナルマッチ (スコア 4-5):** Y 件の投稿

---

### マッチ 1 — スコア [N]/5
**投稿:** [title](url)
**サブレディット:** r/[subreddit] | [N] アップボート | [N] コメント
**シグナル引用:** 「[投稿本文からの関連引用]」
**マッチしたキーワード:** [phrase]
**投稿タイプ:** モード [1/2/3]

**下書きした返信:**
[reply text]

**返信の単語数:** N ワード

---

[各マッチについて繰り返し]

---

**結果が0件のサブレディット:** [何も返さなかったものをリスト]

0件の投稿がスコア >= 4 の場合: 「過去7日間、[サブレディット] で高シグナルのマッチは見つかりませんでした。検索したキーワード:[リスト]。時間枠を広げるか(「先月」と言って再実行)、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.

関連スキル