rdt-cli について
rdt-cli は Reddit の閲覧、検索、投稿の読解や操作に使うコマンドラインツールです。Agent のワークフロー向けに構造化された簡潔な出力を提供し、認証が必要な操作にはブラウザーの Cookie を使います。
主な機能
- 01フィード、サブレディット、プロフィールの閲覧
- 02投稿の検索と結果のエクスポート
- 03投稿とコメントスレッドの読解
- 04投票、保存、購読、コメント
- 05JSON または YAML 出力
活用シーン
- 01購読中のサブレディットのフィード監視
- 02Reddit のユーザーや投稿の調査
- 03分析用の検索結果のエクスポート
MCP 対応
入力ではコマンドラインスキルとして説明されており、MCP との接続については記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ public-clis/ rdt-cli --skill rdt-cliインストール後、Claude Code で/rdt-cliを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignorepyproject.tomlSCHEMA.mdREADME.md.github/workflows/publish.ymlci.ymlrdt_cli/auth.py__init__.py__main__.pycli.pyclient.pyconfig.pyconstants.pyexceptions.pyfingerprint.pyindex_cache.pysession.pymodels.pytransports.pyparser.pyrdt_cli/commands/__init__.pyauth.pypost.pysearch.pysocial.pybrowse.py_common.pytests/__init__.pytests/fixtures/morechildren.jsonlisting.json詳細
rdt-cli — Reddit CLI ツール
バイナリ: rdt
認証情報: ブラウザーの Cookie(browser-cookie3 で自動抽出)
セットアップ
# Install (requires Python 3.10+)
uv tool install rdt-cli
# Or: pip install rdt-cli
# Upgrade
uv tool upgrade rdt-cli
認証
エージェントへの重要な注意: 認証が必要な rdt コマンドを実行する前に、認証情報が存在するか必ず確認してください。
ステップ 0:認証済みかどうかを確認する
rdt status --json 2>/dev/null | jq -r '.data.authenticated' | grep -q true && echo "AUTH_OK" || echo "AUTH_NEEDED"
AUTH_OK の場合は、コマンドリファレンスに進んでください。
AUTH_NEEDED の場合は、ステップ 1 に進んでください。
ステップ 1:ユーザーに認証を案内する
ユーザーが対応ブラウザー(Chrome、Firefox、Edge、Brave、Arc、Chromium、Opera、Vivaldi、Safari、LibreWolf)で reddit.com にログインしていることを確認してください。次に、以下を実行します。
rdt login
以下で確認します。
rdt status
rdt whoami --json | jq '.data.name // .data._session.username'
ステップ 2:よくある認証問題への対処
| 症状 | エージェントの対応 |
|---|---|
No Reddit cookies found | ブラウザーで reddit.com にログインするようユーザーに案内する |
Session expired | rdt logout && rdt login を実行する |
database is locked | ブラウザーを閉じてから再試行する |
エージェントの既定設定
すべての機械可読出力は、SCHEMA.md に記載されているエンベロープを使用します。
ペイロードは .data の下に格納されます。
- 非 TTY の標準出力 → YAML を自動選択
--json/--yaml→ 出力形式を明示--compact→ フィールド数を削減(エージェントのトークン効率を向上)--output file.json→ 構造化出力をファイルに保存- リッチ出力 → 標準エラー出力(パイプでも安全:
rdt search X --json | jq .data) - ほとんどの読み取りコマンドは認証なしで動作します(公開 Reddit JSON API)
- 書き込み操作(アップボート、保存、登録)には認証と組み込みの 1.5〜4 秒の待機時間が必要です
コマンドリファレンス
閲覧
| コマンド | 説明 | 例 |
|---|---|---|
rdt feed | ホームフィードを閲覧(ログインが必要) | rdt feed -n 10 --json |
rdt feed --subs-only | 登録先のみのフィード(アルゴリズムなし、時間順) | rdt feed --subs-only -n 5 --json |
rdt popular | /r/popular を閲覧 | rdt popular -n 5 --json |
rdt all | /r/all を閲覧 | rdt all -n 10 --compact --json |
rdt sub <name> | サブレディットを閲覧 | rdt sub python -s top -t week |
rdt sub-info <name> | サブレディット情報を表示 | rdt sub-info rust --json |
rdt user <name> | ユーザープロフィールを表示 | rdt user spez --json |
rdt user-posts <name> | ユーザーの投稿を表示 | rdt user-posts spez -n 5 --json |
rdt user-comments <name> | ユーザーのコメントを表示 | rdt user-comments spez -n 5 --json |
rdt saved | 保存したアイテムを表示 | rdt saved -n 10 --json |
rdt upvoted | アップボートした投稿を表示 | rdt upvoted -n 10 --json |
rdt open <id_or_index> | 投稿をブラウザーで開く | rdt open 3 |
読み取り
| コマンド | 説明 | 例 |
|---|---|---|
rdt read <post_id> | 投稿とコメントを読む | rdt read 1abc123 --json |
rdt read <post_id> --expand-more | トップレベルの more comments を展開 | rdt read 1abc123 --expand-more --json |
rdt show <index> | 短縮インデックスで読む | rdt show 3 |
rdt show <index> --expand-more | キャッシュされた結果から more comments を展開 | rdt show 3 --expand-more --json |
rdt whoami | 自分のプロフィールを表示(カルマ、アカウント年齢) | rdt whoami --json |
検索とエクスポート
| コマンド | 説明 | 例 |
|---|---|---|
rdt search <query> | 投稿を検索 | rdt search "python async" -s top -t year |
rdt search <query> -r <sub> | サブレディット内を検索 | rdt search "error" -r rust --json |
rdt search <query> -o f.json | 検索してファイルに保存 | rdt search "ML" -n 50 -o results.json |
rdt export <query> | CSV/JSON にエクスポート | rdt export "ML" -n 50 -o results.csv |
操作(認証が必要)
| コマンド | 説明 | 例 |
|---|---|---|
rdt upvote <id_or_index> | 賛成票を投じる | rdt upvote 3 |
rdt upvote <id> --down | 反対票を投じる | rdt upvote 3 --down |
rdt upvote <id> --undo | 投票を取り消す | rdt upvote 3 --undo |
rdt save <id_or_index> | 投稿を保存する | rdt save 3 |
rdt save <id> --undo | 保存を解除する | rdt save 3 --undo |
rdt subscribe <sub> | 購読する | rdt subscribe python |
rdt subscribe <sub> --undo | 購読を解除する | rdt subscribe python --undo |
rdt comment <id> <text> | コメントを投稿する | rdt comment 3 "Great post!" |
アカウント
| コマンド | 説明 |
|---|---|
rdt login | ブラウザーから Cookie を抽出する |
rdt logout | キャッシュされた Cookie を消去する |
rdt status | 認証状態を確認する |
rdt whoami | プロフィールの詳細情報を表示する |
一覧表示オプション
すべての一覧表示コマンド(feed、popular、all、sub、user-posts、user-comments、saved、upvoted、search)で、以下のオプションを使用できます。
| フラグ | 説明 |
|---|---|
--json | JSON 出力(SCHEMA エンベロープ付き) |
--yaml | YAML 出力(SCHEMA エンベロープ付き) |
-o, --output FILE | 構造化出力をファイルに保存する |
--full-text | 省略せずにタイトル全体を表示する |
-c, --compact | エージェント向けの簡潔な出力(フィールド数を削減) |
フィード固有のオプション
| フラグ | 説明 |
|---|---|
--subs-only | 購読中のサブレディットの投稿のみを表示する(時間順。アルゴリズムによる並べ替えなし) |
--max-subs N | 取得する購読数の上限(デフォルト:20) |
エージェントのワークフロー例
閲覧 → 読む → 賛成票を投じるパイプライン
rdt sub python -s top -t week -n 5
rdt show 1 --expand-more
rdt upvote 1
検索 → エクスポートのパイプライン(構造化)
rdt search "machine learning" -s top --compact --json | jq '.data'
rdt export "machine learning" -n 100 -o ml_posts.csv
検索 → ファイルに保存
rdt search "rust async" -n 50 -o results.json
rdt search "python tips" -n 20 --compact -o tips.json
ユーザー調査
rdt user spez --json | jq '.data | {name, link_karma, comment_karma}'
rdt user-posts spez -n 10 --compact --json
rdt user-comments spez -n 10 --compact --json
保存済み/賛成票を投じた投稿の確認
rdt saved -n 20 --compact --json
rdt upvoted -n 20 --compact --json
購読中のサブレディットのみをモニタリング
rdt feed --subs-only -n 5 --compact --json
rdt feed --subs-only --max-subs 10 -o subs_feed.json
サブレディットの検索
rdt sub-info python --json | jq '.data | {subscribers, accounts_active}'
rdt sub python -s top -t month -n 5 --full-text
並べ替えオプション
- 一覧の並べ替え:
hot、new、top、rising、controversial、best - 検索の並べ替え:
relevance、hot、top、new、comments - 期間フィルター(top/controversial 用):
hour、day、week、month、year、all - コメントの並べ替え:
best、top、new、controversial、old、qa
エラーコード
error.code フィールドで返される構造化エラーコード(SCHEMA.md を参照):
not_authenticated— Cookie の期限切れ、または Cookie がありませんrate_limited— リクエストが多すぎますnot_found— サブレディット、ユーザー、投稿が存在しませんforbidden— 非公開のサブレディット、またはブロックされたユーザーですapi_error— 上流の Reddit API エラーですunknown_error— 想定外のエラーです
制限事項
- DM には非対応 — プライベートメッセージにはアクセスできません
- ライブ/ストリーミングには非対応 — ライブ機能はサポートされていません
- メディアのダウンロードには非対応 — 画像や動画をダウンロードできません
- 単一アカウント — 一度に使用できる Cookie セットは1つです
- レート制限あり — リクエスト間に組み込みのガウスジッター(約1秒)があります
- 公開 API のみ — OAuth エンドポイントではなく、.json サフィックスの API を使用します
エージェント向けの検出回避に関する注意事項
- リクエストを並列化しないでください — 組み込みのレート制限による遅延は、アカウントを保護するためのものです
- 書き込み操作後の遅延:各書き込み操作(賛成票/保存/購読/コメント)の後に、1.5~4秒のランダムな遅延が入ります
- バッチ操作:一括処理を行う場合は、CLI 呼び出しの間に遅延を追加してください
- Chrome 133 のフィンガープリント:すべてのリクエストで一貫したブラウザー ID を使用します
- 指数バックオフ:429/5xx エラーはバックオフを行って自動的に再試行されます
安全に関する注意事項
- チャットログで生の Cookie 値を共有するようユーザーに求めないでください
- 手動でシークレットをコピー&ペーストするより、ブラウザーから Cookie を抽出する方法を優先してください
- 認証に失敗した場合は、
rdt loginで再ログインするようユーザーに案内してください - 組み込みのレート制限による遅延はアカウントを保護します。回避しないでください