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.8.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.8.0
File Size Uploaded
socialchimp-0.8.0.tar.gz 937.8 kB Details

Built distribution (wheel)

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

Total release size: 1.3 MB

Release files / socialchimp-0.8.0.tar.gz

Download URL socialchimp-0.8.0.tar.gz
Size 937.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b8548173237d1b619d25d5ae6191634caa776efbadec2b9d008f8ead070652c7
BLAKE2b-256 checksum
How to use checksums
75dbf77a474dfb4fad2443212d175cb98d702c14c79ab3ddefa87579895d1958
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 24, 2026.

Transparency log

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

Download URL socialchimp-0.8.0-py3-none-any.whl
Size 388.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
85afda6ce7b644658f4b4025bbfb503b29aeae976569685afa57f110f25441d4
BLAKE2b-256 checksum
How to use checksums
c5c22fa7e7047e9a2fb9aa25428c2ff6d1e8d7f7cde682c022acdf3b04fd1058
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 24, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.0

2 release files

This release

0.8.0 This release

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

0.5.0

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