{"slug": "how-i-automated-my-content-distribution-with-a-dsh-plugin-i-scaffolded-myself", "title": "How I automated my content distribution with a DSH plugin I scaffolded myself", "summary": "A developer built a DSH plugin called dsh-crosspost to automate cross-posting markdown articles to platforms like Dev.to and GitHub, and published a scaffolding tool, create-dsh-content, to generate similar plugins. The tool handles authentication, rate limits, and error reporting, and the developer highlighted pitfalls such as stale npm dist-tags and the need for pure ESM modules.", "body_md": "Posting is easy. **Posting everywhere, consistently, is the hard part.**\n\nI wanted a single command that takes one markdown article and pushes it to Dev.to, GitHub (as a gist), and eventually Bluesky and Mastodon — without my ever touching those web editors again. So I built it as a plugin for **DSH (DeepSeek Harness)**, using a scaffolding tool that I published myself.\n\nHere's the story, the 3 pitfalls that cost me the most time, and how you can get the same thing running in about a minute.\n\nWriting in public is the cheapest compounding asset a developer has. But cross-posting manually has two failure modes:\n\nA plugin that accepts `content + title + [platforms]`\n\nand returns `per-platform status + links`\n\nremoves both. One source, many destinations, audited every time.\n\nA DSH **content-automation plugin** (`dsh-crosspost`\n\n) with:\n\n`auth / rate-limit / bad-request`\n\ninstead of a raw stack trace, so an agent can decide to retry or skip per platform.`latest`\n\ndist-tag (the big one)\n`npm install @deepseek-ai/dsh-tools`\n\ngives you a **stale 0.0.1-rc.1** — the real line lives under the `next`\n\ntag. Wasted an evening debugging failures that were purely \"wrong version resolved.\" Lesson: **check dist-tags before installing anything in a fast-moving young ecosystem** (`npm view pkg dist-tags`\n\n).\n\nThe plugin must be pure ESM (`\"type\": \"module\"`\n\n), built with `module: esnext`\n\n+ `moduleResolution: bundler`\n\n. Half my build errors were me fighting CJS habits (`require`\n\n, `module.exports`\n\n) at the boundary.\n\nDeps aren't installed via npm in the profile directory — the profile loader resolves bundle `name`\n\ns through `node_modules`\n\n/profile store. Unlearning \"relative path == works\" was harder than the API calls themselves.\n\nInstead of hand-writing the plugin skeleton, I packaged everything I learned into ** create-dsh-content** — a scaffold that generates a working, verifying content plugin in one command, then runs\n\n`--verify`\n\n(type-check + loader dry-run) until it's green.What it bakes in: version pins (no stale-tag trap), pure-ESM tsconfig, the cordis patch wiring, BYOK credential plumbing, and a `generate → verify → install → publish`\n\nloop you can dogfood.\n\nThe final step was using **my own published package** to generate the very plugin that published this post:\n\n`create-dsh-content`\n\n(published to npm) → generates `dsh-crosspost`\n\n`dsh plugin add`\n\n→ loads it into my profile`dsh_crosspost`\n\ntool → this article + a GitHub gist liveThat's the loop I'd recommend for anyone shipping dev tools: **dogfood = honest docs.** When your instructions mysteriously work, you know they're real.\n\n`dsh-crosspost`\n\n(multi-platform cross-poster for DSH)Give the scaffold a try and let me know what your first automated cross-post looks like. 🚀", "url": "https://wpnews.pro/news/how-i-automated-my-content-distribution-with-a-dsh-plugin-i-scaffolded-myself", "canonical_source": "https://dev.to/buchylx/how-i-automated-my-content-distribution-with-a-dsh-plugin-i-scaffolded-myself-2gbg", "published_at": "2026-08-27 03:22:54+00:00", "updated_at": "2026-08-27 03:48:51.602439+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools"], "entities": ["DSH", "dsh-crosspost", "create-dsh-content", "Dev.to", "GitHub", "npm"], "alternates": {"html": "https://wpnews.pro/news/how-i-automated-my-content-distribution-with-a-dsh-plugin-i-scaffolded-myself", "markdown": "https://wpnews.pro/news/how-i-automated-my-content-distribution-with-a-dsh-plugin-i-scaffolded-myself.md", "text": "https://wpnews.pro/news/how-i-automated-my-content-distribution-with-a-dsh-plugin-i-scaffolded-myself.txt", "jsonld": "https://wpnews.pro/news/how-i-automated-my-content-distribution-with-a-dsh-plugin-i-scaffolded-myself.jsonld"}}