circle-so
CLI toolkit for managing Circle.so communities at scale.
Built on top of circle-so-python-sdk.
Installation
pip install circle-so
Quick Start
export CIRCLE_API_TOKEN="your_token"
# Spaces
circle-so spaces list --prefix kcna
circle-so spaces search "KCNA 048"
circle-so spaces lock --prefix kcna
circle-so spaces rename 1761784 --name "KCNA 072" --slug "kcna-072"
# Members
circle-so members import learners.csv
circle-so members audit --prefix kcna --cache
circle-so members add learners.csv --space "KCNA 048"
circle-so members fix-missing --dry-run
circle-so members move --from "KCNA 046" --to "KCNA 073" --max 100
# Moderators
circle-so moderators verify moderators.csv
circle-so moderators add moderators.csv
# Reports
circle-so report counts --prefix kcna
circle-so report inactive
circle-so report missing
circle-so report export moves
# Posts and comments
circle-so posts create --space 1761803 --title "Hello" --body "World"
circle-so posts create --space 1761803 --title "Hello" --body-file post.txt
circle-so posts update 34771554 --title "New Title"
circle-so posts comment 34771554 "Nice post!"
circle-so posts comments 34771554
circle-so posts delete-comment 110399141
Note: Circle's comment API is plain-text only and strips all newlines with no replacement -- the SDK auto-flattens multi-line/markdown comment bodies into a single line so nothing gets jammed together. See circle-so-python-sdk's limitations doc for detail. There's also no comment-edit endpoint; use
delete-comment+commentto "edit."
Configuration
Set via environment variables or .env file:
CIRCLE_API_TOKEN=your_token
CIRCLE_COMMUNITY_URL=https://your-community.circle.so
CIRCLE_SO_DB=./circle-so.db
CIRCLE_SO_DATA_DIR=~/Documents/Andela-K8s
Token Types
Different commands require different tokens:
| Commands | Token needed | Source |
|---|---|---|
spaces, members, moderators, report, posts |
Admin API token | Circle Admin > Settings > API |
chat (list, read, send, unread) |
Headless Auth token | Circle Admin > Developers > Headless Auth |
The chat commands also require your Circle email via --email or CIRCLE_USER_EMAIL:
export CIRCLE_API_TOKEN="your_headless_token"
export CIRCLE_USER_EMAIL="you@example.com"
circle-so chat list
circle-so chat unread
circle-so chat read <uuid>
circle-so chat send <uuid> "Your message"
The headless token generates a short-lived Bearer access token for your account, giving access to your DMs, notifications, and posts as yourself.
License
MIT
Metadata
Release files for circle-so-cli 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| circle_so_cli-0.3.0.tar.gz | 17.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| circle_so_cli-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.2 kB
Release files / circle_so_cli-0.3.0.tar.gz
| Download URL | circle_so_cli-0.3.0.tar.gz |
|---|---|
| Size | 17.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
65c8c077d9b19fdc3c37f8ff2ff956be562de19e49df4d293419f38c6593162b
|
|
BLAKE2b-256 checksum How to use checksums |
41d0291262caedbd4d9a36afaa2e1ba7d58cf4336ff41437decc840c7b6e3b6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Release files / circle_so_cli-0.3.0-py3-none-any.whl
| Download URL | circle_so_cli-0.3.0-py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d4feadad49563841d994437830ef7a2dc38ea79a1cb6d2ff13f9bd155fe15b10
|
|
BLAKE2b-256 checksum How to use checksums |
c62e7d60c6c4e9e2096f2a583345197266e0de6ec3dca1f981ead7b95f2b4aab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|