Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help


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 文件

:::info 以下是当触发该技能时 Hermes 所加载的完整技能定义。技能启用后,智能体将依据此内容执行操作。
::

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 … 的输出结果会以数值形式呈现各项评分。