Sprout Social is paid for what one person can't rebuild: approved, maintained access to the Meta, TikTok, LinkedIn and X APIs, one inbox across all of them, listening data drawn from public conversations at scale, and reports across all of it. Posting to Bluesky, Mastodon and your own LinkedIn profile is an afternoon's work, and the prompt below does that much. The rest sits behind developer reviews, paid API tiers and data you can't buy as an individual.
Before you buildIf you just schedule your own posts, Buffer's free plan (3 channels, 10 queued posts each) may already be enough. Sprout's 30-day trial needs no card.
Build me a personal posting calendar to replace Sprout Social's publishing on the networks with open APIs. Requirements: - Python 3.12 + FastAPI with Jinja2 templates and htmx, APScheduler for timed jobs; `uv run app` serves http://localhost:5050. - Storage: SQLite through SQLModel in ./data/social.db for posts, per-network versions, publish results and metrics; images in ./data/media/. - Networks: Bluesky with an app password (`atproto`), Mastodon with an access token (`Mastodon.py`), and my own LinkedIn profile through the "Share on LinkedIn" product (OAuth 2.0, w_member_social scope). Credentials live in .env; show a warning 7 days before the 60-day LinkedIn token expires. - Composer: one draft with a tab per network for edits, live character counters (300 for Bluesky, 500 for Mastodon, 3,000 for LinkedIn), up to 4 images with required alt text. - Calendar: week and month views, drag a post to reschedule it, and a queue that fills my preferred weekday time slots. - Publishing: jobs are stored in SQLite so they survive a restart; retry 3 times with backoff, then mark the post failed and show the API's error message. - Metrics: every 6 hours fetch likes, reposts and replies for posts from the last 30 days; a table sorted by engagement with CSV export. - Single user. No accounts, no telemetry, local-first. - Out of scope: Instagram, Facebook, TikTok and X (developer review or paid API access), a shared inbox, social listening and team approvals. - README: how to create each credential, and a note that the app must stay running (home server or a small VPS) for scheduled posts to go out.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Sprout Social.
Add a simple inbox to the posting calendar in this folder. Requirements: - Every 5 minutes, pull replies and mentions from Bluesky (notifications through `atproto`) and Mastodon (notifications endpoint) into SQLite, keeping each item's network, author, text, link and the post it answers. - An Inbox page with unread first, a filter per network, and mark-as-done. - Reply from the inbox; the reply goes out through the same network and is stored in the thread. - Out of scope: direct messages and LinkedIn comments (not available to personal apps). - Update the README.
Add Threads publishing to the posting calendar in this folder. Requirements: - Use the official Threads API with a Meta developer app in development mode and my own account added as a tester; store the long-lived token in .env and refresh it before it expires. - Publish text and single-image posts (create the media container, then publish it), with a 500-character counter in the composer. - Fetch likes and replies for Threads posts in the existing metrics job. - If Meta requires app review for any step, stop and tell me instead of working around it. - Update the README with the Meta developer console steps; warn that they take about an hour.
Add a weekly report to the posting calendar in this folder. Requirements: - Every Monday at 08:00, build an HTML email: posts published last week per network, the top 3 by engagement, totals compared with the week before, and next week's queue. - Send it through SMTP settings in .env, and keep a copy in ./data/reports/YYYY-WW.html. - A button on the dashboard sends the report now, for testing. - Update the README.
Brands and agencies pay because the network connections, the shared inbox and the reports work on day one and keep working when the platforms change their rules. Reporting is what reviewers praise most often, and listening and competitor data come from Sprout's own pipelines that nobody rebuilds for a single account.
Estimate · The APIs used here are free. Running it on a home machine costs nothing; a small VPS is a few dollars a month. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Essentials | $99 | $79 | Up to 5 social profiles, optimal send times, profile and post reports, 100 Trellis AI credits a month. |
| Standard | $249 | $199 | 5 social profiles, consolidated inbox and collaboration, keyword and location monitoring, review management. |
| Professional | $399 | $299 | Unlimited profiles, message tagging, competitor, tag and paid reports, AI post suggestions. |
| Advanced | $499 | $399 | Adds AI reply suggestions, sentiment, the Sprout API, helpdesk integrations and spike alerts. |
| Enterprise | custom | — | Custom plan, SSO setup, priority support. |
Not really. Brands and agencies pay because the network connections, the shared inbox and the reports work on day one and keep working when the platforms change their rules. Reporting is what reviewers praise most often, and listening and competitor data come from Sprout's own pipelines that nobody rebuilds for a single account. The prompt on this page builds the closest honest substitute.
About $99 a month on the Essentials plan per seat, $1,188 a year (checked 2026-10-13).
One inbox for comments and messages from every network; Approved publishing to Instagram, Facebook, TikTok, X and Pinterest; Social listening, sentiment and competitor reports; Approvals, roles and a shared calendar for a team; Review management and CRM or helpdesk integrations. If any of those matter to you, keep paying.
Yes: Postiz (open source), TryPost (open source), Mixpost (open source).