Loopany
Sign in
Back to templates
Growth

Reddit Karma

An always-on loop that earns Reddit comment karma by posting genuinely helpful, value-only comments grounded in your own expertise and knowledge base.

Advanced setupShort cycleOpen loopCompounds over weeks
Setup in Loopany

How a run flows

Before first run
Content library + Reddit CLI
Daytime cron
3-5 posts a day
Step 1 · Find
Find relevant qualified posts
Step 2 · Gate
Quality gate
Step 3 · Write
One value comment
Step 4 · Record
Post or draft · log it
Board
Comment board
Metric
Comment karma
open loop — repeats on the next tick, picking up where it left off

Prerequisites

  • Content wiki libraryrequired

    A curated knowledge base of your own content — the agent only cites positions you documented.

  • OpenCLI for Reddit operationsrequired

    Drives Reddit through your own logged-in browser session — no API app, no bot account. Get OpenCLI

  • Workflow triggeroptional

    The deterministic pre-stage that randomizes posting slots so the cadence reads human — built into Loopany, no extra install.

How this loop works — schedule, exit, notifications
Suggested schedule
Many slots across your active hours
Loop type
Open loop — an ongoing monitor with no finish line.
Exit condition
Runs indefinitely (no finish line).
Notifications
On by default — you're alerted on each run's outcome (completion or failure). Silence with notify: never.
Ease of starting
A guided, multi-step setup (access, accounts, rules) before it can run.
When you see value
Karma builds slowly from genuinely useful comments; expect weeks, and a real knowledge base to assemble first.

Over the last 7 days my Reddit account karma grew from -4 to 92 comment karma. This was done by my Reddit Karma loop.

Comment karma by day: -5 on 7/19 to 90 on 7/26

I actually tried to run loops with Reddit before but it all failed, but this time I found the right leverage to make it work:

  • Personal wiki to make content unique and good
  • Thread filtering is key
  • Right reddit tools for agent
  • Randomness via right loop trigger
  • Reflect & evolve

I will break it down for ya.

The loop setup

The loop posts 3 to 4 comments on a typical day and skips the rest. The engine is a wiki built from my own content (more on how below). A scheduled job fires on half-hour slots across my daytime, and a workflow escalates only a few random slots to a real run.

Each real run:

  1. Verifies the Reddit session.
  2. Picks an expertise angle from the wiki.
  3. Sweeps fresh threads in subs where that expertise fits, sorted by new, looking for a live pain point. "How do I", "why does this keep happening", "what's your workflow" questions.
  4. Runs a quality gate: thread under 48h old, room temperature OK, and we have a concrete, non-generic answer grounded in a wiki fact.
  5. Writes ONE comment. 2 to 6 sentences, answers the actual question, no preamble, no links, no product mentions.
  6. Logs everything: what it posted, what it skipped, and why.

Leverage #1: Wiki

The loop doesn't start with Reddit. It starts with a wiki. This makes a big difference in terms of result. Raw models give generic answers, the only way to make it unique is curated inputs.

My wiki: one page per topic I keep coming back to

My wiki includes all my past videos, articles and the resources I was interested in, organized into one page per topic I keep coming back to. One standing rule makes this work:

The agent can only cite a position I have DOCUMENTED. It reads the page. It never reconstructs my opinion from memory.

This is the difference between an agent that sounds like me and an agent that sounds like ChatGPT doing an impression of a helpful developer. Generic AI answers are why automated comments usually read as slop. Mine come from one specific thing I actually hit, because the wiki page records the specific thing I actually hit.

Leverage #2: Thread filtering is key

I assumed the hard part would be finding threads. It's the opposite. Fresh threads are everywhere. The filter is everything:

Discovery: per-sub newest feeds, not global search. Reddit's site-wide search returns old high-karma noise, useless for finding someone stuck right now.

And test your feeds: one sub we swept served months-old posts in its "new" feed. We dropped it.

