mcpField
R
rsearch

rsearch

github.com/monotykamary生产力439 次安装今天更新
代码仓库

关于 rsearch

rsearch 是通过浏览器会话搜索 Reddit 帖子的命令行工具。它使用 Reddit 自带的 JSON 搜索接口和浏览器 Cookie,并支持按版块、排序、时间范围及结果数量筛选。

主要功能

  1. 01通过浏览器搜索 Reddit 帖子
  2. 02按版块筛选
  3. 03选择排序方式和时间范围
  4. 04输出格式化文本或 JSON
  5. 05支持并行搜索

适用场景

  1. 01搜索 Reddit 上的主题帖子
  2. 02在指定版块内查找内容
  3. 03获取某时间段的热门帖子
  4. 04在命令行工作流中使用帖子数据

安装

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

$npx skills add https://github.com/monotykamary/browser-harness-js --skill rsearch

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
rsearch
setup
test

详细介绍

Reddit 搜索

通过浏览器搜索 Reddit 帖子:后台标签页会打开 www.reddit.com,然后通过同源 fetch('/search.json?…', { credentials: 'include' }),使用浏览器的 Cookie、UA 和 referer 请求 Reddit 自己的 JSON 列表端点。改编自 opencli 的 clis/reddit/search.js。无需 Reddit API 密钥、OAuth 应用或抓取页面选择器——响应是 Reddit 的规范列表 JSON。每次调用都会打开独立的标签页和 WebSocket 会话,可安全并行使用。

用法

rsearch "claude code"                                 # up to 15 results, pretty
rsearch "local llm" 5                                 # 5 results
rsearch --json "stable diffusion" 10                  # raw JSON array
rsearch --subreddit programming "git tips"            # within one subreddit (r/ prefix optional)
rsearch --sort top --time week "browser automation"   # sort + time filter

rsearch "rust async" 3 &                              # parallel-safe
rsearch "go channels" 3 &
wait
标志值默认值
--json—格式化文本
--subreddit NAME裸名称、r/name 或 /r/name全部 Reddit
--sort Srelevance hot top new commentsrelevance
--time Tall hour day week month yearall
位置参数 2数量,1–10015

返回结果结构

--json 返回帖子数组,字段集与 opencli 的列一一对应:

[
  {
    "id": "1abc2de",
    "title": "Show r/programming: …",
    "subreddit": "r/programming",
    "author": "someuser",
    "score": 1234,
    "comments": 210,
    "url": "https://www.reddit.com/r/programming/comments/1abc2de/…",
    "created_utc": 1735689600,
    "selftext": "…",
    "post_hint": "link",
    "url_overridden_by_dest": "https://example.com/article",
    "preview_image_url": "https://preview.redd.it/…",
    "gallery_urls": []
  }
]

链接帖子会在 url_overridden_by_dest 中包含外部目标(格式化输出会在其前面打印 ->);图库则会在 gallery_urls 中列出直接的 i.redd.it 图片。

注意事项

  • 通过页面请求,不要从 Node 请求。 在服务器端使用 fetch/curl 请求 reddit.com/search.json 会遭遇机器人拦截,或返回没有 Cookie 的默认结果。页面内的 fetch 使用浏览器的 Reddit Cookie,并在已提交的 reddit.com 源上携带真实 UA 运行——关键就在这里。系统会自动使用已登录的会话;未登录时,搜索会静默过滤 NSFW 结果。
  • 不要在 Reddit 上调用 waitFor('networkIdle')。 SPA 会持续轮询,因此 500 毫秒的静默窗口可能永远不会出现。脚本会等待无论如何都会触发的 Page.frameNavigated commit,并短暂轮询 document.readyState——fetch 只需要已提交的源,无需等待页面完全构建。
  • 为页面端 fetch 设置时限。 CDP 调用没有内置超时;脚本会让 eval 与 Node 端的 20 秒超时竞争,以便 Reddit 请求卡住时能够报错,而不是泄漏标签页。
  • 非 JSON 或非 200 响应会显示为错误,而不是空结果,例如 HTTP 403: Blocked 或“non-JSON response … block or login wall”消息。这只会在 CLI 已经带退避重试两次后触发:全新的 Cookie jar 首次请求 /search.json 会收到 403 中间页,其响应会设置 Cookie,使后续重试成功;因此,持续失败意味着确实遭遇了速率限制——请稍等片刻,或检查登录状态。
  • 结果数量可能少于 count。 Reddit 将 limit 限制为 100(CLI 也会进行限制),而且经常返回更少的结果,尤其是在规模较小的 subreddit 中。
  • 多标志的顺序: 标志放在查询词之前(rsearch --sort top --time week "query"),与 gmaps 一致。

评论

支持 Markdown