Reddit Growth
Grow a brand's presence on Reddit the way Reddit actually rewards: find the communities that fit, match a specific piece of content to the best ones with a tailored angle, and rewrite it in native Reddit voice — then hand it to the human to review and post.
When to Use
Use this skill when a user wants to find subreddits that fit their brand, match an existing piece of content (blog post, post draft) to the best-fit communities with a posting angle, or get a Reddit-native rewrite of content before posting it themselves.
When NOT to Use
Not for automatically publishing to Reddit — PostKing never posts on the brand's behalf; this skill only prepares review-ready drafts. Not for other-platform content generation or scheduling — that's postking-social/postking. Not for applying a saved voice profile in general — that's postking-brand-voice (this skill only consumes a voiceId from it).
Minimal tool subset
This skill needs only these tools out of PostKing's 200+:
reddit_generate_pool— crawl Reddit and build the brand's fit-scored subreddit pool from brand signals (async).reddit_get_pool— read the saved pool, sorted most-relevant first; each row includesposting_styleandno_promotion_reason.reddit_discover_subreddits— search Reddit with explicit queries for candidates beyond the brand-signal pool (sync, 15 credits flat).reddit_add_to_pool— add chosen subreddits to the pool by name (sync, 0 credits).reddit_remove_from_pool— prune subreddits from the pool by name (sync, 0 credits).reddit_suggest— match a piece of content to up to 8 best-fit subreddits with posting angles (sync, 0 credits).reddit_rewrite— natively rewrite a post for a specific subreddit, optionally in a saved voice.reddit_list_posts— list previously rewritten Reddit posts.list_voices— get avoiceIdto pass intoreddit_rewrite.get_job— pollreddit_generate_pool.
Optional: reddit_global_pool — informational stats on the global known-subreddit dataset (not brand-specific). get_post — fallback poll if reddit_rewrite times out and returns a postId instead of a finished draft.
Prerequisites
- Authenticated with credits — see the
postking-getting-startedskill. - A brand already onboarded — see the
postking-getting-startedskill.
Procedure
"Find subreddits for us and turn this blog post into a Reddit post."
Async tools return { operationId, status } — poll get_job({ operationId }) until state is completed, failed, partially_failed, or cancelled.
- Build the pool.
reddit_generate_pool({ brandId })→ async, pollget_job. Crawls Reddit and builds the brand's fit-scored subreddit pool from brand signals alone. Only needs to run once per brand (re-run occasionally to refresh). See "Manual subreddit curation" below for the alternative/companion path when the user wants to search in a specific direction instead of (or in addition to) this brand-signal crawl. - Review the pool.
reddit_get_pool({ brandId, top })— the fit-scored subreddit pool, most relevant first. This is the brand-level match: no content needed yet. Each row'sposting_styleandno_promotion_reasonfields are where you read a community's posting norms and promo tolerance — there is no separate "get subreddit rules" tool, it's surfaced here. - Match content.
reddit_suggest({ postId })(an existing BlogArticle id) orreddit_suggest({ title, content, detail: "medium" })(pasted content) — returns up to 8 best-fit subreddits from the pool, each with 2–3 posting angles (angle type + tailored title + framing hook),match_score,promotion_mode,buyer_intent,reason, andrule_to_watch. Usedetail: "medium"to get all angles plusreason/rule_to_watch. Requires the pool from step 1 to exist. - (Optional) Pick a voice.
list_voices({})→ get avoiceId, or use"none"for no voice. See thepostking-brand-voiceskill for details on managing voice profiles. - Rewrite natively.
reddit_rewrite({ subreddit, voiceId, sourcePostId, angle, length, variations })(orsourceContent+ optionalsourceTitleinstead ofsourcePostId) —subredditandangleshould come fromreddit_suggest's results;voiceIdis required. Usually returns the finished post inline; if it returns apostIdinstead, pollget_post({ postId })untiloperationStatusisCOMPLETED. - Review saved posts.
reddit_list_posts({ brandId })— cursor-paginated list of past rewrites, each withoutputData(redditTitle, body, notes, wordCount, angle, length, subreddit).
Important — Reddit is repurpose-to-review, not scheduled publishing. PostKing does not post to Reddit on the brand's behalf. reddit_rewrite produces a review-ready native draft; the human copies it into Reddit and posts it themselves. Always surface the suggested rule_to_watch and promotion_mode to the user before they post, so they don't get a post removed for breaking a community's rules.
Manual subreddit curation
reddit_generate_pool only finds subreddits from brand signals. Use this path instead (or alongside it) when the user wants to search in a specific direction — a competitor's niche, a product category, a named community they've heard of.
- Discover.
reddit_discover_subreddits({ queries, context, minSubs })— 1–8 explicit search queries, sync, 15 credits flat per call regardless of cache state. Passcontextto disambiguate ambiguous terms (e.g. a brand name that also means something else). Returns candidates sorted by subscriber count, each flaggedalready_in_poolandalready_cached. This only returns candidates — it does not add anything to the pool. - Add.
reddit_add_to_pool({ names })— add the user's picks by name, 1–25 per call, free. Each name is resolved live against Reddit and merged into the pool. Partial success is normal, not an error: check the returnedfailedarray —retryable: truemeans a transient lookup failure (retry the call),retryable: falsemeans the subreddit itself can't be added (nonexistent/banned/private). - Remove.
reddit_remove_from_pool({ names })— prune by name, 1–50 per call, free, case-insensitive. Brand-scoped unsubscribe only — it never touches the platform's global subreddit cache, so re-adding later is cheap. Names not currently in the pool come back innotFound, which is still success.
Note: reddit_rewrite auto-adds whatever subreddit(s) it targets to the pool at rewrite time, before the draft is even reviewed — so reddit_add_to_pool isn't a prerequisite for rewriting. Use it when curating the pool ahead of time, independent of any single rewrite, and use reddit_remove_from_pool afterward to prune anything a rewrite auto-added that the user doesn't want kept.
CLI fast path
The reddit_* tools are MCP-only today — there is no pking CLI equivalent.
Expected Output
A fit-scored subreddit pool for the brand, a shortlist of best-fit communities with tailored angles for a given piece of content, and a Reddit-native rewritten draft (with rule/promotion-mode guidance) ready for human review and posting.
Pitfalls
- Empty pool / "no subreddit pool yet" on
reddit_suggestorreddit_rewrite— runreddit_generate_pooland pollget_jobto completion first. - Expecting
reddit_discover_subredditsto save results — it only returns candidates; callreddit_add_to_poolwith the chosen names to actually add them. - Subreddit not in pool on
reddit_rewrite— pick asubredditvalue fromreddit_get_poolor areddit_suggestresult rather than typing one in. INSUFFICIENT_CREDITS— surface thecheckoutUrlfrom the error envelope and stop, or hand off to thepostking-getting-startedskill's billing section (billing_list_packs→billing_topup).RATE_LIMITED— back off using theretryAftervalue from the error envelope before retrying.UNAUTHORIZED— re-run the login flow described in thepostking-getting-startedskill.
Verification
reddit_get_pool({ brandId })should return a non-empty pool afterreddit_generate_poolcompletes.reddit_list_posts({ brandId })should include the new draft afterreddit_rewritefinishes.
