A high-performance command-line interface for Skool community owners and power users. This tool allows you to bypass the browser for community management, perform deep domain analytics, and gain behavioral insights into your members.
- Full Data Sync: Synchronize your entire community (members, posts, classroom content, etc.) to a local SQLite database.
- Domain Analytics (Rung 4): Identify "orphaned" members (joined but never posted), stale members, and top contributors based on points and activity.
- Behavioral Insights (Rung 5): Predictive modeling for churn risk and member growth velocity to proactively manage your community.
- Direct Messaging: List conversations and send direct messages directly from the terminal.
- Content Management: Create, manage, and delete posts across your communities programmatically.
- Cloudflare Optimized: Built-in support for HTTP/2 and modern browser headers to ensure reliable API connectivity.
Ensure you have Go installed (v1.21+) and Node.js.
-
Clone the repository:
git clone https://github.com/Robj1925/skool-pp-cli.git cd skool-pp-cli -
Build the binary:
go build -o skool-pp-cli ./cmd/skool-pp-cli
-
(Optional) Move it to your path:
sudo mv skool-pp-cli /usr/local/bin/
If you are an AI Agent (e.g., Claude Code, Codex, Antigravity) instructed to "install this CLI tool", follow these exact steps:
- Install Dependencies: If
goornpmare missing, install them first.- On macOS:
- If
brewis not installed, install it first:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - Then run:
brew install go node
- If
- On Linux (Debian/Ubuntu):
sudo apt-get update && sudo apt-get install -y golang nodejs npm - If you cannot install them, explicitly ask the human to install Go (v1.21+) and Node.js.
- On macOS:
- Clone and Build: Run the following one-liner to clone, install dependencies, and build the binary in the current directory:
git clone https://github.com/Robj1925/skool-pp-cli.git && cd skool-pp-cli && npm install && npx playwright install chromium && go build -o skool-pp-cli ./cmd/skool-pp-cli
- Handle Authentication (CRITICAL): Do not attempt browser automation. Use one of these two methods, preferring HAR import:
- Method A: HAR Import (Most Reliable - RECOMMENDED)
- Instruct the human to go to DevTools -> Network. Chrome only: Click Gear Icon -> Check "Allow to generate HAR with sensitive data".
- CRITICAL: Refresh the page, then export the HAR (choose "with sensitive data" in Chrome).
- Run
./skool-pp-cli auth import-har path/to/export.har.
- Method B: Manual Cookie (Fallback)
- Instruct the human user to open their browser, log in to Skool, and open Developer Tools (Network tab).
- Tell them to copy the
cookie:header from any request (likemembers.json). - Instruct them to run
./skool-pp-cli auth set-token "YOUR_COOKIE_STRING".
- Method A: HAR Import (Most Reliable - RECOMMENDED)
- Verify: Once the session token is saved, run
./skool-pp-cli doctor --agentto verify connectivity.
Skool uses session-based authentication. The CLI provides tools to capture and manage your credentials securely.
This is the most reliable way to authenticate. Export a HAR file from your browser and import it:
- Open skool.com in your browser and log in.
- Open DevTools (F12) -> Network tab.
- Chrome Users (IMPORTANT):
- Click the Gear Icon (Settings) in the top-right of the Network tab.
- Ensure "Allow to generate HAR with sensitive data" is checked.
- CRITICAL: Refresh the page while the Network tab is open.
- Click on any group or community to ensure traffic is recorded.
- Export the file:
- Chrome: Click the Download icon (Export HAR) and choose "Export HAR (with sensitive data)".
- Others: Right-click any request and select "Save all as HAR with content".
- Run:
skool-pp-cli auth import-har path/to/export.har
If you prefer to copy the cookie string manually:
- Run
skool-pp-cli auth refreshfor detailed instructions on finding your session cookie. - Once copied, run:
skool-pp-cli auth set-token "YOUR_COOKIE_STRING"
Run the "doctor" command to ensure everything is working:
skool-pp-cli doctorQuickly see which communities you belong to and your user profile:
-
List your groups:
skool-pp-cli me groups
This returns the Name, Hash (ID), and Slug for all your joined communities.
-
View your profile:
skool-pp-cli me info
To create a post, you first need to find the correct group and category:
-
Find the target group hash:
skool-pp-cli me groups
-
List available categories for that group:
skool-pp-cli posts list-categories --group <hash>
-
Create the post:
skool-pp-cli posts create <hash> --category <category-id> --title "My Title" --content "Body"
-
Delete a post: Use the custom python helper script:
python3 scripts/delete_post.py <post-id>
You can now list your conversations and send messages directly from the CLI:
-
List your chat history:
skool-pp-cli channels list
This will output a list of your recent conversations with their unique
channel_id. -
Send a message:
skool-pp-cli channels send <CHANNEL_ID> --content "Hello from the CLI!"
Before running analytics, you need a local copy of your data:
skool-pp-cli syncThis will create a SQLite database at ~/.config/skool-pp-cli/skool.db.
Find "orphaned" members who joined but haven't contributed yet:
skool-pp-cli analytics-domain orphansFind "stale" members who haven't been active in 30 days:
skool-pp-cli analytics-domain stale --days 30Predict which members are at risk of churning:
skool-pp-cli insights churn-riskIdentify members who are leveling up at high velocity:
skool-pp-cli insights level-velocity| Command | Description |
|---|---|
posts create |
Create a new post in a group. |
sync |
Fetches all community data and stores it locally. |
analytics-domain |
Advanced reports on member status and engagement. |
insights |
Predictive behavioral analytics (Churn, Velocity, Health). |
auth set-token |
Configures your session cookie manually. |
auth import-har |
Extract session cookies from a browser HAR export. |
channels |
List chat conversations and send direct messages. |
me |
List your joined communities and user profile. |
groups |
Access group-specific analytics and management metrics. |
doctor |
Connectivity, auth, and local database health check. |
search |
Instant full-text search across your local community data. |
You can create posts in any group where you have permission. You need the group's unique hash (found in the URL or via skool-pp-cli me groups).
# Create a post (defaults to 'General discussion' category)
skool-pp-cli posts create <group-hash> \
--title "My New Post" \
--content "This is the body of the post. Supports markdown!"
# Create a post in a specific category
skool-pp-cli posts create <group-hash> \
--title "Q&A" \
--content "Ask me anything!" \
--category-id <category-id>Note: The Skool API requires a category ID for every post. If --category-id is omitted, the CLI defaults to the "General discussion" category.
"No such table: members"
This usually means you haven't run skool-pp-cli sync yet, or the sync failed. Run skool-pp-cli sync and check for errors.
"Cloudflare / HTTP 403" If you are getting blocked, ensure you are using the latest version of the CLI. We've implemented HTTP/2 support to align with Skool's production environment.
"Missing config file"
The CLI expects a config file at ~/.config/skool-pp-cli/config.toml. Running skool-pp-cli auth set-token or auth import-har will create this for you automatically.
Licensed under Apache-2.0. See LICENSE for details.
Developed with β€οΈ for the Skool Community.
