You posted once, got silence, and moved on. Here's what I built instead. A developer built marketing-pipeline, an open-source tool that automates daily social media posting and directory submissions for open-source projects. The tool uses a cron job to rotate content across Bluesky, X, Mastodon, Dev.to, and Hashnode, and includes an anti-slop filter to reject marketing clichés. It aims to maintain consistent visibility for projects that otherwise fade after an initial launch spike. The pattern is consistent: ship something, post to Hacker News or a subreddit, get a small spike, then nothing. Not because the tool isn't useful — because staying visible requires showing up every few days across Bluesky, Mastodon, Dev.to, Hashnode, and a half-dozen directories. That's repetitive work that doesn't compound the way code does, and I kept skipping it. So I built marketing-pipeline: a daily cron that rotates content across four social platforms and submits to type-specific directories, configured once per project. Onboarding a new project is one command: marketing onboard --name my-tool --repo owner/repo --kind mcp-server That fetches the README, sends it to Claude, and writes the project's problem statement, facts, and rotation angles to projects.yml . From that point the daily GitHub Actions job at 14:00 UTC picks up the project, selects the least-recently-used angle, generates platform-appropriate copy, and posts it — Bluesky at 300 chars, X at 280, Mastodon and Dev.to/Hashnode at their respective limits. The part I spent the most time on was an anti-slop gate in pipeline/antislop.py that hard-rejects specific tokens before anything goes out: excited , game-changer , unlock , empower , AI-powered , emoji, hashtags, and exclamation points. The generated posts read like a practitioner wrote them or they don't go out. Directory routing is based on the kind field. An mcp-server gets submitted to the MCP Registry, Smithery, Glama, and PulseMCP. A claude-skill hits awesome-claude-code payload generated, but their rules require a human to submit via their GitHub issue form — that one can't be automated . A browser-extension goes to Chrome Web Store, Firefox AMO, and Edge Add-ons. What this doesn't solve: cold starts. If nobody knows your project exists, the pipeline just keeps posting into the void at a consistent cadence. It's distribution maintenance, not distribution creation. But for tools that got one spike and then faded, consistent presence compounds over weeks in ways a single post never does. Requires an Anthropic API key and credentials for at least Bluesky, Dev.to, and Hashnode.