mcpField
R
rdt-cli

rdt-cli

github.com/public-clisOther546225 installsUpdated 32w ago
Repository

About rdt-cli

rdt-cli is a command-line tool for browsing, searching, reading, and interacting with Reddit. It offers structured, compact output for agent workflows, while authenticated actions use browser cookies.

Key features

  1. 01Browse feeds, subreddits, and profiles
  2. 02Search posts and export results
  3. 03Read posts and comment threads
  4. 04Vote, save, subscribe, and comment
  5. 05Emit JSON or YAML output

Use cases

  1. 01Monitor subscribed subreddit feeds
  2. 02Research Reddit users and posts
  3. 03Export search results for analysis

MCP support

The input describes a CLI skill and does not specify an MCP connection.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/public-clis/rdt-cli --skill rdt-cli

After installing, type/rdt-cliin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.gitignore
pyproject.toml
SCHEMA.md
README.md
.github/workflows/
publish.yml
ci.yml
rdt_cli/
auth.py
__init__.py
__main__.py
cli.py
client.py
config.py
constants.py
exceptions.py
fingerprint.py
index_cache.py
session.py
models.py
transports.py
parser.py
rdt_cli/commands/
__init__.py
auth.py
post.py
search.py
social.py
browse.py
_common.py
tests/
__init__.py
tests/fixtures/
morechildren.json
listing.json

Details

From the project README

rdt-cli — Reddit CLI Tool

Binary: rdt Credentials: browser cookies (auto-extracted via browser-cookie3)

Setup

# Install (requires Python 3.10+)
uv tool install rdt-cli
# Or: pip install rdt-cli

# Upgrade
uv tool upgrade rdt-cli

Authentication

IMPORTANT FOR AGENTS: Before executing ANY rdt command that requires auth, check if credentials exist.

Step 0: Check if already authenticated
rdt status --json 2>/dev/null | jq -r '.data.authenticated' | grep -q true && echo "AUTH_OK" || echo "AUTH_NEEDED"

If AUTH_OK, skip to Command Reference. If AUTH_NEEDED, proceed to Step 1.

Step 1: Guide user to authenticate

Ensure user is logged into reddit.com in a supported browser (Chrome, Firefox, Edge, Brave, Arc, Chromium, Opera, Vivaldi, Safari, LibreWolf). Then:

rdt login

Verify with:

rdt status
rdt whoami --json | jq '.data.name // .data._session.username'
Step 2: Handle common auth issues
SymptomAgent action
No Reddit cookies foundGuide user to login to reddit.com in browser
Session expiredRun rdt logout && rdt login
database is lockedClose browser, then retry

Agent Defaults

All machine-readable output uses the envelope documented in SCHEMA.md. Payloads live under .data.

  • Non-TTY stdout → auto YAML
  • --json / --yaml → explicit format
  • --compact → fewer fields (agent token-efficient)
  • --output file.json → save structured output to file
  • Rich output → stderr (safe for pipes: rdt search X --json | jq .data)
  • Most read commands work without auth (public Reddit JSON API)
  • Write actions (upvote, save, subscribe) require auth + built-in 1.5-4s delay

Command Reference

