OptionalSocial MediaVersion 1.0.0

Hermes Agent Reddit Reading Skill: Subreddits, Threads, Users

Read Reddit: subreddits, search, threads, users. No browser.

Written by Neura Market from the official Hermes Agent documentation for Reddit Reading. Commands, paths, and version numbers are reproduced from the source unchanged.

Read the official documentation

The Reddit Reading skill gives Hermes Agent a way to pull Reddit content from a server or headless machine, where the usual routes are dead. It reads subreddit listings, site-wide and per-subreddit search results, full threads with comments, and a user's recent activity. It never posts, votes, or logs in as anyone, so it is a read-only research tool rather than a Reddit client.

You reach for it when a user asks what a community is saying about a topic, shares a reddit.com URL, or wants a thread summarised, and the machine Hermes runs on cannot get through to Reddit the normal way. The idea for the per-platform backend routing comes from Agent Reach.

What it does

The skill wraps Reddit's read endpoints behind a single script. You call it through the terminal tool with a skill-relative path, and it handles the awkward parts: choosing a backend, respecting rate limits, and retrying once when Reddit throttles you.

Five operations are available. sub pulls a subreddit's front page. search queries all of Reddit or a single subreddit. thread fetches a post and its comments. user lists a person's posts and comments. doctor reports which backend is live and how much of the current rate-limit window remains.

Every command works on both backends. The script picks the backend itself, so you never pass a flag to select one. That matters because it means the same command works whether or not app credentials are configured, and you do not have to rewrite your calls when the setup changes.

Before you start

There are no prerequisites. No Reddit account, login, cookie, or API key is needed. The default backend is Reddit's public Atom feeds, the .rss endpoints, which the source describes as the only unauthenticated route Reddit still serves to non-residential IPs.

That default comes with real constraints. It is throttled to roughly one request per minute per IP, and it returns thinner data: no scores, and top-level comments only. For a handful of calls that is fine.

If you need sustained access or fuller data, there is an optional upgrade that still does not involve a user login. Register a free "script" type app at https://www.reddit.com/prefs/apps and put its two values in ~/.hermes/.env:

REDDIT_CLIENT_ID=...
REDDIT_CLIENT_SECRET=...

This is an application registration, not a login. The script uses the app-only client_credentials grant, never a username, password, or browser cookie, and it never acts as the user. With both values set it switches to the OAuth API automatically, which the source describes as around 100 requests per minute with scores, nested comments, and num_comments. If the values are missing or rejected, it falls back to the anonymous feeds and says so on stderr.

The trade-off between the two backends is worth understanding before you plan a task:

Anonymous feeds (default)OAuth app credentials
Setupnothing1-minute app registration, two .env values
Rate limit~1 request / minute / IP~100 requests / minute
Thread datapost + top-level comments, no scoresnested comments, scores, comment counts
Acts as a usernono

The skill is listed as version 1.0.0, authored by Teknium (teknium1) at Hermes Agent, under the MIT licence. It is an optional skill installed on demand, living at optional-skills/social-media/reddit-reading, and it runs on linux, macos, and windows.

How to run it

Run every command through terminal with the skill-relative script path:

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

The first line checks the backend and the rate-limit window. The second lists a subreddit sorted by hot posts, capped at 15. The third searches within one subreddit, sorted by newest. The fourth reads a thread with up to 40 entries. The fifth lists a user's activity. The last shows the --json flag, which makes output machine-readable, useful when the result feeds another step rather than a human reader.

Quick reference

Every command works on both backends; the script chooses the backend, you never pass a flag.

NeedCommandAnonymousOAuth
Subreddit front pagesub NAME --sort hot|new|top|rising [--time week]✔✔
Search all of Redditsearch "q" --sort relevance|new|top|comments✔✔
Search one subredditsearch "q" --sub NAME✔✔
Thread + commentsthread URL --limit N✔ top-level only, no scores✔ nested, scores
User posts/commentsuser NAME✔✔
Backend + rate limitdoctor✔✔

Procedure

  1. Run doctor once per task if you have not called it this session. It tells you which backend is live and how many seconds remain in the anonymous window. Knowing the window up front is what lets you plan the rest of the calls sensibly.

  2. Plan your calls before making them. Anonymous Reddit allows roughly one request per minute per IP. The script sleeps until the window resets on a 429 and retries once, so a five-call plan costs about five minutes. Prefer one search --sub over several sub listings, and read one thread rather than the whole listing.

  3. For "what is the community saying" questions, read the thread bodies with thread rather than stopping at titles. The listing only carries the first ~300 characters of each post, which is rarely enough to answer the question.

  4. Cite the permalink, the url field, not the listing page, when the result feeds a report. The grounded-citations skill registers these URLs like any other source.

  5. If the user needs sustained Reddit access, monitoring, or more than about 10 calls, stop and ask them to register the app credentials described in Prerequisites rather than grinding through the throttle. Tell them plainly: it is a free app registration, not logging Hermes into their account. Never ask for a Reddit password or browser cookies.

When not to use it

This skill is not for posting, voting, messaging, or anything that needs a user login. It reads only. If the task requires acting on Reddit as a person, this is the wrong tool and no amount of configuration changes that.

Limits and gotchas

  • www.reddit.com/…/.json, api.reddit.com and old.reddit.com return 403 or an empty "Welcome to Reddit" shell for datacentre IPs. Do not fall back to them, and do not spoof a browser User-Agent, which also returns 403.
  • r.jina.ai and the browser_navigate tool hit the same block, reported as "blocked by network security" or a humanity check. The blocked-page-recovery skill's Wayback route can still recover an old thread that was archived, but it cannot fetch fresh ones.
  • Anonymous thread feeds only contain the post plus top-level comments, since Reddit caps the feed at a handful of entries. Scores and reply nesting are OAuth-only.
  • Reddit's limit on feeds is advisory. Expect 5 to 25 entries regardless of what you ask for.
  • Never paste REDDIT_CLIENT_SECRET into a chat or log. The script reads it from the environment only.
  • Do not try to "fix" a 429 by retrying in a loop or adding a proxy. The throttle is per IP and the script already waits out the window once. More than one 429 in a row means the task needs the app credentials.

Verification

python3 scripts/reddit.py doctor prints anonymous_feed: ok and an x-ratelimit-reset value. sub announcements --limit 1 returns one entry with a reddit.com/r/announcements/comments/ URL. With credentials set, doctor prints active_backend: oauth and thread … output shows numeric scores.

What pairs with it

The source lists four related skills. rss-feeds covers feed reading more broadly. grounded-citations registers the permalinks this skill returns so they can be cited properly. blocked-page-recovery handles the archived-thread case when a fresh fetch is impossible. xurl covers the equivalent read work on X. Together they form a reasonable research kit for pulling community discussion from a headless box.

Skills the docs pair this with

More Social Media skills