mcpField
R
rdt-cli

rdt-cli

github.com/public-clis其他546225 次安装32 周前更新
代码仓库

关于 rdt-cli

rdt-cli 是用于浏览、搜索、阅读和互动 Reddit 的命令行工具,提供适合 Agent 工作流的结构化精简输出;需登录的操作通过浏览器 Cookie 完成。

主要功能

  1. 01浏览信息流、子版块和个人资料
  2. 02搜索帖子并导出结果
  3. 03阅读帖子与评论串
  4. 04投票、收藏、订阅和评论
  5. 05输出 JSON 或 YAML

适用场景

  1. 01监控已订阅子版块的信息流
  2. 02研究 Reddit 用户和帖子
  3. 03导出搜索结果以供分析

MCP 相关

输入将其描述为命令行技能,未说明 MCP 连接方式。

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/rdt-cli确认已加载。

包含的文件

除 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

详细介绍

rdt-cli — Reddit 命令行工具

二进制文件: 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

身份验证

Agent 须知: 执行任何需要身份验证的 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:处理常见身份验证问题
症状Agent 操作
No Reddit cookies found指导用户在浏览器中登录 reddit.com
Session expired运行 rdt logout && rdt login
database is locked关闭浏览器,然后重试

Agent 默认行为

所有机器可读输出都使用 SCHEMA.md 中说明的封装格式。 负载位于 .data 下。

  • 非 TTY 标准输出 → 自动使用 YAML
  • --json / --yaml → 显式指定格式
  • --compact → 减少字段(节省 Agent 令牌)
  • --output file.json → 将结构化输出保存到文件
  • 富文本输出 → stderr(管道安全: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/popularrdt popular -n 5 --json
rdt all浏览 /r/allrdt all -n 10 --compact --json
rdt sub <name>浏览一个 subredditrdt sub python -s top -t week
rdt sub-info <name>查看 subreddit 信息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 commentsrdt read 1abc123 --expand-more --json
rdt show <index>按短索引阅读rdt show 3
rdt show <index> --expand-more展开缓存结果中的 more commentsrdt 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>在 subreddit 中搜索rdt search "error" -r rust --json
rdt search <query> -o f.json搜索并保存到文件rdt search "ML" -n 50 -o results.json
rdt export <query>导出为 CSV/JSONrdt 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)均支持:

标志描述
--jsonJSON 输出(带 SCHEMA 信封)
--yamlYAML 输出(带 SCHEMA 信封)
-o, --output FILE将结构化输出保存到文件
--full-text显示完整标题,不截断
-c, --compact适合 Agent 的紧凑输出(字段更少)
Feed 专用选项
标志描述
--subs-only仅显示已订阅 subreddit 中的帖子(按时间排序,不使用算法)
--max-subs N最多获取的订阅数(默认值:20)

Agent 工作流示例

浏览 → 阅读 → 点赞流程
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
发现 Subreddit
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 已过期或缺失
  • rate_limited — 请求过多
  • not_found — Subreddit、用户或帖子不存在
  • forbidden — 私有 Subreddit 或被屏蔽的用户
  • api_error — Reddit 上游 API 错误
  • unknown_error — 意外错误

限制

  • 不支持私信 — 无法访问私信
  • 不支持实时 / 流式功能 — 不支持实时功能
  • 不支持下载媒体 — 无法下载图片 / 视频
  • 单账户 — 一次只能使用一组 Cookie
  • 请求频率受限 — 请求之间内置高斯抖动延迟(约 1s)
  • 仅使用公共 API — 使用带 .json 后缀的 API,不使用 OAuth 端点

面向 Agent 的反检测说明

  • 请勿并行发送请求 — 内置的请求频率限制延迟用于保护账户安全
  • 写入操作延迟:每次写入操作(点赞 / 收藏 / 订阅 / 评论)后随机延迟 1.5-4s
  • 批量操作:批量处理时,在 CLI 调用之间加入延迟
  • Chrome 133 指纹:所有请求使用一致的浏览器身份
  • 指数退避:429/5xx 错误会自动重试并采用退避策略

安全说明

  • 请勿要求用户在聊天记录中分享原始 Cookie 值
  • 优先从浏览器提取 Cookie,而非手动复制粘贴机密信息
  • 如果身份验证失败,请让用户通过 rdt login 重新登录
  • 内置的请求频率限制延迟可保护账户;请勿绕过它

评论

支持 Markdown