Skip to main content

socialchimp

CI PyPI Python Coverage Types Ruff Licence

One simple way to connect your app to social networks.

Read this as a website: raghulj.github.io/socialchimp — the tutorial, the reference and everything below, searchable and easier to read than markdown files in a repository.

Mastodon · Bluesky · Facebook Pages · Instagram · YouTube · TikTok · X · Pinterest · Threads

Sign people in, keep their tokens working, post for them, and hear about what happens - a comment, a like - the same way whether the network pushes it to you or socialchimp checks on a timer. One way to do this across all nine networks, and direct access to any one of them when its own features are what you need.


What it does

  • Connect accounts. Sign in with Mastodon, Bluesky, Facebook, Instagram, YouTube, TikTok, X, Pinterest or Threads.
  • Keep tokens working. Refreshed before they expire, safely, even when several workers run at once.
  • Post and read. Text, pictures, video. Read a post's numbers back where the network allows it.
  • Know what happened. Comments and likes reach you the same way whether the network pushes them to you or socialchimp checks on a timer.
  • Get out of the way when you need more. account.direct sends a request of your own through the same token, the same retries and the same rate limits - only the request is yours.

What it does not do

  • It does not touch your database. No models, no migrations. You write a small storage class, socialchimp hands you data to save. Your schema stays yours, and it works the same on Django, FastAPI, Flask, or nothing at all.
  • It does not post to several accounts in one call. account.post(...) posts as one account and raises if that one fails. Looping over your accounts, and deciding what one failure means for the rest, is a few lines in your own app - only your app knows the right answer.
  • It does not pretend networks are the same. Pinterest needs a board. Bluesky cannot schedule. YouTube has no text-only post. Where a network genuinely cannot do something, the answer says so by name instead of guessing.

The real cost of starting

Two of the nine need nothing you have to build: socialchimp registers a Mastodon app for you, and Bluesky has no app at all - just a handle and an app password. The other seven - Facebook, Instagram, YouTube, TikTok, X, Pinterest, Threads - need you to create an app by hand in that network's own developer portal, and most of those review it before it works for anyone but you. That review is usually the slowest part of getting started, so begin it early. Networks says what each one needs.


Install

pip install socialchimp

Add your framework if you want the ready-made routes:

pip install "socialchimp[django]"    # or [fastapi], or [flask]

A first look

Once somebody has connected an account - the tutorial covers signing them in - posting for them looks like this:

from socialchimp import SocialChimp, Post

sc = SocialChimp(storage=my_storage)

account = sc.account(connection_id)
result = await account.post(Post(text="Hello from socialchimp"))
print(result.url)

my_storage is five methods you write once; connection_id is whichever account you saved when that person signed in.


Documentation

New here? Start with the tutorial. It assumes you have built a web app before but have never touched a social network API, and explains why this is harder than one HTTP request.

Learning

Three things people actually build

Reference

  • Networks - what each one can do, and what it needs
  • Frameworks - the ready-made routes in detail
  • Adding a platform - a network we do not support yet
  • Examples - runnable programs, including two whole sample apps
  • Changelog - what changed, and what it means for you

Project

  • Plan - what is built and what is coming
  • Contributing - the three rules that are not negotiable
  • Releasing - how a release goes out

Contributing

Contributions are welcome. A few things to know first:

  • Tests come first. Write the failing test, then make it pass.
  • Coverage must stay at 100%. CI fails below it.
  • Types must be strict. mypy --strict with no ignores.
git clone https://github.com/raghulj/socialchimp
cd socialchimp
uv sync --all-extras --dev
uv run pre-commit install --hook-type pre-commit --hook-type pre-push
uv run pytest

Licence

MIT. See LICENSE.

Release files for socialchimp 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for socialchimp 0.5.0
File Size Uploaded
socialchimp-0.5.0.tar.gz 732.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for socialchimp 0.5.0
File Interpreter ABI Platform
socialchimp-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / socialchimp-0.5.0.tar.gz

Download URL socialchimp-0.5.0.tar.gz
Size 732.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f2ee22554f93f5f93a338368ae85ced002bc016c57747b87899e4229d2af2ee7
BLAKE2b-256 checksum
How to use checksums
993b17a6f00cd9e4fdedb384c5d55ca7d4128d89635b971f6a2029cbd5c278c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / socialchimp-0.5.0-py3-none-any.whl

Download URL socialchimp-0.5.0-py3-none-any.whl
Size 296.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b7dbff17cfc76c471f4999db9330132f50470f1bc162a967ff6b13659dc1decf
BLAKE2b-256 checksum
How to use checksums
9702db6c75a4b25b9c29e9cb5cb6ef960c59d28dad3958c2bb19e63a28eabe96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.0

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page