<< All versions

Skill v1.0.0

currentAutomated scan96/100
nextbrowser-oss/nextbrowser-app/reddit
──Details
PublishedOctober 22, 2026 at 04:34 PM
Content Hashsha256:43c5e42526e9e083...
Git SHA7931cddf2fff
──Files
Files (1 file, 8.0 KB)
SKILL.md8.0 KBactive
SKILL.md · 181 lines · 8.0 KB

version: "1.0.0" name: reddit description: Use for Reddit account work - sign in, browse a community, read posts, upvote, comment, reply, and auto-reply to the inbox - through ClawBrowser on the desktop or the Reddit Android app on a Multilogin cloud phone.


Reddit

Two transports do the same Reddit work. Pick one before the first command, then stay on it for the whole task.

The skill has a second mode, Monitoring, that NextBrowser runs itself with the open-source engine @nextbrowser-oss/reddit-monitoring. It reads the signed-in account's inbox, the watched communities and a Reddit search for the user's keywords, ranks every match by urgency, and never votes, comments, replies, or marks anything read. A chat request to monitor Reddit belongs in that panel: point the user there instead of polling Reddit from chat. A match the panel hands you is one item to answer: draft the reply, show it, and post only what the user approves.

Choose the transport

  • The user named one - "in the browser", "clawbrowser", "on the phone", "cloud

phone" - that is the whole decision. Use it.

  • Auto-replying, answering the inbox, replying to a specific comment, or an

unattended or scheduled run: ClawBrowser. Only that transport has autoreply, an inbox, and a reply log that survives a rerun.

  • The account lives on a Multilogin cloud phone, or the task is about the

Android app itself: cloud phone.

  • Nothing decides it: ClawBrowser. A step costs about 0.2s there against

about 1s on a phone, and it covers more flows.

Never drive both against one account in the same task. That is one person in two places at once, and it is what gets an account flagged.

FlowClawBrowserCloud phone
status, login, open, read, upvote, comment, feed, engageyesyes
reply to a specific commentyesno
inboxyesno
autoreplyyesno

ClawBrowser

Runs on old.reddit.com in a managed profile, because that markup is server rendered and a vote or a comment can be confirmed from the DOM. Start the profile first; credentials come from REDDIT_USERNAME and REDDIT_PASSWORD in the environment, never from flags.

bash
nbc start --profile reddit-us --country US --url https://old.reddit.com/ --json
GoalCommand
Where am I, am I signed innbc reddit status --profile P
Sign innbc reddit login --profile P
Open a linknbc reddit open --profile P URL
Read the open postnbc reddit read --profile P --scrolls 2
Upvote the open postnbc reddit upvote --profile P
Comment on the open postnbc reddit comment --profile P "text"
Reply to one commentnbc reddit reply --profile P --target t1_abc "text"
List a community's postsnbc reddit feed --profile P golang --limit 10
Read the inboxnbc reddit inbox --profile P
Browse, open, read, vote, commentnbc reddit engage --profile P golang --comment "text"
Auto-replynbc reddit autoreply --profile P ... (below)

Over MCP the same set is one tool: reddit_flow with flow: status|login|open|read|upvote|comment|reply|feed|inbox|engage|autoreply.

The auto-replier

autoreply scans a source, drops what it must not answer, and posts only the text you gave it. It never writes the reply for you. Run it in two passes:

bash
# 1. See what is worth answering. Posts nothing.
nbc reddit autoreply --profile P --source inbox --match nextbrowser --dry-run --json
# 2. Compose each reply yourself, then post them.
nbc reddit autoreply --profile P --source inbox \
--replies '{"t1_abc":"...","t1_def":"..."}' --json

Pass 1 returns targets (what it would answer) and skipped (with a reason each). Read a target's body/title and write a reply that answers that item. Pass 2 posts them, verifies each one on the page, and records it.

One pass is enough only when a single canned line genuinely fits every item:

bash
nbc reddit autoreply --profile P --source community --community golang \
--match "proxy,fingerprint" --template "Hi {author}, ..." --limit 2 --json

Placeholders: {author}, {title}, {subreddit}, {body}, {permalink}.

What it refuses to do, and why you can rely on it:

  • It skips anything the reply log already records, so a rerun or a scheduled

run never answers the same item twice. The log lives with the other nbc state; --reply-log PATH moves it.

  • It skips the account's own content and, with --match, anything that misses

every term.

  • It posts at most --limit replies (default 3, hard cap 10) and waits

--min-interval seconds between them (default 45).

  • It stops at the first reply that fails instead of posting the rest blind.
  • Without --template or --replies it is a dry run whether or not you passed

--dry-run.

Cloud phone

Drives the Reddit Android app over ADB. The phone must be started, adb installed on the host, and connected once:

bash
nbc --runtime multilogin mobile adb connect "PHONE" --json
GoalCommand
Where am I, am I signed inmobile reddit status PHONE
Sign inmobile reddit login PHONE
Open a linkmobile reddit open PHONE URL
Read the open postmobile reddit read PHONE --scrolls 2
Upvote the open postmobile reddit upvote PHONE
Comment on the open postmobile reddit comment PHONE "text"
List a community's postsmobile reddit feed PHONE golang --limit 10
Browse, open, read, vote, commentmobile reddit engage PHONE golang --comment "text"

Over MCP: mobile_reddit_flow with flow: status|login|open|read|upvote|comment|feed|engage.

A screen read costs about 1s on the fast path and about 3s on the dump path, so always prefer a flow over tap-by-tap primitives. Drive the screen yourself only when no flow fits or one failed and you need to see why:

bash
nbc --runtime multilogin mobile ui observe "PHONE" --compact --json
nbc --runtime multilogin mobile ui act "PHONE" --action tap --node-id 0.1.2 --json

Take node_id from the previous result; never invent one. act returns the resulting screen, so do not call observe right after it.

Reading a result

Both transports return the same shape: screen/page, logged_in, verified, and a steps array with one entry per action (step, ok, duration_ms, and on failure code plus what was visible). When something fails, read steps before retrying: it names the stage that broke.

CodeWhat to do
REDDIT_LOGIN_REQUIREDset the credential env vars, run login
REDDIT_LOGIN_FORM_NOT_FOUNDReddit served no form to this profile: sign in once in the window, then rerun
REDDIT_AUTH_REJECTEDcredentials rejected, or Reddit wants a captcha or email step
REDDIT_UPVOTE_UNVERIFIED, REDDIT_COMMENT_UNVERIFIEDthe write was not confirmed: inspect the page or screen first, do not repeat blindly
REDDIT_COMMENT_RATE_LIMITEDthe account is posting too fast; wait it out
REDDIT_TARGET_NOT_FOUNDthe comment is not on the page: open its permalink first
REDDIT_FEED_EMPTY, REDDIT_FEED_POST_NOT_FOUNDprivate, quarantined, or still loading: retry or pass a direct post URL
WAIT_TIMEOUTread the returned labels, then adjust the query or timeout

Never

  • Do not automate an account the user does not own or is not authorized to

operate, and keep volume to what a person could plausibly do.

  • Do not repeat a vote, comment, or reply that came back unverified without

looking at the page or screen first.

  • Do not invent an auto-reply persona, an opinion, or a product claim the user

did not ask for. A reply the user has not seen the shape of is a dry run.

  • Do not use screenshots as the primary signal on either transport; the DOM and

the accessibility hierarchy are authoritative.

Completion

Report which transport ran, the account and its signed-in state, what was read, and every write with verified exactly as the flow reported it. Name anything skipped or left unverified together with its code, and never claim a vote, a comment, or a reply the flow did not verify.

All versions