The gate:

  • under 48h old,
  • room temperature OK (skip hostile pile-ons),
  • a concrete answer grounded in a documented position.

The killer test: does someone else's reply already occupy my angle?

If a thread has one solid answer, the loop either adds a genuinely DISTINCT grounded angle or walks away. This test kills more candidate threads than every other rule combined.

On a typical day the loop reads dozens of threads and posts 3 or 4 comments.

The skipping is the strategy.

Leverage #3: Right reddit tools for agent

Reddit has strict bot prevention.

OpenCLI drives Reddit through my own logged-in browser session

Our loop posts through OpenCLI, which reuses my browser's logged-in Reddit session. No Reddit API app, no tokens, no separate bot account. The agent searches, reads threads and comments through one CLI, as me, from my machine.

That's also what makes it safe to wire a loop to it. Before doing anything, the run verifies who's logged in, and if the answer is wrong it stops completely rather than half-posting. Every action goes through the same session a human would use, at a human pace, under the account-level ledger and caps above. The goal isn't to hide automation. It's to make the automation behave the way a careful human would.

Leverage #4: Randomness via right loop trigger

A bot that posts at exactly 9:00 every morning is announcing itself. Humans don't run on cron. We drift in at odd minutes, answer two threads before lunch, then vanish for an afternoon.

The problem: schedulers only know fixed times. There is no "post at random times" primitive in any scheduler I know.

So we built a workflow trigger feature in loopany, so a loop can run a small deterministic workflow - The cron fires every half hour across my daytime, about 14 slots a day. On each tick the workflow reads the shared account ledger, checks the 21 minute gap and the daily cap, and then rolls the dice. Only a few slots win the roll and escalate into a real agent run. Every other tick dies right there as one silent log line.

The workflow trigger: a deterministic zero-LLM pre-stage attached to the loop's cron

Two things fall out of this.

First, the account behaves like a person. 3 to 5 comments a day, at times nobody could predict, naturally spaced because the ledger gap rides along on every roll. No comment lands at :00 on the dot two days in a row.

Second, it costs almost nothing. The expensive part of an agent loop is the agent. Here the model only wakes on the slots that won the roll. A skipped slot never touches an LLM.

The pattern generalizes way beyond Reddit: a fixed cron for reliability, a cheap deterministic pre-stage for randomness and guardrails, and the agent only when the pre-stage says go.

Leverage #5: Self-Reflect & Evolve

Every Sunday the loop stops hunting and grades itself instead. It re-fetches every comment it posted that week, records the real score each one earned, and computes the week's karma delta. Then it tallies by subreddit and by topic angle: which subs actually earn upvotes, which angles land, which get ignored.

Then it rewrites its own strategy notes from the data. Not vibes, data. Subs that never convert get retired. Angles that got ignored get dropped or sharpened. And the winners get doubled: next week the loop deliberately shifts its slots toward the subs and angles that earned upvotes last week. Its next week looks different from its last week, and that's the point.

That's the loop-engineering pattern I keep coming back to: act, record, measure against the real system, adjust. An agent that posts is a toy. An agent that checks whether its posts worked and changes what it does next week is a system.

The prompt this runs

Set up an open loop that earns comment karma on my Reddit account by posting genuinely helpful, pure-value comments grounded in my own expertise. Karma is the by-product of being useful, never the pitch. Setup is a guided conversation; confirm each step with me before creating the loop, and never create a blind loop.

## Step 1 - The knowledge base (the value engine)
The loop only works if it comments from my real, first-hand insight. If a curated knowledge base already exists on this machine, confirm it and its routing/index entry point and skim my strong topics. If none exists, do NOT proceed empty - ask me for my own past content and the sources I trust (my writing, tweets, talks, threads, shipped work, docs I rely on), learn what my business or product actually is so the sharpest angles are available, and help me assemble a minimal knowledge base from that. Standing rule: cite a position I have actually DOCUMENTED - read the page, never reconstruct my opinions from memory.

