Grabbit — Reddit marketing agent
Grabbit (grabbit.sh) monitors Reddit for a brand: it watches subreddits, collects
posts and comments, and auto-classifies each one into 56 labels across 11
dimensions (relevancy, intent, sentiment, mentions, requests, competitor signals,
etc.). Your job with this skill is to drive that data — find leads and mentions,
build the right filtered views, and help the user engage — through the
tools.
Run it as a self-driving loop: pull the highest-intent leads, and for each one
produce a ready-to-post reply draft — right voice, right angle, rule-safe — that
the user only has to paste. The reply craft in step 4 is where this skill earns
its keep; don't shortcut it.
Mental model
- Project = one brand/product being monitored. It owns feeds (subreddits),
keywords (filters), tags (labels), and entries (the collected +
classified Reddit content). Almost every tool needs a .
- Entry = one Reddit post or comment collected from a feed, with an attached
classification. Filter entries by those classifications to build views.
- Everything hangs off . Always start there — it's the only
source of , and it returns the project's positioning
( / / / ) plus its existing
feeds, tags, and keywords with their ids. Read the positioning: it's the raw
material for every reply you draft.
Golden rules (the stuff that bites)
- Check before mutating. returns
per project. It can be — every ///
tool needs . Don't attempt writes on a read-only project; tell the user.
- does NOT backfill. It only collects posts published from
the moment you attach it. For anything historical, use (which
reads Reddit's own index) — not a new feed.
- List bodies are truncated to 300 chars. gives you a
preview. Before you judge relevance or draft a reply, pull the full body and
comments with .
- REPLACES the whole tag set. It's not additive. Read the
entry's current tags first (from ) and pass the full
desired set, or you'll silently wipe existing tags. clears all.
- Analysis filters: same category = OR, different categories = AND.
["relevancy:high","relevancy:medium"]
= high OR medium.
["mention:project","sentiment:negative"]
= project mention AND negative.
This is the entire mental model for building views.
- results are ephemeral. They are NOT stored as project
entries (cached ~1 day). Use them for ad-hoc/historical discovery; use feeds +
entries for ongoing monitoring.
- Mark entries after engaging. keeps listings and
the dashboard's analytics honest. Skipping this rots the inbox.
Workflow
1. Orient
Call
. Identify the target project's
and
. Note
its existing
,
,
(with ids — you'll reuse them) and read
its
/
/
. This positioning tells you what a
"good lead" looks like and how to talk about the product later.
2. Research & expand coverage
Only when the user wants to widen what's monitored.
- → find candidate communities (name, subscribers, NSFW).
list_project_feeds(projectId)
→ inspect a feed in full: posting rules,
subscriber count, sync status, current hot posts. Read the rules — most
subreddits restrict self-promotion, and that governs how you can engage.
add_project_feed(projectId, subreddit)
→ start monitoring (new posts only,
counts against the plan's feed limit).
create_project_keyword(projectId, query, name)
→ precise filtering. See the
query DSL below; get it right or the filter is useless.
search_reddit(queries, range, sort)
→ historical / one-off discovery that
feeds do not backfill. Prefer short quoted phrases like .
Keyword query DSL: an array of groups combined with
AND — every group must
pass. A group passes when
any of its
appears in the entry title or
body (
OR);
inverts it (passes only when none appear). Matching
is case-insensitive substring with
no stemming, so use short stems —
also catches
,
.
[{"terms":["reddit"],"negated":false},
{"terms":["lead","mention","monitor"],"negated":false},
{"terms":["hiring","job"],"negated":true}]
=
AND (
OR
OR
) AND NOT (
OR
).
3. Triage the inbox — the daily loop
This is the core of Reddit marketing with Grabbit.
list_project_entries(projectId, analysis, sortBy, range, ...)
→ build a view
using the recipes below. Default sort desc; use for a
freshness sweep. (, , …) scopes recency. defaults to
+; pass it explicitly for /.
get_project_entries(entryIds)
→ full bodies + comments for the entries worth a
closer look. Always do this before deciding to engage.
- Tag as you go: once for reusable labels (e.g. an
), then
set_entry_tags(entryId, tagIds)
— remember it replaces.
set_entry_status(entryIds, "archived")
to clear noise so the inbox stays real.
4. Engage — draft replies that convert without getting banned
This is where the agent earns its keep. A reply that reads like an ad gets
downvoted, removed, and can get the account banned; a reply that reads like a
helpful regular wins the lead. For each thread worth engaging, run this sequence —
never skip straight to drafting.
-
Read the live thread and its comments. — not just
the post. The comments are the single most useful input you have: they set the
community's register, reveal what's already been said (never repeat it), and
show which answers the crowd actually rewards (score).
-
Check the rules. list_project_feeds(projectId)
exposes each feed's posting
rules; if the thread's sub isn't a feed, judge from its norms. Many subs ban
links or self-promo outright. The rules decide whether you may name the product,
link it, or only help. When in doubt, help without linking.
-
Copy the voice of a good comment. Pick the top-upvoted, natural-sounding
comment in the thread (skip mods and other ads) and mirror it: length, tone,
formality, formatting (paragraph vs. bullets vs. one-liner), jargon vs. plain
talk. Your reply should be stylistically indistinguishable from a regular
contributor — that's the entire game. A three-paragraph pitch under a thread of
terse one-liners screams "marketer" and dies.
-
Find the angle from the classification. The entry's labels hand you the
opening — match the reply to what they're actually doing:
- / → give an honest shortlist, put
the product in it as one you tried, don't trash competitors.
- / → empathize with the pain,
then show how you'd solve that specific problem.
- / → answer the real question first;
the product is at most the last sentence.
- / → be concrete about cost and fit; these
are ready to convert, don't be coy.
-
Draft help-first, speak as a user, earn the mention. Lead with a genuinely
useful answer built from the thread. Frame the product as something you tried
and it worked ("i switched to X", "X fixed this for me"), not something you
sell. First person as a happy user reads as a recommendation; "we built X" reads
as an ad. Mention it only where it's the honest answer to what they asked, one
line, no link if the sub forbids it. Pull substance from the project's
/
(via
), never a slogan.
-
Hand off and record. Grabbit does not post for the user. Output the drafted
reply plus the thread url so they can post in their own account, then
set_entry_status(entryIds, "replied")
once posted.
Match the room — example. Thread in r/SaaS, comments are short and casual:
"What are you all using to find leads on Reddit? Manually searching is killing me."
❌ Screams marketer (wrong register, slogan, feature-dump):
Great question! Finding leads on Reddit manually is a significant challenge many
businesses face. Fortunately, Grabbit leverages advanced AI classification across
56 labels to surface high-intent prospects automatically, monitoring subreddits
and tracking brand mentions in real time...
✅ Matches the room (mirrors the casual one-liner voice, help-first, product as a
user's own experience):
same, manual search was eating my mornings. what worked for me was watching a few
subs with keyword filters so only buyer-intent posts hit my inbox instead of
scrolling. i use grabbit for it now, but even a saved search + alerts beats doing
it by hand. happy to share how i set the filters up.
Reply checklist before you hand it over: register matches a real comment in the
thread · opens with actual help · product framed as your own experience, not a
pitch, and ≤1 line · no link if rules forbid · adds something not already said.
The full comment craft lives in references/writing-comments.md
— more worked
examples per lead type, the AI-tell word filter (banned words/phrases/punctuation
that out an LLM), and how to voice-match a real commenter. Read it before drafting.
5. Report
Summarize what you found and did: counts of leads / mentions by sentiment, the
top threads worth engaging (with urls), what was tagged/archived, and any drafted
replies pending the user's post.
Filter recipes
Common
filter sets for
(same category OR,
different categories AND):
| View | |
|---|
| Leads | ["relevancy:medium","relevancy:high"]
|
| Buying leads | ["relevancy:medium","relevancy:high","intent:buying"]
|
| Brand mentions | |
| Negative brand mentions | ["mention:project","sentiment:negative"]
|
| Competitor complaints | ["mention:competitor","competitor:complaint"]
|
| Testimonials | ["experience:customer_testimonial"]
|
| Pain points to solve | ["experience:pain_point","relevancy:high"]
|
| Recommendation requests | ["request:recommendation","request:alternative"]
|
Combine with
(from
),
,
,
, and
(
/
) to narrow further.
Full classification taxonomy
The complete list of 56 labels across all 11 dimensions — read when you need a
label that isn't in the recipes above, or to explain what a classification means.
→
references/analysis-labels.md