Most OSS projects die not because they're bad but because the author posts on launch day, gets a small spike, and then never shows up again. Not from lack of care — from lack of time and no system to make the repetitive work not repetitive.
I built marketing-pipeline to handle the part that always collapses first: consistent distribution after launch.
Onboarding a project takes one command:
marketing onboard --name my-tool --repo owner/repo --kind mcp-server
That fetches the README, sends it to Claude, and saves the extracted problem statement, facts, and rotation angles to projects.yml. From there, a daily GitHub Actions cron at 14:00 UTC picks the least-recently-used angle for each project and drafts posts for Bluesky, Dev.to, Hashnode, and Mastodon — each within hard per-channel length limits (Bluesky 300 chars, X 280, Dev.to 150–400 words).
The part I'm most satisfied with is pipeline/antislop.py. Before any post ships, it hard-rejects specific tokens: excited, game-changer, unlock, empower, AI-powered, emoji, hashtags, exclamation points, and rhetorical questions. The same garbage that makes most automated marketing unreadable is blocked at the gate.
The kind field routes directory submissions by project type. An mcp-server gets submitted to MCP Registry, Smithery, Glama, and PulseMCP. A claude-skill gets routed to awesome-claude-code (the pipeline generates the payload, but their rules require a human to submit via their GitHub issue form — that one can't be fully automated). A browser-extension goes to Chrome Web Store, Firefox AMO, and Edge Add-ons.
You need an Anthropic API key and credentials for at least Bluesky, Dev.to, and Hashnode to run it. Mastodon and Slack are optional.
The goal isn't viral growth. It's staying visible in the places your users look, consistently, without it being a thing you have to remember to do.
Top comments (0)