关于 rsearch
rsearch 是通过浏览器会话搜索 Reddit 帖子的命令行工具。它使用 Reddit 自带的 JSON 搜索接口和浏览器 Cookie,并支持按版块、排序、时间范围及结果数量筛选。
主要功能
- 01通过浏览器搜索 Reddit 帖子
- 02按版块筛选
- 03选择排序方式和时间范围
- 04输出格式化文本或 JSON
- 05支持并行搜索
适用场景
- 01搜索 Reddit 上的主题帖子
- 02在指定版块内查找内容
- 03获取某时间段的热门帖子
- 04在命令行工作流中使用帖子数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ monotykamary/ browser-harness-js --skill rsearch安装后在 Claude Code 中输入/rsearch确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/rsearchsetuptest详细介绍
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 S | relevance hot top new comments | relevance |
--time T | all hour day week month year | all |
| 位置参数 2 | 数量,1–100 | 15 |
返回结果结构
--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.frameNavigatedcommit,并短暂轮询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