{"slug": "you-posted-once-got-silence-and-moved-on-here-s-what-i-built-instead", "title": "You posted once, got silence, and moved on. Here's what I built instead.", "summary": "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.", "body_md": "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.\n\nSo I built marketing-pipeline: a daily cron that rotates content across four social platforms and submits to type-specific directories, configured once per project.\n\nOnboarding a new project is one command:\n\n```\nmarketing onboard --name my-tool --repo owner/repo --kind mcp-server\n```\n\nThat fetches the README, sends it to Claude, and writes the project's problem statement, facts, and rotation angles to `projects.yml`\n\n. 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.\n\nThe part I spent the most time on was an anti-slop gate in `pipeline/antislop.py`\n\nthat hard-rejects specific tokens before anything goes out: `excited`\n\n, `game-changer`\n\n, `unlock`\n\n, `empower`\n\n, `AI-powered`\n\n, emoji, hashtags, and exclamation points. The generated posts read like a practitioner wrote them or they don't go out.\n\nDirectory routing is based on the `kind`\n\nfield. An `mcp-server`\n\ngets submitted to the MCP Registry, Smithery, Glama, and PulseMCP. A `claude-skill`\n\nhits 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`\n\ngoes to Chrome Web Store, Firefox AMO, and Edge Add-ons.\n\nWhat 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.\n\nRequires an Anthropic API key and credentials for at least Bluesky, Dev.to, and Hashnode.", "url": "https://wpnews.pro/news/you-posted-once-got-silence-and-moved-on-here-s-what-i-built-instead", "canonical_source": "https://dev.to/palo_alto_ai/you-posted-once-got-silence-and-moved-on-heres-what-i-built-instead-5c08", "published_at": "2026-06-18 13:05:38+00:00", "updated_at": "2026-06-18 13:21:44.494381+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "large-language-models"], "entities": ["marketing-pipeline", "Claude", "Anthropic", "Bluesky", "Mastodon", "Dev.to", "Hashnode", "GitHub Actions"], "alternates": {"html": "https://wpnews.pro/news/you-posted-once-got-silence-and-moved-on-here-s-what-i-built-instead", "markdown": "https://wpnews.pro/news/you-posted-once-got-silence-and-moved-on-here-s-what-i-built-instead.md", "text": "https://wpnews.pro/news/you-posted-once-got-silence-and-moved-on-here-s-what-i-built-instead.txt", "jsonld": "https://wpnews.pro/news/you-posted-once-got-silence-and-moved-on-here-s-what-i-built-instead.jsonld"}}