You posted your tool on launch day, got a handful of upvotes, and that was it. Not because the tool was bad — because consistent distribution requires showing up weekly across Bluesky, Mastodon, X, Dev.to, and Hashnode, remembering which angle you covered last, respecting per-channel character limits (280 on X, 300 on Bluesky, 150–400 words on Dev.to), and writing copy that doesn't read like a press release. Almost nobody does that work. The tool quietly dies.
I built marketing-pipeline to handle the recurring part. You onboard a project once:
marketing onboard --name my-tool --repo owner/repo --kind mcp-server
That fetches your README, sends it to Claude, and writes problem, facts, and angles into projects.yml. From there, a daily GitHub Actions cron at 14:00 UTC cycles through projects × angles × channels, picks the least-recently-used angle per project, formats the post to the channel's constraints, and publishes.
The part I spent the most time on was preventing the output from reading like marketing copy. pipeline/antislop.py hard-rejects specific tokens before anything gets published: excited, game-changer, unlock, empower, AI-powered, emoji, hashtags, exclamation points, and rhetorical questions. If a draft contains any of them, the post is blocked and regenerated. The constraint is aggressive on purpose — most automated content fails because nobody built a gate that actually rejects the slop.
Cross-posting also handles directory listings. The kind field routes submissions to type-specific registries: mcp-server goes to MCP Registry, Smithery, Glama, and PulseMCP; claude-skill generates a payload for awesome-claude-code (human submission required — their rules); browser-extension targets 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. Mastodon and Slack are optional.
Top comments (0)