Claude Skill

solo-reddit

Use when "reddit comment", "engage reddit", "build karma", "post to reddit", or need to participate in Reddit threads. NOT for thread discovery (/community-outreach) or social copy (/content-gen).

LLM Mart · 0 points · 9 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download fortunto2-solo-factory-skills_reddit-05ec009.zip · 16 KB
Part of fortunto2/solo-factory — 43 skills

Install

skills CLI npx skills add https://github.com/fortunto2/solo-factory/tree/main/skills/reddit
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install fortunto2-solo-factory@llmmart
Git git clone https://github.com/fortunto2/solo-factory.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole fortunto2/solo-factory collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

/reddit

Reddit engagement automation — from finding relevant posts to writing authentic comments and tracking results. Comment-first strategy: build karma and reputation before any self-promotion.

Philosophy

  • Value first, product never (in comments) — genuinely help, mention product only when directly asked
  • Comment-first — 30+ comments before any self-promotional post
  • Read before write — analyze post, existing comments, subreddit culture before drafting
  • Track everything — karma growth, engagement rates, what works

Routing

User says Action
/reddit setup <project> Go to Setup section
/reddit find [subreddit] Go to Find Posts section
/reddit comment [url] Go to Comment section
/reddit post <subreddit> Go to Write Post section
/reddit status Go to Status section
/reddit batch [subreddit] Go to Batch Mode — find + comment x3

MCP Tools

Playwright (required for posting)

  • browser_navigate(url) — go to Reddit page
  • browser_snapshot() — read page structure (accessibility tree, NOT screenshots)
  • browser_click(ref) — click elements
  • browser_type(ref, text) — type text
  • browser_wait_for(state) — wait for page load

SoloGraph (optional, for search)

  • web_search(query) — search Reddit threads
  • kb_search(query) — find project context
  • project_info(name) — get project details

If MCP tools not available, use WebSearch/WebFetch as fallback.

Scripts (no MCP needed)

  • scripts/check-karma.sh <username> — check karma, account age, posting readiness
  • scripts/search-posts.sh <subreddit> [query] [sort] — find posts via Reddit JSON API
  • scripts/check-post.sh <url> — read post content + top comments

Use scripts first (faster, no Playwright needed). Fall back to Playwright for posting.

Setup

First-time setup for a project. Creates profile and tracking files.

  1. Parse project from $ARGUMENTS or ask user.
  2. Read PRD/README to extract: problem, solution, ICP, key features, competitor names.
  3. Identify target subreddits — search for where ICP hangs out:
    • Language/framework subs (r/rust, r/python, r/javascript)
    • Domain subs (r/selfhosted, r/devops, r/ClaudeAI)
    • General tech (r/programming, r/webdev)
  4. Research each subreddit:
    • Read sidebar rules (via WebFetch or Playwright)
    • Check self-promotion policy
    • Note posting format, flairs, weekly threads
    • Find top posts to understand culture
  5. Write profile to docs/reddit/profile.md:
# Reddit Profile: {Project Name}

**Product:** {one-line}
**ICP:** {target persona}
**Value prop for Reddit:** {what genuine help can we offer}

## Target Subreddits

| Subreddit | Members | Self-promo | Culture | Best content type |
|-----------|---------|------------|---------|-------------------|
| r/xxx | NNNk | rules... | tone... | type... |

## Search Keywords
- Problem: {what users complain about}
- Solution: {what users search for}
- Competitors: {names for "vs" and "alternative" threads}

## Voice Guide
- Tone: {casual/technical/friendly}
- Never say: {banned phrases — "game-changer", "revolutionary", etc.}
- Always: {disclose affiliation, lead with value}
  1. Create tracking file docs/reddit/tracking.md:
# Reddit Tracking

## Stats
- Account: {username}
- Starting karma: {N}
- Comments posted: 0
- Posts made: 0

## Activity Log
<!-- entries added by /reddit comment and /reddit post -->

Find Posts

Find posts worth commenting on in a subreddit.

  1. Load profile from docs/reddit/profile.md.
  2. Search for relevant threads:
    • Via WebSearch: "{keyword}" site:reddit.com/r/{subreddit} for each keyword group
    • Or via Playwright: navigate to reddit.com/r/{subreddit}/new/ and reddit.com/r/{subreddit}/rising/
  3. Filter posts:
    • Less than 7 days old (prefer < 24h for visibility)
    • 2-30 comments (active but not buried)
    • Matches problem/solution/competitor keywords
    • NOT already commented on (check tracking)
  4. Score and rank top 5 posts by:
    • Relevance to our expertise (high)
    • Comment count sweet spot (medium = best)
    • Recency (newer = better)
    • Can we genuinely help? (must be yes)
  5. Output ranked list with URLs, titles, why each is good.

Comment

Write and optionally post a comment on a specific Reddit post.

Step 1: Load Context

  • Read docs/reddit/profile.md for voice guide
  • Read docs/reddit/tracking.md to check we haven't commented on this post
  • Read references/style-guide.md for comment patterns

Step 2: Deep Analysis

Navigate to the post URL (via Playwright or WebFetch):

  • Read the full post — understand what OP actually asks
  • Read existing comments — understand tone, what's been said, gaps
  • Identify OP's intent: asking for help? sharing experience? seeking opinions?
  • Decide angle: what unique value can we add that others haven't?

Step 3: Draft Comment

Write a comment following these rules:

  • Match subreddit tone — casual for r/ClaudeAI, technical for r/rust
  • Lead with value — first 2-3 sentences directly address OP's question
  • Be specific — code snippets, numbers, concrete steps > vague advice
  • 1-2 focused points — don't try to cover everything
  • No product mention unless directly relevant AND we have 10+ comments in this sub
  • If mentioning product: last paragraph, with "I work on X" disclosure

Step 4: Anti-Spam Review

Check the draft against references/spam-signals.md:

  • No marketing language ("game-changer", "revolutionary", "10x")
  • No link in first comment on a subreddit
  • Not a copy of any previous comment
  • Directly addresses OP's question (not tangential)
  • Would be useful even if product didn't exist
  • Reads like a human, not a press release
  • No emoji overuse (0-1 max)