## Step 2 - The account and access
Verify the Reddit CLI this machine's agent posts through is installed and logged in - our loops use opencli (opencli reddit whoami / search / subreddit / read / comment / reply, reusing the browser login). Smoke-test it once (opencli reddit whoami), confirm which account, and get my explicit sign-off to act on it. If no such tool exists, set one up before creating the loop.

## Step 3 - The shared-account ledger
More than one automation may post from this account (this loop, a promo/AEO loop, my own interactive sessions), and account-level timing is a safety concern, so all of it is tracked in ONE shared ledger file reachable by every automation on the account (e.g. <account>-account-ledger.md). Confirm where it lives (or create it), and confirm the account's combined posting rules. Defaults: a minimum gap of >=21 min between ANY two posts (jittered), and a combined cap of <=5 posts/day. If a promo/AEO loop has an approved batch going out that day, this loop yields slots rather than crowding the account.

## Step 4 - The subreddit boundary
Rather than a fixed list, derive a boundary from my knowledge base and confirm it: an avoid / prefer-different set (subs another automation owns), a broaden-into set that is this loop's own turf, and a per-run scoring function (topic-fit x thread freshness x "can my real experience answer this well").

## Step 5 - Posting mode and the trigger schedule
Confirm whether the loop posts automatically or drafts comments for me to review and post - default to draft-for-review. For cadence, remember loopany only fires cron ticks - there is no random-posts primitive, so the natural spacing is built from a cron PLUS a workflow. Set a cron of many half-hour slots across my active daytime window (e.g. `0,30 10-16 * * *`, ~14 slots in my timezone), and author a deterministic workflow pre-stage that on each tick reads the ledger, enforces the >=21-min gap and <=5/day cap, and probabilistically escalates only a few slots to an actual posting run while most ticks pass silently. That yields a random ~3-5 posts/day, naturally spaced, with no rigid post-at-exactly-X schedule. Confirm the window and daily target with me.

