Reddit投稿エンジン は何をしますか?
サブレディットの文化に合ったReddit投稿を下書きします。必要に応じてComposio経由で投稿します。
重要ルール: サブレディットのルールを確認せずに投稿しないでください。本文にプロダクトリンクを含めないでください。リンクは適切な場合のみ最初のコメントに配置します。90/10ルールに従ってください。投稿はプロダクトの言及とは独立して価値を提供する必要があります。
スパム対策ルール: 主に宣伝目的の投稿は削除され、アカウントがBANされる可能性があります。目標はまずコミュニティに貢献することです。プロダクトの言及は最初のコメントにのみ、かつサブレディットが自己宣伝を許可している場合のみ行ってください。
ステップ1: セットアップ確認
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
# Composio Reddit MCPが接続されているか確認
claude mcp list 2>/dev/null | grep -i reddit || echo "Composio Reddit MCP: 未接続"
GEMINI_API_KEYがない場合: 処理を停止し、ユーザーに伝えてください。「GEMINI_API_KEYが必要です。aistudio.google.comから取得し、.envファイルに追加してください。」
Composio Reddit MCPが接続されていない場合: 続行します。スキルは投稿を下書きしますが、投稿ステップはスキップします。ユーザーに伝えてください。「Composio Reddit MCPが接続されていません。手動投稿用に下書きを作成します。直接投稿を有効にするには、README.mdのセットアップ手順を参照してください。」
ステップ2: コンテキスト収集
必要な情報:
- 対象サブレディット (例: r/devops, r/startups, r/SideProject)
- 共有内容 (プロジェクト、記事、質問、ディスカッション、ツール)
- それが何をするのかを一文で説明
- この特定のサブレディットのコミュニティにとってなぜ関連性があるのか
- テキスト投稿かリンク投稿か
これらのいずれかが不足している場合、ひとつのメッセージで質問してください:
「Reddit投稿を下書きするために、以下が必要です:
- どのサブレディットですか? (例: r/devops, r/startups)
- 何を共有しますか? (プロジェクト、記事、ツール、質問)
- それは何をしますか? (一文、技術的に)
- なぜこのサブレディットが特に関心を持つのですか?」
ステップ3: サブレディットのルールと文化を取得
サブレディットのルールを取得:
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/about/rules.json" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
rules = d.get('rules', [])
for r in rules:
print(f'ルール: {r.get(\"short_name\", \"\")}')
print(f'詳細: {r.get(\"description\", \"\")[:200]}')
print()
"
最近のトップ投稿を取得してトーンとスタイルを理解:
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/top.json?t=week&limit=10" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
for p in d['data']['children'][:10]:
pd = p['data']
print(f'スコア: {pd[\"score\"]} | タイトル: {pd[\"title\"][:100]}')
"
トップ投稿のパターンをメモ:
- タイトルは質問形式か、それともステートメントか?
- 技術から始めるか、成果から始めるか?
- 個人的な視点(「I built...」)か、非個人的な視点(「Tool for...」)か?
- このサブレディットではどの形式が最もエンゲージメントを得ているか?
サブレディットのサイドバーで投稿ルールを確認:
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/about.json" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
data = d.get('data', {})
print('公開説明:', data.get('public_description', '')[:300])
print('購読者数:', data.get('subscribers', 0))
"
サブレディットのタイプを特定:
| タイプ | 例 | 投稿スタイル |
|---|---|---|
| 技術実践者 | r/devops, r/sysadmin, r/ExperiencedDevs | 技術的な詳細、無駄なし、「XをやってYを学んだ」 |
| スタートアップ/ビルダー | r/startups, r/SideProject, r/indiehackers | 個人的なストーリー、指標、学んだ教訓 |
| 一般的な技術 | r/programming, r/technology | ニュースアングル、議論のフック、物議を醸す視点 |
| キャリア | r/cscareerquestions, r/ITCareerQuestions | 質問形式、具体的なシナリオ、経験を求める |
| ニッチなツール | r/vim, r/rust, r/golang | 深い技術的内容、コード例、ベンチマーク |
取得したルールとトップ投稿を使用して、どのスタイルが適用されるかを判断してください。
ステップ4: Geminiで投稿を下書き
投稿内容を一時ファイルに書き込み、Geminiを呼び出します:
cat > /tmp/reddit-post-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "あなたは{SUBREDDIT}コミュニティで活動している開発者です。このサブレディットの文化に合ったReddit投稿を書いてください。ルール: (1) プロジェクトや経験に関する投稿の場合は一人称で書いてください。(2) 本文にプロダクトリンクを含めないでください。リンクは最初のコメントのみに入れてください。(3) 投稿は共有するプロダクトとは独立して、コミュニティに真の価値を提供しなければなりません。(4) このサブレディットのトップ投稿のトーンに合わせてください: {SUBREDDIT_TONE_NOTES}。(5) タイトルは最大300文字。(6) テキスト投稿の場合、本文は150〜400語。(7) マーケティング用語は使わない: 'game-changing'、'powerful'、'robust'、'seamless'、'innovative'は禁止。(8) 投稿がユーザーが作成したツールに関するものである場合、'I made...'または'I built...'というオープナーを使用してください。これはRedditで最も効果的です。(9) 出力: 最初の行にタイトル、空行、本文。ラベルやコメントは不要。emダッシュは使用しないでください。"
}]
},
"contents": [{
"parts": [{
"text": "POST_DETAILS_HERE"
}]
}],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}
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-post-request.json \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"
POST_DETAILS_HEREを以下の内容に置き換えてください:
- サブレディット名とタイプ
- 観察されたトップ投稿のパターン
- 共有される内容とその関連性
- 主要な技術的詳細
- 作成者の正直な動機
ステップ5: 最初のコメントを下書き
ユーザーにプロダクトリンクや追加のコンテキストがある場合、投稿公開直後に投稿する最初のコメントを下書きします。
最初のコメントには2つの目的があります:
- リンクを提供する(本文をリンクフリーに保ち、宣伝感を抑える)
- 投稿本文では宣伝的に過ぎるコンテキストを追加する
最初のコメントのルール:
- 自分の投稿への最初の返信として、公開直後に投稿する
- 100語未満に抑える
- フォーマット例: 「試してみたい方はこちら: [URL]。投稿で触れた[特定の技術的なこと]についての質問もお気軽にどうぞ。」
- サブレディットがコメントでの自己宣伝を許可している場合のみ、最初のコメントを含める
- サブレディットに「自己宣伝禁止」ルールがある場合、リンクは完全に省略する
ステップ6: 自己QA
下書きを提示する前にチェック:
構造:
- タイトルが300文字を超えていない
- 投稿本文にリンクがない
- 投稿が一人称で始まっている(プロジェクト/経験投稿の場合)
- 少なくとも1つの具体的な技術的詳細または具体的な数値が含まれている
- 投稿がステップ3で観察されたこのサブレディットのトップ投稿のトーンに合っている
- ステップ3のサブレディットルールに違反していない
Claudeらしさの検出: 以下の語彙カテゴリをスキャンし、すべてのインスタンスを削除:
| カテゴリ | 削除する語句 |
|---|---|
| 埋め草の強調語 | 信じられないほど、絶対に、確かに、間違いなく、本質的に、基本的に、文字通り、特に、かなり、むしろ、本当に、著しく、単純に、真に、最終的に、非常に |
| AIの逃げ口上 | 注意すべきは、注目に値する、重要なのは、前述のように、私が述べたように |
| 誇大宣伝表現 | 革新的、革命的、パワフル、ロバスト、シームレス、革新的、最高級、最先端、画期的、驚くべき |
| 前置き表現 | 結論として、要約すると、全体的に、まず第一に、最後になりましたが |
| 不要な接続詞 | さらに、その上、加えて、しかし(文頭)、したがって、ゆえに、それにより |
| AIの特徴語 | これにより~が保証される、これにより~が可能になる、これは~を助ける、これにより~が有効になる、詳述する、活用する、活用する、育成する |
いずれかが出現した場合: 具体的な名詞、動詞、または数字に置き換えてください。「非常に速い」は「12msで動作する」に。「パワフルなツール」は実際の機能に。
即時削除フレーズチェック: これらのパターンはRedditのスパムフィルターまたはモデレーターによる削除を引き起こします:
- 広告として読まれる文章(「[製品]を今すぐお試しください」、「今すぐサインアップ」、「無料で始める」)
- 自分が作成者でないことを示唆するフレーズ(「この素晴らしいツールを見つけました」、「この素晴らしい製品を見つけました」)
- コミュニティでの存在感を確立していないサブレディットでの「当社のユーザー」、「当社のお客様」などの一人称所有表現
- 「Xを作りました。これを使って…できます」の直後にリンクが続く構造(宣伝的構造)
- 修飾なしの最上級(「~する最良の方法」、「~する唯一のツール」)
- 投稿本文の外部リンク(最初のコメントのみ使用)
即時削除フレーズが出現した場合: 単語を置き換えるだけでなく、文章全体を修正してください。
ステップ7: 敵対的レビュー
最終下書きを提示する前に、3つのペルソナによるレビューを実行します。各ペルソナが投稿を読み、トリガーとなる正確なテキストを引用して、1つの具体的な問題を見つけます。
ペルソナ1: 懐疑的な実践者 この人は何年もr/{SUBREDDIT}に参加しており、投稿に偽装したプロダクトローンチを何百も見てきました。彼らの読み:
- 明示的に販売していなくても、宣伝的に感じられる文章はあるか?
- 投稿はコミュニティの問題に対する真の知識を示しているか、それとも単にプロダクトについて語っているだけか?
- 実践者が白い目で見るような主張はあるか?
彼らがフラグを立てる特定の行とその理由を述べてください。
ペルソナ2: モデレーター この人はステップ3で取得したルールを執行します。彼らの読み:
- 投稿は技術的にサブレディットのルールに準拠しているか?
- 自己宣伝とコミュニティ貢献の比率は許容範囲か?
- 彼らは以前にまったく同じ投稿構造が削除されるのを見たことがあるか?
違反のリスクがある特定のルールを1つ述べるか、問題がないことを確認してください。
ペルソナ3: ターゲット読者 これはサブレディットの人口統計に合致する非ビルダーのコミュニティメンバーです。彼らの読み:
- たとえプロダクトを決して使わなくても、この投稿をupvoteするか?
- 最初のコメントのリンクをスキップしても、応用できる学びがあるか?
- 最初の文章で彼らが読み続けたくなるか?
彼らが読み止める1つの点を述べるか、投稿が彼らの注意を引き続けることを確認してください。
3つのペルソナすべてが報告した後: 修正を適用してください。どのペルソナも問題を見つけなかった場合、「敵対的レビュー: 問題なし」と述べてください。
ステップ8: Composio経由で投稿(オプション)
Composio Reddit MCPが接続されていて、ユーザーが投稿を確認した場合:
reddit-composio MCPツール REDDIT_CREATE_REDDIT_POST を以下のパラメータで使用:
- subreddit: {r/ なしのSUBREDDIT}
- title: {TITLE}
- kind: "self"
- text: {BODY}
投稿前にユーザーに確認: 「r/{SUBREDDIT}に投稿する準備ができました。投稿タイトル: '{TITLE}'。実行してもよろしいですか?」
明示的な確認後にのみ続行してください。
投稿後:
- レスポンスから投稿URLをメモ
- 最初のコメントが下書きされていた場合、返された投稿IDを使用して同じMCPで即座に投稿
投稿が失敗した場合(403、429、その他のエラー): 手動投稿用に下書きを提示してください。ユーザーに伝えてください:「直接投稿に失敗しました([エラーコード])。以下が手動投稿用の下書きです。reddit.com/r/{SUBREDDIT}/submitでタイトルと本文をコピーペーストしてください。」
ステップ9: 出力を提示
## Reddit投稿: r/{SUBREDDIT}
### タイトル
{title}
### 本文
{body}
### 最初のコメント(投稿直後に投稿)
{first comment, 該当する場合}
---
### 投稿ノート
- 投稿タイプ: {self/link}
- 最適な投稿時間: {このサブレディットのピーク時間: ほとんどの技術サブレディットでは米国時間の平日午前}
- 投稿後: 最初の1時間ですべてのコメントに返信: 初期のエンゲージメントはアルゴリズムに品質を示すシグナル
- Karmaに関する注意: {アカウントが新しい場合、一部のサブレディットでは投稿に最低限のkarmaが必要なことに注意}
投稿がすでにComposio経由で送信された場合、出力ブロックを以下に置き換えてください:
投稿送信済み: {reddit_post_url}