If any check fails: rewrite.

Step 5: Post (if Playwright available and user approves)

  1. browser_navigate(post_url)
  2. browser_snapshot() — find comment input
  3. browser_click(comment_box_ref)
  4. browser_type(comment_box_ref, comment_text)
  5. browser_click(submit_button_ref)
  6. browser_snapshot() — verify posted, get permalink

If Playwright not available: copy comment to clipboard via pbcopy.

Step 6: Track

Update docs/reddit/tracking.md:

### {YYYY-MM-DD HH:MM} r/{subreddit}
- **Post:** [{title}]({url})
- **Comment:** [{permalink}]({comment_url})
- **Angle:** {what value we provided}
- **Product mentioned:** yes/no

Write Post

Create a Reddit post for a specific subreddit.

  1. Pre-flight checks:

    • Do we have 10+ tracked comments in this subreddit? If no: STOP, comment more first.
    • Check subreddit rules for post format, flairs, allowed content types.
    • Check if showcase/self-promo threads exist (e.g., "Showoff Saturday").
  2. Determine post type:

    Type When to use
    Experience sharing We solved a hard problem — share the story
    Technical deep-dive Interesting approach worth discussing
    Tool announcement Only in subs that allow it, with heavy context
    Question/discussion Genuine question that sparks conversation
  3. Draft post:

    • Title: specific, accurate, matches sub format (check top posts)
    • Body: value-first structure from references/post-templates.md
    • Links: max 1-2, put extras in first comment
    • Flair: match subreddit requirements
  4. Review against rules:

    • 90/10 rule: 90% value, 10% promotional
    • No clickbait titles
    • Follows subreddit-specific format
    • Would you upvote this if it wasn't yours?
  5. Post via Playwright or copy to clipboard.

  6. After posting:

    • Monitor comments for 2 hours
    • Reply to every comment (boosts ranking)
    • Track in docs/reddit/tracking.md

Batch Mode

Efficient mode: find 3 posts + write 3 comments in one session.

  1. Load profile and tracking.
  2. Run scripts/check-karma.sh to verify account status.
  3. Run scripts/search-posts.sh for target subreddit.
  4. For top 3 candidates, run Comment flow sequentially.
  5. Wait 5-10 minutes between comments (rate limiting).
  6. Write structured summary to docs/reddit/batch-{date}.json:
{
  "date": "2026-03-25",
  "subreddit": "r/ClaudeAI",
  "comments_posted": 3,
  "posts": [
    {"url": "...", "title": "...", "angle": "...", "product_mentioned": false}
  ],
  "karma_before": 37,
  "karma_after": null
}
  1. Print human summary: 3 comments posted, links, karma status.

Status

Show current Reddit engagement stats.

  1. Read docs/reddit/tracking.md.
  2. Count: total comments, comments per subreddit, posts made.
  3. Calculate: comments since last promotional post (10:1 ratio check).
  4. Show readiness: "Ready to post in r/X" or "Need N more comments in r/X".

Critical Rules

  1. Never post without reading the full thread — context is everything
  2. Never mention product in first 10 comments in any subreddit
  3. Never post same content to multiple subreddits — customize each
  4. Never argue with moderators — accept removal gracefully
  5. Always disclose affiliation when mentioning your product
  6. Minimum 5 minute gap between comments (avoid rate limiting)
  7. No vote manipulation — never ask for upvotes anywhere
  8. Use browser_snapshot not browser_take_screenshot — saves tokens
  9. Navigate by URL (browser_navigate) not clicking links — prevents errors

Gotchas

  1. Reddit spam filter on low-karma accounts — new or inactive accounts get auto-filtered. Build 50+ karma with genuine comments before any self-promo posts. If filtered: message mods via modmail (sidebar link), don't repost.
  2. Links trigger spam filter — first comment with a link in a new subreddit often gets caught. Post text-only comments first, add links only after established.
  3. Subreddit AI content rules — r/rust and others may remove posts with AI-generated content. Be transparent about AI-assisted development but ensure comments are genuinely human-directed.
  4. Rate limiting — Reddit throttles new/low-karma accounts. If you see "you're doing that too much", wait 10 minutes. Don't retry immediately.
  5. Old Reddit vs New Reddit — old.reddit.com has better search. Use new.reddit.com for posting (Playwright works better with new UI).
  6. Playwright login state — Reddit login persists in browser session. If logged out: user must log in manually (browser_navigate("https://www.reddit.com/login")), skill can't enter credentials.

Notes

  • This skill complements /community-outreach (which finds threads) and /content-gen (which generates post copy). Use /reddit for the actual engagement loop.
  • For Reddit Ads, see the reddit-ads skill from kostja94/marketing-skills.
  • Karma builds compound: each good comment makes the next one more visible.