Browsing
CommandDescriptionExample
rdt feedBrowse home feed (requires login)rdt feed -n 10 --json
rdt feed --subs-onlySubscriptions-only feed (no algorithm, sorted by time)rdt feed --subs-only -n 5 --json
rdt popularBrowse /r/popularrdt popular -n 5 --json
rdt allBrowse /r/allrdt all -n 10 --compact --json
rdt sub <name>Browse a subredditrdt sub python -s top -t week
rdt sub-info <name>View subreddit infordt sub-info rust --json
rdt user <name>View user profilerdt user spez --json
rdt user-posts <name>View user's postsrdt user-posts spez -n 5 --json
rdt user-comments <name>View user's commentsrdt user-comments spez -n 5 --json
rdt savedView your saved itemsrdt saved -n 10 --json
rdt upvotedView your upvoted postsrdt upvoted -n 10 --json
rdt open <id_or_index>Open post in browserrdt open 3
Reading
CommandDescriptionExample
rdt read <post_id>Read a post + commentsrdt read 1abc123 --json
rdt read <post_id> --expand-moreExpand top-level more commentsrdt read 1abc123 --expand-more --json
rdt show <index>Read by short-indexrdt show 3
rdt show <index> --expand-moreExpand more comments from cached resultrdt show 3 --expand-more --json
rdt whoamiView your profile (karma, age)rdt whoami --json
Search & Export
CommandDescriptionExample
rdt search <query>Search postsrdt search "python async" -s top -t year
rdt search <query> -r <sub>Search in subredditrdt search "error" -r rust --json
rdt search <query> -o f.jsonSearch + save to filerdt search "ML" -n 50 -o results.json
rdt export <query>Export to CSV/JSONrdt export "ML" -n 50 -o results.csv
Interactions (require auth)
CommandDescriptionExample
rdt upvote <id_or_index>Upvoterdt upvote 3
rdt upvote <id> --downDownvoterdt upvote 3 --down
rdt upvote <id> --undoRemove voterdt upvote 3 --undo
rdt save <id_or_index>Save postrdt save 3
rdt save <id> --undoUnsaverdt save 3 --undo
rdt subscribe <sub>Subscriberdt subscribe python
rdt subscribe <sub> --undoUnsubscriberdt subscribe python --undo
rdt comment <id> <text>Post a commentrdt comment 3 "Great post!"
Account
CommandDescription
rdt loginExtract cookies from browser
rdt logoutClear cached cookies
rdt statusCheck authentication status
rdt whoamiView detailed profile info

Listing Options

All listing commands (feed, popular, all, sub, user-posts, user-comments, saved, upvoted, search) support:

FlagDescription
--jsonJSON output (with SCHEMA envelope)
--yamlYAML output (with SCHEMA envelope)
-o, --output FILESave structured output to file
--full-textShow full title without truncation
-c, --compactAgent-friendly compact output (fewer fields)
Feed-specific Options
FlagDescription
--subs-onlyShow only posts from subscribed subreddits (sorted by time, no algorithm)
--max-subs NMax subscriptions to fetch (default: 20)

Agent Workflow Examples

Browse → Read → Upvote pipeline
rdt sub python -s top -t week -n 5
rdt show 1 --expand-more
rdt upvote 1
Search → Export pipeline (structured)
rdt search "machine learning" -s top --compact --json | jq '.data'
rdt export "machine learning" -n 100 -o ml_posts.csv
Search → Save to file
rdt search "rust async" -n 50 -o results.json
rdt search "python tips" -n 20 --compact -o tips.json
User research
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
Saved / Upvoted review
rdt saved -n 20 --compact --json
rdt upvoted -n 20 --compact --json
Subscriptions-only monitoring
rdt feed --subs-only -n 5 --compact --json
rdt feed --subs-only --max-subs 10 -o subs_feed.json
Subreddit discovery
rdt sub-info python --json | jq '.data | {subscribers, accounts_active}'
rdt sub python -s top -t month -n 5 --full-text

Sort Options

  • Listing sort: hot, new, top, rising, controversial, best
  • Search sort: relevance, hot, top, new, comments
  • Time filter (for top/controversial): hour, day, week, month, year, all
  • Comment sort: best, top, new, controversial, old, qa

Error Codes

Structured error codes returned in the error.code field (see SCHEMA.md):

  • not_authenticated — cookies expired or missing
  • rate_limited — too many requests
  • not_found — subreddit/user/post does not exist
  • forbidden — private subreddit or blocked user
  • api_error — upstream Reddit API error
  • unknown_error — unexpected error

Limitations

  • No DMs — cannot access private messages
  • No live/streaming — live features not supported
  • No media download — cannot download images/videos
  • Single account — one set of cookies at a time
  • Rate limited — built-in Gaussian jitter (~1s) between requests
  • Public API only — uses .json suffix API, not OAuth endpoints

Anti-Detection Notes for Agents

  • Do NOT parallelize requests — the built-in rate-limit delay is for account safety
  • Write operation delay: 1.5-4s random delay after each write (upvote/save/subscribe/comment)
  • Batch operations: add delays between CLI calls when doing bulk work
  • Chrome 133 fingerprint: all requests use consistent browser identity
  • Exponential backoff: 429/5xx errors are auto-retried with backoff

Safety Notes

  • Do not ask users to share raw cookie values in chat logs
  • Prefer browser cookie extraction over manual secret copy/paste
  • If auth fails, ask the user to re-login via rdt login
  • Built-in rate-limit delay protects accounts; do not bypass it

Comments

Markdown supported