LabscoMCP early access ↗
AutomateLab-techMCP SERVER · OFFICIAL PROJECT

AutomateLab Content Distribution MCP

Publish one piece of writing to DEV.to, Hashnode, GitHub Discussions, Reddit and Bluesky in per-channel variants — idempotent, schedulable, with subreddit cooldowns respected.

by AutomateLab-tech ↗Social Media Accounts & Posting✓ Official

LABSCO SUMMARY

Cross-posting that remembers what it already posted.

Idempotency on the content id and channel pair is the feature that makes this safe to hand to an agent: a run that dies halfway can simply be run again, and the pairs that already went out are skipped rather than duplicated. The division of labour is deliberate too — it hands back each channel's limits and tag vocabulary and leaves the rewriting to you, which is why three channels it cannot authenticate against return a compose URL instead of pretending to publish.

What it is

A distribution layer, not a writer. Your agent produces the variant for each channel; this server publishes them, tracks what went where in a local store, and enforces the platform rules — character limits, tag vocabularies, subreddit cooldowns. It makes no model calls of its own.

What you get

  • Immediate publishing of one or many channel variants, idempotent on the content id and channel pair, so a re-run after a partial failure does not double-post
  • Scheduling: variants carrying a scheduled time are queued and the rest go out now, with a drain call that fires everything due at or before a moment you name — the call a cron job makes
  • Publish state per content piece or per channel, read-only and needing no credentials, for answering what actually went live
  • Best-effort removal of a published post — on DEV.to the post is switched back to draft rather than deleted, and platforms with no delete API report failure instead of erroring
  • Per-channel metadata before you write: character limits, whether Markdown survives, the tag vocabulary and where the call to action belongs
  • The subreddit catalogue with cooldown windows, flair vocabulary and when each was last posted to, optionally narrowed to what a profile is allowed to post in
  • The distribution profiles configured on the machine, so an agent can discover which one to publish under

Requirements

Credentials live in a distribution profile at ~/.distribution-mcp/profiles.yaml, and only for the channels you actually use: DEV_TO_API_KEY for DEV.to; HASHNODE_TOKEN with HASHNODE_PUBLICATION_ID; GITHUB_TOKEN with GITHUB_DISCUSSION_REPO; REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET, REDDIT_USERNAME and REDDIT_PASSWORD; BLUESKY_IDENTIFIER with BLUESKY_PASSWORD. LinkedIn, Medium and Twitter/X take no credentials at all — those channels answer with needs_browser and a compose URL for you to finish by hand. It starts over stdio as npx -y @automatelab/content-distribution-mcp, and the same YAML backend holds the schedule and publish state. Tool names were renamed in v2.2.0 from flat names (publish, schedule) to prefixed ones (post_publish, post_schedule), so older prompts and n8n nodes that use the flat names need updating.

Setup effort

One command plus a key — npx @automatelab/content-distribution-mcp, then supply credentials