The reason people do not post the same idea everywhere is not the writing, it is that a LinkedIn post does not fit X and an Instagram caption reads wrong on either. Adapting with the limits applied turns one piece into several without a rewrite each time. Note what this is and is not: it drafts and schedules into a local file, and nothing here publishes — an actual posting integration is a separate thing you still need. The engagement prediction is a heuristic on the text; treat it as a nudge rather than a forecast.
A social content production and scheduling server working against a local queue file: drafting per platform, repurposing between them, generating multi-part formats, and holding a calendar.
- draft_post writes for a named platform rather than generically, and repurpose_content adapts an existing post for another — handling the character limits that make a straight copy fail.
- generate_carousel produces slides with a title and body each, for LinkedIn and Instagram.
- generate_thread produces a numbered multi-post thread for X or LinkedIn.
- schedule_content saves into a local queue file, and get_content_calendar shows what is scheduled over the next N days.
- analyze_post_performance scores a post's text for predicted engagement before it goes out.
CONTENT_DIR — the queue is a local JSON file, so this holds your calendar on your own disk rather than in a service.
One command — npx -y content-distribution-mcp
