title: “Reddit Reading — Read Reddit: subreddits, search, threads, users” sidebar_label: “Reddit Reading” description: “Read Reddit: subreddits, search, threads, users”
{/* 本页面由 website/scripts/generate-skill-docs.py 根据技能对应的 SKILL.md 文件自动生成。请直接编辑源文件 SKILL.md,而非此页面。 */}
Reddit 阅读功能
可读取 Reddit 上的子版块、搜索内容、帖子及用户信息,无需使用浏览器。
技能元数据
| 来源 | 可选 — 通过命令 hermes skills install official/social-media/reddit-reading 安装 |
| 路径 | optional-skills/social-media/reddit-reading |
| 版本 | 1.0.0 |
| 开发者 | Teknium (teknium1)、Hermes Agent |
| 许可协议 | MIT |
| 支持平台 | linux、macos、windows |
| 标签 | Reddit、社交媒体、研究、讨论、社区 |
| 相关技能 | rss-feeds、grounded-citations、blocked-page-recovery、xurl |
参考:完整的 SKILL.md 文件
Reddit 阅读技能
能够在常规访问途径失效的服务器或无头机器上读取Reddit内容——包括子版块列表、站点或子版块搜索结果、包含评论的完整帖子以及用户活动信息。该技能不会发布内容、投票,也不会以用户身份登录。创意来源:Agent Reach中的平台专属后端路由机制。
适用场景
- “r/LocalLLaMA上关于X的讨论是什么?”、“查找关于Y的Reddit帖子”、“总结这个Reddit帖子的内容”、“用户u/someone最近发布了什么”。
- 用户分享的任何
reddit.com网址。由于服务器IP会被限制访问(出现403错误或“证明你是人类”的拦截),web_extract、browser_navigate以及.json接口均无法使用;而该技能则是可行的解决方案。 - 不适用于发布内容、投票、发送消息或任何需要用户登录的操作。
先决条件
**无需任何条件。**不需要Reddit账号、登录信息、Cookie或API密钥。默认的后端为Reddit的公共Atom订阅源(.rss接口),这是Reddit仍会向非住宅IP提供的唯一无需认证的访问途径。该途径的访问频率被限制在每IP每分钟约一次请求,且返回的数据较为简略(没有评分信息,仅显示顶级评论),对于少量查询来说已经足够。
**可选升级方案(需应用凭证,仍无需用户登录):**如需持续使用或获取完整数据,可前往https://www.reddit.com/prefs/apps注册一个免费的“脚本”类型应用,然后将该应用对应的两个参数添加到~/.hermes/.env文件中。
REDDIT_CLIENT_ID=...
REDDIT_CLIENT_SECRET=...
这是一次应用注册操作,而非登录:该脚本使用仅限应用的client_credentials授权方式,绝不依赖用户名、密码或浏览器Cookie,也不会以用户身份进行操作。当同时设置好这两个参数时,它会自动切换到OAuth API模式(支持每分钟约100次请求,查看评分、嵌套评论及num_comments信息);若这些参数缺失或被拒绝,它则会回退到匿名数据源,并通过标准错误流输出相应提示。
| 匿名数据源(默认) | OAuth应用凭证 | |
|---|---|---|
| 设置步骤 | 无需操作 | 需进行1分钟的应用注册,并配置两个.env文件中的参数 |
| 请求频率限制 | 每IP地址每分钟约1次请求 | 每分钟约100次请求 |
| 数据内容 | 帖文内容及顶级评论,不包含评分信息 | 嵌套评论、评分及评论数量 |
| 是否以用户身份操作 | 否 | 否 |
运行方式
通过终端运行相应命令,并指定与技能相关的脚本路径:
python3 scripts/reddit.py doctor # which backend, current rate-limit window
python3 scripts/reddit.py sub LocalLLaMA --sort hot --limit 15
python3 scripts/reddit.py search "hermes agent" --sub LocalLLaMA --sort new
python3 scripts/reddit.py thread https://www.reddit.com/r/x/comments/abc123/slug/ --limit 40
python3 scripts/reddit.py user spez --limit 10
python3 scripts/reddit.py --json search "topic" # machine-readable
快速参考
所有命令在两种后端上均可使用;脚本会自动选择后端,无需手动传递任何参数。
| 需求 | 命令 | 匿名模式 | OAuth模式 |
|---|---|---|---|
| 子版块首页 | sub NAME --sort hot|new|top|rising [--time week] | ✔ | ✔ |
| 搜索整个Reddit平台 | search "q" --sort relevance|new|top|comments | ✔ | ✔ |
| 搜索特定子版块 | search "q" --sub NAME | ✔ | ✔ |
| 阅读帖子及评论 | thread URL --limit N | ✔ 仅支持顶级帖子,无评分信息 | ✔ 支持嵌套帖子,有评分信息 |
| 查看用户发布的帖子/评论 | user NAME | ✔ | ✔ |
| 后端状态与速率限制查询 | doctor | ✔ | ✔ |
操作步骤
① 若当前会话尚未调用 doctor 命令,则需为每个任务执行一次——该命令可告知您当前使用的后端以及匿名模式的使用剩余时间。
② 在执行操作前先规划好调用顺序。匿名模式下,每个IP每分钟大约只能发送一次请求;脚本会在收到429错误提示后暂停等待,待限制重置后再尝试一次。因此,若需发送5次请求,大约需要5分钟时间。建议使用一次 search --sub 命令替代多次 sub 命令,同时阅读单个帖子内容而非整个子版块列表。
③ 对于“社区在讨论什么”这类问题,应仔细阅读帖子正文(通过 thread 命令获取),而不要仅查看标题;因为列表仅显示每篇帖子的前约300个字符。
④ 在将查询结果用于报告时,请引用永久链接(即 url 字段)而非列表页面地址;grounded-citations 工具会像处理其他来源一样记录这些URL。
⑤ 如果用户需要持续访问 Reddit(如进行监控或发起超过约10次请求),应立即让其注册应用凭证(见前提条件),而非强行突破速率限制。需明确告知用户:这只是免费的注册流程,无需将 Hermes 登录到他们的账户中。绝不要索要 Reddit 密码或浏览器 Cookie。
常见问题
- 对于数据中心 IP,
www.reddit.com/…/.json、api.reddit.com以及old.reddit.com会返回 403 错误,或仅显示空白的“欢迎来到 Reddit”页面。切勿尝试使用这些地址,也不得伪造浏览器 User-Agent(同样会导致 403 错误)。 r.jina.ai以及browser_navigate工具也会遇到相同的限制(“被网络安全机制阻止”/人工验证)。虽然blocked-page-recovery的 Wayback 接口仍可找回已被归档的旧帖子,但无法获取最新内容。- 匿名帖子源仅包含帖文及最顶层的评论(Reddit 对此类源的显示条目数有限制);评分功能及回复嵌套功能仅支持通过 OAuth 访问。
- Reddit 对帖子源的“限制”仅具有建议性质——无论你请求多少条内容,实际获得的数量通常在 5 到 25 条之间。
- 绝不要将
REDDIT_CLIENT_SECRET粘贴到聊天记录或日志中;该脚本仅会从环境变量中读取此密钥。 - 不要通过循环重试或添加代理来“解决”429 错误;速率限制是针对每个 IP 的,且脚本已自动等待过了规定的时间窗口。如果连续出现多次 429 错误,则说明该任务需要使用应用凭证。
验证方法
运行 python3 scripts/reddit.py doctor 命令会输出 anonymous_feed: ok 及相应的 x-ratelimit-reset 值;而执行 sub announcements --limit 1 命令则可获取包含 reddit.com/r/announcements/comments/ 地址的一条记录。在已配置好认证信息的情况下,doctor 命令会显示 active_backend: oauth,同时 thread … 的输出结果会以数值形式呈现各项评分。