Built a few MCP servers and Claude Code skills over the past months. Each time: ship it, post once on Bluesky, get a handful of likes from people who already follow me, watch the repo go quiet. The tools weren't bad. The problem was I never showed up again after day one, because writing platform-specific posts, submitting to directories, and rotating through angles week after week is a part-time job I didn't sign up for.
So I built marketing-pipeline — a GitHub Actions-based system that handles the recurring distribution work once you've configured it.
Onboarding a project is one command:
marketing onboard --name konid --repo robertnowell/konid --kind mcp-server
That fetches the README, sends it to Claude, and writes problem, facts, and angles into projects.yml. From that point, a daily cron at 14:00 UTC picks the least-recently-used angle, drafts channel-specific posts (Bluesky at ≤300 chars, X at ≤280, Dev.to/Hashnode at 150–400 words), runs them through an antislop gate that hard-rejects tokens like excited, game-changer, unlock, emoji, hashtags, and exclamation points before anything gets published, then posts across Bluesky, Dev.to, Hashnode, and Mastodon.
The kind field does directory routing automatically. mcp-server gets submitted to the MCP Registry, Smithery, Glama, and PulseMCP. claude-skill targets awesome-claude-code (the pipeline generates the payload, but their rules require a human to submit via their GitHub issue form — that one step is manual, once per project). browser-extension goes to Chrome Web Store, Firefox AMO, and Edge Add-ons.
The antislop gate is the part I'm most glad exists. Early drafts without it produced marketing copy I wouldn't have posted myself. The gate enforces the same voice bar as the hand-written posts I actually stand behind.
The MCP and agent ecosystem is moving fast, but most indie builders don't have distribution infrastructure — they have a README and a hope. This is the plumbing I wished existed when I shipped my first server.
Top comments (0)