## The task file to author
Write the loop's task file from this skeleton, filling every <placeholder> with what we agreed:

    # Reddit Karma - value-first comments from <owner>'s expertise

    ## Spec
    **Mission (open loop, no finish line):** build comment karma on <account> by posting
    genuinely helpful, pure-value comments at the overlap of my real expertise (the
    knowledge base below) and a live pain point in a fresh thread. Karma is the by-product
    of being useful, never the pitch. Runs indefinitely; no goal.

    **Knowledge base:** <path/URL>, routed via <index>. Cite DOCUMENTED positions - read
    the page, never reconstruct from memory. Strong topics: <list>.

    **Account & tools:** <account> (<status>). Post via `opencli reddit comment <post-id>
    "<text>"` / `opencli reddit reply <comment-id> "<text>"`; find threads with `opencli
    reddit search "<q>" -f yaml` and `opencli reddit subreddit <name> --sort new -f yaml`;
    check a thread with `opencli reddit read <post-id>`; verify with `opencli reddit whoami`.
    Mode: <auto-post | draft-for-review>.

    ### Shared-account ledger - READ AND WRITE EVERY RUN
    Account-level timing/frequency for <account> lives in ONE file: <ledger-file>. Every
    automation on this account shares it (this loop, <other loops>, interactive sessions).
    BEFORE posting: read the ledger and enforce (a) the >=21-min gap against the account's
    last post from ANY source, and (b) the combined cap of <=5/day; if a promo/AEO batch is
    going out, yield a slot rather than crowd the account. AFTER posting: append one ledger
    line immediately (timestamp, source=this loop, sub, thread, URL).

    ### HARD RULES (non-negotiable)
    - PURE VALUE ONLY. Zero self-promo, zero product mentions, zero links. (Promotion is
      another loop's job - never here. This firewall keeps the account safe.)
    - >=21 MIN BETWEEN POSTS, jittered (not exactly on the minute). Never post two comments
      back-to-back. On a manual catch-up where more than one thread clears the bar, post the
      first, then wait >=21 min before the next - two comments a minute apart reads as a bot
      and risks the whole account, which defeats the point. The gap is per-account, so it
      counts against other automations' posts too (see ledger).
    - Never post into a thread another automation is active in - quick-check the thread for an
      existing <account> comment first; if we are already there, pick another.
    - One account, one voice - no cross-voting, no second account in the same thread.

    ### Subreddit boundary (not a fixed list)
    - Avoid / prefer-different: <sibling turf>.
    - Broaden-into (this loop's turf): <expertise-matched subs>.
    - Per-run score: topic-fit x thread freshness x "can my real experience answer this well".

    ### Each run
    1. Verify session (`opencli reddit whoami`). Wrong account -> notify and stop, never half-post.
    2. Check the ledger - enforce the >=21-min gap and <=5/day cap before doing anything else.
    3. Find a post that matches an expertise angle AND a live pain point - pick a documented
       KB position, then search + sort-new across the boundary for a fresh thread it answers;
       prefer "how do I / why does X keep happening / what's your workflow" questions.
    4. Quality gate: top-level post < ~48h old; room temperature OK (skip pile-on/hostile
       threads); a concrete, non-generic answer grounded in a KB fact; not already commented
       by <account>; zero is fine (nothing clears the bar -> post nothing and say so, never
       lower quality to hit a count).
    5. Write & post ONE comment following the writing rules below (draft-for-review mode:
       write the draft, do not post).
    6. Record: write/update the comment's RC-*.md card (type: drafted | posted | skipped),
       append one ledger line immediately, and append a dated Timeline line (sub, thread
       title, angle, posted URL or "skipped: reason").

    ### Writing rules - sound human, never like an LLM
    A comment that reads as AI-written torches credibility instantly and costs karma.
    - NO em-dashes or en-dashes. Ever. Use a period, a comma, or restructure. This is the #1
      "written by ChatGPT" tell on Reddit. Same for other AI-punctuation tells: no curly
      quotes (use straight " '), no bullet-list answers, no bold-label formatting.
    - Kill the LLM cadence: no "it's not just X, it's Y", no "the key insight is", no "here's
      the thing", no tidy rule-of-three windups, no "Great question / Hope this helps / TL;DR".
      Drop hedges ("in my experience it can sometimes").
    - Sound like <owner> typing on their phone: plain, direct, a bit blunt, contractions, ONE
      concrete thing they actually hit. A real builder writes short and specific, not balanced
      and comprehensive. When in doubt, cut a sentence rather than smooth it.
    - 2 to 6 sentences, answers the actual question, no preamble, no self-promo, no links.

    **Cadence:** ~14 half-hour slots across <tz-local hours> (cron like `0,30 10-16 * * *`) + a
    workflow that reads the ledger and escalates only a few slots to a post - a random ~3-5
    posts/day, naturally spaced. A skipped slot still counts - biases quality over volume.

    ## Current understanding
    <!-- running karma number (from whoami); which subs/angles convert; tactics that work -->

    ## Timeline
    <!-- one dated entry per run, appended below -->

## Dashboard at creation
Fetch this template's reference at <server-url>/api/skill/references/templates/reddit-karma/reference.md (on demand - it is not in this prompt). It carries the RC-card artifact contract (one card per comment, type = drafted | posted | skipped) and a validated dashboard layout: a drafted/posted/skipped kanban of comments, a comment-karma chart, a metrics rail, and the newest-report embed. Author the dashboard from it and declare the metric keys (comment_karma, posted_today, drafted_waiting) so runs report them from day one.

This is the exact intent appended to the bootstrap when you create the loop — your coding agent reads it, then proposes cadence and config and confirms with you before creating anything.