reddit-reading

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

  • Reddit
  • Social Media
  • Research
  • Discussions
  • Community

Declared platforms: linux · macos · windows

Install
npx skills add 'https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/social-media/reddit-reading'
Download bundle ↓
main · 24fd22bScanned 2026-09-15

Contributors

GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included.

File history ↗

SKILL.md

SKILL.mdBrowse 2 files
View on GitHub
---name: reddit-readingdescription: "Read Reddit: subreddits, search, threads, users. No browser."version: 1.0.0author: Teknium (teknium1), Hermes Agentlicense: MITplatforms: [linux, macos, windows]metadata:  hermes:    tags: [Reddit, Social Media, Research, Discussions, Community]    related_skills: [rss-feeds, grounded-citations, blocked-page-recovery, xurl]--- # Reddit Reading Skill Reads Reddit content — subreddit listings, site or subreddit search, full threads withcomments, and user activity — from a server or headless machine where the normal routesare dead. It does not post, vote, or log in as a user. Idea credit: the per-platformbackend routing in [Agent Reach](https://github.com/Panniantong/Agent-Reach). ## When to Use - "What is r/LocalLLaMA saying about X", "find Reddit threads on Y", "summarise this  Reddit thread", "what has u/someone posted lately".- Any `reddit.com` URL the user shares. `web_extract`, `browser_navigate` and the  `.json` endpoints all fail from server IPs (403 or a "Prove your humanity" wall);  this skill is the working path.- Not for posting, voting, messaging, or anything needing a user login. ## Prerequisites **None.** No Reddit account, login, cookie, or API key is needed. The default backend isReddit's public Atom feeds (`.rss` endpoints), the only unauthenticated route Reddit stillserves to non-residential IPs. It is throttled to about one request per minute per IP andreturns thinner data (no scores, top-level comments only), which is fine for a few calls. **Optional upgrade (app credentials, still no user login):** for sustained use or fulldata, register a free "script" type app at https://www.reddit.com/prefs/apps and put itstwo 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 neveracts as the user. With both values set it switches to the OAuth API automatically(~100 requests per minute, scores, nested comments, `num_comments`); if they aremissing or rejected it falls back to the anonymous feeds and says so on stderr. | | Anonymous feeds (default) | OAuth app credentials ||---|---|---|| Setup | nothing | 1-minute app registration, two `.env` values || Rate limit | ~1 request / minute / IP | ~100 requests / minute || Thread data | post + top-level comments, no scores | nested comments, scores, comment counts || Acts as a user | no | no | ## How to Run Run every command through `terminal` with the skill-relative script path: ```bashpython3 scripts/reddit.py doctor                                  # which backend, current rate-limit windowpython3 scripts/reddit.py sub LocalLLaMA --sort hot --limit 15python3 scripts/reddit.py search "hermes agent" --sub LocalLLaMA --sort newpython3 scripts/reddit.py thread https://www.reddit.com/r/x/comments/abc123/slug/ --limit 40python3 scripts/reddit.py user spez --limit 10python3 scripts/reddit.py --json search "topic"                  # machine-readable``` ## Quick Reference Every command works on both backends; the script chooses the backend, you never pass a flag. | Need | Command | Anonymous | OAuth ||---|---|---|---|| Subreddit front page | `sub NAME --sort hot\|new\|top\|rising [--time week]` | ✔ | ✔ || Search all of Reddit | `search "q" --sort relevance\|new\|top\|comments` | ✔ | ✔ || Search one subreddit | `search "q" --sub NAME` | ✔ | ✔ || Thread + comments | `thread URL --limit N` | ✔ top-level only, no scores | ✔ nested, scores || User posts/comments | `user NAME` | ✔ | ✔ || Backend + rate limit | `doctor` | ✔ | ✔ | ## Procedure ① `doctor` once per task if you have not called it this session — it tells you whichbackend is live and how many seconds remain in the anonymous window. ② Plan your calls before making them. Anonymous Reddit allows roughly **one request perminute per IP**; the script sleeps until the window resets on a 429 and retries once, soa five-call plan costs about five minutes. Prefer one `search --sub` over several `sub`listings, and read one thread rather than the whole listing. ③ For "what is the community saying" questions, read the thread bodies (`thread`) ratherthan stopping at titles; the listing only carries the first ~300 characters of each post. ④ Cite the permalink (`url` field), not the listing page, when the result feeds a report.`grounded-citations` registers these URLs like any other source. ⑤ If the user needs sustained Reddit access (monitoring, more than ~10 calls), stop andask them to register the app credentials (Prerequisites) rather than grinding through thethrottle. Tell them plainly: it is a free app registration, not logging Hermes into theiraccount. Never ask for a Reddit password or browser cookies. ## Pitfalls - `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; do not  spoof a browser User-Agent (also 403).- `r.jina.ai` and the `browser_navigate` tool hit the same block ("blocked by network  security" / humanity check). `blocked-page-recovery`'s Wayback route can still recover  an **old** thread that was archived; it cannot fetch fresh ones.- Anonymous thread feeds only contain the post plus top-level comments (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–25 entries regardless of what you ask.- Never paste `REDDIT_CLIENT_SECRET` into a chat or log; the script reads it from the  environment only.- Do not "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. 
Discovery context

Discovered by repository scan. No exact path reference found in the snapshot’s root AGENTS.md.