Skip to the content.

Auto-detect and delete spam posts

Spam in a Skool community comes in three flavors: outright promo drops (members posting their own services unrelated to the community), AI-generated low-effort posts (vague questions designed to farm attention), and off-topic content (politics, crypto pumps in a marketing community). The Skool admin can delete posts one by one, but if you’ve been away for a week and your feed has 20 things to clean up, that’s tedious.

This recipe is the bulk cleanup flow — filter the feed by spam signals, review the candidates, delete in bulk. Use it as a weekly housekeeping pass, not as a real-time auto-moderator (that needs human judgment in the loop).

Quick reference (TL;DR for agents)

   
Goal Bulk-delete low-signal posts after a quick human review
Stack Any HTTP client + the Apify-hosted actor
Actions used posts:filterposts:delete (one call per post)
Setup time ~5 min
Ongoing cost $0.01 × N deletions
Key gotcha posts:delete is irreversible — Skool doesn’t have a soft-delete / trash bin
Mandatory pattern Review the list BEFORE deleting. Don’t loop filter → delete without a human gate

Prerequisites

Define “spam” before you sweep

Skool doesn’t have a built-in spam classifier. What’s promo in a creator community is signal in a B2B sales community. Have a clear filter:

Delete Signal
Off-topic promo Member posts a link to their service / store / Discord with no relation to the community’s topic
AI-generated vague filler “What do you think about AI?” / “How’s everyone doing?” with zero context, no follow-up engagement
Bot drops New account, first post is a link to a sketchy site, no profile bio
Crypto / MLM / get-rich-quick Pumps, recruiting threads disguised as questions

Don’t delete:

Step 1 — Filter spam candidates

Three filter patterns by signal type:

By keyword in title/body:

{
  "action": "posts:filter",
  "cookies": "...",
  "groupSlug": "your-community",
  "params": {
    "query": "telegram channel",
    "since": "2026-05-21T00:00:00Z"
  }
}

By low engagement (0 comments + > 48h old):

{
  "action": "posts:list",
  "cookies": "...",
  "groupSlug": "your-community",
  "params": { "limit": 50 }
}

Then filter client-side: commentsCount === 0 AND createdAt < now - 48h AND authorIsNew.

By new-author pattern (joined today, posting links): List + filter for posts where author.joinedAt > today - 24h AND body contains http.

Each pattern surfaces a different spam flavor — chain them all in your weekly sweep.

Step 2 — REVIEW the candidate list

Print the candidates to your terminal / a Google Sheet / a Telegram thread before deleting:

for post in candidates:
    print(f"[{post['id']}] {post['author']['firstName']}{post['title'][:80]}")
    print(f"  URL: https://www.skool.com/{group_slug}/?p={post['shortId']}")
    print(f"  Body: {post['body'][:200]}")
    print(f"  Author joined: {post['author']['joinedAt']} | comments: {post['commentsCount']}")
    print()

Manually mark the ones to actually delete. Don’t trust the filter blindly — false positives in a delete pass are costly because the action is irreversible.

Step 3 — Delete confirmed spam

{
  "action": "posts:delete",
  "cookies": "...",
  "groupSlug": "your-community",
  "params": { "postId": "abc123...32hex" }
}

Response:

{
  "success": true,
  "postId": "abc123..."
}

Loop the deletions. The actor serializes internally to respect Skool’s write rate limit (~25 writes/min).

Step 4 — (Optional) Notify the author before deleting

For borderline cases, a quick DM (“Hey, this post got flagged by our community guidelines — moving it. If you think this was wrong, reply and we’ll discuss”) preserves the relationship. Skool’s DM action isn’t yet wrapped in the actor — for now, DM manually for borderline cases and reserve bulk delete for obvious spam.

Production gotchas

When this saves you the most time

See also


Use this in production — no setup

The hardest part of building Skool automation isn’t the API logic — it’s the auth (cookies expire every ~3.5 days, WAF token rotation, weekly Skool buildId changes). The Skool All-in-One API actor on Apify handles all of that.

→ Open the actor on Apify

New to Skool? Launch your community here — 14-day free trial. Need an n8n instance? Get started free — the workflow tool we use throughout these recipes.