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.

Status: 0.1.0, the first release. All nine networks below work. The way platforms are written is now settled - see the promise about changes before you write your own.

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


What it does

Your app needs to let people connect their social accounts, then post for them and read what happens. Every network does this differently. socialchimp gives you one way to do it, and gets out of the way when you need the network's own features.

  • Connect accounts. Sign in with Mastodon, Bluesky, Facebook, Instagram, YouTube, TikTok, X, Pinterest, Threads and more.
  • Keep tokens working. Refresh them before they expire, safely, even when several workers run at once.
  • Post and read. Text, pictures, video. Read posts and their numbers back.
  • Know what happened. Comments and likes reach you the same way whether the network pushes them to you or we have to check on a timer.

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 pretend networks are the same. Pinterest needs a board. Bluesky cannot schedule. YouTube has no text-only post. Where networks differ, the API says so instead of guessing for you.

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

from socialchimp import SocialChimp, Post

sc = SocialChimp(storage=MyStorage())

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

Need something only that network can do? Same connection, direct access:

await account.direct.post(
    "/api/v1/statuses",
    json={"status": "Hello", "visibility": "unlisted"},
)

Tokens, retries and rate limits are still handled for you. Only the request is yours.


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

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.2.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.2.0
File Size Uploaded
socialchimp-0.2.0.tar.gz 588.7 kB Details

Built distribution (wheel)

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

Total release size: 876.1 kB

Release files / socialchimp-0.2.0.tar.gz

Download URL socialchimp-0.2.0.tar.gz
Size 588.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0aa1d3f09c58b64c5fcc3d84ac494cfaad06c584b3daf2c7f8c7cd900a5fa6a7
BLAKE2b-256 checksum
How to use checksums
a3466601c6d8a2e3509912a05edf0b2128761f7cf58acbeeb6c84049bc383003
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 Aug 31, 2026.

Transparency log

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

Download URL socialchimp-0.2.0-py3-none-any.whl
Size 287.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c7f2916bbd84e2458a9df3a99ac40b34842878e1a342db98ae282c48b0b7d78
BLAKE2b-256 checksum
How to use checksums
0556e59ed39590a4e2985c6b66e74a254ebaf9e23ae6ac8b7063a42138d1e86e
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 Aug 31, 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

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

This release

0.2.0 This release

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