Files (solo-factory)
  • references
    • post-templates.md 2.9 KB
      # Reddit Post Templates
      
      ## Template 1: Experience Story (highest engagement)
      
      ```
      Title: I {did something specific} — here's what {I learned / worked / broke}
      
      {1-2 sentences: context and motivation}
      
      ## The Problem
      
      {What you were trying to solve, why existing solutions didn't work}
      
      ## What I Built / Did
      
      {Technical details, approach, architecture decisions}
      
      ## Results
      
      {Specific numbers, benchmarks, outcomes}
      
      ## What I'd Do Differently
      
      {Honest reflection — this is what makes it authentic}
      
      ---
      
      {Links in comments if needed}
      ```
      
      ## Template 2: Technical Deep-Dive
      
      ```
      Title: {Specific technique}: how {approach} gives {specific result}
      
      {1 sentence hook with a concrete number or claim}
      
      ## Background
      
      {Brief context — what problem space, why it matters}
      
      ## The Approach
      
      {Technical explanation with code blocks}
      
      ## Benchmarks / Proof
      
      {Data, tables, comparisons}
      
      ## Trade-offs
      
      {What you give up, when NOT to use this}
      
      ## Code
      
      {Link to repo or inline snippets}
      ```
      
      ## Template 3: "What I Use" (for recommendation threads)
      
      ```
      Title: My {toolchain/stack/setup} for {use case} in {year}
      
      After {time period} of {activity}, here's what stuck:
      
      **{Category 1}:** {tool} — {why, 1 sentence}
      **{Category 2}:** {tool} — {why, 1 sentence}
      ...
      
      ## What I Dropped and Why
      
      {Honest about what didn't work}
      
      ## The Workflow
      
      {How these fit together}
      
      Happy to answer questions about any of these.
      ```
      
      ## Template 4: Question/Discussion Starter
      
      ```
      Title: {Specific question that invites discussion}
      
      {Context: why you're asking, what you've already tried}
      
      **My current approach:** {what you do now}
      
      **What I'm considering:** {options, with pros/cons you see}
      
      Has anyone dealt with this? What worked?
      ```
      
      ## Template 5: Project Announcement (self-promo subs only)
      
      ```
      Title: {Project name}: {what it does in <10 words}
      
      {1 paragraph: problem you solved and why}
      
      ## Key Features
      
      - {Feature 1} — {concrete benefit}
      - {Feature 2} — {concrete benefit}
      - {Feature 3} — {concrete benefit}
      
      ## How It Works
      
      {Brief technical overview, 2-3 paragraphs}
      
      ## Try It
      
      {One install command}
      
      {GitHub link}
      
      ---
      
      Built with {tech stack}. Feedback welcome — especially on {specific area}.
      ```
      
      ## Title Rules by Subreddit
      
      | Sub | Good title | Bad title |
      |-----|-----------|-----------|
      | r/rust | "Persistent WebSocket sessions for OpenAI in Rust" | "Check out my new crate!" |
      | r/ClaudeAI | "I built X with Claude Code — here's the process" | "Amazing AI tool!!!" |
      | r/programming | "Benchmarking HTTP/2 keep-alive across 3 languages" | "My project is fast" |
      | r/webdev | "Moving from REST to WebSocket reduced our TTFT by 40%" | "WebSockets are better" |
      
      ## Post Timing
      
      Best times to post (UTC):
      - **Monday-Friday:** 13:00-16:00 UTC (US morning)
      - **Best days:** Tuesday, Wednesday, Thursday
      - **Avoid:** Friday evening, weekends (lower engagement for technical content)
      - **Exception:** Arts/showcase threads often on weekends
      
    • spam-signals.md 1.9 KB
      # Reddit Spam Signals Checklist
      
      Review every comment/post against these signals before submitting. If ANY signal triggers: rewrite.
      
      ## Hard Stops (instant removal/ban)
      
      - [ ] Contains shortened URL (bit.ly, t.co, etc.)
      - [ ] Asks for upvotes directly or indirectly
      - [ ] Copy-pasted from another comment (even your own)
      - [ ] Posts same link to 3+ subreddits
      - [ ] Uses multiple accounts to comment/upvote
      - [ ] Contains affiliate/referral link
      
      ## Spam Filter Triggers (auto-removal by Reddit)
      
      - [ ] First-ever post in subreddit contains a link
      - [ ] Account karma < 50 posting link posts
      - [ ] Multiple posts within 1 hour from low-karma account
      - [ ] Title in ALL CAPS or excessive punctuation (!!!)
      - [ ] Post body is just a link with no context
      - [ ] New account (< 7 days) posting links
      
      ## Community Downvote Triggers (death by votes)
      
      - [ ] Marketing language ("revolutionary", "game-changer", "10x")
      - [ ] Opening with product pitch before any value
      - [ ] Not addressing OP's actual question
      - [ ] Generic advice that could apply to anything
      - [ ] Humble-bragging ("I accidentally built a million-dollar...")
      - [ ] Rehashed content everyone's seen before
      - [ ] Emoji overload (> 1 emoji per comment)
      - [ ] Corporate speak / press release tone
      - [ ] "As a {title} at {company}..." opener (reads as ad)
      
      ## Subtle Signals (mod scrutiny)
      
      - [ ] All your posts link to the same domain
      - [ ] Comment history is 90%+ about your own product
      - [ ] Only active in promotional threads
      - [ ] Never reply to follow-up questions
      - [ ] Post timing correlates with product launches only
      
      ## Self-Check Questions
      
      Before submitting, ask:
      1. Would I post this if I had nothing to promote? **Must be YES**
      2. Does this directly help OP? **Must be YES**
      3. Would I upvote this from a stranger? **Must be YES**
      4. Is the product mention in the last 20% of text? **Should be YES**
      5. Can the comment stand alone without the product mention? **Must be YES**
      
    • style-guide.md 3 KB
      # Reddit Comment Style Guide
      
      ## Core Principle
      
      Write like a helpful person in the community, not like a marketer. Every comment should pass the test: "Would this be useful if I had nothing to sell?"
      
      ## Comment Patterns
      
      ### Pattern 1: Direct Answer
      Best for: technical questions, "how do I..." posts
      ```
      {Direct answer to the question}
      
      {Optional: code snippet or steps}
      
      One thing to watch out for: {edge case or caveat}
      ```
      
      ### Pattern 2: Experience Sharing
      Best for: "what do you use for...", discussion posts
      ```
      We ran into this exact issue at {context}.
      
      What worked for us:
      1. {Step one}
      2. {Step two}
      
      The key insight was {specific learning}.
      ```
      
      ### Pattern 3: Helpful Correction
      Best for: posts with wrong assumptions or outdated info
      ```
      Actually, {correction} — {brief explanation why}.
      
      {Supporting evidence or link to docs}
      
      That said, {acknowledge their broader point}.
      ```
      
      ### Pattern 4: Building On Others
      Best for: threads where good answers exist but miss something
      ```
      To add to what {commenter} said — {additional point}.
      
      {Explanation with specifics}
      
      This matters because {why it's relevant to OP}.
      ```
      
      ### Pattern 5: Question + Insight
      Best for: posts where OP needs to think differently about the problem
      ```
      Interesting — have you considered {alternative framing}?
      
      The reason I ask: {experience or data that reframes the problem}.
      
      {Suggestion based on reframing}
      ```
      
      ### Pattern 6: Data/Benchmark Drop
      Best for: performance discussions, "is X fast enough" posts
      ```
      I benchmarked this recently:
      
      | {Test} | {Result A} | {Result B} |
      |--------|-----------|-----------|
      | ... | ... | ... |
      
      {1-2 sentence interpretation}
      
      Methodology: {brief description}
      ```
      
      ## Tone by Subreddit Type
      
      | Sub type | Tone | Example |
      |----------|------|---------|
      | Language-specific (r/rust) | Technical, precise, humble | "The borrow checker catches this — here's the idiomatic way..." |
      | General dev (r/programming) | Balanced, cite sources | "According to the benchmarks in..." |
      | AI/ML (r/ClaudeAI) | Enthusiastic but grounded | "I've been using this approach and here's what actually works..." |
      | Startup (r/SaaS) | Practical, metrics-focused | "We saw X% improvement after..." |
      | Self-hosted (r/selfhosted) | DIY spirit, respect privacy | "Runs locally, no cloud dependency..." |
      
      ## Banned Phrases
      
      Never use these — instant spam signal:
      - "game-changer", "revolutionary", "disruptive"
      - "you won't believe", "this changed everything"
      - "check out my...", "I just launched..."
      - "upvote if you...", "thoughts?"
      - Excessive emoji (max 1 per comment)
      - "As an AI..." or any AI-generated phrasing tells
      
      ## Length Guidelines
      
      - **Short answer:** 2-4 sentences (simple questions)
      - **Standard:** 1-2 paragraphs (most comments)
      - **Deep dive:** 3-4 paragraphs with code/data (technical threads)
      - **Never:** wall of text without structure
      
      ## Formatting
      
      - Use markdown: `**bold**`, `code`, lists
      - Code blocks for any code (even one-liners)
      - Tables for comparisons/benchmarks
      - Break paragraphs at natural points (no 5+ line blocks)
      
    • subreddit-catalog.md 5.5 KB
      # Subreddit Catalog for Solo Founders
      
      Curated list of subreddits for solo founders building AI/dev tools. Sorted by promotion friendliness.
      
      ## Tier 1 — Promo-Friendly (can post projects immediately)
      
      | Subreddit | Members | Self-promo | Best format | Notes |
      |-----------|---------|------------|-------------|-------|
      | r/SideProject | 453k | Yes — designed for it | "I built..." + technical details | Gold standard for project sharing |
      | r/coolgithubprojects | 50k | Yes — just post link | GitHub link + short description | Specifically for sharing repos |
      | r/opensource | 210k | Limited | Story + repo link | Must be genuinely open source |
      | r/alphaandbetausers | 22k | Yes | Feedback request + link | Early-stage products, expect honest feedback |
      | r/SaaS | 386k | "Show" posts | Metrics + story + link | Lead with numbers, revenue, growth |
      | r/IMadeThis | 18k | Yes | Show what you made | Physical and digital, low engagement |
      | r/InternetIsBeautiful | 17M | If genuinely cool | Link to live demo | High bar, massive reach if accepted |
      
      ## Tier 2 — Community-First (build karma first, then post)
      
      | Subreddit | Members | Self-promo | Karma needed | Best angle |
      |-----------|---------|------------|-------------|------------|
      | r/ClaudeAI | 200k+ | Rule 7: built with Claude, free to try | 50+ | "How I built X with Claude Code" |
      | r/ChatGPT | 11M | Limited | 100+ | OpenAI API tips, tools, workflows |
      | r/AI_Agents | 212k | Moderate | 50+ | Agent frameworks, multi-agent systems |
      | r/LocalLLaMA | 541k | Moderate for OSS | 50+ | WASM, edge, local-first, self-hosted |
      | r/Entrepreneur | 2.8M | Very limited | 200+ | Founder story, lessons learned |
      | r/startups | 1.5M | Requires flair | 100+ | Lean startup, validation stories |
      | r/IndieHackers | 200k+ | Moderate | 50+ | Revenue, growth, solo founder journey |
      | r/webdev | 2M+ | Showoff Saturday only | 100+ | Technical deep-dives, tools |
      | r/selfhosted | 400k | OSS gets leeway | 50+ | Privacy, no cloud dependency, Docker |
      | r/devops | 300k | Moderate | 100+ | CI/CD, infra tools, automation |
      
      ## Tier 3 — Technical (comment only, earn respect)
      
      | Subreddit | Members | Self-promo | Culture | Strategy |
      |-----------|---------|------------|---------|----------|
      | r/rust | 350k | 1/week, strict AI rules | Technical, humble, benchmarks | Comment on perf/architecture posts |
      | r/programming | 6M+ | Effectively none | Skeptical, depth required | Comment only, link in profile |
      | r/Python | 1.5M | Moderate for OSS | Helpful, educational | Python bindings angle |
      | r/javascript | 2M+ | Low | Framework debates | Node bindings, performance |
      | r/node | 300k | Low | Practical | npm package announcements |
      | r/typescript | 200k+ | Low | Type-safety focused | Type-safe SDK angle |
      | r/ExperiencedDevs | 200k+ | None | Senior-only | Pure expertise, no promo |
      | r/netsec | 500k+ | None | Deep expertise | Security tools only |
      
      ## Tier 4 — Adjacent (for specific product angles)
      
      | Subreddit | Members | When to use |
      |-----------|---------|-------------|
      | r/MachineLearning | 3M+ | ML model serving, embeddings API |
      | r/datascience | 1M+ | Data pipeline tools |
      | r/aws / r/googlecloud / r/azure | 200-500k | Cloud deployment guides |
      | r/kubernetes | 300k | Container orchestration |
      | r/cloudflare | 100k+ | Workers, WASM, edge |
      | r/webassembly | 20k | WASM-specific projects |
      | r/nocode | 100k | Low-code/no-code AI tools |
      | r/reactjs / r/vuejs / r/nextjs | 200k-500k | Frontend integrations |
      
      ## Product Angle Matrix
      
      Which subs for which product angle:
      
      | Angle | Best subreddits |
      |-------|----------------|
      | **Rust crate / CLI tool** | r/rust, r/programming, r/coolgithubprojects |
      | **AI agent / LLM tool** | r/ClaudeAI, r/AI_Agents, r/LocalLLaMA, r/ChatGPT |
      | **SaaS product** | r/SaaS, r/SideProject, r/Entrepreneur, r/startups |
      | **Open source project** | r/opensource, r/coolgithubprojects, r/SideProject |
      | **Python/Node package** | r/Python, r/node, r/javascript |
      | **WASM / edge** | r/webassembly, r/cloudflare, r/LocalLLaMA |
      | **Self-hosted tool** | r/selfhosted, r/opensource, r/devops |
      | **Developer experience** | r/webdev, r/programming, r/ExperiencedDevs |
      | **Solo founder story** | r/IndieHackers, r/Entrepreneur, r/SaaS |
      
      ## Posting Schedule
      
      Optimal times (UTC) for developer subreddits:
      - **Best days:** Tuesday, Wednesday, Thursday
      - **Best hours:** 13:00-16:00 UTC (US morning/lunch)
      - **Avoid:** Friday evening, weekends (except Showoff Saturday threads)
      - **Space crosssposts:** 24h+ between subreddits
      
      ## Karma Building Priority
      
      For a new/low-karma account, build karma in this order:
      
      1. **r/ClaudeAI** / **r/AI_Agents** — comment on others' projects, share tips
      2. **r/SideProject** — comment "nice project, have you tried X?" on others' posts
      3. **r/rust** / **r/Python** — answer technical questions
      4. **Post first project** to r/SideProject + r/coolgithubprojects (no karma needed)
      5. **Post to tier 2** subs after 50+ karma
      6. **Post to tier 3** subs after 200+ karma and month of commenting
      
      ## Sources
      
      - [Best Subreddits for SaaS Founders 2025](https://ogtool.com/blog/best-subreddits-saas-founders-2025-ogtool-guide)
      - [32 Best Subreddits to Promote Your Startup](https://www.foundevo.com/best-subreddits-to-promote-your-startup/)
      - [11 Proven Subreddits to Promote Tech 2026](https://www.subredditsignals.com/blog/best-subreddits-to-promote-a-tech-product-in-2026)
      - [Best Subreddits for AI Agents](https://redditagency.com/subreddits/ai-agents-and-api-integration)
      - [Top 10 Subreddits Self-Promotion 2025](https://toffu.ai/blog/top-10-subreddits-self-promotion-2025)
      
    • subreddit-rules.md 2.5 KB
      # Subreddit Rules Quick Reference
      
      ## Developer Subreddits
      
      ### r/rust (~350k)
      - **Self-promo:** Allowed with limits — 1 per week, must be Rust-related
      - **AI content:** "Submissions appearing to contain AI-generated content may be removed"
      - **Format:** Descriptive titles required ("Announcing libfoo 1.0: a library to foo your bars")
      - **Culture:** Technical, humble, appreciates benchmarks and honest trade-offs
      - **Weekly:** No specific showcase thread
      - **Tips:** Post as technical discussion, not announcement. Show code. Accept criticism.
      
      ### r/ClaudeAI (~200k)
      - **Self-promo:** Rule 7 — must be built with Claude, free to try, minimal promo language
      - **AI content:** Expected and welcome (it's an AI sub)
      - **Format:** Must use relevant flair (Claude Code, Project, etc.)
      - **Culture:** Builder-friendly, wants to know HOW Claude helped
      - **Tips:** Detail the AI workflow, not just the result. "How Claude Code helped" > "what I built"
      
      ### r/programming (~6M)
      - **Self-promo:** Very low tolerance
      - **Format:** Link posts with context
      - **Culture:** Skeptical, technical depth expected
      - **Tips:** Don't post here early. Comment only until well-established.
      
      ### r/webdev (~2M)
      - **Self-promo:** Showoff Saturday thread
      - **Format:** Varies — text posts for discussion, links for articles
      - **Culture:** Practical, career-focused
      - **Tips:** Use weekly threads for showcase. Add value in comments.
      
      ### r/Python (~1.5M)
      - **Self-promo:** Moderate tolerance for open source
      - **Culture:** Helpful, educational
      - **Tips:** Good for Python bindings announcements with technical context.
      
      ### r/LocalLLaMA (~500k)
      - **Self-promo:** Moderate — if it helps local AI
      - **Culture:** DIY, loves open source, local-first
      - **Tips:** WASM/edge angle works well here.
      
      ### r/selfhosted (~400k)
      - **Self-promo:** Open source gets leeway
      - **Culture:** Privacy-focused, DIY spirit
      - **Tips:** Emphasize self-hosting, no cloud dependency.
      
      ## Non-Dev Subreddits
      
      ### r/SaaS
      - **Self-promo:** "Show" posts allowed
      - **Culture:** Metrics, revenue, growth
      - **Tips:** Lead with numbers.
      
      ### r/startups
      - **Self-promo:** Requires flair
      - **Culture:** Lean startup, validation
      - **Tips:** Frame as learning, not announcement.
      
      ## General Rules Across All Subs
      
      1. **Read sidebar before first post** — every time
      2. **Check top posts** — understand what format succeeds
      3. **Search for competitors** — see how similar posts performed
      4. **Flair is mandatory** in many subs — wrong flair = auto-removal
      5. **Crosspost sparingly** — max 2-3 subs, customize title for each, space by hours
      
  • scripts
    • check-karma.sh 1.5 KB
      #!/usr/bin/env bash
      # Check Reddit user karma and account age via public JSON API
      # Usage: ./check-karma.sh <username>
      set -euo pipefail
      
      USERNAME="${1:?Usage: check-karma.sh <username>}"
      URL="https://www.reddit.com/user/${USERNAME}/about.json"
      
      DATA=$(curl -s -H "User-Agent: solo-factory/1.0" "$URL")
      
      if echo "$DATA" | grep -q '"error"'; then
          echo "Error: account not found or banned"
          echo "$DATA" | python3 -c "import sys,json; print(json.dumps(json.load(sys.stdin), indent=2))" 2>/dev/null || echo "$DATA"
          exit 1
      fi
      
      echo "$DATA" | python3 -c "
      import sys, json
      from datetime import datetime
      
      d = json.load(sys.stdin)['data']
      created = datetime.fromtimestamp(d['created_utc'])
      age_days = (datetime.now() - created).days
      
      print(f\"Username:       {d['name']}\")
      print(f\"Comment karma:  {d.get('comment_karma', 0)}\")
      print(f\"Post karma:     {d.get('link_karma', 0)}\")
      print(f\"Total karma:    {d.get('total_karma', 0)}\")
      print(f\"Account age:    {age_days} days ({age_days // 365}y {age_days % 365}d)\")
      print(f\"Verified email: {d.get('has_verified_email', False)}\")
      print(f\"Suspended:      {d.get('is_suspended', False)}\")
      print()
      
      total = d.get('total_karma', 0)
      if total < 50:
          print('Status: LOW KARMA — comment only, no links, no self-promo')
      elif total < 200:
          print('Status: BUILDING — can post in promo-friendly subs (r/SideProject)')
      elif total < 1000:
          print('Status: ESTABLISHED — can post in most subs with context')
      else:
          print('Status: TRUSTED — full posting privileges')
      "
      
    • check-post.sh 1.8 KB
      #!/usr/bin/env bash
      # Read a Reddit post and its comments via public JSON API
      # Usage: ./check-post.sh <post-url-or-id> [subreddit]
      set -euo pipefail
      
      INPUT="${1:?Usage: check-post.sh <url-or-post-id> [subreddit]}"
      
      # Extract post path from URL or construct from ID
      if [[ "$INPUT" == http* ]]; then
          # Extract path: /r/sub/comments/id/title/
          PATH_PART=$(echo "$INPUT" | sed 's|https\?://[^/]*/||; s|\.json.*||; s|/$||')
          URL="https://www.reddit.com/${PATH_PART}.json?limit=20"
      else
          SUBREDDIT="${2:?Need subreddit for post ID}"
          URL="https://www.reddit.com/r/${SUBREDDIT}/comments/${INPUT}.json?limit=20"
      fi
      
      DATA=$(curl -s -H "User-Agent: solo-factory/1.0" "$URL")
      
      echo "$DATA" | python3 -c "
      import sys, json
      from datetime import datetime
      
      data = json.load(sys.stdin)
      
      # Post data
      post = data[0]['data']['children'][0]['data']
      age_h = (datetime.now().timestamp() - post['created_utc']) / 3600
      
      print('=' * 60)
      print(f'Title: {post[\"title\"]}')
      print(f'Author: u/{post[\"author\"]}')
      print(f'Score: {post[\"score\"]} | Comments: {post[\"num_comments\"]} | Age: {age_h:.0f}h')
      print(f'Flair: {post.get(\"link_flair_text\", \"none\")}')
      print(f'URL: https://www.reddit.com{post[\"permalink\"]}')
      print('=' * 60)
      
      if post.get('selftext'):
          text = post['selftext'][:500]
          print(f'\n{text}')
          if len(post['selftext']) > 500:
              print(f'... ({len(post[\"selftext\"])} chars total)')
      print()
      
      # Comments
      comments = data[1]['data']['children']
      print(f'--- Top {len(comments)} comments ---')
      print()
      
      for c in comments:
          if c['kind'] != 't1':
              continue
          d = c['data']
          body = d.get('body', '')[:200]
          print(f'[{d.get(\"score\", 0):+d}] u/{d.get(\"author\", \"[deleted]\")}:')
          print(f'  {body}')
          if len(d.get('body', '')) > 200:
              print(f'  ... ({len(d[\"body\"])} chars)')
          print()
      "
      
    • search-posts.sh 1.3 KB
      #!/usr/bin/env bash
      # Search Reddit posts in a subreddit via public JSON API
      # Usage: ./search-posts.sh <subreddit> [query] [sort: new|hot|rising]
      set -euo pipefail
      
      SUBREDDIT="${1:?Usage: search-posts.sh <subreddit> [query] [sort]}"
      QUERY="${2:-}"
      SORT="${3:-new}"
      
      if [ -n "$QUERY" ]; then
          URL="https://www.reddit.com/r/${SUBREDDIT}/search.json?q=${QUERY}&restrict_sr=1&sort=relevance&t=week&limit=10"
      else
          URL="https://www.reddit.com/r/${SUBREDDIT}/${SORT}.json?limit=10"
      fi
      
      DATA=$(curl -s -H "User-Agent: solo-factory/1.0" "$URL")
      
      echo "$DATA" | python3 -c "
      import sys, json
      from datetime import datetime
      
      data = json.load(sys.stdin)
      posts = data.get('data', {}).get('children', [])
      
      if not posts:
          print('No posts found')
          sys.exit(0)
      
      print(f'Found {len(posts)} posts in r/${SUBREDDIT}:')
      print()
      
      for i, post in enumerate(posts, 1):
          d = post['data']
          age_h = (datetime.now().timestamp() - d['created_utc']) / 3600
          age = f'{age_h:.0f}h' if age_h < 48 else f'{age_h/24:.0f}d'
      
          print(f'{i:2d}. [{d[\"score\"]:4d} pts | {d[\"num_comments\"]:3d} comments | {age}]')
          print(f'    {d[\"title\"]}')
          print(f'    https://www.reddit.com{d[\"permalink\"]}')
      
          # Flag good candidates for commenting
          if 2 <= d['num_comments'] <= 30 and age_h < 48:
              print(f'    >>> GOOD CANDIDATE')
          print()
      "
      
  • SKILL.md 11.6 KB
    ---
    name: solo-reddit
    description: Use when "reddit comment", "engage reddit", "build karma", "post to reddit", or need to participate in Reddit threads. NOT for thread discovery (/community-outreach) or social copy (/content-gen).
    license: MIT
    metadata:
      author: fortunto2
      version: "1.0.0"
      openclaw:
        emoji: "🤖"
    allowed-tools: Read, Grep, Glob, Write, Edit, Bash, AskUserQuestion, WebSearch, WebFetch, mcp__searxng__web_search, mcp__solograph__kb_search, mcp__solograph__project_info, mcp__playwright__browser_navigate, mcp__playwright__browser_snapshot, mcp__playwright__browser_click, mcp__playwright__browser_type, mcp__playwright__browser_wait_for, mcp__playwright__browser_tabs
    argument-hint: "<command> [subreddit] — commands: comment, post, find, status, setup"
    ---
    
    # /reddit
    
    Reddit engagement automation — from finding relevant posts to writing authentic comments and tracking results. Comment-first strategy: build karma and reputation before any self-promotion.
    
    ## Philosophy
    
    - **Value first, product never** (in comments) — genuinely help, mention product only when directly asked
    - **Comment-first** — 30+ comments before any self-promotional post
    - **Read before write** — analyze post, existing comments, subreddit culture before drafting
    - **Track everything** — karma growth, engagement rates, what works
    
    ## Routing
    
    | User says | Action |
    |-----------|--------|
    | `/reddit setup <project>` | Go to **Setup** section |
    | `/reddit find [subreddit]` | Go to **Find Posts** section |
    | `/reddit comment [url]` | Go to **Comment** section |
    | `/reddit post <subreddit>` | Go to **Write Post** section |
    | `/reddit status` | Go to **Status** section |
    | `/reddit batch [subreddit]` | Go to **Batch Mode** — find + comment x3 |
    
    ## MCP Tools
    
    ### Playwright (required for posting)
    - `browser_navigate(url)` — go to Reddit page
    - `browser_snapshot()` — read page structure (accessibility tree, NOT screenshots)
    - `browser_click(ref)` — click elements
    - `browser_type(ref, text)` — type text
    - `browser_wait_for(state)` — wait for page load
    
    ### SoloGraph (optional, for search)
    - `web_search(query)` — search Reddit threads
    - `kb_search(query)` — find project context
    - `project_info(name)` — get project details
    
    If MCP tools not available, use WebSearch/WebFetch as fallback.
    
    ### Scripts (no MCP needed)
    - `scripts/check-karma.sh <username>` — check karma, account age, posting readiness
    - `scripts/search-posts.sh <subreddit> [query] [sort]` — find posts via Reddit JSON API
    - `scripts/check-post.sh <url>` — read post content + top comments
    
    Use scripts first (faster, no Playwright needed). Fall back to Playwright for posting.
    
    ## Setup
    
    First-time setup for a project. Creates profile and tracking files.
    
    1. **Parse project** from `$ARGUMENTS` or ask user.
    2. **Read PRD/README** to extract: problem, solution, ICP, key features, competitor names.
    3. **Identify target subreddits** — search for where ICP hangs out:
       - Language/framework subs (r/rust, r/python, r/javascript)
       - Domain subs (r/selfhosted, r/devops, r/ClaudeAI)
       - General tech (r/programming, r/webdev)
    4. **Research each subreddit:**
       - Read sidebar rules (via WebFetch or Playwright)
       - Check self-promotion policy
       - Note posting format, flairs, weekly threads
       - Find top posts to understand culture
    5. **Write profile** to `docs/reddit/profile.md`:
    
    ```markdown
    # Reddit Profile: {Project Name}
    
    **Product:** {one-line}
    **ICP:** {target persona}
    **Value prop for Reddit:** {what genuine help can we offer}
    
    ## Target Subreddits
    
    | Subreddit | Members | Self-promo | Culture | Best content type |
    |-----------|---------|------------|---------|-------------------|
    | r/xxx | NNNk | rules... | tone... | type... |
    
    ## Search Keywords
    - Problem: {what users complain about}
    - Solution: {what users search for}
    - Competitors: {names for "vs" and "alternative" threads}
    
    ## Voice Guide
    - Tone: {casual/technical/friendly}
    - Never say: {banned phrases — "game-changer", "revolutionary", etc.}
    - Always: {disclose affiliation, lead with value}
    ```
    
    6. **Create tracking file** `docs/reddit/tracking.md`:
    
    ```markdown
    # Reddit Tracking
    
    ## Stats
    - Account: {username}
    - Starting karma: {N}
    - Comments posted: 0
    - Posts made: 0
    
    ## Activity Log
    <!-- entries added by /reddit comment and /reddit post -->
    ```
    
    ## Find Posts
    
    Find posts worth commenting on in a subreddit.
    
    1. **Load profile** from `docs/reddit/profile.md`.
    2. **Search** for relevant threads:
       - Via WebSearch: `"{keyword}" site:reddit.com/r/{subreddit}` for each keyword group
       - Or via Playwright: navigate to `reddit.com/r/{subreddit}/new/` and `reddit.com/r/{subreddit}/rising/`
    3. **Filter posts:**
       - Less than 7 days old (prefer < 24h for visibility)
       - 2-30 comments (active but not buried)
       - Matches problem/solution/competitor keywords
       - NOT already commented on (check tracking)
    4. **Score and rank** top 5 posts by:
       - Relevance to our expertise (high)
       - Comment count sweet spot (medium = best)
       - Recency (newer = better)
       - Can we genuinely help? (must be yes)
    5. **Output** ranked list with URLs, titles, why each is good.
    
    ## Comment
    
    Write and optionally post a comment on a specific Reddit post.
    
    ### Step 1: Load Context
    - Read `docs/reddit/profile.md` for voice guide
    - Read `docs/reddit/tracking.md` to check we haven't commented on this post
    - Read `references/style-guide.md` for comment patterns
    
    ### Step 2: Deep Analysis
    Navigate to the post URL (via Playwright or WebFetch):
    - **Read the full post** — understand what OP actually asks
    - **Read existing comments** — understand tone, what's been said, gaps
    - **Identify OP's intent:** asking for help? sharing experience? seeking opinions?
    - **Decide angle:** what unique value can we add that others haven't?
    
    ### Step 3: Draft Comment
    Write a comment following these rules:
    - **Match subreddit tone** — casual for r/ClaudeAI, technical for r/rust
    - **Lead with value** — first 2-3 sentences directly address OP's question
    - **Be specific** — code snippets, numbers, concrete steps > vague advice
    - **1-2 focused points** — don't try to cover everything
    - **No product mention** unless directly relevant AND we have 10+ comments in this sub
    - **If mentioning product:** last paragraph, with "I work on X" disclosure
    
    ### Step 4: Anti-Spam Review
    Check the draft against `references/spam-signals.md`:
    - [ ] No marketing language ("game-changer", "revolutionary", "10x")
    - [ ] No link in first comment on a subreddit
    - [ ] Not a copy of any previous comment
    - [ ] Directly addresses OP's question (not tangential)
    - [ ] Would be useful even if product didn't exist
    - [ ] Reads like a human, not a press release
    - [ ] No emoji overuse (0-1 max)
    
    If any check fails: rewrite.
    
    ### Step 5: Post (if Playwright available and user approves)
    1. `browser_navigate(post_url)`
    2. `browser_snapshot()` — find comment input
    3. `browser_click(comment_box_ref)`
    4. `browser_type(comment_box_ref, comment_text)`
    5. `browser_click(submit_button_ref)`
    6. `browser_snapshot()` — verify posted, get permalink
    
    If Playwright not available: copy comment to clipboard via `pbcopy`.
    
    ### Step 6: Track
    Update `docs/reddit/tracking.md`:
    ```markdown
    ### {YYYY-MM-DD HH:MM} r/{subreddit}
    - **Post:** [{title}]({url})
    - **Comment:** [{permalink}]({comment_url})
    - **Angle:** {what value we provided}
    - **Product mentioned:** yes/no
    ```
    
    ## Write Post
    
    Create a Reddit post for a specific subreddit.
    
    1. **Pre-flight checks:**
       - Do we have 10+ tracked comments in this subreddit? If no: STOP, comment more first.
       - Check subreddit rules for post format, flairs, allowed content types.
       - Check if showcase/self-promo threads exist (e.g., "Showoff Saturday").
    
    2. **Determine post type:**
       | Type | When to use |
       |------|-------------|
       | Experience sharing | We solved a hard problem — share the story |
       | Technical deep-dive | Interesting approach worth discussing |
       | Tool announcement | Only in subs that allow it, with heavy context |
       | Question/discussion | Genuine question that sparks conversation |
    
    3. **Draft post:**
       - Title: specific, accurate, matches sub format (check top posts)
       - Body: value-first structure from `references/post-templates.md`
       - Links: max 1-2, put extras in first comment
       - Flair: match subreddit requirements
    
    4. **Review against rules:**
       - 90/10 rule: 90% value, 10% promotional
       - No clickbait titles
       - Follows subreddit-specific format
       - Would you upvote this if it wasn't yours?
    
    5. **Post** via Playwright or copy to clipboard.
    
    6. **After posting:**
       - Monitor comments for 2 hours
       - Reply to every comment (boosts ranking)
       - Track in `docs/reddit/tracking.md`
    
    ## Batch Mode
    
    Efficient mode: find 3 posts + write 3 comments in one session.
    
    1. Load profile and tracking.
    2. Run `scripts/check-karma.sh` to verify account status.
    3. Run `scripts/search-posts.sh` for target subreddit.
    4. For top 3 candidates, run **Comment** flow sequentially.
    5. Wait 5-10 minutes between comments (rate limiting).
    6. Write structured summary to `docs/reddit/batch-{date}.json`:
    
    ```json
    {
      "date": "2026-03-25",
      "subreddit": "r/ClaudeAI",
      "comments_posted": 3,
      "posts": [
        {"url": "...", "title": "...", "angle": "...", "product_mentioned": false}
      ],
      "karma_before": 37,
      "karma_after": null
    }
    ```
    
    7. Print human summary: 3 comments posted, links, karma status.
    
    ## Status
    
    Show current Reddit engagement stats.
    
    1. Read `docs/reddit/tracking.md`.
    2. Count: total comments, comments per subreddit, posts made.
    3. Calculate: comments since last promotional post (10:1 ratio check).
    4. Show readiness: "Ready to post in r/X" or "Need N more comments in r/X".
    
    ## Critical Rules
    
    1. **Never post without reading the full thread** — context is everything
    2. **Never mention product in first 10 comments** in any subreddit
    3. **Never post same content to multiple subreddits** — customize each
    4. **Never argue with moderators** — accept removal gracefully
    5. **Always disclose affiliation** when mentioning your product
    6. **Minimum 5 minute gap** between comments (avoid rate limiting)
    7. **No vote manipulation** — never ask for upvotes anywhere
    8. **Use `browser_snapshot` not `browser_take_screenshot`** — saves tokens
    9. **Navigate by URL** (`browser_navigate`) not clicking links — prevents errors
    
    ## Gotchas
    
    1. **Reddit spam filter on low-karma accounts** — new or inactive accounts get auto-filtered. Build 50+ karma with genuine comments before any self-promo posts. If filtered: message mods via modmail (sidebar link), don't repost.
    2. **Links trigger spam filter** — first comment with a link in a new subreddit often gets caught. Post text-only comments first, add links only after established.
    3. **Subreddit AI content rules** — r/rust and others may remove posts with AI-generated content. Be transparent about AI-assisted development but ensure comments are genuinely human-directed.
    4. **Rate limiting** — Reddit throttles new/low-karma accounts. If you see "you're doing that too much", wait 10 minutes. Don't retry immediately.
    5. **Old Reddit vs New Reddit** — `old.reddit.com` has better search. Use `new.reddit.com` for posting (Playwright works better with new UI).
    6. **Playwright login state** — Reddit login persists in browser session. If logged out: user must log in manually (`browser_navigate("https://www.reddit.com/login")`), skill can't enter credentials.
    
    ## Notes
    
    - This skill complements `/community-outreach` (which finds threads) and `/content-gen` (which generates post copy). Use `/reddit` for the actual engagement loop.
    - For Reddit Ads, see the `reddit-ads` skill from kostja94/marketing-skills.
    - Karma builds compound: each good comment makes the next one more visible.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related