Skip to main content
ClaudeWave
Skill252 repo starsupdated 19d ago

reddit

This skill automates Reddit interactions using CamoFox's anti-detection browser, enabling login via saved sessions, browsing feeds and subreddits, commenting on posts, and creating submissions. Use it when automating Reddit workflows that require programmatic login, posting content, or extracting feed data while avoiding detection systems and CAPTCHA challenges.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/redf0x1/camofox-browser /tmp/reddit && cp -r /tmp/reddit/skills/reddit ~/.claude/skills/reddit
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Reddit Automation Skill

Automate Reddit using CamoFox CLI anti-detection browser. All workflows verified on 2026-03-04 with zero CAPTCHAs triggered across 50+ operations.

## 1. Prerequisites

- CamoFox browser running: `camofox server status`
- A saved Reddit session (see Section 2)
- Install: `npm install -g camofox-browser`

## 2. Authentication

Reddit login uses reCAPTCHA Enterprise — automated credential entry is blocked. Use session-based auth:

First time — login manually in CamoFox, then save:

    camofox session save "reddit-session" --user reddit

Subsequent times — restore saved session:

    camofox open https://www.reddit.com --user reddit
    camofox session load "reddit-session" --user reddit
    camofox navigate https://www.reddit.com [tabId]
    camofox snapshot [tabId]

Verify: username visible in snapshot confirms login.

Store credentials for reference:

    camofox auth save reddit-main --url https://www.reddit.com --notes "Reddit account"

## 3. Browse Feed

    camofox open https://www.reddit.com --user reddit
    camofox session load "reddit-session" --user reddit
    camofox navigate https://www.reddit.com [tabId]
    camofox snapshot [tabId]
    camofox scroll down [tabId] --amount 500
    camofox snapshot [tabId]
    camofox get-links [tabId]

## 4. Browse Subreddit

    camofox navigate https://old.reddit.com/r/test [tabId]
    camofox snapshot [tabId]
    camofox click [eN] [tabId]
    camofox snapshot [tabId]

Old Reddit has simpler HTML structure — easier to parse post listings.

## 5. Comment on Post (Old Reddit)

IMPORTANT: Use eval to fill textarea — standard type causes 500 errors on old Reddit.

    camofox navigate https://old.reddit.com/r/test/comments/POST_ID/ [tabId]
    camofox snapshot [tabId]
    camofox eval "const ta = document.querySelector('.usertext-edit textarea'); ta.value = 'Your comment'; ta.dispatchEvent(new Event('input', {bubbles: true})); ta.dispatchEvent(new Event('change', {bubbles: true}));" [tabId]
    camofox snapshot [tabId]
    camofox click [eN] [tabId]
    camofox snapshot [tabId]

Why eval? Reddit's old textarea causes Internal Server Error when filled via browser automation type. Setting textarea.value via JavaScript works reliably.

## 6. Create Post (New Reddit)

IMPORTANT: Use www.reddit.com — old Reddit has visible reCAPTCHA that blocks posting.

    camofox navigate "https://www.reddit.com/r/test/submit?type=TEXT" [tabId]
    camofox snapshot [tabId]
    camofox type [eN] "Your Post Title" [tabId]
    camofox snapshot [tabId]
    camofox type [eN] "Post content with markdown." [tabId]
    camofox snapshot [tabId]
    camofox click [eN] [tabId]
    camofox wait navigation [tabId] --timeout 5000
    camofox snapshot [tabId]

## 7. Reply to Comment (Old Reddit)

    camofox navigate https://old.reddit.com/r/test/comments/POST_ID/ [tabId]
    camofox snapshot [tabId]
    camofox click [eN] [tabId]
    camofox snapshot [tabId]
    camofox eval "const tas = document.querySelectorAll('.usertext-edit textarea'); const rb = Array.from(tas).find(t => t.offsetParent !== null && t.value === ''); if (rb) { rb.value = 'Your reply'; rb.dispatchEvent(new Event('input', {bubbles: true})); rb.dispatchEvent(new Event('change', {bubbles: true})); }" [tabId]
    camofox snapshot [tabId]
    camofox click [eN] [tabId]
    camofox snapshot [tabId]

## 8. Upvote / Downvote

    camofox snapshot [tabId]
    camofox click [eN] [tabId]

Vote buttons appear as arrow icon refs in the snapshot.

## 9. Session Management

    camofox session save "reddit-session" --user reddit
    camofox session load "reddit-session" --user reddit
    camofox session list
    camofox session delete "reddit-session"

## 10. Rate Limiting

- Wait 2+ minutes between comments/replies
- Wait 10+ minutes between posts for new/low-karma accounts
- Add delays: `camofox wait networkidle [tabId] --timeout 3000`
- Higher karma accounts have relaxed limits

## 11. Anti-Detection

- CamoFox anti-detection fully effective on Reddit (0 CAPTCHAs in 50+ operations)
- Reddit serves ads to CamoFox = treats as real user
- Use consistent userId ("reddit") across sessions
- Do NOT clear cookies between actions
- No special proxy or fingerprint settings needed

## 12. Platform Selection

| Action | Platform | Reason |
|--------|----------|--------|
| Login | Manual only | reCAPTCHA Enterprise |
| Comment | old.reddit.com | Plain HTML forms |
| Reply | old.reddit.com | Plain HTML forms |
| Create Post | www.reddit.com | No visible CAPTCHA |
| Browse | Either | Both work |
| Vote | Either | Both work |

## 13. Troubleshooting

| Issue | Cause | Fix |
|-------|-------|-----|
| Login CAPTCHA | reCAPTCHA Enterprise | Use saved sessions |
| Post CAPTCHA on old Reddit | reCAPTCHA v2 | Use new Reddit |
| Comment 500 error | type on old Reddit | Use eval with textarea.value |
| Text doubled | Lexical editor bug | Use eval for input |
| Rate limited | Rapid actions | Wait 2+ minutes |
| SPA link fails | Reddit SPA | Use camofox navigate |
| Session expired | Cookies expired | Re-login and save |

## 14. Complete Example

    #!/bin/bash
    USER="reddit"
    SESSION="reddit-session"

    TAB=$(camofox open https://www.reddit.com --user $USER --format json | jq -r '.tabId')
    camofox session load $SESSION --user $USER

    camofox navigate https://old.reddit.com/r/test $TAB
    camofox snapshot $TAB

    camofox eval "const ta = document.querySelector('.usertext-edit textarea'); ta.value = 'Automated via CamoFox CLI'; ta.dispatchEvent(new Event('input', {bubbles: true})); ta.dispatchEvent(new Event('change', {bubbles: true}));" $TAB

    camofox session save $SESSION --user $USER
    camofox close --user $USER